
    J/Phk                        d Z ddlmZ ddlmZ ddlZddlZddl	m
Z
mZmZ ddlmZ ddlmZmZmZ ddlmZ  ed	d
          Zej        re
j        Zne
j        ZdZdZdZdZ G d de          Zd Zed             Z  ee          d             Z!ed             Z"ed             Z#ed             Z$ed             Z%ed             Z&ed             Z'ed             Z(ed             Z)ed             Z*ed             Z+ed             Z,ed             Z-ed              Z.ed!             Z/ed"             Z0ed#             Z1ed$             Z2ed%             Z3ed&             Z4ed'             Z5ed(             Z6ed)             Z7ed*             Z8ed+             Z9 G d, d-e          Z: ej;        g ddddddddde:j<        e:j<        e:j<        e:j<        e:j<        dddddddddddddddddde:j<        ddddddddddddddde:j=        e:j>        z  e:j=        e:j>        z  e:j=        e:j>        z  e:j=        e:j>        z  e:j=        e:j>        z  e:j=        e:j>        z  e:j=        e:j>        z  e:j=        e:j>        z  e:j=        e:j>        z  e:j=        e:j>        z  ddddddde:j?        e:j>        z  e:j?        e:j>        z  e:j?        e:j>        z  e:j?        e:j>        z  e:j?        e:j>        z  e:j?        e:j>        z  e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        e:j?        dddddde:j@        e:j>        z  e:j@        e:j>        z  e:j@        e:j>        z  e:j@        e:j>        z  e:j@        e:j>        z  e:j@        e:j>        z  e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        e:j@        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddejA        .          ZB ej;        g d/ejC        .          ZD ej;        g d0ejC        .          ZE G d1 d2e          ZF ej;        g ddddddddddeFjG        eFjH        z  eFjG        eFjG        eFjG        eFjI        z  ddddddddddddddeFjG        eFjG        eFjG        ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeFjG        ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddejA        .          ZJed3             ZKed4             ZLed5             ZMed6             ZNed7             ZOed8             ZPed9             ZQed:             ZRed;             ZSed<             ZTed=             ZUed>             ZVed?             ZWdS )@z
This module contains support functions for more advanced unicode operations.
This is not a public API and is for Numba internal use only. Most of the
functions are relatively straightforward translations of the functions with the
same name in CPython.
    )
namedtuple)IntEnumN)typescgutilsconfig)impl_ret_untracked)overload	intrinsicregister_jitable)TypingError
typerecordz%upper lower title decimal digit flags	   
          c                   J    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdS )_PyUnicode_TyperecordMasks               r   @         i   i   i   i   i    i @  N)__name__
__module____qualname__
ALPHA_MASKDECIMAL_MASK
DIGIT_MASK
LOWER_MASKLINEBREAK_MASK
SPACE_MASK
TITLE_MASK
UPPER_MASKXID_START_MASKXID_CONTINUE_MASKPRINTABLE_MASKNUMERIC_MASKCASE_IGNORABLE_MASK
CASED_MASKEXTENDED_CASE_MASK     ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cpython/unicode_support.pyr   r   >   s^        JLJJNJJJNNL Jr/   r   c                      t          d          )Nz(Calling the Python definition is invalid)RuntimeErroras    r0   _PyUnicode_gettyperecordr5   P   s    
A
B
BBr/   c                 :   t          |t          j                  st          d          d }t          j        t          j        t          j        t          j        t          j        t          j        t          j        gt                    } |t                    }||fS )z~
    Provides the binding to numba_gettyperecord, returns a `typerecord`
    namedtuple of properties from the codepoint.
    zcodepoint must be an integerc           
      n   |                      t          j                  }|                      t                    }|                      t          j                  }|                                }|                      t          j                  }|                                }	|                      t          j                  }
|
                                }t          j	        
                    ||||||	|	|g          }t          j        |j        |d          }t          j        ||d          }t          j        ||d          }t          j        ||d          }t          j        ||d          }t          j        ||d          }t          j        ||
