
    i.                         % S SK JrJr  S SKJrJrJrJr  \(       a  S SKJ	r	  \
\
\\4   S4   r\\S'   \ " S S5      5       rg)	    )IterableSequence)TYPE_CHECKING	TypeAliascastfinal)Self.
IntervalsTc                   T   \ rS rSrSr\S\SS4S j5       rS!S\\	\
      SS4S	 jjrS\
4S
 jrS\\
   4S jrS\
S\
4S jrS\\
-  S\4S jrS\4S jrS\
S\
4S jrS\
S\
4S jrS"S jrS"S jrS"S jrS\S\4S jrS\
4S jrS"S jrS"S jrS"S jrS\
S\4S jrS\S\
4S jrS rg)#IntervalSet   z
A compact and efficient representation of a set of ``(a, b)`` intervals. Can
be treated like a set of integers, in that ``n in intervals`` will return
``True`` if ``n`` is contained in any of the ``(a, b)`` intervals, and
``False`` otherwise.
sreturnr	   c           	          U " [        U5       Vs/ s H  n[        U5      [        U5      4PM     sn5      nUR                  U5      $ s  snf )zReturn a tuple of intervals, covering the codepoints of characters in `s`.

>>> IntervalSet.from_string('abcdef0123456789')
((48, 57), (97, 102))
)sortedordunion)clsr   cxs       _/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/hypothesis/internal/intervalsets.pyfrom_stringIntervalSet.from_string$   sA     6!959a#a&#a&!956wwqz 6s    A	intervalsNc                    [        [        [        S U 5       5      5      U l        [	        S U R                   5       5      (       d   eS/U l        U R                   H6  u  p#U R
                  R                  U R
                  S   U-   U-
  S-   5        M8     U R
                  R                  5       U l        U R                  [        S5      5      U l        [        U R                  [        S5      5      [        U 5      S-
  5      U l        g )Nc              3   8   #    U  H  n[        U5      v   M     g 7fN)tuple.0vs     r   	<genexpr>'IntervalSet.__init__.<locals>.<genexpr>0   s     :	1eAhh	s   c              3   >   #    U  H  n[        U5      S :H  v   M     g7f)   N)lenr   s     r   r"   r#   4   s     713q6Q;s   r      0Z)r   r
   r   r   alloffsetsappendpopsizeindex_abover   _idx_of_zerominr&   	_idx_of_Z)selfr   ur!   s       r   __init__IntervalSet.__init__.   s    %):	::&

 777777#$#NNDALLR 01 4q 81 <= #LL$$&	 ,,SX6T--c#h7TQG    c                     U R                   $ r   )r/   r4   s    r   __len__IntervalSet.__len__=   s    yyr8   c              #   f   #    U R                    H  u  p[        XS-   5       S h  vN   M     g  N	7f)Nr(   )r   range)r4   r5   r!   s      r   __iter__IntervalSet.__iter__@   s)     NNDAQA&& #&s   #1/
1ic                    US:  a  U R                   U-   nUS:  d  XR                   :  a  [        SU SU R                    S35      e[        U R                  5      S-
  nU R                  U   U:  a9  UnSnUS-   U:  a*  XC-   S-  nU R                  U   U::  a  UnOUnUS-   U:  a  M*  UnXR                  U   -
  nU R                  U   u  pxXv-   n	X::  d   eU	$ )Nr   zInvalid index z	 for [0, )r(   r%   )r/   
IndexErrorr&   r   r,   )
r4   rA   jhilomidtr5   r!   rs
             r   __getitem__IntervalSet.__getitem__D   s    q5		AAq5AN~aS	$))AFGG !#<<?QBBq&2+w1n<<$)BB q&2+ AQ~~a Evvr8   elemc                    ^ [        T[        5      (       a  [        T5      mSTs=::  a  S::  d   e   e[        U4S jU R                   5       5      $ )Nr   i c              3   R   >#    U  H  u  pUTs=:*  =(       a    U:*  Os  v   M     g 7fr    )r    startendrM   s      r   r"   +IntervalSet.__contains__.<locals>.<genexpr>a   s#     I.JE5D''C''.s   $')
isinstancestrr   anyr   )r4   rM   s    `r   __contains__IntervalSet.__contains__]   sG    dC  t9DD$H$$$$$I$..IIIr8   c                 $    SU R                   < S3$ )NzIntervalSet(rC   )r   r:   s    r   __repr__IntervalSet.__repr__c   s    dnn/q11r8   valuec                     [        U R                  U R                  SS9 H2  u  nu  p4X1:X  a  Us  $ X1:  a  [        U S35      eX::  d  M+  X!U-
  -   s  $    [        U S35      e)NTstrictz is not in list)zipr,   r   
ValueErrorr4   r\   offsetr5   r!   s        r   indexIntervalSet.indexf   sk    !$,,tLNFFQz E7/!:;;z++ M E7/233r8   c                     [        U R                  U R                  SS9 H  u  nu  p4X1:  a  Us  $ X::  d  M  X!U-
  -   s  $    U R                  $ )NTr^   )r`   r,   r   r/   rb   s        r   r0   IntervalSet.index_abovep   sL    !$,,tLNFFQzz++	 M
 yyr8   otherc                 $    U R                  U5      $ r   )r   r4   rh   s     r   __or__IntervalSet.__or__x   s    zz%  r8   c                 $    U R                  U5      $ r   )
