
    h~(              	       @   S SK r S SKrSR                  r " S S5      r " S S5      r " S S5      r " S	 S
\5      rS r	S r
 " S S\5      rS rS rS rSSSSSSSS.R                   rS\" \" \\" S5      5      5      -   rS rS r\" 5       rS rS rS"S  jrS! rg)#    N    c                   d    \ rS rSrSrS rS r\R                  S:X  a  S r	OS r	S r
S	 rS
 rSrg)UnicodeLiteralBuilder   zAssemble a unicode string.
    c                     / U l         g Ncharsselfs    X/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Compiler/StringEncoding.py__init__UnicodeLiteralBuilder.__init__   s	    
r   c                     [        U[        5      (       d   S[        U5       35       eU R                  R	                  U5        g )NzExpected str, got )
isinstancestrtyper
   appendr   
characterss     r   r   UnicodeLiteralBuilder.append   s:    *c**S.@jAQ@R,SS*

*%r     c                    US:  aZ  US-  nU R                   R                  [        US-  S-   5      5        U R                   R                  [        US-  S-   5      5        g U R                   R                  [        U5      5        g )Nr               r
   r   chrr   char_numbers     r   append_charval$UnicodeLiteralBuilder.append_charval   so    U" w&

!!3t(;v'E#FH

!!3t(;v'E#FH

!!3{#35r   c                 L    U R                   R                  [        U5      5        g r   r   r    s     r   r"   r#   !   s    JJs;/1r   c                 &    U R                  U5        g r   )r"   r   r!   escape_strings      r   append_uescape$UnicodeLiteralBuilder.append_uescape$   s    K(r   c                 J    [        SR                  U R                  5      5      $ )N )EncodedStringjoinr
   r   s    r   	getstringUnicodeLiteralBuilder.getstring'   s    RWWTZZ011r   c                 &    S U R                  5       4$ r   r.   r   s    r   
getstrings UnicodeLiteralBuilder.getstrings*   s    dnn&''r   r	   N)__name__
__module____qualname____firstlineno____doc__r   r   sys
maxunicoder"   r(   r.   r2   __static_attributes__ r   r   r   r      s8    & ~~	6	2)2(r   r   c                   B    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)BytesLiteralBuilder.   z*Assemble a byte string or char value.
    c                     / U l         Xl        g r   r
   target_encodingr   rB   s     r   r   BytesLiteralBuilder.__init__1   s    
.r   c                     [        U[        5      (       a  UR                  U R                  5      n[        U[        5      (       d   [        [        U5      5      5       eU R                  R                  U5        g r   )r   r   encoderB   bytesr   r
   r   r   s     r   r   BytesLiteralBuilder.append5   sY    j#&&#**4+?+?@J*e,,Cc$z2B.CC,

*%r   c                 j    U R                   R                  [        U5      R                  S5      5        g )N
ISO-8859-1)r
   r   r   rF   r    s     r   r"   "BytesLiteralBuilder.append_charval;   s$    

3{+22<@Br   c                 &    U R                  U5        g r   )r   r&   s      r   r(   "BytesLiteralBuilder.append_uescape>   s    M"r   c                 T    [        [        U R                  5      U R                  5      $ r   )bytes_literal
join_bytesr
   rB   r   s    r   r.   BytesLiteralBuilder.getstringA   s    Z

3T5I5IJJr   c                 "    U R                  5       $ r   r1   r   s    r   getcharBytesLiteralBuilder.getcharE   s    ~~r   c                 &    U R                  5       S 4$ r   r1   r   s    r   r2   BytesLiteralBuilder.getstringsI   s     $''r   rA   N)r4   r5   r6   r7   r8   r   r   r"   r(   r.   rS   r2   r;   r<   r   r   r>   r>   .   s,    /&C#K (r   r>   c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
StrLiteralBuilderM   zDAssemble both a bytes and a unicode representation of a string.
    c                 B    [        U5      U l        [        5       U l        g r   )r>   _bytesr   _unicoderC   s     r   r   StrLiteralBuilder.__init__P   s    +O<-/r   c                 p    U R                   R                  U5        U R                  R                  U5        g r   )r[   r   r\   r   s     r   r   StrLiteralBuilder.appendT   s&    :&Z(r   c                 p    U R                   R                  U5        U R                  R                  U5        g r   )r[   r"   r\   r    s     r   r"    StrLiteralBuilder.append_charvalX   s&    "";/$$[1r   c                 p    U R                   R                  U5        U R                  R                  U5        g r   )r[   r   r\   r"   r&   s      r   r(    StrLiteralBuilder.append_uescape\   s&    =)$$[1r   c                 j    U R                   R                  5       U R                  R                  5       4$ r   )r[   r.   r\   r   s    r   r2   StrLiteralBuilder.getstrings`   s'    %%')@)@)BCCr   )r[   r\   N)r4   r5   r6   r7   r8   r   r   r"   r(   r2   r;   r<   r   r   rX   rX   M   s!    0)22Dr   rX   c                   L    \ rS rSrSrS rS rS r\S 5       r	S r
S rS	 rS
rg)r,   d   Nc                     U $ r   r<   r   memos     r   __deepcopy__EncodedString.__deepcopy__j       r   c                 V    U R                   c   eU R                  U R                   5      $ r   encodingrF   r   s    r   
byteencodeEncodedString.byteencodem   s%    }}((({{4==))r   c                 B    U R                   b   eU R                  S5      $ )NzUTF-8ro   r   s    r   
utf8encodeEncodedString.utf8encodeq   s!    }}$$${{7##r   c                     U R                   S L $ r   )rp   r   s    r   
is_unicodeEncodedString.is_unicodeu   s    }}$$r   c                     [        U 5      $ r   )string_contains_surrogatesr   s    r   contains_surrogates!EncodedString.contains_surrogatesy   s    )$//r   c                 6    [        U R                  5       S5      $ )Nutf8)rO   rt   r   s    r   as_utf8_stringEncodedString.as_utf8_string|   s    T__.77r   c                     U R                   c   U R                  5       nUR	                  5       $ [        U R                  5       U R                   5      nUR	                  5       $ r   )rp   r   rO   rq   as_c_string_literal)r   ss     r   r   !EncodedString.as_c_string_literal   sS    == ##%A $$&& doo/?A$$&&r   r<   )r4   r5   r6   r7   rp   rk   rq   rt   propertyrw   r{   r   r   r;   r<   r   r   r,   r,   d   s;     H*$ % %08'r   r,   c                 h    [        [        U 5       H  nUS:  a    gSUs=::  a
  S::  d  M     g  M      g)z
Check if the unicode string contains surrogate code points
on a CPython platform with wide (UCS-4) or narrow (UTF-16)
Unicode, i.e. characters that would be spelled as two
separate code units on a narrow platform.
r   Tr     F)mapord)ustringcs     r   rz   rz      s9     gu9Q &  ! 
 r   c                     Sn[         R                  S:H  n[        [        U 5       HA  nUS:  d  US:  a  U(       a    gM  U(       d    gUS::  a  U(       a    gSnM6  U(       d    gSnMC     U$ )z
Check if the unicode string contains lone surrogate code points
on a CPython platform with wide (UCS-4) or narrow (UTF-16)
Unicode, i.e. characters that would be spelled as two
separate code units on a narrow platform, but that do not form a pair.
Fr   r   r   T  )r9   r:   r   r   )r   last_was_startunicode_uses_surrogate_encodingr   s       r   string_contains_lone_surrogatesr      sl     N&)nn&=#gv:V 0&[!N!"N   r   c                   :    \ rS rSrSrS rS rS rS rSr	S r
S	rg)
BytesLiteral   Nc                     U $ r   r<   ri   s     r   rk   BytesLiteral.__deepcopy__   rm   r   c                     [        U 5      $ r   )rG   r   s    r   rq   BytesLiteral.byteencode   s    T{r   c                      SU -  5       e)Nz this is not a unicode string: %rr<   r   s    r   rt   BytesLiteral.utf8encode   s    ?84??ur   c                 $    U R                  S5      $ )zSFake-decode the byte string to unicode to support %
formatting of unicode strings.
rJ   )decoder   s    r   __str__BytesLiteral.__str__   s     {{<((r   Fc                 4    [        [        U 5      5      nSU-  $ )Nz"%s")split_string_literalescape_byte_string)r   values     r   r    BytesLiteral.as_c_string_literal   s    $%7%=>~r   r<   )r4   r5   r6   r7   rp   rk   rq   rt   r   rw   r   r;   r<   r   r   r   r      s(    H@) Jr   r   c                 V    [        U [        5      (       d   e[        U 5      n Xl        U $ r   )r   rG   r   rp   r   rp   s     r   rO   rO      s(    aQAJHr   c                 h    [        U [        [        45      (       d   e[        U 5      n Ub  Xl        U $ r   )r   r   rG   r,   rp   r   s     r   encoded_stringr      s3    a#u&&&&aA
Hr   c                 X    [        U [        5      (       a  [        X5      $ [        X5      $ r   )r   rG   rO   r   r   s     r   encoded_string_or_bytes_literalr      s%    !UQ))a**r   
	)z\az\bz\fz\nz\rz\tz\v)\z??"    c           	          U S;   a  [        U 5      SS $ U S:X  a  gU S:X  a  gSR                  U  Vs/ s H  nS[        U5      S	 3PM     sn5      $ s  snf )
Nz
	   r   z\"r   \\r+   03o)reprr-   r   )r   r   s     r   _to_escape_sequencer      s]    H}Awq}	
c	
d ww151a"SVCL)15665s   Ac                    ^^^ / n 0 m[          Hu  nSR                  U Vs/ s H  nSUR                  SS5      -  PM     sn5      nU R                  U5        [	        U5      R                  S5      TUR                  S5      '   Mw     [        R                  " SSR                  U 5      -  R                  S5      5      R                  mU4S jmUU4S	 jnU$ s  snf )
Nr+   z[%s]r   r   ASCIIz(%s)|c                 ,   > TU R                  S5         $ )Nr   )group)mreplacementss    r   replace_specials2_build_specials_replacer.<locals>.replace_specials  s    AGGAJ''r   c                    > T" TU 5      $ r   r<   )r   r   subs    r   replace)_build_specials_replacer.<locals>.replace  s    #Q''r   )	
_c_specialr-   r   r   r   rF   recompiler   )subexpsspecialr   regexpr   r   r   r   s        @@@r   _build_specials_replacerr      s    GLGLGq&199T6#::GLMv0CG0L0S0ST[0\W^^G,-  **fsxx0088A
B
F
FC((N Ms   C
c                     U R                  S5      n U S;   a  [        U 5      SS $ U S:X  a  g[        U 5      nUS:  d  US:  a  S	U-  $ U $ )
NrJ   z
	\r   r   'z\'r      z\x%02X)r   r   r   )r   ns     r   escape_charr     sX    	AJAwq}	
cAA2vc1} r   c                    [        U 5      n  U R                  S5      $ ! [         a     Of = f[        5       nUR                  UR
                  p2U  H  nUS:  a  U" SU-  5        M  U" U5        M      UR                  S5      $ )zEscape a byte string so that it can be written into C code.
Note that this returns a Unicode string instead which, when
encoded as ASCII, will result in the correct byte sequence
being written.
r   r   s   \%03o)_replace_specialsr   UnicodeDecodeError	bytearrayr   extend)r   s_newr   r   bs        r   r   r     s     	!Axx   KE\\5<<F89q=!1I	 
 <<  s    
++c                    [        U 5      U:  a  U $ Sn/ nU[        U 5      :  a  X!-   n[        U 5      US-
  :  aW  SXS-
  U ;   aL  USXS-
  U R                  S5      -
  -  nXS-
     S:X  a%  US-  nXB:X  a  X!-   US-  -
  S-
  nOXS-
     S:X  a  M%  UR                  XU 5        UnU[        U 5      :  a  M  SR                  U5      $ )Nr      r   r      z"")lenfindr   r-   )r   limitstartchunksends        r   r   r   /  s    
1v~c!fn-C1vA~$!E#,"6q1U3<,,T222Ah$&1HC|#muqy9A= Ah$& MM!#,'E c!fn yy  r   c                 r   [        [        [        U 5      5      S/-   n [        R                  S:  a_  / U p!U  HU  nUS:  a;  [        US-
  S5      u  pEUR                  US-   5        UR                  US-   5        MD  UR                  U5        MW     OcU / p!U  HZ  nSUs=::  a  S::  a9  O  O6U(       a/  SUS   s=::  a  S::  a  O  OUS   UpTUS	-  S
-  US	-  -   S-   US'   MI  UR                  U5        M\     X:X  a  / nSR                  [        [        U5      5      SR                  [        [        U5      5      4$ )zBCreate Py_UNICODE[] representation of a given unicode string.
    r   r   r   r   r   r   r   r   i  
   ,)	listr   r   r9   r:   divmodr   r-   r   )r   utf16utf32
code_pointhighlow	code_units          r   encode_pyunicode_stringr   D  s    	Sa[QCA
~~ 1uJW$":#7>	TF]+S6\*Z(  "uI,f,6U2Y;XRX;X!"Iyc"Ulr1cEkBWLb	Y'  ~88CUO$chhs3&???r   )i  )r   r9   r-   rP   r   r>   rX   r   r,   rz   r   rG   r   rO   r   r   getchar_from_escape_sequencetupler   r   ranger   r   r   r   r   r   r   r   r<   r   r   <module>r      s    
 
XX
( (D( (>D D.!'C !'H85 4+  
c  s3b	':!;;
	7 -. !(!*@r   