
    ̆h                        S r SSKJr  SSKrSSKrSSKJrJrJr  S\R                  :*  r
S\R                  :*  rSrSrSrS	rS
r " S S5      rSS jrSS jr          SS jr " S S5      rSSS jjrg)zy
Utilities and compatibility abstraction.

Licensed under MIT
Copyright (c) 2015 - 2020 Isaac Muse <isaacmuse@gmail.com>
    )annotationsN)AnyCallableAnyStr)      )r            r      c                  ^    \ rS rSrSrSS jrSS jrSS jr\SS j5       r	SS jr
SS jrS	rg
)
StringIter   zPreprocess replace tokens.c                    Xl         SU l        g)Initialize.r   N)_string_index)selftexts     E/opt/services/DDDS/venv/lib/python3.13/site-packages/backrefs/util.py__init__StringIter.__init__   s         c                    U $ )zIterate. r   s    r   __iter__StringIter.__iter__   s	     r   c                "    U R                  5       $ )z"Python 3 iterator compatible next.)iternextr   s    r   __next__StringIter.__next__$   s     }}r   c                    U R                   $ )z
Get Index.)r   r   s    r   indexStringIter.index)   s     {{r   c                b    XR                   :  a  [        S5      eU =R                   U-  sl         g)zRewind index.zCan't rewind past beginning!N)r   
ValueError)r   counts     r   rewindStringIter.rewind/   s(     ;;;<<ur   c                     U R                   U R                     nU =R                  S-  sl        U$ ! [         a  n[        UeSnAff = f)z)Iterate through characters of the string.r
   N)r   r   
IndexErrorStopIteration)r   chares      r   r    StringIter.iternext7   sH    	'<<,DKK1K   	'Q&	's   .2 
AAA)r   r   N)r   strreturnNone)r2   r   )r2   r1   )r2   int)r(   r4   r2   r3   )__name__
__module____qualname____firstlineno____doc__r   r   r!   propertyr$   r)   r    __static_attributes__r   r   r   r   r      s2    $

  
	r   r   c                    [        U [        5      (       a  U R                  SS5      $ [        U [        5      (       d  [        U 5      R                  SS5      $ U $ )zConvert to byte string.asciibackslashreplace)
isinstancer1   encodebytesobjs    r   _to_bstrrD   C   sK     #szz'#566U##3xw(:;;Jr   c                F    [        U [        5      (       d  [        U 5      $ U $ )zConvert to string.)r?   r1   rB   s    r   _to_strrF   M   s     c33xJr   c                   U n[        US5       GHW  u  pVUS:X  a  M  Uu  pxU[        :X  a  [        XH5      nM)  U[        :X  a  Ub  XH   nM<  U(       d  UOUS   nML  U[        :X  a;  US:X  a  [        U5      nMi  US:X  a  [        U5      nM|  US:X  a  [        U5      nM  M  U[        :X  d  M  US   (       aI  US   S:X  a@  [        U[        5      (       a  [        S5      e[        U[        5      (       a  [        S5      eU" U5      nUS   n	U	S	:X  a  UR                  US
   US   5      nGM  U	S:X  a  UR                  US
   US   5      nGM?  UR                  US
   US   5      nGMZ     U" U5      $ )z-Perform a string format on a set of captures.r   arsr   z0Unknown format code 's' for object of type 'int'z2Unknown format code 's' for object of type 'float'r
   ^r   >)	enumerateFMT_ATTRgetattr	FMT_INDEXFMT_CONVr=   reprr1   FMT_SPECr?   r4   r'   floatcenterrjustljust)
captures
formatting	converterdefaultcaptureifmtfmt_typevalue	spec_types
             r   format_capturesrb   U   sg    GJ*6xg-G" !.)0'gaj!|.#w-#g,  !QxE!HOgs++$%WXXgu--$%YZZ  (GaIC!..q58<c!!--a%(;!--a%(;O +T Wr   c                  J   ^  \ rS rSr% SrSrS\S'   SU 4S jjrS	S jrSr	U =r
$ )
	Immutable   z
Immutable.r   ztuple[Any, ...]	__slots__c                V   > UR                  5        H  u  p#[        TU ]	  X#5        M     g)r   N)itemssuper__setattr__)r   kwargskv	__class__s       r   r   Immutable.__init__   s$     LLNDAG% #r   c                    [        S5      e)zPrevent mutability.zClass is immutable!)AttributeError)r   namer`   s      r   rj   Immutable.__setattr__   s     233r   )rk   r   r2   r3   )rr   r1   r`   r   r2   r3   )r5   r6   r7   r8   r9   rf   __annotations__r   rj   r;   __classcell__)rn   s   @r   rd   rd      s    !#I#&4 4r   rd   c                8    [         R                  " U [        US9  g)zWarn deprecated.)category
stacklevelN)warningswarnDeprecationWarning)messagerx   s     r   warn_deprecatedr}      s     MM#r   )rC   r   r2   rA   )rC   r   r2   r1   )
rX   zlist[AnyStr]rY   ztuple[tuple[int, Any]]rZ   zCallable[[Any], AnyStr]r[   r   r2   r   )r   )r|   r1   rx   r4   r2   r3   )r9   
__future__r   ry   systypingr   r   r   version_infoPY311PY312	FMT_FIELDrP   rN   rQ   rS   r   rD   rF   rb   rd   r}   r   r   r   <module>r      s    #  
 ( (3###3###		* *Z33&3 '3 	3
 3l4 4"r   