d          }||||||g}|                    ||d	         g|z              g }|D ]*}|                    |                    |                     +|                     ||j        t)          |                    }t+          | ||j        |          S )
Nnumba_gettyperecordnameupperlowertitledecimaldigitflagsr   )get_value_typer   void_Py_UCS4intc
as_pointerucharushortllvmliteirFunctionTyper   get_or_insert_functionmodulealloca_oncecallappendload
make_tuplereturn_typetupler   )contextbuilder	signatureargsll_void
ll_Py_UCS4ll_intcll_intc_ptrll_ucharll_uchar_ptr	ll_ushortll_ushort_ptrfntyfnr;   r<   r=   r>   r?   r@   byrefbufxress                           r0   detailsz$_gettyperecord_impl.<locals>.details]   s   ((44++H55
((44((**))%+66**,,**5<88	!,,..{''2
   +N,. . . #GW7CCC#GW7CCC#GW7CCC%gxiHHH#GXGDDD#GYWEEEwu=R$q'U*+++ 	( 	(AJJw||A''''  )*?sLL!'7I4I3OOOr/   )

isinstancer   Integerr   
NamedTuplerD   rF   rG   r   rC   )	typingctx	codepointrf   tuptysigs        r0   _gettyperecord_implrn   T   s     i// :8999#P #P #PJ ej%*ej%+#k5<9:DF FE
%//C<r/   c                     t          | t          j                  rddlm fd}|S t          | t          j                  rd S dS )z
    Provides a _PyUnicode_gettyperecord binding, for convenience it will accept
    single character strings and code points.
    r   )_get_code_pointc                     t          |           dk    rd}t          |           | d          }t          t          |                    }|S )Nr   z.gettyperecord takes a single unicode characterr   )len
