
    cwiH	                         S r SSKJr  SSKJrJr   " S S5      r " S S\R                  5      r " S S	\\R                  5      r
g
)z 
Utility functions and classes.
    )abc)Optionalcastc                   :    \ rS rSrSrS	S\S\S    4S jjrS rSr	g)
Slice   z
Wrapper for Python's slice that computes index ranges to slice sequences.

Currently, the range is recomputed each time. It is probably also possible
to combine the involved slices into one.
Nslcrecc                     Xl         X l        g N)_slc_rec)selfr	   r
   s      E/home/james-whalen/.local/lib/python3.13/site-packages/clingo/util.py__init__Slice.__init__   s    		    c                     U R                   c!  [        U R                  R                  U5      6 $ U R                   R	                  U5      U R                     $ )zG
Return a range providing indices to access a sequence of length size.
)r   ranger   indicesrngr   sizes     r   r   	Slice.rng   sL     yy  499$$T*+	
 t$TYY/	
r   )r   r   r   )
__name__
__module____qualname____firstlineno____doc__slicer   r   r   __static_attributes__ r   r   r   r      s$    E (9 
r   r   c                   t    \ rS rSrSrS\R                  S\4S jr\	S 5       r
S\4S jrS	 rS
 rS rS rSrg)SlicedSequence"   
Helper to slice sequences.
seqr	   c                 8    Xl         X l        SU l        S U l        g )N)_seqr   _len_lst)r   r'   r	   s      r   r   SlicedSequence.__init__'   s    				r   c                     [        U R                  5      nXR                  :w  a&  U R                  R	                  U5      U l        Xl        U R
                  $ r   )lenr*   r+   r   r   r,   r   s     r   _rngSlicedSequence._rng-   s<    499~99		d+DIIyyr   returnc                 ,    [        U R                  5      $ r   )r/   r0   r   s    r   __len__SlicedSequence.__len__5   s    499~r   c              #   T   #    U R                    H  nU R                  U   v   M     g 7fr   )r0   r*   )r   idxs     r   __iter__SlicedSequence.__iter__8   s!     99C))C.  s   &(c                     [        U[        5      (       a)  [        U R                  [	        XR
                  5      5      $ U R                  U R                  U      $ r   )
isinstancer    r$   r*   r   r   r0   )r   r	   s     r   __getitem__SlicedSequence.__getitem__<   s@    c5!!!$))U3		-BCCyy3((r   c                 *    [        [        U 5      5      $ r   )strlistr4   s    r   __str__SlicedSequence.__str__A   s    4:r   c                 *    [        [        U 5      5      $ r   )reprrA   r4   s    r   __repr__SlicedSequence.__repr__D   s    DJr   )r+   r,   r*   r   N)r   r   r   r   r   r   Sequencer   r   propertyr0   intr5   r9   r=   rB   rF   r!   r"   r   r   r$   r$   "   sR    CLL u    !)
 r   r$   c                   n   ^  \ rS rSrSrS\R                  S\4U 4S jjr\	S 5       r
S rS rS	 rS
rU =r$ )SlicedMutableSequenceH   r&   r'   r	   c                 $   > [         TU ]  X5        g r   )superr   )r   r'   r	   	__class__s      r   r   SlicedMutableSequence.__init__M   s    "r   c                 J    [        [        R                  U R                  5      $ r   )r   r   MutableSequencer*   r4   s    r   _mut_seqSlicedMutableSequence._mut_seqP   s    C''33r   c                 z    [        U[        5      (       a  [        S5      eX R                  U R                  U   '   g Nzslicing not implementedr<   r    	TypeErrorrT   r0   )r   indexasts      r   __setitem__!SlicedMutableSequence.__setitem__T   s0    eU##566*-dii&'r   c                 x    [        U[        5      (       a  [        S5      eU R                  U R                  U   	 g rW   rX   )r   rZ   s     r   __delitem__!SlicedMutableSequence.__delitem__Y   s0    eU##566MM$))E*+r   c                 :    X R                   U R                  U   '   g r   )rT   r0   )r   rZ   values      r   insertSlicedMutableSequence.insert^   s    */dii&'r   r"   )r   r   r   r   r   r   rS   r   r   rI   rT   r\   r_   rc   r!   __classcell__)rP   s   @r   rL   rL   H   sI    #C// #e # 4 4.
,
0 0r   rL   N)r   collectionsr   typingr   r   r   rH   r$   rS   rL   r"   r   r   <module>rh      sA     !

 
.# S\\ # L0NC,?,? 0r   