
    xKgj                        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 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*                  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"        Z-ed#        Z.ed$        Z/ed%        Z0ed&        Z1ed'        Z2ed(        Z3ed)        Z4ed*        Z5ed+        Z6 G d, d-e      Z7 ejp                  g ddddddddde7jr                  e7jr                  e7jr                  e7jr                  e7jr                  dddddddddddddddddde7jr                  ddddddddddddddde7jt                  e7jv                  z  e7jt                  e7jv                  z  e7jt                  e7jv                  z  e7jt                  e7jv                  z  e7jt                  e7jv                  z  e7jt                  e7jv                  z  e7jt                  e7jv                  z  e7jt                  e7jv                  z  e7jt                  e7jv                  z  e7jt                  e7jv                  z  ddddddde7jx                  e7jv                  z  e7jx                  e7jv                  z  e7jx                  e7jv                  z  e7jx                  e7jv                  z  e7jx                  e7jv                  z  e7jx                  e7jv                  z  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  e7jx                  dddddde7jz                  e7jv                  z  e7jz                  e7jv                  z  e7jz                  e7jv                  z  e7jz                  e7jv                  z  e7jz                  e7jv                  z  e7jz                  e7jv                  z  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  e7jz                  ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd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j|                  .      Z? ejp                  g d/ej                  .      ZA ejp                  g d0ej                  .      ZB G d1 d2e      ZC ejp                  g ddddddddddeCj                  eCj                  z  eCj                  eCj                  eCj                  eCj                  z  ddddddddddddddeCj                  eCj                  eCj                  ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeCj                  dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd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j|                  .      ZGed3        ZHed4        ZIed5        ZJed6        ZKed7        ZLed8        ZMed9        ZNed:        ZOed;        ZPed<        ZQed=        ZRed>        ZSed?        ZTy)@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)impl_ret_untracked)overload	intrinsicregister_jitable)TypingError
typerecordz%upper lower title decimal digit flags	   
          c                   H    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y)_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     a/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cpython/unicode_support.pyr   r   ;   sP    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    r/   _PyUnicode_gettyperecordr4   M   s    
A
BBr.   c                 Z   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           
      F   | j                  t        j                        }| j                  t              }| j                  t        j                        }|j                         }| j                  t        j                        }|j                         }	| j                  t        j                        }
|
j                         }t        j                  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}|j                  ||d	   g|z          g }|D ]"  }|j!                  |j#                  |             $ | j%                  ||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                           r/   detailsz$_gettyperecord_impl.<locals>.detailsZ   s   ((4++H5
((4((*))%++6**,**5<<8	!,,.{{''2
  ++NN,. ##GW7C##GW7C##GW7C%%gxiH##GXGD##GYWEwu=R$q'U*+AJJw||A'    )*?*?sL!'7I4I4I3OOr.   )

isinstancer   Integerr   
NamedTuplerC   rE   rF   r   rB   )	typingctx	codepointre   tuptysigs        r/   _gettyperecord_implrm   Q   sx     i/899#PJ ejj%**ejj%++#kk5<<9:DFE
/C<r.   c                     t        | t        j                        rddlm fd}|S t        | t        j
                        rd S y)z
    Provides a _PyUnicode_gettyperecord binding, for convenience it will accept
    single character strings and code points.
    r   )_get_code_pointc                 x    t        |       dkD  rd}t        |       | d      }t        t        |            }|S )Nr   z.gettyperecord takes a single unicode characterr   )len
