o
    ?©Zh   ã                   @   s¾   d dl Z d dlZddlmZ g d¢Zddd„Zddd	„Zdd
d„Zzd dlm	Z	 W n e
y6   dd„ Z	Y nw dd„ Zz
eefZd dlZW n eyT   eZd dlZY nw dd„ Zdd„ ZdS )é    Né   )ÚVerificationError)ÚsourcesZinclude_dirsZlibrary_dirsZextra_objectsZdepends© c                 K   sB   ddl m} | g}|D ]}| tj |¡¡ q|d||dœ|¤ŽS )Nr   )Ú	Extension)Únamer   r   )Úcffi._shimmed_dist_utilsr   ÚappendÚosÚpathÚnormpath)ZsrcfilenameÚmodnamer   Úkwdsr   Z
allsourcesÚsrcr   r   úG/var/www/html/lang_env/lib/python3.10/site-packages/cffi/ffiplatform.pyÚget_extension   s
   r   c              
   C   s†   t j ¡ }z&t| |||ƒ}t j |¡}W | ¡ D ]\}}t j |¡|kr)|t j|< q|S | ¡ D ]\}}t j |¡|krA|t j|< q0w )z-Compile a C extension module using distutils.)r
   ÚenvironÚcopyÚ_buildr   ÚabspathÚitemsÚget)ÚtmpdirÚextÚcompiler_verboseÚdebugZsaved_environZoutputfilenameÚkeyÚvaluer   r   r   Úcompile   s   

€ý
€þr   c              
   C   sø   ddl m}m}m}m}m} |d|giƒ}	|	 ¡  |	 d¡}
|d u r&tj	j
}d|f|
d< d|
d< d| f|
d	< d| f|
d
< z'|dƒpBd}z||ƒ |	 d¡ |	 d¡}| ¡ \}W ||ƒ W |S ||ƒ w  ||fy{ } z
td|jj|f ƒ‚d }~ww )Nr   )ÚDistributionÚCompileErrorÚ	LinkErrorÚset_thresholdÚset_verbosityZext_modulesZ	build_extÚffiplatformr   )r$   TÚforceZ	build_libZ
build_tempz%s: %s)r   r   r    r!   r"   r#   Zparse_config_filesZget_option_dictÚsysÚflagsr   Úrun_commandZget_command_objZget_outputsr   Ú	__class__Ú__name__)r   r   r   r   r   r    r!   r"   r#   ÚdistÚoptionsZ	old_levelZ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.   =   s   r.   c                 C   s„   t j | ¡s| S | }g }	 |}t j |¡\}}||ks|s| S | |¡ zt|t jƒr6| ¡  t jj|Ž W S W n	 t	y@   Y nw qr/   )
r
   r   ÚisabsÚsplitr	   r.   ÚcurdirÚreverseÚjoinÚOSError)r   ÚdirÚnamesZprevdirr   r   r   r   Úmaybe_relative_path@   s&   
þÿör:   c                 C   sÖ   t | tƒr| dt| ƒ| f ¡ d S t | tƒr9t|  ¡ ƒ}| dt|ƒ ¡ |D ]}t||ƒ t| | |ƒ q(d S t | tt	fƒrU| dt| ƒ ¡ | D ]}t||ƒ qKd S t | t
ƒrd| d| f ¡ d S td| f ƒ‚)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ÚfrA   r   r   r   r   r   rB   [   s&   


þÿ
ÿrB   c                 C   s   t  ¡ }t| |ƒ | ¡ S r/   )Ú	cStringIOÚStringIOrB   Úgetvalue)rG   rH   r   r   r   Úflattenn   s   
rL   )r   )r   N)r&   r
   Úerrorr   ZLIST_OF_FILE_NAMESr   r   r   Zos.pathr.   ÚImportErrorr:   ÚintÚlongrE   rI   Ú	NameErrorÚiorB   rL   r   r   r   r   Ú<module>   s*    


ÿþ