§
    ZQd&C  ã                   ó”   — d Z ddlZddlZddlZddlZddlmZ ddlT ddl	m
Z
mZ ddlmZ  G d„ de¦  «        Z G d	„ d
ee¦  «        ZdS )zHdistutils.command.build_py

Implements the Distutils 'build_py' command.é    N)ÚCommand)Ú*)Úconvert_pathÚ	Mixin2to3)Úlogc                   óž   — e Zd ZdZg d¢ZddgZddiZd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )Úbuild_pyz5"build" pure Python modules (copy to build directory)))z
build-lib=Údzdirectory to "build" (copy) to)ÚcompileÚczcompile .py to .pyc)ú
no-compileNz!don't compile .py files [default])z	optimize=ÚOzlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])ÚforceÚfz2forcibly build everything (ignore file timestamps)r   r   r   c                 óv   — d | _         d | _        d | _        d | _        d | _        d| _        d| _        d | _        d S )Nr   )Ú	build_libÚ
py_modulesÚpackageÚpackage_dataÚpackage_dirr   Úoptimizer   ©Úselfs    ú1/usr/lib/python3.11/distutils/command/build_py.pyÚinitialize_optionszbuild_py.initialize_options    s@   € ØˆŒØˆŒØˆŒØ ˆÔØˆÔØˆŒØˆŒØˆŒ
ˆ
ˆ
ó    c                 óH  — |                       ddd¦  «         | j        j        | _        | j        j        | _        | j        j        | _        i | _        | j        j        r;| j        j                             ¦   «         D ]\  }}t          |¦  «        | j        |<   Œ|                      ¦   «         | _	        t          | j        t          ¦  «        sV	 t          | j        ¦  «        | _        d| j        cxk    rdk    sn J ‚d S # t          t          f$ r t          d¦  «        ‚w xY wd S )NÚbuild)r   r   )r   r   r   é   zoptimize must be 0, 1, or 2)Úset_undefined_optionsÚdistributionÚpackagesr   r   r   Úitemsr   Úget_data_filesÚ
data_filesÚ
isinstancer   ÚintÚ
ValueErrorÚAssertionErrorÚDistutilsOptionError)r   ÚnameÚpaths      r   Úfinalize_optionszbuild_py.finalize_options*   sL  € Ø×"Ò" 7Ø#=Ø#5ñ	7ô 	7ð 	7ð Ô)Ô2ˆŒØÔ+Ô6ˆŒØ Ô-Ô:ˆÔØˆÔØÔÔ(ð 	<Ø"Ô/Ô;×AÒAÑCÔCð <ð <‘
��dÝ)5°dÑ);Ô);�Ô  Ñ&Ð&Ø×-Ò-Ñ/Ô/ˆŒõ ˜$œ-­Ñ-Ô-ð 	JðJÝ # D¤MÑ 2Ô 2�”Ø˜DœMÐ.Ð.Ò.Ð.¨QÒ.Ð.Ð.Ð.Ð.Ð.Ð.Ð.øÝ¥Ð/ð Jð Jð JÝ*Ð+HÑIÔIÐIðJøøøð		Jð 	Js   Ã/C> Ã>!Dc                 óì   — | j         r|                      ¦   «          | j        r(|                      ¦   «          |                      ¦   «          |                      |                      d¬¦  «        ¦  «         d S ©Nr   )Úinclude_bytecode)r   Úbuild_modulesr"   Úbuild_packagesÚbuild_package_dataÚbyte_compileÚget_outputsr   s    r   Úrunzbuild_py.runC   sy   € ð, Œ?ð 	!Ø×ÒÑ Ô Ð ØŒ=ð 	&Ø×ÒÑ!Ô!Ð!Ø×#Ò#Ñ%Ô%Ð%à×Ò˜$×*Ò*¸AÐ*Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?r   c                 ó\  ‡— g }| j         s|S | j         D ]—}|                      |¦  «        }t          j        j        | j        g|                     d¦  «        z   Ž }dŠ|rt          |¦  «        dz   Šˆfd„|                      ||¦  «        D ¦   «         }| 	                    ||||f¦  «         Œ˜|S )z?Generate list of '(package,src_dir,build_dir,filenames)' tuplesú.r   é   c                 ó$   •— g | ]}|‰d …         ‘ŒS ©N© )Ú.0ÚfileÚplens     €r   ú
<listcomp>z+build_py.get_data_files.<locals>.<listcomp>s   s.   ø€ ð ð ð Ø $��T�U�U”ðð ð r   )
r"   Úget_package_dirÚosr,   Újoinr   ÚsplitÚlenÚfind_data_filesÚappend)r   Údatar   Úsrc_dirÚ	build_dirÚ	filenamesr?   s         @r   r$   zbuild_py.get_data_filesa   sÞ   ø€ àˆØŒ}ð 	ØˆKØ”}ð 	Bð 	BˆGà×*Ò*¨7Ñ3Ô3ˆGõ œœ¨¬Ð'7¸'¿-º-ÈÑ:LÔ:LÑ'LÐNˆIð ˆDØð &Ý˜7‘|”| A‘~�ðð ð ð Ø(,×(<Ò(<¸WÀgÑ(NÔ(Nðñ ô ˆIð �KŠK˜ '¨9°iÐ@ÑAÔAÐAÐAØˆr   c           	      óh  ‡— | j                              dg ¦  «        | j                              |g ¦  «        z   }g Š|D ]t}t          j        t          j                             t          j        |¦  «        t          |¦  «        ¦  «        ¦  «        }‰                     ˆfd„|D ¦   «         ¦  «         Œu‰S )z6Return filenames for package's data files in 'src_dir'Ú c                 óZ   •— g | ]'}|‰v¯t           j                             |¦  «        ¯%|‘Œ(S r<   )rB   r,   Úisfile)r=   ÚfnÚfiless     €r   r@   z,build_py.find_data_files.<locals>.<listcomp>‚   s;   ø€ ð (ð (ð ( °2¸U°?°?Ý”G—N’N 2Ñ&Ô&ð 4C˜"°?°?°?r   )	r   ÚgetÚglobrB   r,   rC   Úescaper   Úextend)r   r   rI   ÚglobsÚpatternÚfilelistrQ   s         @r   rF   zbuild_py.find_data_filesy   sÁ   ø€ àÔ"×&Ò& r¨2Ñ.Ô.ØÔ$×(Ò(¨°"Ñ5Ô5ñ6ˆàˆØð 	)ð 	)ˆGå”y¥¤§¢­d¬k¸'Ñ.BÔ.BÅLÐQXÑDYÔDYÑ!ZÔ!ZÑ[Ô[ˆHà�LŠLð (ð (ð (ð ( xð (ñ (ô (ñ )ô )ð )ð )àˆr   c                 óB  — d}| j         D ]”\  }}}}|D ]Š}t          j                             ||¦  «        }|                      t          j                             |¦  «        ¦  «         |                      t          j                             ||¦  «        |d¬¦  «         Œ‹Œ•dS )z$Copy data files into build directoryNF©Úpreserve_mode)r%   rB   r,   rC   ÚmkpathÚdirnameÚ	copy_file)r   Úlastdirr   rI   rJ   rK   ÚfilenameÚtargets           r   r3   zbuild_py.build_package_data†   s«   € àˆØ6:´oð 	4ð 	4Ñ2ˆG�W˜i¨Ø%ð 4ð 4�ÝœŸš i°Ñ:Ô:�Ø—’�BœGŸOšO¨FÑ3Ô3Ñ4Ô4Ð4Ø—’�rœwŸ|š|¨G°XÑ>Ô>ÀØ-2ð ñ 4ô 4ð 4ð 4ð4ð	4ð 	4r   c                 óø  — |                      d¦  «        }| j        s|rt          j        j        |Ž S dS g }|r{	 | j        d                     |¦  «                 }|                     d|¦  «         t          j        j        |Ž S # t          $ r" |                     d|d         ¦  «         |d= Y nw xY w|°{| j                             d¦  «        }|�|                     d|¦  «         |rt          j        j        |Ž S dS )z½Return the directory, relative to the top of the source
           distribution, where package 'package' should be found
           (at least according to the 'package_dir' option, if any).r8   rM   r   éÿÿÿÿ)rD   r   rB   r,   rC   ÚinsertÚKeyErrorrR   )r   r   r,   ÚtailÚpdirs        r   rA   zbuild_py.get_package_dir�   s"  € ð �}Š}˜SÑ!Ô!ˆàÔð 	Øð Ý”w”| TÐ*Ð*à�ràˆDØð ð/ØÔ+¨C¯HªH°T©N¬NÔ;�Dð
 —K’K  4Ñ(Ô(Ð(Ýœ7œ<¨Ð.Ð.øõ  ð !ð !ð !Ø—K’K  4¨¤8Ñ,Ô,Ð,Ø˜R˜˜˜ð!øøøð ð ð" Ô'×+Ò+¨BÑ/Ô/�ØÐ#Ø—K’K  4Ñ(Ô(Ð(àð Ýœ7œ<¨Ð.Ð.à˜2s   ¹ B Â)B.Â-B.c                 ó†  — |dk    rbt           j                             |¦  «        st          d|z  ¦  «        ‚t           j                             |¦  «        st          d|z  ¦  «        ‚|rVt           j                             |d¦  «        }t           j                             |¦  «        r|S t          j        d|¦  «         d S )NrM   z%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz__init__.pyz8package init file '%s' not found (or not a regular file))	rB   r,   ÚexistsÚDistutilsFileErrorÚisdirrC   rO   r   Úwarn)r   r   r   Úinit_pys       r   Úcheck_packagezbuild_py.check_package·   sÕ   € ð
 ˜"ÒÐÝ”7—>’> +Ñ.Ô.ð MÝ(Ø=ÀÑKñMô Mð Må”7—=’= Ñ-Ô-ð ?Ý(ð0Ø2=ñ>ñ?ô ?ð ?ð
 ð 	?Ý”g—l’l ;°Ñ>Ô>ˆGÝŒw�~Š~˜gÑ&Ô&ð ?Ø�å”ð 4Ø6=ñ?ô ?ð ?ð
 ˆtr   c                 ót   — t           j                             |¦  «        st          j        d||¦  «         dS dS )Nz!file %s (for module %s) not foundFT)rB   r,   rO   r   rl   )r   ÚmoduleÚmodule_files      r   Úcheck_modulezbuild_py.check_moduleÒ   s7   € ÝŒw�~Š~˜kÑ*Ô*ð 	ÝŒHÐ8¸+ÀvÑNÔNÐNØ�5à�4r   c                 óJ  — |                       ||¦  «         t          j        t          j                             t          j        |¦  «        d¦  «        ¦  «        }g }t          j                             | j        j        ¦  «        }|D ]š}t          j                             |¦  «        }||k    r[t          j         	                    t          j         
                    |¦  «        ¦  «        d         }|                     |||f¦  «         Œ‚|                      d|z  ¦  «         Œ›|S )Nz*.pyr   zexcluding %s)rn   rS   rB   r,   rC   rT   Úabspathr!   Úscript_nameÚsplitextÚbasenamerG   Údebug_print)	r   r   r   Úmodule_filesÚmodulesÚsetup_scriptr   Úabs_frp   s	            r   Úfind_package_moduleszbuild_py.find_package_modulesÙ   sõ   € Ø×Ò˜7 KÑ0Ô0Ð0Ý”y¥¤§¢­d¬k¸+Ñ.FÔ.FÈÑ!OÔ!OÑPÔPˆØˆÝ”w—’ tÔ'8Ô'DÑEÔEˆàð 	@ð 	@ˆAÝ”G—O’O AÑ&Ô&ˆEØ˜Ò$Ð$Ýœ×)Ò)­"¬'×*:Ò*:¸1Ñ*=Ô*=Ñ>Ô>¸qÔA�Ø—’ ¨°Ð3Ñ4Ô4Ð4Ð4à× Ò  °,Ñ!>Ñ?Ô?Ð?Ð?Øˆr   c                 ó  — i }g }| j         D ]û}|                     d¦  «        }d                     |dd…         ¦  «        }|d         }	 ||         \  }}n'# t          $ r |                      |¦  «        }d}Y nw xY w|s7|                      ||¦  «        }	|df||<   |	r|                     |d|	f¦  «         t          j                             ||dz   ¦  «        }
