HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/lib/python3/dist-packages/landscape/lib/__pycache__/sequenceranges.cpython-38.pyc
U

���c\�@sXddlmZGdd�de�ZGdd�de�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�)�xrangec@seZdZdZdS)�
SequenceErrorz@Raised when the sequence isn't proper for translation to ranges.N)�__name__�
__module__�__qualname__�__doc__�rr�>/usr/lib/python3/dist-packages/landscape/lib/sequenceranges.pyrsrc@s`eZdZdZdd�Zedd��Zedd��Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dS)�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]
    cCs
g|_dS�N��_ranges��selfrrr	�__init__szSequenceRanges.__init__cCs|�}t|�|jdd�<|Sr)�sequence_to_rangesr
)�cls�sequence�objrrr	�
from_sequenceszSequenceRanges.from_sequencecCs|�}||jdd�<|Srr)r�rangesrrrr	�from_ranges!szSequenceRanges.from_rangescCstt|j��Sr)�list�ranges_to_sequencer
rrrr	�to_sequence'szSequenceRanges.to_sequencecCs
t|j�Sr)rr
rrrr	�	to_ranges*szSequenceRanges.to_rangescCs
t|j�Sr)rr
rrrr	�__iter__-szSequenceRanges.__iter__cCsZt|j|�}|t|j�krV|j|}t|t�rN|d|koH|dkSS||kSdS)Nr�F)�find_ranges_indexr
�len�
isinstance�tuple)r�item�index�testrrr	�__contains__0s

 zSequenceRanges.__contains__cCst|j|�dSr)�
add_to_rangesr
�rr"rrr	�add9szSequenceRanges.addcCst|j|�dSr)�remove_from_rangesr
r'rrr	�remove<szSequenceRanges.removeN)rrrrr�classmethodrrrrrr%r(r*rrrr	r
s

	r
ccs�t|�}zt|�}}Wntk
r.YdSX|dk	r�zt|�}Wntk
r\d}YnX||dkrt|d7}q0|dk	r�||kr�||kr�td||f��ntd|f��||kr�|Vn$||dkr�|V|Vn
||fV|}}q0dS)z9Iterate over range items that compose the given sequence.NrzSequence is unordered (%r < %r)zFound duplicated item (%r))�iter�next�
StopIterationr)r�iterator�range_start�
range_stopr"rrr	r@s2

�
rccsV|D]L}t|t�rJ|\}}||kr.td||��t||d�D]
}|Vq<q|VqdS)z;Iterate over individual items represented in a ranges list.zRange error %d > %drN)r r!�
ValueErrorr)rr"�start�endrrr	r`s

rcCsfd}t|�}||krb||d}||}z|d}Wntk
rHYnX||kr\|d}q|}q|S)z'Find the index where an entry *may* be.r�r)r�	TypeError)rr"�lo�hiZmidr$rrr	rms
rc	CsZt||�}}}|}}t|�}||krn||}t|t�rb|d|krX|dkrnnqndSn||krndS|dkr�||d}t|t�r�|d|dkr�q�|d}n||dkr�q�|d8}|d8}qn||k�r(||}t|t��r|d|dkr��q(|d}n||dk�r�q(|d7}|d7}q�||dk�rD|�||�n||ff|||�<dS)z.Insert item in ranges, reorganizing as needed.rrNr5)rrr r!�insert)	rr"Zindex_startZ
index_stopr#r0r1�
ranges_lenr$rrr	r&sB
 





r&cCs�t||�}t|�}||kr�||}t|t�r�|\}}||kr�||dkrht|d|d�|||d�<n|d|ff|||d�<||dkr�||kr�t||�|||�<q�||dff|||�<n||kr�||=dS)z0Remove item from ranges, reorganizing as needed.�rN)rrr r!�range)rr"r#r:r$r0r1rrr	r)�s 

 r)N)Ztwisted.python.compatr�	Exceptionr�objectr
rrrr&r)rrrr	�<module>s8 
1