U
    ì¾|e»j  ã                  @   sZ  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„ deƒZdd„ Zedd„ ƒZeeƒdd„ ƒZedd„ ƒZedd„ ƒZ edd„ ƒZ!edd„ ƒZ"edd „ ƒZ#ed!d"„ ƒZ$ed#d$„ ƒZ%ed%d&„ ƒZ&ed'd(„ ƒZ'ed)d*„ ƒZ(ed+d,„ ƒZ)ed-d.„ ƒZ*ed/d0„ ƒZ+ed1d2„ ƒZ,ed3d4„ ƒZ-ed5d6„ ƒZ.ed7d8„ ƒZ/ed9d:„ ƒZ0ed;d<„ ƒZ1ed=d>„ ƒZ2ed?d@„ ƒZ3edAdB„ ƒZ4edCdD„ ƒZ5edEdF„ ƒZ6G dGdH„ dHeƒZ7ej8ddddddddde7j9e7j9e7j9e7j9e7j9dddddddddddddddddde7j9ddddddddddddddde7j:e7j;B e7j:e7j;B e7j:e7j;B e7j:e7j;B e7j:e7j;B e7j:e7j;B e7j:e7j;B e7j:e7j;B e7j:e7j;B e7j:e7j;B ddddddde7j<e7j;B e7j<e7j;B e7j<e7j;B e7j<e7j;B e7j<e7j;B e7j<e7j;B e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<e7j<dddddde7j=e7j;B e7j=e7j;B e7j=e7j;B e7j=e7j;B e7j=e7j;B e7j=e7j;B e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=e7j=ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd�g ej>dI�Z?ej8ddJdKdLdMdNdOdPdQdddRdSddTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddeddfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dd€d�d‚dƒd„d…d†d‡dˆd‰dŠd‹dŒd�dŽd�d�d‘d’d“d”d•d–d—d˜d™dšd›dœd�dždŸd d¡d¢d£d¤d¥d†d‡dˆd‰dŠd‹dŒd�dŽd�d�d‘d’d“d”d•d–d—d˜d™dšd›dœd�dždŸd¦d§d¨d©dªd«d¬d­d®d¯d°d±d²d³d´dµd¶d·d¸d¹dºd»d¼d½d¾d¿dÀdÁdÂdÃdÄdÅdÆdÇdÈdÉdÊdËdÌdÍdÎdÏdÐdÑdÒdÓdÔdÕdÖd×dØdÙdÚdÛdÜdÝdÞdßdàdádâdãdädådædçdèdédêdëdìdídîdïdðdñdòdódôdõdöd÷dødùdúdûdüdýdþdÿ�d �d�d�d�d�d�d�d�d�d	�d
�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d �d!�d"�d#�d$�d%�d&�d'�d(�d)�d*�g ej@dI�ZAej8ddJdKdLdMdNdOdPdQdddRdSddTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddeddfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dd€d�d‚dƒd„d…�d+�d,�d-�d.�d/�d0�d1�d2�d3�d4�d5�d6�d7�d8�d9�d:�d;�d<�d=�d>�d?�d@�dA�dB�dC�dDd d¡d¢d£d¤d¥�d+�d,�d-�d.�d/�d0�d1�d2�d3�d4�d5�d6�d7�d8�d9�d:�d;�d<�d=�d>�d?�d@�dA�dB�dC�dDd¦d§d¨d©dªd«d¬d­d®d¯d°d±d²d³d´dµd¶d·d¸d¹dºd»d¼d½d¾d¿dÀdÁdÂdÃdÄdÅdÆdÇdÈdÉdÊdËdÌdÍdÎdÏdÐdÑdÒdÓdÔdÕdÖd×dØdÙdÚdÛdÜdÝdÞdßdàdádâdãdädådædçdèdédêdëdìdídîdïdðdñdòdódôdõdöd÷dødùdúdûdüdýdþdÿ�d �d�d�d�d�d�d�d�d�d	�d
�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d �d!�d"�d#�d$�d%�d&�d'�d(�d)�d*�g ej@dI�ZBG �dE�dF„ �dFeƒZCej8ddddddddddeCjDeCjEB eCjDeCjDeCjDeCjFB ddddddddddddddeCjDeCjDeCjDddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeCjDdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd�g ej>dI�ZGe�dG�dH„ ƒZHe�dI�dJ„ ƒZIe�dK�dL„ ƒZJe�dM�dN„ ƒZKe�dO�dP„ ƒZLe�dQ�dR„ ƒZMe�dS�dT„ ƒZNe�dU�dV„ ƒZOe�dW�dX„ ƒZPe�dY�dZ„ ƒZQe�d[�d\„ ƒZRe�d]�d^„ ƒZSe�d_�d`„ ƒZTdS (a  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                   @   sH   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© r+   r+   úZ/var/www/website-v5/atlas_env/lib/python3.8/site-packages/numba/cpython/unicode_support.pyr   ;   s   r   c                 C   s   t dƒ‚d S )Nz(Calling the Python definition is invalid)ÚRuntimeError©Úar+   r+   r,   Ú_PyUnicode_gettyperecordM   s    r0   c                 C   sP   t |tjƒstdƒ‚dd„ }t 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              
   S   sJ  |   tj¡}|   t¡}|   tj¡}| ¡ }|   tj¡}| ¡ }	|   tj¡}