differencerj   s     r   __sub__IntervalSet.__sub__{   s    u%%r8   c                 $    U R                  U5      $ r   )intersectionrj   s     r   __and__IntervalSet.__and__~   s      ''r8   c                 b    [        U[        5      =(       a    UR                  U R                  :H  $ r   )rT   r   r   rj   s     r   __eq__IntervalSet.__eq__   s!    %-U5??dnn3TUr8   c                 ,    [        U R                  5      $ r   )hashr   r:   s    r   __hash__IntervalSet.__hash__   s    DNN##r8   c                    [        U[        U 5      5      (       d   eU R                  nUR                  nU(       d  [        U5      $ U(       d  [        U5      $ [	        X#-   SS9nUR                  5       /nU(       aM  UR                  5       u  pgUS   u  pXiS-   ::  a  U[        Xy5      4US'   OUR                  Xg45        U(       a  MM  [        U5      $ )zMerge two sequences of intervals into a single tuple of intervals.

Any integer bounded by `x` or `y` is also bounded by the result.

>>> union([(3, 10)], [(1, 2), (5, 17)])
((1, 17),)
T)reverser'   r(   )rT   typer   r   r   r.   maxr-   )
r4   rh   r   yr   resultr5   r!   abs
             r   r   IntervalSet.union   s     %d,,,,NNOOq>!q>!15$/	--/" ==?DA":DAEzQ^r
 qf%! i" 6""r8   c                    [        U[        U 5      5      (       d   eU R                  nUR                  nU(       d  [        U5      $ [	        [        [        U5      5      nSnSn/ nU[        U5      :  a  U[        U5      :  a  X$   u  pxXx::  d   eX5   u  pX::  d   eX:  a  US-  nOqX:  a  UR                  X$   5        US-  nOSX::  a  X:  a  US-  nOCU
S-   X$   S'   US-  nO3UR                  XyS-
  45        U
S-   U::  a  U
S-   X$   S'   US-  nOUS-  nU[        U5      :  a  U[        U5      :  a  M  UR                  X$S 5        [        [        [        U5      5      $ )aG  Set difference for lists of intervals. That is, returns a list of
intervals that bounds all values bounded by x that are not also bounded by
y. x and y are expected to be in sorted order.

For example difference([(1, 10)], [(2, 3), (9, 15)]) would
return [(1, 1), (4, 8)], removing the values 2, 3, 9 and 10 from the
interval.
r   r(   N)
rT   r~   r   r   listmapr&   r-   extendr   )r4   rh   r   r   rA   rE   r   xlxrylyrs              r   rn   IntervalSet.difference   sr    %d,,,,NNOOq>!T1&(#a&jQQZ TFB8O8TFB8O8w Q ad#Q8 FA !1fADGFA r6l+6R< !1fADGFA
 FAi #a&jQQZp 	ae3uf-..r8   c                 
   [        U[        U 5      5      (       d   U5       e/ nS=p4U[        U R                  5      :  a  U[        UR                  5      :  a  U R                  U   u  pVUR                  U   u  pxXX:  a  US-  nO@Xv:  a  US-  nO5UR	                  [        XW5      [        Xh5      45        Xh:  a  US-  nOUS-  nU[        U R                  5      :  a  U[        UR                  5      :  a  M  [        U5      $ )z(Set intersection for lists of intervals.r   r(   )rT   r~   r&   r   r-   r   r2   r   )	r4   rh   r   rA   rE   r5   r!   UVs	            r   rr   IntervalSet.intersection   s    %d,,3e3,		#dnn%%!c%//.B*B>>!$DA??1%DAuQQ  #a)SY!785FAFA #dnn%%!c%//.B*B 9%%r8   c                    XR                   ::  ak  U R                   U R                  -
  nX::  a  XR                  -  nO"U R                  X-
  -
  nXR                  :  d   eSUs=::  a  U R                   ::  d   e   e[        X   5      $ )Nr   )r3   r1   chr)r4   rA   ns      r   char_in_shrink_order IntervalSet.char_in_shrink_order  s      !2!22Av&&&
 %%/,,,,,+T^^+++++47|r8   r   c                    [        U5      S:X  d   eU R                  [        U5      5      nX R                  ::  a  U R                  U R                  -
  nU R                  Us=::  a  U R                  ::  a$  O  O!X R                  -  nSUs=::  a  U::  d   e   eO1U R                  U-
  U-   nUS-   Us=::  a  U R                  ::  d   e   eSUs=::  a  U R                  ::  d   e   eU$ )z"
Inverse of char_in_shrink_order.
r(   r   )r&   rd   r   r3   r1   )r4   r   rA   r   s       r   index_from_char_in_shrink_order+IntervalSet.index_from_char_in_shrink_order$  s     1v{{JJs1v!2!22A  A77&&&A{{"{"{ %%)A-1u3T^^33333+T^^+++++r8   )r3   r1   r   r,   r/   )rP   )rh   r	   r   r	   ) __name__
__module____qualname____firstlineno____doc__classmethodrU   r   r   r   intr6   r;   r?   rK   boolrW   rZ   rd   r0   rk   ro   rs   objectrv   rz   r   rn   rr   r   r   __static_attributes__rP   r8   r   r   r      s,    C F  H(8C="9 H4 H '(3- 'S S 2Js Jt J2# 243 43 4  !&(VF Vt V$# $"#HK/Z&(c c 0  r8   r   N)collections.abcr   r   typingr   r   r   r   typing_extensionsr	   r   r   r
   __annotations__r   rP   r8   r   <module>r      sQ    / . 8 8&eCHos23
I 3 [ [ [r8   