|  	                    ||
¦  «        sŒã|                     |||
f¦  «         Œü|S )aÈ  Finds individually-specified Python modules, ie. those listed by
        module name in 'self.py_modules'.  Returns a list of tuples (package,
        module_base, filename): 'package' is a tuple of the path through
        package-space to the module; 'module_base' is the bare (no
        packages, no dots) module name, and 'filename' is the path to the
        ".py" file (relative to the distribution root) that implements the
        module.
        r8   r   rc   r9   Ú__init__ú.py)
r   rD   rC   re   rA   rn   rG   rB   r,   rr   )r   r"   rz   rp   r,   r   Úmodule_baser   Úcheckedrm   rq   s              r   Úfind_moduleszbuild_py.find_modulesè   sN  € ð ˆð ˆð ”oð 	@ð 	@ˆFØ—<’< Ñ$Ô$ˆDØ—h’h˜t A b DœzÑ*Ô*ˆGØ˜rœ(ˆKðØ)1°'Ô):Ñ&�˜g˜gøÝð ð ð Ø"×2Ò2°7Ñ;Ô;�Ø���ðøøøð ð CØ×,Ò,¨W°kÑBÔB�Ø%0°!Ð$4�˜Ñ!Øð CØ—N’N G¨Z¸Ð#AÑBÔBÐBõ
 œ'Ÿ,š, {°KÀ%Ñ4GÑHÔHˆKØ×$Ò$ V¨[Ñ9Ô9ð Øà�NŠN˜G [°+Ð>Ñ?Ô?Ð?Ð?àˆs   Á	AÁ!A9Á8A9c                 ó  — g }| j         r'|                     |                      ¦   «         ¦  «         | j        rJ| j        D ]B}|                      |¦  «        }|                      ||¦  «        }|                     |¦  «         ŒC|S )a4  Compute the list of all modules that will be built, whether
        they are specified one-module-at-a-time ('self.py_modules') or
        by whole packages ('self.packages').  Return a list of tuples
        (package, module, module_file), just like 'find_modules()' and
        'find_package_modules()' do.)r   rU   rƒ   r"   rA   r}   )r   rz   r   r   Úms        r   Úfind_all_moduleszbuild_py.find_all_modules  sŽ   € ð ˆØŒ?ð 	0Ø�NŠN˜4×,Ò,Ñ.Ô.Ñ/Ô/Ð/ØŒ=ð 	"Øœ=ð "ð "�Ø"×2Ò2°7Ñ;Ô;�Ø×-Ò-¨g°{ÑCÔC�Ø—’˜qÑ!Ô!Ð!Ð!Øˆr   c                 ó>   — d„ |                       ¦   «         D ¦   «         S )Nc                 ó   — g | ]
}|d          ‘ŒS )rc   r<   )r=   rp   s     r   r@   z-build_py.get_source_files.<locals>.<listcomp>-  s   € ÐAÐAÐA˜v��r”
ÐAÐAÐAr   )r†   r   s    r   Úget_source_fileszbuild_py.get_source_files,  s"   € ØAÐA¨×)>Ò)>Ñ)@Ô)@ÐAÑAÔAÐAr   c                 ó\   — |gt          |¦  «        z   |dz   gz   }t          j        j        |Ž S )Nr€   )ÚlistrB   r,   rC   )r   rJ   r   rp   Úoutfile_paths        r   Úget_module_outfilezbuild_py.get_module_outfile/  s/   € Ø!�{¥T¨'¡]¤]Ñ2°f¸u±nÐ5EÑEˆÝŒwŒ|˜\Ð*Ð*r   r9   c                 óú  — |                       ¦   «         }g }|D ]Í\  }}}|                     d¦  «        }|                      | j        ||¦  «        }|                     |¦  «         |r| j        r4|                     t          j                             |d¬¦  «        ¦  «         | j	        dk    r9|                     t          j                             || j	        ¬¦  «        ¦  «         ŒÎ|d„ | j
        D ¦   «         z  }|S )Nr8   rM   )Úoptimizationr   c                 ób   — g | ],\  }}}}|D ]"}t           j                             ||¦  «        ‘Œ#Œ-S r<   )rB   r,   rC   )r=   r   rI   rJ   rK   r`   s         r   r@   z(build_py.get_outputs.<locals>.<listcomp>B  sW   € ð ð ð á6�˜ )¨YØ%ðð ð õ ŒG�LŠL˜ HÑ-Ô-ðð ð ð r   )r†   rD   r�   r   rG   r   Ú	importlibÚutilÚcache_from_sourcer   r%   )r   r0   rz   Úoutputsr   rp   rq   r`   s           r   r5   zbuild_py.get_outputs3  s'  € Ø×'Ò'Ñ)Ô)ˆØˆØ.5ð 
	?ð 
	?Ñ*ˆW�f˜kØ—m’m CÑ(Ô(ˆGØ×.Ò.¨t¬~¸wÈÑOÔOˆHØ�NŠN˜8Ñ$Ô$Ð$Øð ?Ø”<ð 4Ø—N’N¥9¤>×#CÒ#CØ ¨rð $Dñ $3ô $3ñ 4ô 4ð 4à”= 1Ò$Ð$Ø—N’N¥9¤>×#CÒ#CØ ¨t¬}ð $Dñ $>ô $>ñ ?ô ?ð ?øð 	ð ð à:>¼/ðñ ô ñ 	ˆð ˆr   c                 ó~  — t          |t          ¦  «        r|                     d¦  «        }n+t          |t          t          f¦  «        st          d¦  «        ‚|                      | j        ||¦  «        }t          j	         
                    |¦  «        }|                      |¦  «         |                      ||d¬¦  «        S )Nr8   z:'package' must be a string (dot-separated), list, or tupler   rZ   )r&   ÚstrrD   r‹   ÚtupleÚ	TypeErrorr�   r   rB   r,   r]   r\   r^   )r   rp   rq   r   ÚoutfileÚdirs         r   Úbuild_modulezbuild_py.build_moduleJ  s¯   € Ý�g�sÑ#Ô#ð 	PØ—m’m CÑ(Ô(ˆGˆGÝ˜G¥d­E ]Ñ3Ô3ð 	PÝØNñPô Pð Pð ×)Ò)¨$¬.¸'À6ÑJÔJˆÝŒg�oŠo˜gÑ&Ô&ˆØ�Š�CÑÔÐØ�~Š~˜k¨7À!ˆ~ÑDÔDÐDr   c                 ón   — |                       ¦   «         }|D ]\  }}}|                      |||¦  «         Œd S r;   )rƒ   r›   )r   rz   r   rp   rq   s        r   r1   zbuild_py.build_modulesY  sP   € Ø×#Ò#Ñ%Ô%ˆØ.5ð 	<ð 	<Ñ*ˆW�f˜kð
 ×Ò˜f k°7Ñ;Ô;Ð;Ð;ð	<ð 	<r   c                 óÀ   — | j         D ]U}|                      |¦  «        }|                      ||¦  «        }|D ]%\  }}}||k    sJ ‚|                      |||¦  «         Œ&ŒVd S r;   )r"   rA   r}   r›   )r   r   r   rz   Úpackage_rp   rq   s          r   r2   zbuild_py.build_packagesb  s—   € Ø”}ð 	@ð 	@ˆGð ×.Ò.¨wÑ7Ô7ˆKØ×/Ò/°¸ÑEÔEˆGð 4;ð @ð @Ñ/�˜6 ;Ø (Ò*Ð*Ð*Ð*Ø×!Ò! &¨+°wÑ?Ô?Ð?Ð?ð@ð	@ð 	@r   c                 óJ  — t           j        r|                      d¦  «         d S ddlm} | j        }|d         t          j        k    r|t          j        z   }| j        r ||d| j	        || j
        ¬¦  «         | j        dk    r! ||| j        | j	        || j
        ¬¦  «         d S d S )Nz%byte-compiling is disabled, skipping.r   )r4   rc   )r   r   ÚprefixÚdry_run)ÚsysÚdont_write_bytecoderl   Údistutils.utilr4   r   rB   Úsepr   r   r¡   r   )r   rQ   r4   r    s       r   r4   zbuild_py.byte_compilev  sâ   € ÝÔ"ð 	Ø�IŠIÐ=Ñ>Ô>Ð>ØˆFà/Ð/Ð/Ð/Ð/Ð/Ø”ˆØ�"Œ:�œÒÐØ�bœf‘_ˆFð
 Œ<ð 	PØˆL˜¨Ø#œz°&À$Ä,ðPñ Pô Pð PàŒ=˜1ÒÐØˆL˜¨¬Ø#œz°&À$Ä,ðPñ Pô Pð Pð Pð Pð Ðr   N)r9   )Ú__name__Ú