|
 ¡ }tj	 
||||||	|	|g¡}tj|j|dd�}tj||dd�}tj||dd�}tj||dd�}tj||dd�}tj||dd�}tj||
dd�}||||||g}| ||d	 g| ¡ g }|D ]}| | |¡¡ �q|  ||jt|ƒ¡}t| ||j|ƒS )
NZ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ÚargsZll_voidÚ
ll_Py_UCS4Úll_intcZll_intc_ptrZll_ucharZll_uchar_ptrZ	ll_ushortZll_ushort_ptrÚfntyÚfnr3   r4   r5   r6   r7   r8   ÚbyrefÚbufÚxÚresr+   r+   r,   ÚdetailsZ   sF    
ù	 þz$_gettyperecord_impl.<locals>.details)
Ú
isinstancer   ÚIntegerr
   Ú
NamedTupler<   r>   r?   r   r;   )Ú	typingctxZ	codepointrX   ÚtuptyÚsigr+   r+   r,   Ú_gettyperecord_implQ   s    % ÿÿr_   c                    s@   t | tjƒr(ddlm‰  ‡ fdd„}|S t | tjƒr<d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                    s2   t | ƒdkrd}t|ƒ‚ˆ | dƒ}tt|ƒƒ}|S )Nr   z.gettyperecord takes a single unicode characterr   )ÚlenÚ
ValueErrorr_   r;   )r/   ÚmsgÚ
code_pointÚdatar`   r+   r,   ÚimplŽ   s    
z gettyperecord_impl.<locals>.implc                 S   s   t t| ƒƒS ©N)r_   r;   r.   r+   r+   r,   Ú<lambda>—   ó    z$gettyperecord_impl.<locals>.<lambda>N)rY   r   ÚUnicodeTypeÚnumba.cpython.unicodera   rZ   )r/   rg   r+   r`   r,   Úgettyperecord_impl…   s    rm   c                 C   s.   t |tjƒstdƒ‚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                 S   sJ   |   t¡}|   tj¡}tj ||g¡}tj|j	|dd�}| 
||d g¡S )NZ numba_get_PyUnicode_ExtendedCaser1   r   )r9   r;   r   r<   r@   rA   rB   r   rC   rD   rF   )rL   rM   rN   rO   rP   rQ   rR   rS   r+   r+   r,   rX   ¥   s    
 þz(_PyUnicode_ExtendedCase.<locals>.details)rY   r   rZ   r
   r;   r<   )r\   ÚindexrX   r^   r+   r+   r,   Ú_PyUnicode_ExtendedCaseœ   s
    	