ValueErrorrn   rC   )r4   msg
code_pointdatarp   s       r0   implz gettyperecord_impl.<locals>.impl   sN    1vvzzF oo%(A..J&x
';';<<DKr/   c                 :    t          t          |                     S N)rn   rC   r3   s    r0   <lambda>z$gettyperecord_impl.<locals>.<lambda>   s    ,Xa[[99 r/   N)rg   r   UnicodeTypenumba.cpython.unicoderp   rh   )r4   rw   rp   s     @r0   gettyperecord_implr}      ss     !U&'' 
999999	 	 	 	 	 !U]## :999: :r/   c                     t          |t          j                  st          d          d }t	          t          j                  }||fS )z
    Accessor function for the _PyUnicode_ExtendedCase array, binds to
    numba_get_PyUnicode_ExtendedCase which wraps the array and does the lookup
    zExpected an indexc                 (   |                      t                    }|                      t          j                  }t          j                            ||g          }t          j        |j	        |d          }|
                    ||d         g          S )N numba_get_PyUnicode_ExtendedCaser9   r   )rA   rC   r   rD   rH   rI   rJ   r   rK   rL   rN   )rT   rU   rV   rW   rY   rZ   r`   ra   s           r0   rf   z(_PyUnicode_ExtendedCase.<locals>.details   s    ++H55
((44{''
WI>>+N9; ; ; ||Ba	***r/   )rg   r   rh   r   rC   rD   )rj   indexrf   rm   s       r0   _PyUnicode_ExtendedCaser      sQ     eU]++ /-...+ + + 5:

C<r/   c                     t          |           }|j        t          j        z  rt	          |j        dz            S | |j        z   S )N  )r5   r@   r   r-   r   r=   chctypes     r0   _PyUnicode_ToTitlecaser      sD    $R((E0CC =&u{V';<<<r/   c                 P    t          |           }|j        t          j        z  dk    S Nr   )r5   r@   r   r%   r   s     r0   _PyUnicode_IsTitlecaser      %    $R((E;3>>!CCr/   c                 P    t          |           }|j        t          j        z  dk    S r   )r5   r@   r   r'   r   s     r0   _PyUnicode_IsXidStartr      %    $R((E;3BBaGGr/   c                 P    t          |           }|j        t          j        z  dk    S r   )r5   r@   r   r(   r   s     r0   _PyUnicode_IsXidContinuer      s%    $R((E;3EEJJr/   c                 Z    t          |           }|j        t          j        z  r|j        S dS N)r5   r@   r   r    r>   r   s     r0   _PyUnicode_ToDecimalDigitr      s/    $R((E{/<< }2r/   c                 Z    t          |           }|j        t          j        z  r|j        S dS r   )r5   r@   r   r!   r?   r   s     r0   _PyUnicode_ToDigitr      s/    $R((E{/:: {2r/   c                 P    t          |           }|j        t          j        z  dk    S r   )r5   r@   r   r*   r   s     r0   _PyUnicode_IsNumericr      s%    $R((E;3@@AEEr/   c                 P    t          |           }|j        t          j        z  dk    S r   )r5   r@   r   r)   r   s     r0   _PyUnicode_IsPrintabler      r   r/   c                 P    t          |           }|j        t          j        z  dk    S r   )r5   r@   r   r"   r   s     r0   _PyUnicode_IsLowercaser      r   r/   c                 P    t          |           }|j        t          j        z  dk    S r   )r5   r@   r   r&   r   s     r0   _PyUnicode_IsUppercaser      r   r/   c                 P    t          |           }|j        t          j        z  dk    S r   )r5   r@   r   r#   r   s     r0   _PyUnicode_IsLineBreakr     r   r/   c                     t           ry   NotImplementedErrorr   s    r0   _PyUnicode_ToUppercaser   	      
r/   c                     t           ry   r   r   s    r0   _PyUnicode_ToLowercaser     r   r/   c                     t          |           }|j        t          j        z  r=|j        dz  }|j        dz	  }t          |          D ]}t          ||z             ||<   |S | |j        z   |d<   dS Nr      r   r   )r5   r@   r   r-   r<   ranger   r   re   r   r   nis         r0   _PyUnicode_ToLowerFullr         $R((E0CC f$K2q 	8 	8A,UQY77CFF%+CF1r/   c                     t          |           }|j        t          j        z  r=|j        dz  }|j        dz	  }t          |          D ]}t          ||z             ||<   |S | |j        z   |d<   dS r   )r5   r@   r   r-   r=   r   r   r   s         r0   _PyUnicode_ToTitleFullr   "  r   r/   c                     t          |           }|j        t          j        z  r=|j        dz  }|j        dz	  }t          |          D ]}t          ||z             ||<   |S | |j        z   |d<   dS r   )r5   r@   r   r-   r;   r   r   r   s         r0   _PyUnicode_ToUpperFullr   0  s    $R((E0CC f$K2q 	8 	8A,UQY77CFF%+CF1r/   c                    t          |           }t          j        }|j        |z  rX|j        dz	  dz  rK|j        dz  |j        dz	  z   }|j        dz	  dz  }t          |          D ]}t          ||z             ||<   |S t          | |          S )N      r   r   )r5   r   r-   r@   r<   r   r   r   )r   re   r   extended_case_maskr   r   r   s          r0   _PyUnicode_ToFoldedFullr   ?  s    $R((E3F{'' U[B->!,C v%%+*;<[B!#q 	8 	8A,UQY77CFF!"c***r/   c                 P    t          |           }|j        t          j        z  dk    S r   )r5   r@   r   r,   r   s     r0   _PyUnicode_IsCasedr   M  r   r/   c                 P    t          |           }|j        t          j        z  dk    S r   )r5   r@   r   r+   r   s     r0   _PyUnicode_IsCaseIgnorabler   T  s%    $R((E;3GG1LLr/   c                 0    t          |           dk     rdS dS Nr   r   )r   r   s    r0   _PyUnicode_IsDigitr   [  s    "!!q1r/   c                 0    t          |           dk     rdS dS r   )r   r   s    r0   _PyUnicode_IsDecimalDigitr   c  s     $$q((q1r/   c                 P    t          |           }|j        t          j        z  dk    S r   )r5   r@   r   r$   r   s     r0   _PyUnicode_IsSpacer   k  r   r/   c                 P    t          |           }|j        t          j        z  dk    S r   )r5   r@   r   r   r   s     r0   _PyUnicode_IsAlphar   q  r   r/   c                   *    e Zd ZdZdZdZdZdZdZdZ	dS )	_PY_CTFr   r      r   r   r   r   N)
r   r   r   LOWERUPPERALPHADIGITALNUMSPACEXDIGITr.   r/   r0   r   r     s1        EEEEEEFFFr/   r   )dtype(   r   r   r   r   r         r   r   r   r         r         r            r            r                        r   !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   r   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   [   \   ]   ^   _   `   r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  {   |   }   ~      r                                                                                                                                                                                                                                                                                                                                                                                                (   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   r   r!  r"  r#  r$  r%  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r'  r(  r)  r*  r   r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  c                       e Zd ZdZdZdZdS )
_PY_CTF_LBr   r   r   N)r   r   r   
LINE_BREAK	LINE_FEEDCARRIAGE_RETURNr.   r/   r0   r  r  d  s        JIOOOr/   r  c                 T    t          j        |           t          j        d          z  S )zk
    Equivalent to the CPython macro `Py_CHARMASK()`, masks off all but the
    lowest 256 bits of ch.
    r  )r   uint8r   s    r0   _Py_CHARMASKr    s!     ;r??U[....r/   c                 6    t           t          |                    S )zw
    Equivalent to the CPython macro `Py_TOUPPER()` converts an ASCII range
    code point to the upper equivalent
    )_Py_ctype_toupperr  r   s    r0   _Py_TOUPPERr         \"--..r/   c                 6    t           t          |                    S )zw
    Equivalent to the CPython macro `Py_TOLOWER()` converts an ASCII range
    code point to the lower equivalent
    )_Py_ctype_tolowerr  r   s    r0   _Py_TOLOWERr    r  r/   c                 P    t           t          |                    t          j        z  S )z8
    Equivalent to the CPython macro `Py_ISLOWER()`
    )_Py_ctype_tabler  r   r   r   s    r0   _Py_ISLOWERr        
 <++,w}<<r/   c                 P    t           t          |                    t          j        z  S )z8
    Equivalent to the CPython macro `Py_ISUPPER()`
    )r  r  r   r   r   s    r0   _Py_ISUPPERr    r  r/   c                 P    t           t          |                    t          j        z  S )z8
    Equivalent to the CPython macro `Py_ISALPHA()`
    )r  r  r   r   r   s    r0   _Py_ISALPHAr    r  r/   c                 P    t           t          |                    t          j        z  S )z8
    Equivalent to the CPython macro `Py_ISDIGIT()`
    )r  r  r   r   r   s    r0   _Py_ISDIGITr    r  r/   c                 P    t           t          |                    t          j        z  S )z9
    Equivalent to the CPython macro `Py_ISXDIGIT()`
    )r  r  r   r   r   s    r0   _Py_ISXDIGITr    s    
 <++,w~==r/   c                 P    t           t          |                    t          j        z  S )z8
    Equivalent to the CPython macro `Py_ISALNUM()`
    )r  r  r   r   r   s    r0   _Py_ISALNUMr    r  r/   c                 P    t           t          |                    t          j        z  S )z8
    Equivalent to the CPython macro `Py_ISSPACE()`
    )r  r  r   r   r   s    r0   _Py_ISSPACEr    r  r/   c                 P    t           t          |                    t          j        z  S )z&Check if character is ASCII line break)_Py_ctype_islinebreakr  r  r  r   s    r0   _Py_ISLINEBREAKr    s     !b!1!12Z5JJJr/   c                 P    t           t          |                    t          j        z  S )z#Check if character is line feed `
