ó
    ‰*£hˆ  ã                   ó†   •  S SK Jr  S SKrS SKrS	S jrS	S jr " S S\5      r " S S\	5      r
g! \ a	    S SKJr   N7f = f)
é    )ÚMutableMappingNc                 óx   • [         R                  " SR                  XR                  5       5      [        US-   S9  g )NzDeprecated (pylatexenc {}): {} é   ©Ú
stacklevel©ÚwarningsÚwarnÚformatÚstripÚDeprecationWarning)ÚverÚmsgr   s      ÚM/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pylatexenc/_util.pyÚpylatexenc_deprecated_verr   -   s,   € Ü‡M‚MØ)×0Ñ0°·i±i³kÓBÜØ˜a‘<óó    c                 óx   • [         R                  " SR                  U R                  5       5      [        US-   S9  g )NzfDeprecated (pylatexenc 2.0): {} [see https://pylatexenc.readthedocs.io/en/latest/new-in-pylatexenc-2/]r   r   r   )r   r   s     r   Úpylatexenc_deprecated_2r   5   s.   € Ü‡M‚MðSç	‰�—	‘	“Ó	ÜØ˜a‘<ór   c                   óN   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rSrg)ÚLazyDictéF   a]  
A lazy dictionary that loads its data when it is first queried.

This is used to store the legacy
:py:data:`pylatexenc.latexwalker.default_macro_dict` as well as
:py:data:`pylatexenc.latex2text.default_macro_dict` etc.  Such that these
"dictionaries" are still exposed at the module-level, but the data is loaded
only if they are actually queried.
c                 ó   • S U l         Xl        g ©N©Ú
_full_dictÚ_generate_dict_fn)ÚselfÚgenerate_dict_fns     r   Ú__init__ÚLazyDict.__init__P   s   € ØˆŒØ!1Õr   c                 óJ   • U R                   b  g U R                  5       U l         g r   r   ©r   s    r   Ú_ensure_instanceÚLazyDict._ensure_instanceT   s   € Ø�?‰?Ñ&ØØ×0Ñ0Ó2ˆ�r   c                 óX   • U R                  5         U R                  R                  U5      $ r   )r#   r   Ú__getitem__©r   Úkeys     r   r&   ÚLazyDict.__getitem__Y   ó#   € Ø×ÑÔØ�‰×*Ñ*¨3Ó/Ð/r   c                 óX   • U R                  5         U R                  R                  X5      $ r   )r#   r   Ú__setitem__)r   r(   Úvals      r   r,   ÚLazyDict.__setitem__]   s#   € Ø×ÑÔØ�‰×*Ñ*¨3Ó4Ð4r   c                 óX   • U R                  5         U R                  R                  U5      $ r   )r#   r   Ú__delitem__r'   s     r   r0   ÚLazyDict.__delitem__a   r*   r   c                 óL   • U R                  5         [        U R                  5      $ r   )r#   Úiterr   r"   s    r   Ú__iter__ÚLazyDict.__iter__e   s   € Ø×ÑÔÜ�D—O‘OÓ$Ð$r   c                 óL   • U R                  5         [        U R                  5      $ r   )r#   Úlenr   r"   s    r   Ú__len__ÚLazyDict.__len__i   s   € Ø×ÑÔÜ�4—?‘?Ó#Ð#r   c                 óV   • U R                  5         U R                  R                  5       $ r   )r#   r   Úcopyr"   s    r   r;   ÚLazyDict.copym   s!   € Ø×ÑÔØ�‰×#Ñ#Ó%Ð%r   c                 óV   • U R                  5         U R                  R                  5       $ r   )r#   r   Úclearr"   s    r   r>   ÚLazyDict.clearq   s!   € Ø×ÑÔØ�‰×$Ñ$Ó&Ð&r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r#   r&   r,   r0   r4   r8   r;   r>   Ú__static_attributes__© r   r   r   r   F   s4   † ñò2ò3ò
0ò5ò0ò%ò$ò&õ'r   r   c                   ó6   ^ • \ rS rSrSrU 4S jrSS jrSrU =r$ )ÚLineNumbersCalculatoré~   z$
Utility to calculate line numbers.
c                 ó\   >• [         [        U ]  5         S n[        U" U5      5      U l        g )Nc              3   óž   #   • Sv •  SnU[        U 5      :  a4  U R                  SU5      nUS:X  a  g US-  nUv •  U[        U 5      :  a  M3  g g 7f)Nr   Ú
éÿÿÿÿr   )r7   Úfind)ÚxÚks     r   Úfind_all_new_linesÚ:LineNumbersCalculator.__init__.<locals>.find_all_new_lines…   sP   é € àŠGØˆAØ”c˜!“f“*Ø—F‘F˜4 “O�Ø˜“7ØØ�Q‘�ð ’ð ”c˜!“f—*ùs   ‚AAÁA)ÚsuperrH   r   ÚlistÚ_pos_new_lines)r   ÚsrQ   Ú	__class__s      €r   r   ÚLineNumbersCalculator.__init__‚   s+   ø€ ÜÔ# TÑ3Ô5ò	ô #Ñ#5°aÓ#8Ó9ˆÕr   c                 óÚ   • [         R                  " U R                  U5      S-
  nUS:¼  a  U[        U R                  5      :  d   eXR                  U   -
  nU(       a  SU-   US.$ SU-   U4$ )ay  
Return the line and column number corresponding to the given `pos`.

Return a tuple `(lineno, colno)` giving line number and column number.
Line numbers start at 1 and column number start at zero, i.e., the
beginning of the document (`pos=0`) has line and column number `(1,0)`.
If `as_dict=True`, then a dictionary with keys 'lineno', 'colno' is
returned instead of a tuple.
r   r   )ÚlinenoÚcolno)ÚbisectÚbisect_rightrU   r7   )r   ÚposÚas_dictÚline_noÚcol_nos        r   Úpos_to_lineno_colnoÚ)LineNumbersCalculator.pos_to_lineno_colno•   st   € ô ×%Ò% d×&9Ñ&9¸3Ó?ÀÑAˆØ˜!‹| ¬#¨d×.AÑ.AÓ*BÓ BÐBÐBà×*Ñ*¨7Ñ3Ñ3ˆæØ '™k°FÑ;Ð;Ø�G‘˜VÐ$Ð$r   )rU   )F)	r@   rA   rB   rC   rD   r   rb   rE   Ú__classcell__)rW   s   @r   rH   rH   ~   s   ø† ñõ:÷&%ò %r   rH   )é   )Úcollections.abcr   ÚImportErrorÚcollectionsr	   r\   r   r   r   ÚobjectrH   rF   r   r   Ú<module>rj      sM   ðð>+å.ó Û ôôô"-'ˆ~ô -'ôp,%˜Fõ ,%øðy ó +ß*ð+ús   ‚1 ±A ¿A 