HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.60.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 5 05:00:59 EST 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //var/opt/nydus/ops/cffi/__pycache__/verifier.cpython-39.pyc
a

�,�h�+�@s�ddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ej
dkrhddlZdd�Z
nddlZd	d�Z
ej
d
kr�ejZnGdd�dej�ZGd
d�de�ZdZdd�Zdadd�Zdd�Zddd�Zdd�Zdd�ZdS)�N�)�__version_verifier_modules__)�ffiplatform)�VerificationError)�rcCstjjdd�S�N)�	importlib�	machinery�EXTENSION_SUFFIXES�rr�@/opt/nydus/tmp/pip-target-wkfpz8uv/lib64/python/cffi/verifier.py�_extension_suffixessr
cCsdd�t��D�S)NcSs g|]\}}}|tjkr|�qSr)�imp�C_EXTENSION)�.0�suffix�_�typerrr�
<listcomp>s
�z'_extension_suffixes.<locals>.<listcomp>)rZget_suffixesrrrrr
s�rcseZdZ�fdd�Z�ZS)�NativeIOcs(t|t�r|�d�}tt|��|�dS)N�ascii)�
isinstance�unicode�encode�superr�write)�self�s��	__class__rrrs

zNativeIO.write)�__name__�
__module__�__qualname__r�
__classcell__rrrrrsrc@szeZdZddd�Zd dd�Zd	d
�Zdd�Zd
d�Zdd�Zdd�Z	dd�Z
dd�Zdd�Zd!dd�Z
dd�Zdd�ZdS)"�VerifierN�F�.ccKsz|jjrtd|jjf��||_||_|s4t�|�}t||�}
|
|�|_|j�	|�|	|_
|�||
�|_|rz|rxt
d��n�d�dtjdd�t||g|j�}tjdkr�|�d�}tt�|ddd��d	@�}|�d
��d�}tt�|ddd��d	@�}|�d
��d�}d||jj||f}t�d}|�p4t�|_tj�|j||�|_tj�|j||�|_ ||_!d|_"d|_#dS)NzKfeature not supported with ffi.verify(), but only with ffi.set_source(): %sz)can't specify both 'modulename' and 'tag'�z%d.%d�rzutf-8rl���0x�Lr�0z_cffi_%s_%s%s%sF)$�_parserZ_uses_new_featurer�ffi�preambler�flatten�_locate_engine_class�_vengineZpatch_extension_kwds�flags�make_relative_to�kwds�	TypeError�join�sys�version_inforZ_cdefsourcesr�hex�binascii�crc32�lstrip�rstripZ
_class_key�_get_so_suffixes�_caller_dir_pycache�tmpdir�os�path�sourcefilename�modulefilename�ext_package�_has_source�_has_module)rr.r/rA�
modulenamerF�tag�force_generic_engineZsource_extensionr3�relative_tor5Zflattened_kwdsZ
vengine_class�keyZk1Zk2rrrr�__init__ sP��



��


�
zVerifier.__init__cCsL|jj�0|jr |dur td��|�|�Wd�n1s>0YdS)zkWrite the C source code.  It is produced in 'self.sourcefilename',
        which can be tweaked beforehand.Nzsource code already written)r.�_lockrGr�
_write_source�r�filerrr�write_sourceIs
�zVerifier.write_sourcecCsP|jj�4|jrtd��|js&|��|��Wd�n1sB0YdS)z�Write the C source code (if not done already) and compile it.
        This produces a dynamic link library in 'self.modulefilename'.zmodule already compiledN)r.rOrHrrGrP�_compile_module�rrrr�compile_moduleRs
zVerifier.compile_modulecCs^|jj�B|js4|��|js4|js,|��|��|��Wd�S1sP0YdS)a"Get a C module from this Verifier instance.
        Returns an instance of a FFILibrary class that behaves like the
        objects returned by ffi.dlopen(), but that delegates all
        operations to the C module.  If necessary, the C code is written
        and compiled first.
        N)r.rOrH�_locate_modulerGrPrT�
