
    1yi                        d Z ddlmZ ddlZddlZddlmZmZmZ dej                  k  Z
dej                  k  ZdZdZdZd	Zd
Z G d d      ZddZddZ	 	 	 	 	 	 	 	 	 	 ddZ G d d      ZdddZy)zy
Utilities and compatibility abstraction.

Licensed under MIT
Copyright (c) 2015 - 2020 Isaac Muse <isaacmuse@gmail.com>
    )annotationsN)AnyCallableAnyStr)      )r            r      c                  J    e Zd ZdZd	dZd
dZddZedd       ZddZ	ddZ
y)
StringIterzPreprocess replace tokens.c                     || _         d| _        y)Initialize.r   N)_string_index)selftexts     O/var/www/html/content_weaver/venv/lib/python3.12/site-packages/backrefs/util.py__init__zStringIter.__init__   s         c                    | S )zIterate. r   s    r   __iter__zStringIter.__iter__   s	     r   c                "    | j                         S )z"Python 3 iterator compatible next.)iternextr   s    r   __next__zStringIter.__next__$   s     }}r   c                    | j                   S )z
Get Index.)r   r   s    r   indexzStringIter.index)   s     {{r   c                b    || j                   kD  rt        d      | xj                   |z  c_         y)zRewind index.zCan't rewind past beginning!N)r   
ValueError)r   counts     r   rewindzStringIter.rewind/   s*     4;;;<<ur   c                    	 | j                   | j                     }| xj                  dz  c_        |S # t        $ r}t        |d}~ww xY w)z)Iterate through characters of the string.r
   N)r   r   
IndexErrorStopIteration)r   chares      r   r   zStringIter.iternext7   sH    	'<<,DKK1K   	'Q&	's   .2 	AAAN)r   strreturnNone)r+   r   )r+   r*   )r+   int)r#   r-   r+   r,   )__name__
__module____qualname____doc__r   r   r   propertyr    r$   r   r   r   r   r   r      s2    $

  
	r   r   c                    t        | t              r| j                  dd      S t        | t              st        |       j                  dd      S | S )zConvert to byte string.asciibackslashreplace)
isinstancer*   encodebytesobjs    r   _to_bstrr;   C   sE     #szz'#566U#3xw(:;;Jr   c                <    t        | t              st        |       S | S )zConvert to string.)r6   r*   r9   s    r   _to_strr=   M   s     c33xJr   c                   | }t        |d      D ].  \  }}|dk(  r|\  }}|t        k(  rt        ||      }(|t        k(  r|||   }9|s|n|d   }C|t        k(  r4|dk(  rt        |      }]|dk(  rt        |      }n|dk(  stt        |      }|t        k(  s|d   r>|d   dk(  r6t        |t              rt        d      t        |t              rt        d       ||      }|d   }	|	d	k(  r|j                  |d
   |d         }|	dk(  r|j                  |d
   |d         }|j                  |d
   |d         }1  ||      S )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_CONVr4   reprr*   FMT_SPECr6   r-   r"   floatcenterrjustljust)
captures
formatting	converterdefaultcaptureifmtfmt_typevalue	spec_types
             r   format_capturesrY   U   sg    GJ* '<36%xgu-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                  <     e Zd ZU dZdZded<   d fdZddZ xZS )		Immutablez
Immutable.r   ztuple[Any, ...]	__slots__c                V    |j                         D ]  \  }}t        | 	  ||        y)r   N)itemssuper__setattr__)r   kwargskv	__class__s       r   r   zImmutable.__init__   s-     LLN 	&DAqG1%	&r   c                    t        d      )zPrevent mutability.zClass is immutable!)AttributeError)r   namerW   s      r   r`   zImmutable.__setattr__   s     233r   )ra   r   r+   r,   )rg   r*   rW   r   r+   r,   )	r.   r/   r0   r1   r\   __annotations__r   r`   __classcell__)rd   s   @r   r[   r[      s    !#I#&4r   r[   c                <    t        j                  | t        |       y)zWarn deprecated.)category
stacklevelN)warningswarnDeprecationWarning)messagerl   s     r   warn_deprecatedrq      s     MM#r   )r:   r   r+   r8   )r:   r   r+   r*   )
rO   zlist[AnyStr]rP   ztuple[tuple[int, Any]]rQ   zCallable[[Any], AnyStr]rR   r   r+   r   )r   )rp   r*   rl   r-   r+   r,   )r1   
__future__r   rm   systypingr   r   r   version_infoPY311PY312	FMT_FIELDrG   rE   rH   rJ   r   r;   r=   rY   r[   rq   r   r   r   <module>ry      s    #  
 ( (3###3###		* *Z33&3 '3 	3
 3l4 4"r   