`)r  r  r  r  r   s    r0   _Py_ISLINEFEEDr    s     !b!1!12Z5IIIr/   c                 P    t           t          |                    t          j        z  S )z)Check if character is carriage return ``)r  r  r  r  r   s    r0   _Py_ISCARRIAGERETURNr    s     !b!1!12Z5OOOr/   )X__doc__collectionsr   enumr   llvmlite.irrH   numpynp
numba.corer   r   r   numba.core.imputilsr   numba.core.extendingr	   r
   r   numba.core.errorsr   r   USE_LEGACY_TYPE_SYSTEMuint32rC   c_uint32_Py_TAB_Py_LINEFEED_Py_CARRIAGE_RETURN	_Py_SPACEr   r5   rn   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   arrayr   r   r   r   r   rD   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r.   r/   r0   <module>r     s    # " " " " "               - - - - - - - - - - 4 4 4 4 4 4 F F F F F F F F F F ) ) ) ) ) ) Z?A A

 
  |HH~H6  	               $C C C 0 0 0f 

"##: : $#:,   2    D D D H H H K K K
       F F F H H H D D D D D D
 H H H
      
 	 	 	 	 	 	 
 
 
 	+ 	+ 	+ D D D M M M       D D D
 D D D    g    "( III I 	I
 I I I I I MI MI MI MI MI I  !I" #I$ %I& 'I( )I* +I, -I. /I0 1I2 3I4 5I6 7I8 9I: ;I< =I> ?I@ AIB MCID EIF GIH IIJ KIL MIN OIP QIR SIT UIV WIX YIZ [I\ ]I^ _I` aIb MGN"cId MGN"eIf MGN"gIh MGN"iIj MGN"kIl MGN"mIn MGN"oIp MGN"qIr MGN"sIt MGN"uIv wIx yIz {I| }I~ I@ AIB CID MGN"EIF MGN"GIH MGN"IIJ MGN"KIL MGN"MIN MGN"OIP MQIR MSIT MUIV MWIX MYIZ M[I\ M]I^ M_I` MaIb McId MeIf MgIh MiIj MkIl MmIn MoIp MqIr MsIt MuIv MwIx yIz {I| }I~ I@ AIB CID MGN"EIF MGN"GIH MGN"IIJ MGN"KIL MGN"MIN MGN"OIP MQIR MSIT MUIV MWIX MYIZ M[I\ M]I^ M_I` MaIb McId MeIf MgIh MiIj MkIl MmIn MoIp MqIr MsIt MuIv MwIx yIz {I| }I~ I@ AIB CIB 	CIB CIB CIB CIB CIB CIB CIB CIB  !CIB #$CIB &'CIB )*CIB ,-CIB /0CIB 23CID EID 	EID EID EID EID EID EID EID EID  !EID #$EID &'EID )*EID ,-EID /0EID 23EIF GIF 	GIF GIF GIF GIF GIF GIF GIF GIF  !GIF #$GIF &'GIF )*GIF ,-GIF /0GIF 23GIH IIH 	IIH IIH IIH IIH IIH IIH IIH IIH  !IIH #$IIH &'IIH )*IIH ,-IIH /0IIH 23IIJ KIJ 	KIJ KIJ KIJ KIJ KIJ KIJ KIJ KIJ  !KIJ #$KIJ &'KIJ )*KIJ ,-KIJ /0KIJ 23KIL MIL 	MIL MIL MIL MIL MIL MIL MIL MIL  !MIL #$MIL &'MIL )*MIL ,-MIL /0MIL 23MIN OIN 	OIN OIN OIN OIN OIN OIN OIN OIN  !OIN #$OIN &'OIN )*OIN ,-OIN /0OIN 23OIP QIP 	QIP QIP QIP QIP QIP QIP QIP QIP  !QIP #$QIP &'QIP )*QIP ,-QIP /0QIP 23QIR 
