
    5h#                        d Z ddlmZ ddl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  G d de          ZdS )zBdistutils.command.build

Implements the Distutils 'build' command.    )annotationsN)Callable)ClassVar   )show_compilers)Command)DistutilsOptionError)get_platformc                      e Zd ZU dZdddddddd	d
 e             dfdddddgZddgZded<   dddefgZ	ded<   d Z
d'dZd'dZd Zd  Zd! Zd" Zd#efd$efd%efd&efgZdS )(buildz"build everything needed to install)zbuild-base=bz base directory for build library)zbuild-purelib=Nz2build directory for platform-neutral distributions)zbuild-platlib=Nz3build directory for platform-specific distributions)z
build-lib=NzWbuild directory for all distribution (defaults to either build-purelib or build-platlib)zbuild-scripts=Nzbuild directory for scripts)zbuild-temp=tztemporary build directoryz
plat-name=pz3platform name to build for, if supported [default: ])z	compiler=czspecify the compiler type)z	parallel=jznumber of parallel build jobs)debuggz;compile extensions and libraries with debugging information)forcefz2forcibly build everything (ignore file timestamps))zexecutable=ez5specify final destination interpreter path (build.py)r   r   zClassVar[list[str]]boolean_optionszhelp-compilerNzlist available compilerszAClassVar[list[tuple[str, str | None, str, Callable[[], object]]]]help_optionsc                    d| _         d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d| _	        d | _
        d | _        d S )Nr   F)
build_basebuild_purelibbuild_platlib	build_lib
build_tempbuild_scriptscompiler	plat_namer   r   
executableparallelselfs    Clib/python3.11/site-packages/setuptools/_distutils/command/build.pyinitialize_optionszbuild.initialize_options3   s_    ! "!!

    returnNonec                   | j         t                      | _         nt          j        dk    rt	          d          d| j          dt
          j        j         }t          j	        d          r|dz  }t          t
          d          r|dz  }| j        *t          j                            | j        d	          | _        | j        -t          j                            | j        d	|z             | _        | j        2| j                                        r| j        | _        n| j        | _        | j        -t          j                            | j        d
|z             | _        | j        Nt          j                            | j        dt
          j        j         dt
          j        j                   | _        | j        :t
          j        r.t          j                            t
          j                  | _        t5          | j        t8                    r9	 t;          | j                  | _        d S # t<          $ r t	          d          w xY wd S )NntzW--plat-name only supported on Windows (try using './configure --help' on your platform).-Py_GIL_DISABLEDr   gettotalrefcountz-pydebuglibtempzscripts-zparallel should be an integer)r"   r
   osnamer	   sysimplementation	cache_tag	sysconfigget_config_varhasattrr   pathjoinr   r   r   distributionhas_ext_modulesr   r    version_infomajorminorr#   normpath
isinstancer$   strint
ValueError)r&   plat_specifiers     r'   finalize_optionszbuild.finalize_optionsC   s    >!)^^DNN
 w$*C  
 MT^LLc.@.JLL #$566 	"c!N
 3*++ 	)j(N
 %!#dou!E!ED%!#dou~?U!V!VD
 >! 0022 4!%!3!%!3 ?" gll4?F^<STTDO%!#L3+1LLC4D4JLL" "D
 ?"s~" g..s~>>DOdmS)) 	LL #DM 2 2 L L L*+JKKKL	L 	Ls   H( (Ic                ^    |                                  D ]}|                     |           d S N)get_sub_commandsrun_command)r&   cmd_names     r'   runz	build.run   s@     --// 	' 	'HX&&&&	' 	'r)   c                4    | j                                         S rK   )r>   has_pure_modulesr%   s    r'   rQ   zbuild.has_pure_modules   s     11333r)   c                4    | j                                         S rK   )r>   has_c_librariesr%   s    r'   rS   zbuild.has_c_libraries        00222r)   c                4    | j                                         S rK   )r>   r?   r%   s    r'   r?   zbuild.has_ext_modules   rT   r)   c                4    | j                                         S rK   )r>   has_scriptsr%   s    r'   rW   zbuild.has_scripts   s     ,,...r)   build_py
build_clib	build_extr    )r*   r+   )__name__
__module____qualname__descriptionr
   user_optionsr   __annotations__r   r   r(   rI   rO   rQ   rS   r?   rW   sub_commands r)   r'   r   r      sK        6K 	AVW	

 	@9S,,..SSS	

 	8;ULU)L. -4W+=O==== 
$ :NKWL       ;L ;L ;L ;Lz' ' ' '4 4 43 3 33 3 3/ / / 
%&	'	o&	+&	LLLr)   r   )__doc__
__future__r   r4   r6   r9   collections.abcr   typingr   	ccompilerr   corer   errorsr	   utilr
   r   rb   r)   r'   <module>rk      s   - - # " " " " " 				 



     $ $ $ $ $ $       & & & & & &       ) ) ) ) ) )      I I I I IG I I I I Ir)   