HEX
Server: Apache
System: Linux ns517114.ip-158-69-26.net 6.12.0-124.55.3.el10_1.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:54:02 EDT 2026 x86_64
User: urgentelectrical (1063)
PHP: 8.2.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib64/python3.12/site-packages/setools/diff/__pycache__/difference.cpython-312.pyc
�

���i���
�ddlZddlmZmZddlmZddlZddlmZm	Z	m
Z
Gd�d�ZGd�d	�Zejd
e��ZGd�d
eeje�Zejde	��ZGd�dee�Zy)�N)�ABC�abstractmethod)�Iterable�)�PolicyObject�PolicySymbol�
SELinuxPolicyc��eZdZdZdededdfd�Zed��Zejd��Zed	��Z	e	jd
��Z	dd�Z
ededefd
��Z
edd��Zy)�
Differencez&Base class for all policy differences.�left_policy�right_policy�returnNc�\�tjt�|_||_||_y�N)�logging�	getLogger�__name__�logrr
)�selfrr
s   �>/usr/lib64/python3.12/site-packages/setools/diff/difference.py�__init__zDifference.__init__s$���$�$�X�.���&���(���c��|jSr)�_left_policy�rs rrzDifference.left_policys��� � � rc�n�|jjd|���||_|j�y)NzPolicy diff left policy set to )r�infor�_reset_diff�r�policys  rrzDifference.left_policys.�����
�
�7��x�@�A�"������rc��|jSr)�
_right_policyrs rr
zDifference.right_policy$s���!�!�!rc�n�|jjd|���||_|j�y)Nz Policy diff right policy set to )rrr"rrs  rr
zDifference.right_policy(s.�����
�
�8���A�B�#������rc��t�)z%Reset diff results on policy changes.)�NotImplementedErrorrs rrzDifference._reset_diff1s��!�!r�	rule_listc#�XK�|D]!}|j�D]}||�����#y�w)z4Generator that yields a wrapped, expanded rule list.N)�expand)r&�
wrapper_class�unexpanded_rule�
expanded_rules    r�_expand_generatorzDifference._expand_generator5s0���� )�O�!0�!7�!7�!9�
�#�M�2�2�":� )�s�(*c���t|�}t|�}||z
}||z
}t�}t||z
|��}	t||z
|��}
t|	�t|
�k(sJdt|	��dt|
�����t|	|
�D]*\}}||k(s
Jd|�d|����|j	||f��,|r5td�|D��td�|D��td�|D��fS|||fS)a�
        Standard diff of two sets.

        Parameters:
        left        An iterable
        right       An iterable

        Return:
        tuple       (added, removed, matched)

        added       Set of items in right but not left
        removed     Set of items in left but not right
        matched     Set of items in both left and right.  This is
                    in the form of tuples with the matching item
                    from left and right
        ��keyz:Matched items assertion failure (this is an SETools bug), z != c3�4K�|]}|j���y�wr��origin��.0�is  r�	<genexpr>z'Difference._set_diff.<locals>.<genexpr>qs����5��A�q�x�x����c3�4K�|]}|j���y�wrr1r3s  rr6z'Difference._set_diff.<locals>.<genexpr>rs����4�m��A�H�H�m�r7c3�RK�|]\}}|j|jf���!y�wrr1)r4�left�rights   rr6z'Difference._set_diff.<locals>.<genexpr>ss"����S�]�M�T�5�T�[�[�%�,�,�/�]�s�%')�set�sorted�len�zip�add)r:r;r/�unwrap�
left_items�right_items�added_items�
removed_items�
matched_items�left_matched_items�right_matched_itemss           r�	_set_diffzDifference._set_diff?s<��&��Y�
��%�j��!�J�.��"�[�0�
���
�#�Z�-�%?�c�J��$�k�K�&?�c�J���%�&�#�.A�*B�B�	G�H��%�&�'�t�C�0C�,D�+E�
G�	G�B��1�3F�G�K�D�%��5�=�
_�L�T�F�RV�W\�V]�^�
_�=�
���t�U�m�,�	H���5��5�5��4�m�4�4��S�]�S�S�T�
T��
�}�<�<r)rN)NT)r�
__module__�__qualname__�__doc__r	r�propertyr�setterr
r�staticmethodrr,rI�rrrrs���0�)�M�)��)�SW�)��!��!�������
�"��"�������"��3�X�3��3��3��5=��5=rrc��eZdZdZy)�DifferenceResultz!Base class for difference resultsN)rrJrKrLrPrrrRrRxs��+�rrR�T)�boundc�z�eZdZUdZeed<eed<dZdededdfd�Zd�Z	e
d	��Ze
d
��Ze
d��Z
d�Zy)
�Wrapperz/Abstract base class for policy object wrappers.r2r/�r2r/rNc� �||_||_yrrW)rr2r/s   rrzWrapper.__init__�s�������rc�b�d|jj�dt|j��d�S)N�<z
(Wrapping z)>)�	__class__r�reprr2rs r�__repr__zWrapper.__repr__�s,���4�>�>�*�*�+�:�d�4�;�;�6G�5H��K�Krc��yrrPrs r�__hash__zWrapper.__hash__����rc��yrrP�r�others  r�__eq__zWrapper.__eq__�r`rc��yrrPrbs  r�__lt__zWrapper.__lt__�r`rc��||k(SrrPrbs  r�__ne__zWrapper.__ne__�s���5�=� � r)rrJrKrLrS�__annotations__�int�	__slots__rr]rr_rdrfrhrPrrrVrV�su��9�
�I�	�H�!�I��q��s��t��L��
��
��
��
��
��
�!rrV�Sc�N��eZdZUdZeed<dZdeddf�fd�Zd�Z	d	�Z
d
�Z�xZS)�
SymbolWrapperz�
    General wrapper for policy symbols, e.g. types, roles
    to provide a diff-specific equality operation based
    on its name.
    �name�ro�symbolrNc�n��t�|�|t|j��|j|_yr)�superr�hashro)rrqr[s  �rrzSymbolWrapper.__init__�s&���
�����f�k�k�!2�3��K�K��	rc��|jSrr.rs rr_zSymbolWrapper.__hash__�s���x�x�rc�4�|j|jkSrrprbs  rrfzSymbolWrapper.__lt__�s���y�y�5�:�:�%�%rc�4�|j|jk(Srrprbs  rrdzSymbolWrapper.__eq__�s���y�y�E�J�J�&�&r)
rrJrKrL�strrirkrlrr_rfrd�
__classcell__)r[s@rrnrn�s6�����I��I� �q� �T� ��&�'rrn)r�abcrr�collections.abcr�typing�	policyreprrr	rrR�TypeVarrS�GenericrVrlrnrPrr�<module>r�s����#�$�
�A�A�g=�g=�T	�	��F�N�N�3�l�+��!�c�6�>�>�!�$�!�B�F�N�N�3�l�+��'�G�A�J�'r