__module__Ú__qualname__ÚdescriptionÚuser_optionsÚboolean_optionsÚnegative_optr   r-   r6   r$   rF   r3   rA   rn   rr   r}   rƒ   r†   r‰   r�   r5   r›   r1   r2   r4   r<   r   r   r	   r	      sx  € € € € € àK€Kð
ð 
ð 
€Lð ! 'Ð*€OØ  9Ð-€Lðð ð ðJð Jð Jð2@ð @ð @ð<ð ð ð0ð ð ð4ð 4ð 4ð%ð %ð %ðNð ð ð6ð ð ðð ð ð2ð 2ð 2ðhð ð ð Bð Bð Bð+ð +ð +ðð ð ð ð.Eð Eð Eð<ð <ð <ð@ð @ð @ð(Pð Pð Pð Pð Pr   r	   c                   ó   — e Zd Zd„ Zd„ ZdS )Úbuild_py_2to3c                 ó.  — g | _         | j        r|                      ¦   «          | j        r(|                      ¦   «          |                      ¦   «          |                      | j         ¦  «         |                      |                      d¬¦  «        ¦  «         d S r/   )	Úupdated_filesr   r1   r"   r2   r3   Úrun_2to3r4   r5   r   s    r   r6   zbuild_py_2to3.run‹  sš   € ØˆÔð Œ?ð 	!Ø×ÒÑ Ô Ð ØŒ=ð 	&Ø×ÒÑ!Ô!Ð!Ø×#Ò#Ñ%Ô%Ð%ð 	�Š�dÔ(Ñ)Ô)Ð)ð 	×Ò˜$×*Ò*¸AÐ*Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?r   c                 ó�   — t                                | |||¦  «        }|d         r | j                             |d         ¦  «         |S )Nr9   r   )r	   r›   r°   rG   )r   rp   rq   r   Úress        r   r›   zbuild_py_2to3.build_module›  sG   € Ý×#Ò# D¨&°+¸wÑGÔGˆØˆqŒ6ð 	.àÔ×%Ò% c¨!¤fÑ-Ô-Ð-Øˆ
r   N)r¦   r§   r¨   r6   r›   r<   r   r   r®   r®   Š  s5   € € € € € ð@ð @ð @ð ð ð ð ð r   r®   )Ú__doc__rB   Úimportlib.utilr‘   r¢   rS   Údistutils.corer   Údistutils.errorsr¤   r   r   Ú	distutilsr   r	   r®   r<   r   r   ú<module>r¹      sñ   ðð0ð 0ð 
€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø €€€à "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð ðyPð yPð yPð yPð yP�ñ yPô yPð yPðvð ð ð ð �H˜iñ ô ð ð ð r   