a
    !f                     @   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
yl   dd Z	Y n0 dd ZzeefZd dlZW n ey   eZd dlZY n0 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	   Q/var/www/html/python-backend/venv/lib/python3.9/site-packages/cffi/ffiplatform.pyget_extension   s    r   c              
   C   s   t   tj }zJt| |||}tj|}W | D ]"\}}tj||kr6|tj|< q6n.| D ]"\}}tj||krd|tj|< qd0 |S )z-Compile a C extension module using distutils.)	r   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} dd l}dd l}|d|gi}|  |d}|d u rLtjj}d|f|d< d|d< d| f|d	< d| f|d
< z^|j	
dpd}z:|j	| |d |d}	|	 \}
W |j	
| n|j	
| 0 W nF |jj|jjfy } z td|jj|f W Y d }~n
d }~0 0 |
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	y~   Y q0 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  nt | trnt|  }|dt|  |D ]}t|| t| | | qNn`t | tt	fr|dt|   | D ]}t|| qn*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   s.   t jdkr*zdd l} W n ty(   Y n0 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&   


