
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
^                 @   sd   d dl mZ ddlmZ ddlmZmZmZ eddddd	d
gZG dd deZ	G dd deZ
dS )    )
namedtuple   )DiffResultDescriptor)
DifferenceSymbolWrapperWrapperZmodified_defaultZruleadded_defaultremoved_defaultadded_default_rangeremoved_default_rangec               @   s8   e Zd ZdZedZedZedZdd Zdd Z	dS )DefaultsDifferencez;Determine the difference in default_* between two policies.diff_defaultsc             C   s   | j jdj|  | jdd | jj D dd | jj D \| _| _}g | _	x|D ]\}}|j
|j
krv|j
}|j
}nd}d}y&|j|jkr|j}|j}nd}d}W n tk
r   d}d}Y nX |s|rT| j	jt||||| qTW dS )z>Generate the difference in type defaults between the policies.zIGenerating default_* differences from {0.left_policy} to {0.right_policy}c             s   s   | ]}t |V  qd S )N)DefaultWrapper).0d r   /usr/lib64/python3.6/default.py	<genexpr>0   s    z3DefaultsDifference.diff_defaults.<locals>.<genexpr>c             s   s   | ]}t |V  qd S )N)r   )r   r   r   r   r   r   1   s    N)loginfoformatZ	_set_diffZleft_policyZdefaultsZright_policyadded_defaultsremoved_defaultsmodified_defaultsdefaultZdefault_rangeAttributeErrorappendmodified_default_record)selfZmatched_defaultsZleft_defaultZright_defaultr	   r   r   r
   r   r   r   r   (   s:     
z DefaultsDifference.diff_defaultsc             C   s"   | j jd d| _d| _d| _dS )z%Reset diff results on policy changes.zResetting default_* differencesN)r   debugr   r   r   )r   r   r   r   _reset_diffW   s    zDefaultsDifference._reset_diffN)
__name__
__module____qualname____doc__r   r   r   r   r   r    r   r   r   r   r       s   /r   c               @   s4   e Zd ZdZdZdd Zdd Zdd	 Zd
d ZdS )r   z$Wrap default_* to allow comparisons.ruletypetclassc             C   s(   || _ |j| _t|j| _t|| _d S )N)originr%   r   r&   hashkey)r   r   r   r   r   __init__e   s    zDefaultWrapper.__init__c             C   s   | j S )N)r)   )r   r   r   r   __hash__k   s    zDefaultWrapper.__hash__c             C   s   | j |j k S )N)r)   )r   otherr   r   r   __lt__n   s    zDefaultWrapper.__lt__c             C   s   | j |j ko| j|jkS )N)r%   r&   )r   r,   r   r   r   __eq__q   s    zDefaultWrapper.__eq__N)r%   r&   )	r!   r"   r#   r$   	__slots__r*   r+   r-   r.   r   r   r   r   r   _   s   r   N)collectionsr   Zdescriptorsr   
differencer   r   r   r   r   r   r   r   r   r   <module>   s   ?