3
MZ+ @ s d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ ddlm Z e j
dkrhd dlZdd Z
nd dlZd d Z
e j
dkrejZnG d
d dejZG dd
d
eZdZdd Zdadd Zdd ZdddZdd Zdd ZdS ) N )__version_verifier_modules__)ffiplatform)VerificationError c C s t jjd d S )N) importlib machineryEXTENSION_SUFFIXES r
r
/usr/lib64/python3.6/verifier.py_extension_suffixes s r c C s dd t j D S )Nc S s g | ]\}}}|t jkr|qS r
)impZC_EXTENSION).0suffix_typer
r
r
s z'_extension_suffixes..)r
Zget_suffixesr
r
r
r r s c s e Zd Z fddZ ZS )NativeIOc s( t |tr|jd}tt| j| d S )Nascii)
isinstanceZunicodeencodesuperr write)selfs) __class__r
r r s
zNativeIO.write)__name__
__module____qualname__r
__classcell__r
r
)r r r s r c @ sz e Zd ZdddZd ddZd d
Zdd Zd
d Zdd Zdd Z dd Z
dd Zdd Zd!ddZ
dd Zdd ZdS )"VerifierN F.cc K sv |j jrtd|j jf || _|| _|s4tj|}t||}
|
| | _| jj | | | _
| j||
| _|rz|rxt
dndjtjd d t||g|j }tjdkr|jd}ttj|dd d d@ }|jd jd
}ttj|dd d d@ }|jdjd
}d
|| jj||f }t d }|p0t | _tjj| j|| | _ tjj| 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' r zutf-8r l Z0xLr 0z_cffi_%s_%s%s%sF)r )%Z_parserZ_uses_new_featurer ffipreambler Zflatten_locate_engine_class_vengineZpatch_extension_kwdsflagsmake_relative_tokwds TypeErrorjoinsysversionr Z_cdefsourcesversion_infor hexbinasciiZcrc32lstriprstripZ
_class_key_get_so_suffixes_caller_dir_pycachetmpdirospathsourcefilenamemodulefilenameext_package_has_source_has_module)r r' r( r9 Z
modulenamer> tagforce_generic_engineZsource_extensionr+ relative_tor- Zflattened_kwdsZ
vengine_classkeyZk1Zk2r r
r
r __init__ sD
zVerifier.__init__c C s8 | j j& | jr |dkr td| j| W dQ R X dS )zkWrite the C source code. It is produced in 'self.sourcefilename',
which can be tweaked beforehand.Nzsource code already written)r' _lockr? r
_write_source)r filer
r
r write_sourceH s
zVerifier.write_sourcec C s<