U
    ÍZjÎ  ã                   @   sÐ   d dl Z d dlZddlmZ dddddgZdd
d„Zddd„Zddd„Zzd dlm	Z	 W n e
k
rt   dd„ Z	Y nX dd„ ZzeefZd dlZW n  ek
r²   eZd dlZY nX dd„ Zdd„ Zdd„ ZdS )é    Né   )ÚVerificationErrorÚsourcesÚinclude_dirsÚlibrary_dirsÚextra_objectsÚdepends© c                 K   sH   t ƒ  ddlm} | g}|D ]}| tj |¡¡ q|f ||dœ|—ŽS )Nr   )Ú	Extension)Únamer   )Ú_hack_at_distutilsÚdistutils.corer
   ÚappendÚosÚpathÚnormpath)ZsrcfilenameÚmodnamer   Úkwdsr
   Z
allsourcesÚsrcr	   r	   úS/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/cffi/ffiplatform.pyÚget_extension   s    r   c              
   C   sb   t ƒ  tj ¡ }zt| |||ƒ}tj |¡}W 5 | ¡ D ]"\}}tj |¡|kr8|tj|< q8X |S )z-Compile a C extension module using distutils.)	r   r   ÚenvironÚcopyÚitemsÚgetÚ_buildr   Úabspath)ÚtmpdirÚextÚcompiler_verboseÚdebugZsaved_environÚkeyÚvalueZoutputfilenamer	   r	   r   Úcompile   s    
r#   c              
   C   s  ddl m} dd l}dd l}|d|giƒ}| ¡  | d¡}|d krLtjj}d|f|d< d|d< d| f|d	< d| f|d
< zR|j	 
d¡pˆd}z.|j	 |¡ | d¡ | d¡}	|	 ¡ \}
W 5 |j	 
|¡ X W nD |jj|jjfk
�r } ztd|jj|f ƒ‚W 5 d }~X Y nX |
S )Nr   )ÚDistributionÚext_modulesÚ	build_extÚffiplatformr    )r'   TÚforceÚ	build_libÚ
build_tempz%s: %s)r   r$   Údistutils.errorsZdistutils.logÚparse_config_filesÚget_option_dictÚsysÚflagsr    ÚlogÚset_thresholdÚset_verbosityÚrun_commandÚget_command_objÚget_outputsÚerrorsÚCompileErrorÚ	LinkErrorr   Ú	__class__Ú__name__)r   r   r   r    r$   Ú	distutilsÚdistÚoptionsZ	old_levelÚcmd_objZsonameÚer	   r	   r   r       s0    


ÿ&r   )Úsamefilec                 C   s   t j | ¡t j |¡kS ©N)r   r   r   )Úf1Úf2r	   r	   r   r@   A   s    r@   c                 C   sˆ   t j | ¡s| S | }g }|}t j |¡\}}||ks8|s<| S | |¡ z&t|t jƒrj| ¡  t jj|Ž W S W q t	k
r€   Y qX qd S rA   )
r   r   ÚisabsÚsplitr   r@   ÚcurdirÚreverseÚjoinÚOSError)r   ÚdirÚnamesZprevdirr   r	   r	   r   Úmaybe_relative_pathD   s    
rL   c                 C   sÒ   t | tƒr"| dt| ƒ| f ¡ n¬t | tƒrnt|  ¡ ƒ}| dt|ƒ ¡ |D ]}t||ƒ t| | |ƒ qNn`t | tt	fƒr¤| dt| ƒ ¡ | D ]}t||ƒ q’n*t | t
ƒrÀ| d| f ¡ ntd| f ƒ‚d S )Nz%ds%sz%ddz%dlz%diz7the keywords to verify() contains unsupported object %r)Ú
isinstanceÚstrÚwriteÚlenÚdictÚsortedÚkeysÚ_flattenÚlistÚtupleÚint_or_longÚ	TypeError)ÚxÚfrS   r!   r"   r	   r	   r   rT   _   s"    



ÿrT   c                 C   s   t  ¡ }t| |ƒ | ¡ S rA   )Ú	cStringIOÚStringIOrT   Úgetvalue)rY   rZ   r	   r	   r   Úflattenr   s    
r^   c                  C   s0   t jdkr,zdd l} W n tk
r*   Y nX d S )NÚwin32r   )r.   ÚplatformÚ
setuptoolsÚImportError)ra   r	   r	   r   r   w   s
    
r   )r	   )r   N)r   N)r.   r   Úerrorr   ZLIST_OF_FILE_NAMESr   r#   r   Úos.pathr@   rb   rL   ÚintÚlongrW   r[   Ú	NameErrorÚiorT   r^   r   r	   r	   r	   r   Ú<module>   s,    ÿ