ro   c                 C   s,   t | ƒ}|jtj@ r"t|jd@ ƒS | |j S )Néÿÿ  )r0   r8   r   r*   ro   r5   ©ÚchÚctyper+   r+   r,   Ú_PyUnicode_ToTitlecase¶   s    rt   c                 C   s   t | ƒ}|jtj@ dkS ©Nr   )r0   r8   r   r"   rq   r+   r+   r,   Ú_PyUnicode_IsTitlecase¿   s    rv   c                 C   s   t | ƒ}|jtj@ dkS ru   )r0   r8   r   r$   rq   r+   r+   r,   Ú_PyUnicode_IsXidStartÆ   s    rw   c                 C   s   t | ƒ}|jtj@ dkS ru   )r0   r8   r   r%   rq   r+   r+   r,   Ú_PyUnicode_IsXidContinueÍ   s    rx   c                 C   s   t | ƒ}|jtj@ r|jS dS ©Néÿÿÿÿ)r0   r8   r   r   r6   rq   r+   r+   r,   Ú_PyUnicode_ToDecimalDigitÓ   s    r{   c                 C   s   t | ƒ}|jtj@ r|jS dS ry   )r0   r8   r   r   r7   rq   r+   r+   r,   Ú_PyUnicode_ToDigitÜ   s    r|   c                 C   s   t | ƒ}|jtj@ dkS ru   )r0   r8   r   r'   rq   r+   r+   r,   Ú_PyUnicode_IsNumericå   s    r}   c                 C   s   t | ƒ}|jtj@ dkS ru   )r0   r8   r   r&   rq   r+   r+   r,   Ú_PyUnicode_IsPrintableì   s    r~   c                 C   s   t | ƒ}|jtj@ dkS ru   )r0   r8   r   r   rq   r+   r+   r,   Ú_PyUnicode_IsLowercaseó   s    r   c                 C   s   t | ƒ}|jtj@ dkS ru   )r0   r8   r   r#   rq   r+   r+   r,   Ú_PyUnicode_IsUppercaseú   s    r€   c                 C   s   t | ƒ}|jtj@ dkS ru   )r0   r8   r   r    rq   r+   r+   r,   Ú_PyUnicode_IsLineBreak   s    r�   c                 C   s   t ‚d S rh   ©ÚNotImplementedError©rr   r+   r+   r,   Ú_PyUnicode_ToUppercase  s    r…   c                 C   s   t ‚d S rh   r‚   r„   r+   r+   r,   Ú_PyUnicode_ToLowercase  s    r†   c                 C   s\   t | ƒ}|jtj@ rJ|jd@ }|jd? }t|ƒD ]}t|| ƒ||< q0|S | |j |d< dS ©Nrp   é   r   r   )r0   r8   r   r*   r4   Úrangero   ©rr   rW   rs   rn   ÚnÚir+   r+   r,   Ú_PyUnicode_ToLowerFull  s    

r�   c                 C   s\   t | ƒ}|jtj@ rJ|jd@ }|jd? }t|ƒD ]}t|| ƒ||< q0|S | |j |d< dS r‡   )r0   r8   r   r*   r5   r‰   ro   rŠ   r+   r+   r,   Ú_PyUnicode_ToTitleFull  s    

rŽ   c                 C   s\   t | ƒ}|jtj@ rJ|jd@ }|jd? }t|ƒD ]}t|| ƒ||< q0|S | |j |d< dS r‡   )r0   r8   r   r*   r3   r‰   ro   rŠ   r+   r+   r,   Ú_PyUnicode_ToUpperFull-  s    

