509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
í«„^4  ã               @   s�   d dl mZmZ ddlmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZ dd	lmZ ed
dddgƒZG dd„ deƒZG dd„ de	ƒZdS )é    )ÚdefaultdictÚ
namedtupleé   )ÚMLSRuletypeé   )ÚDiffResultDescriptor)Ú
DifferenceÚWrapper)ÚRangeWrapper)Úclass_wrapper_factory)Útype_or_attr_wrapper_factoryZmodified_mlsruleÚruleZadded_defaultZremoved_defaultc               @   sP   e Zd ZdZedƒZedƒZedƒZee	ƒZ
ee	ƒZdd„ Zdd„ Zdd„ Zd	S )
ÚMLSRulesDifferencez;Determine the difference in MLS rules between two policies.Údiff_range_transitionsc             C   s²   | j jdj| ƒƒ | j s"| j r*| jƒ  | j| j| jtj	 t
ƒ| j| jtj	 t
ƒƒ\}}}g }x:|D ]2\}}t|jƒt|jƒkrf|jt||j|jƒƒ qfW || _|| _|| _dS )zGGenerate the difference in range_transition rules between the policies.zPGenerating range_transition differences from {0.left_policy} to {0.right_policy}N)ÚlogÚinfoÚformatÚ_left_mls_rulesÚ_right_mls_rulesÚ_create_mls_rule_listsZ	_set_diffZ_expand_generatorr   Zrange_transitionÚMLSRuleWrapperr
   ÚdefaultÚappendÚmodified_mlsrule_recordÚadded_range_transitionsÚremoved_range_transitionsÚmodified_range_transitions)ÚselfZaddedZremovedZmatchedZmodifiedZ	left_ruleZ
right_rule© r   ú /usr/lib64/python3.6/mlsrules.pyr   /   s&    z)MLSRulesDifference.diff_range_transitionsc             C   s€   | j jdj| ƒƒ x$| jjƒ D ]}| j|j j|ƒ qW | j jdj| ƒƒ x$| jjƒ D ]}| j	|j j|ƒ qVW | j jdƒ dS )z$Create rule lists for both policies.z,Building MLS rule lists from {0.left_policy}z-Building MLS rule lists from {0.right_policy}z"Completed building MLS rule lists.N)
r   Údebugr   Zleft_policyZmlsrulesr   Úruletyper   Zright_policyr   )r   r   r   r   r   r   P   s    z)MLSRulesDifference._create_mls_rule_listsc             C   s6   | j jdƒ d| _d| _d| _| jjƒ  | jjƒ  dS )z%Reset diff results on policy changes.zResetting MLS rule differencesN)r   r    r   r   r   r   Úclearr   )r   r   r   r   Ú_reset_diff^   s    
zMLSRulesDifference._reset_diffN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   Úlistr   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 MLS rules to allow set operations.r!   ÚsourceÚtargetÚtclassc             C   s8   || _ t|jƒ| _t|jƒ| _t|jƒ| _t|ƒ| _d S )N)Úoriginr   r)   r*   r   r+   ÚhashÚkey)r   r   r   r   r   Ú__init__p   s
    zMLSRuleWrapper.__init__c             C   s   | j S )N)r.   )r   r   r   r   Ú__hash__w   s    zMLSRuleWrapper.__hash__c             C   s   | j |j k S )N)r.   )r   Úotherr   r   r   Ú__lt__z   s    zMLSRuleWrapper.__lt__c             C   s$   | j |j ko"| j|jko"| j|jkS )N)r)   r*   r+   )r   r1   r   r   r   Ú__eq__}   s    zMLSRuleWrapper.__eq__N)r!   r)   r*   r+   )	r$   r%   r&   r'   Ú	__slots__r/   r0   r2   r3   r   r   r   r   r   j   s   r   N)Úcollectionsr   r   Ú r   Zdescriptorsr   Ú
differencer   r	   Zmlsr
   Zobjclassr   Útypesr   r   r   r   r   r   r   r   Ú<module>   s   G