
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!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   ?