HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/cffi/__pycache__/verifier.cpython-310.pyc
o

�N�g�+�@s�ddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ej
dkr4ddlZdd�Z
nddlZd	d�Z
ej
d
krEejZn	Gdd�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�A/opt/saltstack/salt/lib/python3.10/site-packages/cffi/verifier.py�_extension_suffixessr
cCsdd�t��D�S)NcSs g|]\}}}|tjkr|�qSr)�impZC_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)�
isinstanceZunicode�encode�superr�write)�self�s��	__class__rrrs

zNativeIO.write)�__name__�
__module__�__qualname__r�
__classcell__rrrrrsrc@s�eZdZ			ddd�Zd dd�Zd	d
�Zdd�Zd
d�Zdd�Zdd�Z	dd�Z
dd�Zdd�Zd dd�Z
dd�Zdd�ZdS)!�VerifierN�F�.ccKsx|jjr
td|jjf��||_||_|st�|�}t||�}
|
|�|_|j�	|�|	|_
|�||
�|_|r=|r<t
d��nSd�dtjdd�t||g|j�}tjdkrZ|�d�}tt�|ddd��d	@�}|�d
��d�}tt�|ddd��d	@�}|�d
��d�}d||jj||f}t�d}|p�t�|_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)$Z_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,r>Z
modulenamerC�tag�force_generic_engineZsource_extensionr0�relative_tor2Zflattened_kwdsZ
vengine_class�keyZk1Zk2rrrr�__init__ sR��


���


�

zVerifier.__init__cCsN|jj�|jr|durtd��|�|�Wd�dS1s wYdS)zkWrite the C source code.  It is produced in 'self.sourcefilename',
        which can be tweaked beforehand.Nzsource code already written)r+�_lockrDr�
_write_source�r�filerrr�write_sourceIs
�"�zVerifier.write_sourcecCsR|jj�|jrtd��|js|��|��Wd�dS1s"wYdS)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+rKrErrDrL�_compile_module�rrrr�compile_moduleRs

"�zVerifier.compile_modulecCs^|jj�!|js|��|js|js|��|��|��Wd�S1s(wYdS)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+rKrE�_locate_modulerDrLrP�
_load_libraryrQrrr�load_library\s
$�zVerifier.load_librarycCsBtj�|j�}|�dd�d}|�d�rttd�r|dd�}|S)N�.rrZ_dZgettotalrefcount���)r?r@�basenamerB�split�endswith�hasattrr5)rrXrrr�get_module_namels
zVerifier.get_module_namecCsnt��|js"|jj�|js|��Wd�n1swYt�|j�}|��}tj	||fi|j
��Sr)rZ_hack_at_distutilsrDr+rKrLZmaybe_relative_pathrAr\�
get_extensionr2)rZ
sourcename�modnamerrrr]ws
��zVerifier.get_extensioncCs|jjSr)r/Z_gen_python_modulerQrrr�generates_python_module�sz Verifier.generates_python_modulecsz|r;tj�|�r;tj�|��|��}tjD]%}||vr:||}t|ttf�s-t	d|f���fdd�|D�}|||<q|S)Nz&keyword '%s' should be a list or tuplecsg|]	}tj��|��qSr)r?r@r4)r�fn��dirnamerrr�sz-Verifier.make_relative_to.<locals>.<listcomp>)
r?r@rb�copyrZLIST_OF_FILE_NAMESr�list�tupler3)rr2rHrI�lstrrarr1�s
��zVerifier.make_relative_tocCs�tj�|j�s:|jr$zt|jdddg�}Wn
tyYdSw|j}nd}|j�	|�
�|t��}|dur7dS||_|j��d|_
dS)N�__doc__T)r?r@�isfilerBrC�
__import__�ImportError�__path__r/�find_moduler\r<Z
collect_typesrE)rZpkgr@�filenamerrrrS�s"��

zVerifier._locate_modulecCs(||j_z|j��W|j`dS|j`wr)r/Z_fZwrite_source_to_frMrrr�_write_source_to�szVerifier._write_source_tocCs�|dur|�|�dSt�}|�|�|��}tj�|j�r<t|jd��}|��|k}Wd�n1s6wYnd}|r`t	|j�t|jd��
}|�
|�Wd�n1s[wYd|_dS)N�rT�w)rnr�getvaluer?r@�existsrA�open�read�_ensure_dirrrD)rrN�fZsource_data�fpZ
needs_writtenrrrrL�s"
��
�
zVerifier._write_sourcecCsntj�|j�}t�||���}z	t�||j�}Wnt	y#d}Ynw|s2t
|j�t�||j�d|_
dS)NFT)r?r@rbrAr�compiler]�samefilerB�OSErrorru�shutil�moverE)rr>ZoutputfilenameZsamerrrrP�s�

zVerifier._compile_modulecCs,|jsJ�|jdur|j�|j�S|j��Sr)rEr0r/rUrQrrrrT�s


zVerifier._load_library)NNNr$Fr%NNr)rr r!rJrOrRrUr\r]r_r1rSrnrLrPrTrrrrr#s"
�
)	



r#FcCsvtrd}|s'dtjvrd}nzddl}Wntyd}Ynw|j|ur'd}|r2ddlm}|jSddlm	}|j
S)NTZ__pypy__r�?r)�vengine_gen)�vengine_cpy)�_FORCE_GENERIC_ENGINEr5�builtin_module_names�
_cffi_backendrjZ_backendr$r~ZVGenericEnginerZVCPythonEngine)r+rGr�r~rrrrr.�s"
�
r.cCsHtrtStj�d�}|r|St�d�jj}tj�	tj�
tj�|�d��S)NZCFFI_TMPDIRr'�__pycache__)�_TMPDIRr?�environ�getr5�	_getframe�f_code�co_filenamer@�abspathr4rb)�resultrmrrrr=�s�r=cCs|adS)z:Set the temporary directory to use instead of __pycache__.N)r�rarrr�
set_tmpdirsr�c	Cs|pt�}zt�|�}Wn
tyYdSw|rd}nt�d��}|D]-}|���d�rR|���|�s<|���d�rRzt�tj	�
||��Wq%tyQYq%wq%tj	�
|d�g}|D]-}z"t�|�D]}tj	�
||�}tj	�|�rz|�|�qet�|�qeWq]ty�Yq]wdS)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=r?�listdirrzr<�lower�
startswithrZ�unlinkr@r4�isdir�append)r>Zkeep_soZfilelistrr`Z	clean_dir�dirrrr�cleanup_tmpdirsD
��������r�cCs(t�}|stjdkrdg}|Sdg}|S)N�win32z.pydz.so)r
r5�platform)�suffixesrrrr<%s
�r<cCs2tj�|�}|rtj�|�st�|�dSdSdSr)r?r@rbr��makedirs)rmrbrrrru0s�ru)NF)r5r?r8r{�ior$rr�errorrr6Zimportlib.machineryrr
r�StringIOr�BytesIO�objectr#r�r.r�r=r�r�r<rurrrr�<module>s,(


@