�
�~�eV � �X � d dl mZ G d� de� Z G d� d� Zd� Zd� Zd� Zd � Zd
� Z y)� )�xrangec � � e Zd ZdZy)�
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.pyr r s � �Jr r c �Z � e Zd ZdZd� Zed� � Zed� � Zd� Zd� Z d� Z
d� Zd � Zd
� Z
y)�SequenceRangesaZ High 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 � ���r c �D � | � }t |� |j d d |S r )�sequence_to_rangesr )�cls�sequence�objs r �
from_sequencezSequenceRanges.from_sequence s � ��e��+�H�5����A���
r c �2 � | � }||j d d |S r r )r �rangesr s r �from_rangeszSequenceRanges.from_ranges! s � ��e������A���
r c �> |