o
    wÖió  ã                   @   sB   d dl Z d dlmZ d dlmZmZmZmZ G dd„ de jƒZ	dS )é    N)ÚShadow)ÚOptionsÚCythonScopeÚ
PyrexTypesÚErrorsc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú
TestShadowc           
      C   sô   g }g }t j ¡ D ]b}| d¡}|d |dd … }}t j |¡}|r:t|ƒdkr:|d dkr:tt|ƒr9| 	|¡ q	|dkr?q	|dkrDq	tt|ƒsO| 	|¡ q	|rkt
t|ƒ}|D ]}	tt|ƒdƒshtt|ƒdƒrj nqXq	|  |g ¡ |  |g ¡ d S )	NÚ.r   é   ÚmoduleÚcollection_typeÚstaticmethodÚ__getattr__Ú__getattribute__)r   Údirective_typesÚkeysÚsplitÚdirective_scopesÚgetÚlenÚhasattrr   ÚappendÚgetattrÚtypeÚassertEqual)
ÚselfÚmissing_directivesÚextra_directivesÚfull_directiveÚsplit_directiveÚ	directiveÚrestÚscopeÚdirective_valueÚsubdirective© r$   úT/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/Cython/Tests/TestShadow.pyÚtest_all_directives_in_shadow   s6   




ÿý€z(TestShadow.test_all_directives_in_shadowc                 C   sb   t  d ¡}g }|j ¡ D ]}| d¡r| d¡rq|dv rqtt|ƒs(| |¡ q|  	|g ¡ d S )NÚ__)ÚPyTypeObjectÚPyObject_TypeCheck)
r   Úcreate_cython_scopeÚentriesr   Ú
startswithÚendswithr   r   r   r   )r   Úcython_scopeÚmissing_typesÚkeyr$   r$   r%   Útest_all_types_in_shadow*   s   


€z#TestShadow.test_all_types_in_shadowc                 C   s´   g }t jD ]L}dD ]G}|| }|r,|dv s|dkr,|  |tt ƒ¡ |  d| tt ƒ¡ q	tt |ƒs6| |¡ tddƒD ]}d| d | }tt |ƒsO| |¡ q;q	q|  |g ¡ d S )	N)Ú ÚuÚs)Ú
Py_UNICODEÚPy_UCS4Ú
Py_ssize_tÚssize_tÚ	ptrdiff_tÚ	Py_hash_tÚusize_tÚp_r	   é   ÚpÚ_)r   Ú	int_typesÚassertNotInÚdirr   r   Úranger   )r   r/   Úint_nameÚsignÚnameÚptrÚptr_namer$   r$   r%   Útest_int_types_in_shadow<   s(   




€ýðz#TestShadow.test_int_types_in_shadowc                 C   sÞ   t  d ¡}G dd„ dƒ}||_t ¡  g }g }tj ¡ D ]D\\}}}}|dkr(qtt	|ƒs2| 
|¡ | |¡s<| 
|¡ tddƒD ]}	d|	 d | }
tt	|
ƒsU| 
|
¡ | |
¡s_| 
|
¡ qAq|  |g ¡ |  |g ¡ d S )Nc                   @   s   e Zd ZdZdZg ZdS )z+TestShadow.test_most_types.<locals>.ContextFé   N)Ú__name__Ú
__module__Ú__qualname__ÚcppÚlanguage_levelÚfuture_directivesr$   r$   r$   r%   ÚContext[   s    rQ   Úobjectr	   r=   r>   r?   )r   r*   Ú_contextr   Úinit_threadr   Úmodifiers_and_name_to_typeÚitemsr   r   r   Úlookup_typerC   r   )r   r.   rQ   r/   Úmissing_lookupsÚsignedÚlongnessrF   Útype_rG   rH   r$   r$   r%   Útest_most_typesU   s.   








€ûzTestShadow.test_most_typesN)rK   rL   rM   r&   r1   rI   r\   r$   r$   r$   r%   r      s
    #r   )
ÚunittestÚCythonr   ÚCython.Compilerr   r   r   r   ÚTestCaser   r$   r$   r$   r%   Ú<module>   s    