
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
í«„^R  ã               @   s^   d dl mZmZ ddlmZ ddlmZmZ edddgƒZee	ƒZ
dd	„ ZG d
d„ deƒZdS )é    )ÚdefaultdictÚ
namedtupleé   )ÚDiffResultDescriptor)Ú
DifferenceÚSymbolWrapperZmodified_booleanZadded_stateZremoved_statec             C   s:   yt |  | S  tk
r4   t|ƒ}|t |  |< |S X dS )z
    Wrap booleans from the specified policy.

    This caches results to prevent duplicate wrapper
    objects in memory.
    N)Ú_bool_cacheÚKeyErrorr   )ZpolicyZbooleanÚb© r   ú/usr/lib64/python3.6/bool.pyÚboolean_wrapper   s    r   c               @   s8   e Zd ZdZedƒZedƒZedƒZdd„ Zdd„ Z	dS )ÚBooleansDifferencezADetermine the difference in type attributes between two policies.Údiff_booleansc             C   s†   | j jdj| ƒƒ | jdd„ | jjƒ D ƒdd„ | jjƒ D ƒƒ\| _| _}t	ƒ | _
x0|D ](\}}|j|jkrVt|j|jƒ| j
|< qVW dS )z@Generate the difference in type attributes between the policies.zGGenerating Boolean differences from {0.left_policy} to {0.right_policy}c             s   s   | ]}t |ƒV  qd S )N)r   )Ú.0r
   r   r   r   ú	<genexpr>>   s    z3BooleansDifference.diff_booleans.<locals>.<genexpr>c             s   s   | ]}t |ƒV  qd S )N)r   )r   r
   r   r   r   r   ?   s    N)ÚlogÚinfoÚformatZ	_set_diffZleft_policyZboolsZright_policyÚadded_booleansÚremoved_booleansÚdictÚmodified_booleansÚstateÚmodified_bool_record)ÚselfZmatched_booleansZleft_booleanZright_booleanr   r   r   r   6   s    
 z BooleansDifference.diff_booleansc             C   s"   | j jdƒ d| _d| _d| _dS )z%Reset diff results on policy changes.zResetting Boolean differencesN)r   Údebugr   r   r   )r   r   r   r   Ú_reset_diffM   s    zBooleansDifference._reset_diffN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r   r   r   r   .   s   r   N)Úcollectionsr   r   Zdescriptorsr   Ú
differencer   r   r   r   r   r   r   r   r   r   r   Ú<module>   s   