SI I I\ BH ! ! !B 
C! ! ! L BH ! ! !B 
C! ! ! H        ! """
""""""" "J00" " 	"
 J66" " 	" " " " " " " "  !" #$" &'" )*" ,-" " " " " 	" " " " " " " "  !" #$" &'" )*" ,-" /0" 23" 56" " 	" " " " " " " "  !" #$" &'" )*" ,-" /0" 23" 56" " 	" " " " " " " "  !" #$" &'" )*" ,-" /0" 23" 56" " 	" " " " " " " "  !" #$" &'" )*" ,-" /0" 23" 56" " 	" " " " " " " "  !" #$" &'" )*" ,-" /0" 23" 56" " 	" " " " " " " "  !" #$" &'" )*" ,-" /0" 23" 56"  !"" #"" 	#"" #"" #"" #"" #"" #"" #"" #""  !#"" #$#"" &'#"" )*#"" ,-#"" /0#"" 23#"" 56#"$ %"$ 	%"$ %"$ %"$ %"$ %"$ %"$ %"$ %"$  !%"$ #$%"$ &'%"$ )*%"$ ,-%"$ /0%"$ 23%"$ 56%"& '"& 	'"& '"& '"& '"& '"& '"& '"& '"&  !'"& #$'"& &''"& )*'"& ,-'"& /0'"& 23'"& 56'"( )"( 	)"( )"( )"( )"( )"( )"( )"( )"(  !)"( #$)"( &')"( )*)"( ,-)"( /0)"( 23)"( 56)"* +"* 	+"* +"* +"* +"* +"* +"* +"* +"*  !+"* #$+"* &'+"* )*+"* ,-+"* /0+"* 23+"* 56+", -", 	-", -", -", -", -", -", -", -",  !-", #$-", &'-", )*-", ,--", /0-", 23-", 56-". /". 	/". /". /". /". /". /". /". /".  !/". #$/". &'/". )*/". ,-/". /0/". 23/". 56/"0 1"0 	1"0 1"2 
3   < / / / / / / / / / = = = = = = = = = = = = > > > = = = = = = K K K
 J J J
 P P P P Pr/   