ValueErrorrm   rB   )r3   msg
code_pointdataro   s       r/   implz gettyperecord_impl.<locals>.impl   s=    1vzF o%(A.J&x
';<DKr.   c                 *    t        t        |             S N)rm   rB   r2   s    r/   <lambda>z$gettyperecord_impl.<locals>.<lambda>   s    ,Xa[9r.   N)rf   r   UnicodeTypenumba.cpython.unicodero   rg   )r3   rv   ro   s     @r/   gettyperecord_implr|      s=     !U&&'9	 !U]]#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                    | j                  t              }| j                  t        j                        }t        j
                  j                  ||g      }t        j                  |j                  |d      }|j                  ||d   g      S )N numba_get_PyUnicode_ExtendedCaser8   r   )r@   rB   r   rC   rG   rH   rI   r   rJ   rK   rM   )rS   rT   rU   rV   rX   rY   r_   r`   s           r/   re   z(_PyUnicode_ExtendedCase.<locals>.details   st    ++H5
((4{{''
WI>++NN9; ||Ba	**r.   )rf   r   rg   r   rB   rC   )ri   indexre   rl   s       r/   _PyUnicode_ExtendedCaser      s=     eU]]+-..+ 5::
C<r.   c                     t        |       }|j                  t        j                  z  rt	        |j
                  dz        S | |j
                  z   S )N  )r4   r?   r   r,   r   r<   chctypes     r/   _PyUnicode_ToTitlecaser      sB    $R(E0CCC&u{{V';<<r.   c                 X    t        |       }|j                  t        j                  z  dk7  S Nr   )r4   r?   r   r$   r   s     r/   _PyUnicode_IsTitlecaser      '    $R(E;;3>>>!CCr.   c                 X    t        |       }|j                  t        j                  z  dk7  S r   )r4   r?   r   r&   r   s     r/   _PyUnicode_IsXidStartr      '    $R(E;;3BBBaGGr.   c                 X    t        |       }|j                  t        j                  z  dk7  S r   )r4   r?   r   r'   r   s     r/   _PyUnicode_IsXidContinuer      s'    $R(E;;3EEEJJr.   c                 l    t        |       }|j                  t        j                  z  r|j                  S yN)r4   r?   r   r   r=   r   s     r/   _PyUnicode_ToDecimalDigitr      s,    $R(E{{/<<<}}r.   c                 l    t        |       }|j                  t        j                  z  r|j                  S yr   )r4   r?   r   r    r>   r   s     r/   _PyUnicode_ToDigitr      s,    $R(E{{/:::{{r.   c                 X    t        |       }|j                  t        j                  z  dk7  S r   )r4   r?   r   r)   r   s     r/   _PyUnicode_IsNumericr      s'    $R(E;;3@@@AEEr.   c                 X    t        |       }|j                  t        j                  z  dk7  S r   )r4   r?   r   r(   r   s     r/   _PyUnicode_IsPrintabler      r   r.   c                 X    t        |       }|j                  t        j                  z  dk7  S r   )r4   r?   r   r!   r   s     r/   _PyUnicode_IsLowercaser      r   r.   c                 X    t        |       }|j                  t        j                  z  dk7  S r   )r4   r?   r   r%   r   s     r/   _PyUnicode_IsUppercaser      r   r.   c                 X    t        |       }|j                  t        j                  z  dk7  S r   )r4   r?   r   r"   r   s     r/   _PyUnicode_IsLineBreakr      r   r.   c                     t         rx   NotImplementedErrorr   s    r/   _PyUnicode_ToUppercaser         
r.   c                     t         rx   r   r   s    r/   _PyUnicode_ToLowercaser     r   r.   c                     t        |       }|j                  t        j                  z  rA|j                  dz  }|j                  dz	  }t        |      D ]  }t        ||z         ||<    |S | |j                  z   |d<   yNr      r   r   )r4   r?   r   r,   r;   ranger   r   rd   r   r   nis         r/   _PyUnicode_ToLowerFullr     u    $R(E0CCCf$KK2qA,UQY7CF %++CFr.   c                     t        |       }|j                  t        j                  z  rA|j                  dz  }|j                  dz	  }t        |      D ]  }t        ||z         ||<    |S | |j                  z   |d<   yr   )r4   r?   r   r,   r<   r   r   r   s         r/   _PyUnicode_ToTitleFullr     r   r.   c                     t        |       }|j                  t        j                  z  rA|j                  dz  }|j                  dz	  }t        |      D ]  }t        ||z         ||<    |S | |j                  z   |d<   yr   )r4   r?   r   r,   r:   r   r   r   s         r/   _PyUnicode_ToUpperFullr   -  sw    $R(E0CCCf$KK2qA,UQY7CF  %++CFr.   c                 :   t        |       }t        j                  }|j                  |z  rf|j                  dz	  dz  rT|j                  dz  |j                  dz	  z   }|j                  dz	  dz  }t        |      D ]  }t        ||z         ||<    |S t        | |      S )N      r   r   )r4   r   r,   r?   r;   r   r   r   )r   rd   r   extended_case_maskr   r   r   s          r/   _PyUnicode_ToFoldedFullr   <  s    $R(E3FF{{''U[[B->!,Cv%%++*;<[[B!#qA,UQY7CF !"c**r.   c                 X    t        |       }|j                  t        j                  z  dk7  S r   )r4   r?   r   r+   r   s     r/   _PyUnicode_IsCasedr   J  r   r.   c                 X    t        |       }|j                  t        j                  z  dk7  S r   )r4   r?   r   r*   r   s     r/   _PyUnicode_IsCaseIgnorabler   Q  s'    $R(E;;3GGG1LLr.   c                 "    t        |       dk  ryyNr   r   )r   r   s    r/   _PyUnicode_IsDigitr   X  s    "!r.   c                 "    t        |       dk  ryyr   )r   r   s    r/   _PyUnicode_IsDecimalDigitr   `  s     $q(r.   c                 X    t        |       }|j                  t        j                  z  dk7  S r   )r4   r?   r   r#   r   s     r/   _PyUnicode_IsSpacer   h  r   r.   c                 X    t        |       }|j                  t        j                  z  dk7  S r   )r4   r?   r   r   r   s     r/   _PyUnicode_IsAlphar   n  r   r.   c                   (    e Zd ZdZdZdZdZdZdZdZ	y)	_PY_CTFr   r      r   r   r   r   N)
r   r   r   LOWERUPPERALPHADIGITALNUMSPACEXDIGITr-   r.   r/   r   r   }  s%    EEEEEEFr.   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.  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  c                       e Zd ZdZdZdZy)
_PY_CTF_LBr   r   r   N)r   r   r   
LINE_BREAK	LINE_FEEDCARRIAGE_RETURNr-   r.   r/   r  r  a  s    JIOr.   r  c                 X    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    r/   _Py_CHARMASKr    s      ;;r?U[[...r.   c                 &    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    r/   _Py_TOUPPERr         \"-..r.   c                 &    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    r/   _Py_TOLOWERr    r  r.   c                 H    t         t        |          t        j                  z  S )z8
    Equivalent to the CPython macro `Py_ISLOWER()`
    )_Py_ctype_tabler  r   r   r   s    r/   _Py_ISLOWERr        
 <+,w}}<<r.   c                 H    t         t        |          t        j                  z  S )z8
    Equivalent to the CPython macro `Py_ISUPPER()`
    )r  r  r   r   r   s    r/   _Py_ISUPPERr    r  r.   c                 H    t         t        |          t        j                  z  S )z8
    Equivalent to the CPython macro `Py_ISALPHA()`
    )r  r  r   r   r   s    r/   _Py_ISALPHAr    r  r.   c                 H    t         t        |          t        j                  z  S )z8
    Equivalent to the CPython macro `Py_ISDIGIT()`
    )r  r  r   r   r   s    r/   _Py_ISDIGITr    r  r.   c                 H    t         t        |          t        j                  z  S )z9
    Equivalent to the CPython macro `Py_ISXDIGIT()`
    )r  r  r   r   r   s    r/   _Py_ISXDIGITr    s    
 <+,w~~==r.   c                 H    t         t        |          t        j                  z  S )z8
    Equivalent to the CPython macro `Py_ISALNUM()`
    )r  r  r   r   r   s    r/   _Py_ISALNUMr    r  r.   c                 H    t         t        |          t        j                  z  S )z8
    Equivalent to the CPython macro `Py_ISSPACE()`
    )r  r  r   r   r   s    r/   _Py_ISSPACEr    r  r.   c                 H    t         t        |          t        j                  z  S )z&Check if character is ASCII line break)_Py_ctype_islinebreakr  r  r  r   s    r/   _Py_ISLINEBREAKr    s     !b!12Z5J5JJJr.   c                 H    t         t        |          t        j                  z  S )z#Check if character is line feed `