_load_libraryrUrrr�load_library\s
zVerifier.load_librarycCsBtj�|j�}|�dd�d}|�d�r>ttd�r>|dd�}|S)N�.rrZ_d�gettotalrefcount���)rBrC�basenamerE�split�endswith�hasattrr8)rr]rrr�get_module_namels
zVerifier.get_module_namecCsf|js<|jj�|js|��Wd�n1s20Yt�|j�}|��}tj||fi|j	��Sr)
rGr.rOrPrZmaybe_relative_pathrDra�
get_extensionr5)rZ
sourcename�modnamerrrrbws
&zVerifier.get_extensioncCs|jjSr)r2Z_gen_python_modulerUrrr�generates_python_module�sz Verifier.generates_python_modulecsz|rvtj�|�rvtj�|��|��}tjD]J}||vr*||}t|ttf�sZt	d|f���fdd�|D�}|||<q*|S)Nz&keyword '%s' should be a list or tuplecsg|]}tj��|��qSr)rBrCr7)r�fn��dirnamerrr��z-Verifier.make_relative_to.<locals>.<listcomp>)
rBrCrg�copyrZLIST_OF_FILE_NAMESr�list�tupler6)rr5rLrM�lstrrfrr4�s
�
zVerifier.make_relative_tocCs�tj�|j�st|jrHzt|jdddg�}Wnty>YdS0|j}nd}|j�	|�
�|t��}|durndS||_|j��d|_
dS)N�__doc__T)rBrC�isfilerErF�
__import__�ImportError�__path__r2�find_modulerar?Z
collect_typesrH)r�pkgrC�filenamerrrrW�s �
zVerifier._locate_modulecCs*||j_z|j��W|j`n|j`0dSr)r2Z_fZwrite_source_to_frQrrr�_write_source_to�szVerifier._write_source_tocCs�|dur|�|�n�t�}|�|�|��}tj�|j�rvt|jd��}|��|k}Wd�qz1sj0Ynd}|r�t	|j�t|jd��}|�
|�Wd�n1s�0Yd|_dS)N�rT�w)rur�getvaluerBrC�existsrD�open�read�_ensure_dirrrG)rrR�fZsource_data�fpZ
needs_writtenrrrrP�s
.
(zVerifier._write_sourcecCsntj�|j�}t�||���}zt�||j�}Wnt	yFd}Yn0|sdt
|j�t�||j�d|_
dS)NFT)rBrCrgrDr�compilerb�samefilerE�OSErrorr|�shutil�moverH)rrAZoutputfilenameZsamerrrrT�s

zVerifier._compile_modulecCs0|js
J�|jdur"|j�|j�S|j��SdSr)rHr3r2rYrUrrrrX�s

zVerifier._load_library)NNNr&Fr'NN)N)N)r!r"r#rNrSrVrYrarbrdr4rWrurPrTrXrrrrr%s �
)
	
	

r%FcCsztrd}|sNdtjvrd}n2zddl}Wnty>d}Yn0|j|urNd}|rdddlm}|jSddlm	}|j
SdS)NTZ__pypy__r�?r)�vengine_gen)�vengine_cpy)�_FORCE_GENERIC_ENGINEr8�builtin_module_names�
_cffi_backendrpZ_backendr&r�ZVGenericEnginer�ZVCPythonEngine)r.rKr�r�r�rrrr1�s 


r1cCsHtrtStj�d�}|r|St�d�jj}tj�	tj�
tj�|�d��S)NZCFFI_TMPDIRr)�__pycache__)�_TMPDIRrB�environ�getr8�	_getframe�f_code�co_filenamerC�abspathr7rg)�resultrtrrrr@�s�r@cCs|adS)z:Set the temporary directory to use instead of __pycache__.N)r�rfrrr�
set_tmpdirsr�c	Cs|pt�}zt�|�}Wnty,YdS0|r8d}nt�d��}|D]Z}|���d�rJ|���|�sx|���d�rJzt�tj	�
||��WqJty�YqJ0qJtj	�
|d�g}|D]^}zDt�|�D]4}tj	�
||�}tj	�|�r�|�|�q�t�|�q�Wq�t�yYq�0q�dS)z}Clean up the temporary directory by removing all files in it
    called `_cffi_*.{c,so}` as well as the `build` subdirectory.Nr'rZ_cffi_�build)
r@rB�listdirr�r?�lower�
startswithr_�unlinkrCr7�isdir�append)rAZkeep_so�filelistrreZ	clean_dir�dirrrr�cleanup_tmpdirs8
��r�cCs&t�}|s"tjdkrdg}ndg}|S)N�win32z.pydz.so)r
r8�platform)�suffixesrrrr?$s
r?cCs*tj�|�}|r&tj�|�s&t�|�dSr)rBrCrgr��makedirs)rtrgrrrr|/sr|)NF)r8rBr;r��ior&rr�errorrr9Zimportlib.machineryrr
r�StringIOr�BytesIO�objectr%r�r1r�r@r�r�r?r|rrrr�<module>s*(


?