HOME


Mini Shell 1.0
DIR: /lib/python3/dist-packages/landscape/lib/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/landscape/lib/__pycache__/sequenceranges.cpython-312.pyc
�

�~�eV��X�ddlmZGd�de�ZGd�d�Zd�Zd�Zd�Zd	�Zd
�Z	y)�)�xrangec��eZdZdZy)�
SequenceErrorz@Raised when the sequence isn't proper for translation to ranges.N)�__name__�
__module__�__qualname__�__doc__���>/usr/lib/python3/dist-packages/landscape/lib/sequenceranges.pyrrs��Jrrc�Z�eZdZdZd�Zed��Zed��Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
y)�SequenceRangesaZHigh level interface to ranges.

    A ranges list represent a sequence of ordered and non-repeating
    elements into a more compact format, by representing 3 or more
    consecutive entries by a range.

    This means that a sequence such as

        [1, 2, 4, 5, 6, 8, 10, 11, 12, 14]

    becomes

        [1, 2, (4, 6), 8, (10, 12), 14]
    c��g|_y�N��_ranges��selfs r�__init__zSequenceRanges.__init__s	����rc�D�|�}t|�|jdd|Sr)�sequence_to_rangesr)�cls�sequence�objs   r�
from_sequencezSequenceRanges.from_sequences ���e��+�H�5����A���
rc�2�|�}||jdd|Srr)r�rangesrs   r�from_rangeszSequenceRanges.from_ranges!s���e������A���
rc�>�tt|j��Sr)�list�ranges_to_sequencerrs r�to_sequencezSequenceRanges.to_sequence's���&�t�|�|�4�5�5rc�,�t|j�Sr)r rrs r�	to_rangeszSequenceRanges.to_ranges*s���D�L�L�!�!rc�,�t|j�Sr)r!rrs r�__iter__zSequenceRanges.__iter__-s��!�$�,�,�/�/rc���t|j|�}|t|j�kr:|j|}t|t�r|d|cxkxr|dkScS||k(Sy)Nr�F)�find_ranges_indexr�len�
isinstance�tuple)r�item�index�tests    r�__contains__zSequenceRanges.__contains__0sf��!�$�,�,��5���3�t�|�|�$�$��<�<��&�D��$��&��A�w�$�1�$�q�'�1�1�1�1��4�<��rc�0�t|j|�yr)�
add_to_rangesr�rr-s  r�addzSequenceRanges.add9s���d�l�l�D�)rc�0�t|j|�yr)�remove_from_rangesrr3s  r�removezSequenceRanges.remove<s���4�<�<��.rN)rrrr	r�classmethodrrr"r$r&r0r4r7r
rrrrsR��
������
����
6�"�0��*�/rrc#�bK�t|�}	t|�x}}|�p	t|�}||dzk(r|dz
}nR|�+||kr&||krtd|�d|�d���td|�d���||k(r|��n||dzk(r	|��|��n||f��|x}}|��oyy#t$rYywxYw#t$rd}Y��wxYw�w)z9Iterate over range items that compose the given sequence.Nr(zSequence is unordered (z < �)zFound duplicated item ()�iter�next�
StopIterationr)r�iterator�range_start�
range_stopr-s     rrr@s�����H�~�H��#'��>�1��j��
!�	���>�D��:��>�!��!�O�J���D�J�$6��*�$�'�1�$���Z�N�!�L���(�*A�$���(K�L�L��[�(�!�!��{�Q��.�!�!� � �"�J�/�/�'+�+�K�*�-�
!�������
�	��D�	�sP�B/�
B�B/�B�A"B/�
B/�	B�B/�B�B/�B,�)B/�+B,�,B/c#�K�|D]F}t|t�r0|\}}||kDr
td||��t||dz�D]}|����C|���Hy�w)z;Iterate over individual items represented in a ranges list.zRange error %d > %dr(N)r+r,�
ValueErrorr)rr-�start�ends    rr!r!ase��������d�E�"��J�E�3��s�{� �!6��s�C�C��u�c�A�g�.�
���
�
��J��s�A
Ac��d}t|�}||kr&||zdz}||}	|d}||kDr|dz}n|}||kr�&|S#t$rY� wxYw)z'Find the index where an entry *may* be.r�r()r*�	TypeError)rr-�lo�hi�midr/s      rr)r)nsv��	
�B�	�V��B�
�r�'��B�w�1�n���c�{��	���7�D��$�;��q��B��B�
�r�'��I��
�	��	�s�;�	A�Ac�
�t||�x}x}}|x}}t|�}||kr/||}t|t�r|d|cxkr|dkr	yn||k(ry|dkDrC||dz
}t|t�r|d|dz
k7rn|d}n||dz
k7rn|dz}|dz}|dkDr�C||kr@||}t|t�r|d|dzk7rn|d}n||dzk7rn|dz
}|dz
}||kr�@||z
dkr|j	||�y||ff|||y)z.Insert item in ranges, reorganizing as needed.rr(NrF)r)r*r+r,�insert)	rr-�index_start�
index_stopr.r?r@�
ranges_lenr/s	         rr2r2�sp��(9���'F�F�K�F�*�u�#�#�K�*��V��J�
�z���e�}���d�E�"��A�w�$�)�$�q�'�)��*�
�T�\����/��k�A�o�&���d�E�"��A�w�+��/�)���q�'�K��{�Q��&���1��K��q�����/��z�
!��j�!���d�E�"��A�w�*�q�.�(���a��J��z�A�~�%���!�O�J��a��
��z�
!��K��!�#��
�
�e�T�"�+6�
�*C�)E��{�:�&rc�B�t||�}t|�}||kr�||}t|t�rd|\}}||k\rY||dzkrt	|dz|dz�|||dzn|dz|ff|||dz||dz
kDr||k7rt	||�|||y||dz
ff|||yyy||k(r||=yyy)z0Remove item from ranges, reorganizing as needed.�r(N)r)r*r+r,�range)rr-r.rOr/r?r@s       rr6r6�s���
�f�d�+�E��V��J��z���e�}���d�E�"�&*�#�K���{�"���q��(�05�d�Q�h�
�Q��0O�F�5�5�1�9�-�26��(�J�1G�0I�F�5�5�1�9�-�����)�"�d�*�.3�K��.F��u�U�+�,7����+B�*D�F�5��'�+�#��T�\��u�
��#rN)
�twisted.python.compatr�	Exceptionrrrr!r)r2r6r
rr�<module>rUs=��(�K�I�K�5/�5/�p,�B
��$.F�br