File manager - Edit - /usr/local/CyberPanel/lib/python3.10/site-packages/cffi/__pycache__/verifier.cpython-310.pyc
Back
o �h�+ � @ s� d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ ddlm Z e j dkr4d dlZdd� Z nd dlZd d� Z e j d krEejZn G dd� dej�ZG d d� de�ZdZdd� Zdadd� Zdd� Zddd�Zdd� Zdd� ZdS )� N� )�__version_verifier_modules__)�ffiplatform)�VerificationError)� r c C s t jjd d � S �N)� importlib� machinery�EXTENSION_SUFFIXES� r r �C/usr/local/CyberPanel/lib/python3.10/site-packages/cffi/verifier.py�_extension_suffixes s r c C s dd� t �� D �S )Nc S s g | ]\}}}|t jkr|�qS r )�imp�C_EXTENSION)�.0�suffix�_�typer r r � <listcomp> s �z'_extension_suffixes.<locals>.<listcomp>)r �get_suffixesr r r r r s �r c s e Zd Z� fdd�Z� ZS )�NativeIOc s( t |t�r |�d�}tt| ��|� d S )N�ascii)� isinstance�unicode�encode�superr �write)�self�s�� __class__r r r s zNativeIO.write)�__name__� __module__�__qualname__r � __classcell__r r r r r s r c @ s� e Zd Z ddd�Zd dd�Zd d � Zdd� Zd d� Zdd� Zdd� Z dd� Z dd� Zdd� Zd dd�Z dd� Zdd� ZdS )!�VerifierN� F�.cc K sx |j jr td|j jf ��|| _|| _|st�|�}t||�} | | �| _| j� |� | | _ | �|| �| _|r=|r<t d��nSd�dtjd d� t||g|j �}tjdkrZ|�d�}tt�|dd d� �d @ �}|�d ��d�}tt�|dd d� �d @ �}|�d ��d�}d|| jj||f }t� d }|p�t� | _tj�| j|| �| _tj�| j|| �| _ || _!d| _"d| _#d S )NzKfeature not supported with ffi.verify(), but only with ffi.set_source(): %sz)can't specify both 'modulename' and 'tag'� z%d.%d� r zutf-8r l �� �0x�Lr �0z_cffi_%s_%s%s%sF)$�_parser�_uses_new_featurer �ffi�preambler �flatten�_locate_engine_class�_vengine�patch_extension_kwds�flags�make_relative_to�kwds� TypeError�join�sys�version_infor �_cdefsourcesr �hex�binascii�crc32�lstrip�rstrip� _class_key�_get_so_suffixes�_caller_dir_pycache�tmpdir�os�path�sourcefilename�modulefilename�ext_package�_has_source�_has_module)r r0 r1 rF � modulenamerK �tag�force_generic_engine�source_extensionr6 �relative_tor8 �flattened_kwds� vengine_class�key�k1�k2r r r r �__init__ sR �� ��� � zVerifier.__init__c C sN | j j� | jr|du rtd��| �|� W d � dS 1 s w Y dS )zkWrite the C source code. It is produced in 'self.sourcefilename', which can be tweaked beforehand.Nzsource code already written)r0 �_lockrL r � _write_source�r �filer r r �write_sourceI s �"�zVerifier.write_sourcec C sR | j j� | jrtd��| js| �� | �� W d � dS 1 s"w Y dS )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)r0 rY rM r rL rZ �_compile_module�r r r r �compile_moduleR s "�zVerifier.compile_modulec C s^ | j j�! | js| �� | js| js| �� | �� | �� W d � S 1 s(w Y dS )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)r0 rY rM �_locate_modulerL rZ r^ � _load_libraryr_ r r r �load_library\ s $�zVerifier.load_libraryc C sB t j�| j�}|�dd�d }|�d�rttd�r|d d� }|S )N�.r r �_d�gettotalrefcount���)rG rH �basenamerJ �split�endswith�hasattrr; )r rh r r r �get_module_namel s zVerifier.get_module_namec C sf | j s| jj� | j s| �� W d � n1 sw Y t�| j�}| �� }tj||fi | j ��S r ) rL r0 rY rZ r �maybe_relative_pathrI rl � get_extensionr8 )r � sourcename�modnamer r r rn w s ��zVerifier.get_extensionc C s | j jS r )r4 �_gen_python_moduler_ r r r �generates_python_module� s z Verifier.generates_python_modulec sz |r;t j�|�r;t j�|�� |�� }tjD ]%}||v r:|| }t|ttf�s-t d|f ��� fdd�|D �}|||<