`)r  r  r  r  r   s    r/   _Py_ISLINEFEEDr    s     !b!12Z5I5IIIr.   c                 H    t         t        |          t        j                  z  S )z)Check if character is carriage return ``)r  r  r  r  r   s    r/   _Py_ISCARRIAGERETURNr    s     !b!12Z5O5OOOr.   )U__doc__collectionsr   enumr   llvmlite.irrG   numpynp
numba.corer   r   numba.core.imputilsr   numba.core.extendingr   r	   r
   numba.core.errorsr   r   uint32rB   _Py_TAB_Py_LINEFEED_Py_CARRIAGE_RETURN	_Py_SPACEr   r4   rm   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   rC   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/   <module>r     s   #    % 4 F F ) ?A

 <<6  	   $C 0 0f 

"#: $:,  2   D D H H K K
     F F H H D D D D
 H H
    
 	 	 	 	 
 
 	+ 	+ D D M M     D D
 D Dg  "(( III I 	I
 I I I I I MMI MMI MMI MMI MM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 MMC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 MMGNN"cId MMGNN"eIf MMGNN"gIh MMGNN"iIj MMGNN"kIl MMGNN"mIn MMGNN"oIp MMGNN"qIr MMGNN"sIt MMGNN"uIv wIx yIz {I| }I~ I@ AIB CID MMGNN"EIF MMGNN"GIH MMGNN"IIJ MMGNN"KIL MMGNN"MIN MMGNN"OIP MMQIR MMSIT MMUIV MMWIX MMYIZ MM[I\ MM]I^ MM_I` MMaIb MMcId MMeIf MMgIh MMiIj MMkIl MMmIn MMoIp MMqIr MMsIt MMuIv MMwIx yIz {I| }I~ I@ AIB CID MMGNN"EIF MMGNN"GIH MMGNN"IIJ MMGNN"KIL MMGNN"MIN MMGNN"OIP MMQIR MMSIT MMUIV MMWIX MMYIZ MM[I\ MM]I^ MM_I` MMaIb MMcId MMeIf MMgIh MMiIj MMkIl MMmIn MMoIp MMqIr MMsIt MMuIv MMw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\ BHH !B 
C! L BHH !B 
C! H  ! """
""""""" "J000" " 	"
 J6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
 J J
 P Pr.   