r�   c                 C   st   t | ƒ}tj}|j|@ rj|jd? d@ rj|jd@ |jd?  }|jd? d@ }t|ƒD ]}t|| ƒ||< qP|S t| |ƒS )Né   é   rp   rˆ   )r0   r   r*   r8   r4   r‰   ro   r�   )rr   rW   rs   Zextended_case_maskrn   r‹   rŒ   r+   r+   r,   Ú_PyUnicode_ToFoldedFull<  s    r’   c                 C   s   t | ƒ}|jtj@ dkS ru   )r0   r8   r   r)   rq   r+   r+   r,   Ú_PyUnicode_IsCasedJ  s    r“   c                 C   s   t | ƒ}|jtj@ dkS ru   )r0   r8   r   r(   rq   r+   r+   r,   Ú_PyUnicode_IsCaseIgnorableQ  s    r”   c                 C   s   t | ƒdk rdS dS ©Nr   r   )r|   r„   r+   r+   r,   Ú_PyUnicode_IsDigitX  s    r–   c                 C   s   t | ƒdk rdS dS r•   )r{   r„   r+   r+   r,   Ú_PyUnicode_IsDecimalDigit`  s    r—   c                 C   s   t | ƒ}|jtj@ dkS ru   )r0   r8   r   r!   rq   r+   r+   r,   Ú_PyUnicode_IsSpaceh  s    r˜   c                 C   s   t | ƒ}|jtj@ dkS ru   )r0   r8   r   r   rq   r+   r+   r,   Ú_PyUnicode_IsAlphan  s    r™   c                   @   s(   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+   r+   r,   rš   }  s   rš   )Údtyper   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   é�   é‚   éƒ   é„   é…   é†   é‡   éˆ   é‰   éŠ   é‹   éŒ   é�   éŽ   é�   é�   é‘   é’   é“   é”   é•   é–   é—   é˜   é™   éš   é›   éœ   é�   éž   éŸ   é    é¡   é¢   é£   é¤   é¥   é¦   é§   é¨   é©   éª   é«   é¬   é­   é®   é¯   é°   é±   é²   é³   é´   éµ   é¶   é·   é¸   é¹   éº   é»   é¼   é½   é¾   é¿   éÀ   éÁ   éÂ   éÃ   éÄ   éÅ   éÆ   éÇ   éÈ   éÉ   éÊ   éË   éÌ   éÍ   éÎ   éÏ   éÐ   éÑ   éÒ   éÓ   éÔ   éÕ   éÖ   é×   éØ   éÙ   éÚ   éÛ   éÜ   éÝ   éÞ   éß   éà   éá   éâ   éã   éä   éå   éæ   éç   éè   éé   éê   éë   éì   éí   éî   éï   éð   éñ   éò   éó   éô   éõ   éö   é÷   éø   éù   éú   éû   éü   éý   éþ   éÿ   é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   c                   @   s   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+   r+   r,   r”  a  s   r”  c                 C   s   t  | ¡t  d¡@ S )zk
    Equivalent to the CPython macro `Py_CHARMASK()`, masks off all but the
    lowest 256 bits of ch.
    ry  )r   Úuint8r„   r+   r+   r,   Ú_Py_CHARMASK…  s    r™  c                 C   s   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„   r+   r+   r,   Ú_Py_TOUPPER�  s    r›  c                 C   s   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„   r+   r+   r,   Ú_Py_TOLOWER›  s    r�  c                 C   s   t t| ƒ tj@ S )z8
    Equivalent to the CPython macro `Py_ISLOWER()`
    )Ú_Py_ctype_tabler™  rš   rœ   r„   r+   r+   r,   Ú_Py_ISLOWER¦  s    rŸ  c                 C   s   t t| ƒ tj@ S )z8
    Equivalent to the CPython macro `Py_ISUPPER()`
    )rž  r™  rš   r�   r„   r+   r+   r,   Ú_Py_ISUPPER°  s    r   c                 C   s   t t| ƒ tj@ S )z8
    Equivalent to the CPython macro `Py_ISALPHA()`
    )rž  r™  rš   rž   r„   r+   r+   r,   Ú_Py_ISALPHAº  s    r¡  c                 C   s   t t| ƒ tj@ S )z8
    Equivalent to the CPython macro `Py_ISDIGIT()`
    )rž  r™  rš   rŸ   r„   r+   r+   r,   Ú_Py_ISDIGITÄ  s    r¢  c                 C   s   t t| ƒ tj@ S )z9
    Equivalent to the CPython macro `Py_ISXDIGIT()`
    )rž  r™  rš   r¢   r„   r+   r+   r,   Ú_Py_ISXDIGITÎ  s    r£  c                 C   s   t t| ƒ tj@ S )z8
    Equivalent to the CPython macro `Py_ISALNUM()`
    )rž  r™  rš   r    r„   r+   r+   r,   Ú_Py_ISALNUMØ  s    r¤  c                 C   s   t t| ƒ tj@ S )z8
    Equivalent to the CPython macro `Py_ISSPACE()`
    )rž  r™  rš   r¡   r„   r+   r+   r,   Ú_Py_ISSPACEâ  s    r¥  c                 C   s   t t| ƒ tj@ S )z&Check if character is ASCII line break)Ú_Py_ctype_islinebreakr™  r”  r•  r„   r+   r+   r,   Ú_Py_ISLINEBREAKê  s    r§  c                 C   s   t t| ƒ tj@ S )z#Check if character is line feed `
`)r¦  r™  r”  r–  r„   r+   r+   r,   Ú_Py_ISLINEFEEDð  s    r¨  c                 C   s   t t| ƒ tj@ S )z)Check if character is carriage return ``)r¦  r™  r”  r—  r„   r+   r+   r,   Ú_Py_ISCARRIAGERETURNö  s    r©  )UÚ__doc__Úcollectionsr   Úenumr   Úllvmlite.irr@   ÚnumpyÚnpÚ
numba.corer   r   Únumba.core.imputilsr   Únumba.core.extendingr   r   r	   Únumba.core.errorsr
   r   Úuint32r;   Ú_Py_TABÚ_Py_LINEFEEDÚ_Py_CARRIAGE_RETURNÚ	_Py_SPACEr   r0   r_   rm   ro   rt   rv   rw   rx   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œ   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,   Ú<module>   sì  ÿ
3














































                                                                                                                        € ø 
€ ÷                                                                                                                                                                                                                                 à!ß&                                                                                                                                                                                                                                à!ß$         

                                                                                                                                                                                                                               èç


						