Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 Aøªjõ+ã@sêddlZddlZddlZddlZddlZddlmZddlmZddlm Z ej dkrhddl Z dd„Z nddlZd d„Z ej dkrŠejZnGd d „d ejƒZGd d „d eƒZdZdd„Zdadd„Zdd„Zddd„Zdd„Zdd„ZdS)éNé)Ú__version_verifier_modules__)Ú ffiplatform)ÚVerificationErrorécCstjjdd…S)N)Ú importlibÚ machineryÚEXTENSION_SUFFIXES©r r ú-/tmp/pip-build-_d5lkt3n/cffi/cffi/verifier.pyÚ_extension_suffixes sr cCsdd„tjƒDƒS)NcSs g|]\}}}|tjkr|‘qSr )ÚimpÚ C_EXTENSION)Ú.0ÚsuffixÚ_Útyper r r ú sz'_extension_suffixes..)r Ú get_suffixesr r r r r scseZdZ‡fdd„Z‡ZS)ÚNativeIOcs(t|tƒr|jdƒ}tt|ƒj|ƒdS)NÚascii)Ú isinstanceÚunicodeÚencodeÚsuperrÚwrite)ÚselfÚs)Ú __class__r r rs  zNativeIO.write)Ú__name__Ú __module__Ú __qualname__rÚ __classcell__r r )rr rsrc@szeZdZddd„Zd dd„Zd d „Zd d „Zd d„Zdd„Zdd„Z dd„Z dd„Z dd„Z d!dd„Z dd„Zdd„ZdS)"ÚVerifierNÚFú.cc Ksz|jjrtd|jjfƒ‚||_||_|s4tj| ƒ} t||ƒ} | |ƒ|_|jj | ƒ| |_ |j | | ƒ|_ |rz|rxt dƒ‚n¦djdtjdd…t|| g|jƒ}tjdkr´|jdƒ}ttj|ddd…ƒd @ƒ}|jd ƒjd ƒ}ttj|d dd…ƒd @ƒ}|jd ƒjd ƒ}d||jj||f}tƒd}|�p4tƒ|_tjj|j||ƒ|_tjj|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)r)$Ú_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?Ú modulenamerDÚtagÚforce_generic_engineZsource_extensionr1Ú relative_tor3Zflattened_kwdsZ vengine_classÚkeyZk1Zk2rr r r Ú__init__ sF           zVerifier.__init__c Cs8|jj�&|jr |dkr tdƒ‚|j|ƒWdQRXdS)zkWrite the C source code. It is produced in 'self.sourcefilename', which can be tweaked beforehand.Nzsource code already written)r,Ú_lockrErÚ _write_source)rÚfiler r r Ú write_sourceIs  zVerifier.write_sourcec Cs<|jj�*|jrtdƒ‚|js&|jƒ|jƒWdQRXdS)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,rMrFrrErNÚ_compile_module)rr r r Úcompile_moduleRs  zVerifier.compile_modulec CsF|jj�4|js4|jƒ|js4|js,|jƒ|jƒ|jƒSQRXdS)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,rMrFÚ_locate_modulerErNrQÚ _load_library)rr r r Ú load_library\s zVerifier.load_librarycCsBtjj|jƒ}|jddƒd}|jdƒr>ttdƒr>|dd…}|S)NÚ.rrZ_dÚgettotalrefcountr'éþÿÿÿ)r@rAÚbasenamerCÚsplitÚendswithÚhasattrr6)rrYr r r Úget_module_namels  zVerifier.get_module_namec CsVtjƒ|js0|jj�|js&|jƒWdQRXtj|jƒ}|jƒ}tj ||f|j ŽS)N) rZ_hack_at_distutilsrEr,rMrNZmaybe_relative_pathrBr]Ú get_extensionr3)rZ sourcenameÚmodnamer r r r^ws  zVerifier.get_extensioncCs|jjS)N)r0Z_gen_python_module)rr r r Úgenerates_python_module�sz Verifier.generates_python_modulecs~|rztjj|ƒrztjj|ƒ‰|jƒ}xTtjD]J}||kr,||}t|ttfƒs\t d|fƒ‚‡fdd„|Dƒ}|||<q,W|S)Nz&keyword '%s' should be a list or tuplecsg|]}tjjˆ|ƒ‘qSr )r@rAr5)rÚfn)Údirnamer r rŽsz-Verifier.make_relative_to..) r@rArbÚcopyrZLIST_OF_FILE_NAMESrÚlistÚtupler4)rr3rJrKÚlstr )rbr r2„s    zVerifier.make_relative_toc Csˆtjj|jƒst|jrHyt|jdddgƒ}Wntk r>dSX|j}nd}|jj |j ƒ|t ƒƒ}|dkrndS||_|jj ƒd|_ dS)NÚ__doc__T)r@rAÚisfilerCrDÚ __import__Ú ImportErrorÚ__path__r0Ú find_moduler]r=Z collect_typesrF)rÚpkgrAÚfilenamer r r rS”s zVerifier._locate_modulec Cs$||j_z|jjƒWd|j`XdS)N)r0Z_fZwrite_source_to_f)rrOr r r Ú_write_source_to§szVerifier._write_source_tocCs |dk r|j|ƒnˆtƒ}|j|ƒ|jƒ}tjj|jƒrbt|jdƒ�}|jƒ|k }WdQRXnd}|r–t |jƒt|jdƒ�}|j |ƒWdQRXd|_ dS)NÚrTÚw) rorÚgetvaluer@rAÚexistsrBÚopenÚreadÚ _ensure_dirrrE)rrOÚfZ source_dataÚfpZ needs_writtenr r r rN®s   zVerifier._write_sourcec Csptjj|jƒ}tj||jƒƒ}ytj||jƒ}Wnt k rHd}YnX|sft |jƒt j ||jƒd|_ dS)NFT)r@rArbrBrÚcompiler^ÚsamefilerCÚOSErrorrvÚshutilÚmoverF)rr?ZoutputfilenameZsamer r r rQÇs  zVerifier._compile_modulecCs0|js t‚|jdk r"|jj|jƒS|jjƒSdS)N)rFÚAssertionErrorr1r0rU)rr r r rTÔs  zVerifier._load_library)NNNr$Fr%NN)N)N)rr r!rLrPrRrUr]r^r`r2rSrorNrQrTr r r r r#s '      r#Fc Cs|trd}|sPdtjkrd}n4y ddl}Wntk r@d}YnX|j|k rPd}|rfddlm}|jSddlm }|j SdS)NTZ__pypy__rú?r)Ú vengine_gen)Ú vengine_cpy) Ú_FORCE_GENERIC_ENGINEr6Úbuiltin_module_namesÚ _cffi_backendrjZ_backendr$r€ZVGenericEnginer�ZVCPythonEngine)r,rIr„r€r�r r r r/ßs       r/cCsHtrtStjjdƒ}|r|Stjdƒjj}tjj tjj tjj |ƒdƒƒS)NZ CFFI_TMPDIRr'Ú __pycache__) Ú_TMPDIRr@ÚenvironÚgetr6Ú _getframeÚf_codeÚ co_filenamerAÚabspathr5rb)Úresultrnr r r r>÷s r>cCs|adS)z:Set the temporary directory to use instead of __pycache__.N)r†)rbr r r Ú set_tmpdirsrŽcCs0|ptƒ}ytj|ƒ}Wntk r,dSX|r8d}ntƒdjƒ}xd|D]\}|jƒjdƒrL|jƒj|ƒsz|jƒjdƒrLytjtj j ||ƒƒWqLtk r¦YqLXqLWtj j |dƒg}xn|D]f}yJxDtj|ƒD]6}tj j ||ƒ}tj j |ƒ�r|j |ƒqÔtj|ƒqÔWWqÂtk �r&YqÂXqÂWdS)z}Clean up the temporary directory by removing all files in it called `_cffi_*.{c,so}` as well as the `build` subdirectory.Nz.crZ_cffi_Úbuild) r>r@Úlistdirr{r=ÚlowerÚ startswithr[ÚunlinkrAr5ÚisdirÚappend)r?Zkeep_soÚfilelistrraZ clean_dirÚdirr r r Úcleanup_tmpdirs2     r˜cCs&tƒ}|s"tjdkrdg}ndg}|S)NÚwin32z.pydz.so)r r6Úplatform)Úsuffixesr r r r=%s  r=cCs,tjj|ƒ}|r(tjj|ƒ r(tj|ƒdS)N)r@rArbr”Úmakedirs)rnrbr r r rv0s rv)rr)r)NF)r6r@r9r|Úior$rrÚerrorrr7Úimportlib.machineryrr r ÚStringIOrÚBytesIOÚobjectr#r‚r/r†r>rŽr˜r=rvr r r r Ús*(      @