o
    Ì5÷dê  ã                   @   sˆ   d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlZe d	¡Z	 eZG d
d„ deƒZdS )zRdistutils.command.build_scripts

Implements the Distutils 'build_scripts' command.é    N)ÚST_MODE)Ú	sysconfig)ÚCommand)Únewer)Úconvert_path)Úlogz^#!.*python[0-9.]*([ 	].*)?$c                   @   sj   e Zd ZdZg d¢ZdgZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zedd„ ƒZdS )Úbuild_scriptsz("build" scripts (copy and fixup #! line)))z
build-dir=Údzdirectory to "build" (copy) to)ÚforceÚfz1forcibly build everything (ignore file timestamps)zexecutable=Úez*specify final destination interpreter pathr
   c                 C   s   d | _ d | _d | _d | _d S ©N)Ú	build_dirÚscriptsr
   Ú
executable©Úself© r   ú‚C:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\setuptools/_distutils/command/build_scripts.pyÚinitialize_options$   s   
z build_scripts.initialize_optionsc                 C   s   |   dddd¡ | jj| _d S )NÚbuild)r   r   )r
   r
   )r   r   )Zset_undefined_optionsÚdistributionr   r   r   r   r   Úfinalize_options*   s   üzbuild_scripts.finalize_optionsc                 C   s   | j S r   )r   r   r   r   r   Úget_source_files3   s   zbuild_scripts.get_source_filesc                 C   s   | j sd S |  ¡  d S r   )r   Úcopy_scriptsr   r   r   r   Úrun6   s   zbuild_scripts.runc                 C   s@   |   | j¡ g }g }| jD ]	}|  |||¡ q|  |¡ ||fS )a2  
        Copy each script listed in ``self.scripts``.

        If a script is marked as a Python script (first line matches
        'shebang_pattern', i.e. starts with ``#!`` and contains
        "python"), then adjust in the copy the first line to refer to
        the current Python interpreter.
        )Zmkpathr   r   Ú_copy_scriptÚ_change_modes)r   ÚoutfilesÚupdated_filesÚscriptr   r   r   r   ;   s   	

zbuild_scripts.copy_scriptsc                 C   s¢  d }t |ƒ}tj | jtj |¡¡}| |¡ | js't||ƒs't	 
d|¡ d S zt |¡}W n ty=   | js9‚ d }Y nw | ¡ }|sM|  d| ¡ d S t |¡}| |¡ |rÃt	 d|| j¡ | js¹tjsk| j}ntj t d¡dt d¡t d¡f ¡}| d¡p…d	}	d
| |	 d }
|  |
|j¡ t|d|jd}| |
¡ | | ¡ ¡ W d   ƒ n1 s´w   Y  |rÁ| ¡  d S d S |rÉ| ¡  |  ||¡ d S )Nznot copying %s (up-to-date)z%s is an empty file (skipping)zcopying and adjusting %s -> %sÚBINDIRz
python%s%sÚVERSIONÚEXEé   Ú z#!Ú
Úw)Úencoding) r   ÚosÚpathÚjoinr   ÚbasenameÚappendr
   r   r   ÚdebugÚtokenizeÚopenÚOSErrorÚdry_runÚreadlineÚwarnÚshebang_patternÚmatchÚinfor   Úpython_buildr   Úget_config_varÚgroupÚ_validate_shebangr(   ÚwriteÚ
writelinesÚ	readlinesÚcloseÚ	copy_file)r   r    r   r   Zshebang_matchÚoutfiler   Ú
first_liner   Úpost_interpÚshebangÚoutfr   r   r   r   N   s\   
ý

þÿþ
þÿzbuild_scripts._copy_scriptc                 C   s&   t jdkrd S |D ]}|  |¡ q	d S )NÚposix)r)   ÚnameÚ_change_mode)r   r   Úfiler   r   r   r   „   s
   
ÿzbuild_scripts._change_modesc                 C   s`   | j rt d|¡ d S t |¡t d@ }|dB d@ }||kr.t d|||¡ t ||¡ d S d S )Nzchanging mode of %siÿ  im  z!changing mode of %s from %o to %o)r2   r   r7   r)   Ústatr   Úchmod)r   rI   ZoldmodeZnewmoder   r   r   rH   ‹   s   þzbuild_scripts._change_modec                 C   s\   z|   d¡ W n ty   td | ¡ƒ‚w z|   |¡ W d S  ty-   td | |¡ƒ‚w )Nzutf-8z,The shebang ({!r}) is not encodable to utf-8z?The shebang ({!r}) is not encodable to the script encoding ({}))ÚencodeÚUnicodeEncodeErrorÚ
ValueErrorÚformat)rD   r(   r   r   r   r;   –   s   ÿÿþÿzbuild_scripts._validate_shebangN)Ú__name__Ú
__module__Ú__qualname__ÚdescriptionZuser_optionsZboolean_optionsr   r   r   r   r   r   r   rH   Ústaticmethodr;   r   r   r   r   r      s    	6r   )Ú__doc__r)   ÚrerJ   r   Ú	distutilsr   Zdistutils.corer   Zdistutils.dep_utilr   Zdistutils.utilr   r   r/   Úcompiler5   Zfirst_line_rer   r   r   r   r   Ú<module>   s    
