verifier.pyc
1 o 2 w��c(- � @ s� d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ ddlm Z e j 3 dkr4d dlZdd� Z nd dlZd d� Z e j 4 d 5 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:\Users\Jacks.GUTTSPC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\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 � 6 <listcomp> s 7 �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 8 |�d�}tt| ��|� d S )N�ascii)� 9 isinstance�unicode�encode�superr �write)�self�s�� __class__r r r s 10 11 zNativeIO.write)�__name__� 12 __module__�__qualname__r � __classcell__r r r r r s r c @ s� e Zd Z ddd�Zd dd�Zd d 13 � Zdd� Zd d� Zdd� Zdd� Z dd� Z 14 dd� Zdd� Zd dd�Z dd� Zdd� ZdS )!�VerifierN� F�.cc K sx |j jr td|j jf ��|| _|| _|st�|�}t||�} | | �| _| j� |� | | _ 15 | �|| 16 �| _|r=|r<t d��nSd�dtjd d� t||g|j �}tjdkrZ|�d�}tt�|dd d� �d @ �}|�d 17 ��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� 18 _class_key�_get_so_suffixes�_caller_dir_pycache�tmpdir�os�path�sourcefilename�modulefilename�ext_package�_has_source�_has_module)r r0 r1 rF � 19 modulenamerK �tag�force_generic_engine�source_extensionr6 �relative_tor8 Zflattened_kwdsZ vengine_class�key�k1�k2r r r r �__init__ sR �� 20 21 22 ��� 23 24 25 � 26 27 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', 28 which can be tweaked beforehand.Nzsource code already written)r0 �_lockrL r � _write_source�r �filer r r �write_sourceI s 29 �"�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. 30 This produces a dynamic link library in 'self.modulefilename'.zmodule already compiledN)r0 rW rM r rL rX �_compile_module�r r r r �compile_moduleR s 31 32 "�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. 33 Returns an instance of a FFILibrary class that behaves like the 34 objects returned by ffi.dlopen(), but that delegates all 35 operations to the C module. If necessary, the C code is written 36 and compiled first. 37 N)r0 rW rM �_locate_modulerL rX r\ � _load_libraryr] r r r �load_library\ s 38 $�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 rf r r r �get_module_namel s 39 zVerifier.get_module_namec C sn t �� | js"| jj� | js| �� W d � n1 sw Y t �| j�}| �� }t j ||fi | j 40 ��S r )r �_hack_at_distutilsrL r0 rW rX �maybe_relative_pathrI rj � get_extensionr8 )r � 41 sourcename�modnamer r r rm w s 42 ��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 �}|||<