+
    h(              	         R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHtHtHt ]P                  P!                  ]P                  P#                  ]P                  P%                  ]P                  P%                  ]4      4      RR4      ;t]P                  9  ].,          4       ]P*                  P-                  RR4       ^ RIt^R	IHtHt ^R
IHt ^RIHtH t  ^RI!H"t" ^RI#H$t$ ^RI%H&t& ^RI'H(t( ^ RI)t*^ RI+H,t, . ROt-]! RRR7      t.Rt/]P`                  t1] P`                  t2R t3R R lt4R t5]*Pl                  Pj                  P                   ]5n         ]'       d   ^ RI)H7t8 M&]Pr                  ! ]*Pl                  Pn                  4      t8 ! R R]84      t7R t:]Pv                  3R lt< ! R R]=4      t>]P~                  ! 4        R# ) z@Extensions to the 'distutils' for large or complex distributions)annotationsN)abstractmethod)Mapping)TYPE_CHECKINGTypeVaroverload
setuptools_vendor	backports)loggingmonkey)Require)PackageFinderPEP420PackageFinder)Distribution)	Extension)__version__)SetuptoolsDeprecationWarning)DistutilsOptionErrorCommand	_CommandT_Command)boundc                     ! R  R\         P                  P                  4      pV! V 4      pVP                  RR7       VP                  '       d   \        V4       R# R# )c                  H   a  ] tR t^9tRtR V 3R lltRV 3R lltR tRtV ;t	# )4_install_setup_requires.<locals>.MinimalDistributionzT
A minimal version of a distribution for supporting the
fetch_build_eggs interface.
c                    V ^8  d   QhRRRR/# )   attrszMapping[str, object]returnNone )formats   "5/usr/lib/python3/dist-packages/setuptools/__init__.py__annotate__A_install_setup_requires.<locals>.MinimalDistribution.__annotate__?   s     	) 	)"6 	)4 	)    c                	   < Rp\        V4      \        V4      ,           Uu/ uF  q3W,          bK  	  pp\        SV `	  V4       V P                  P	                  4        R# u upi )dependency_linksN)r(   setup_requires)setsuper__init__set_defaults_disable)selfr   _inclkfiltered	__class__s   &&   r#   r,   =_install_setup_requires.<locals>.MinimalDistribution.__init__?   sT    8E-0Z#e*-DE-D58-DHEGX&&&( Fs   Ac                Z   <  \         SV `  V4      w  r#VR3#   \         d    TR3u # i ; i)zAIgnore ``pyproject.toml``, they are not related to setup_requiresr!   )r+    _split_standard_project_metadata	Exception)r/   	filenamescfg_tomlr3   s   &&  r#   _get_project_config_filesN_install_setup_requires.<locals>.MinimalDistribution._get_project_config_filesF   s?    %"WEiP
 7N  % "}$%s    **c                    R# )zH
Disable finalize_options to avoid building the working set.
Ref #2158.
Nr!   r/   s   &r#   finalize_optionsE_install_setup_requires.<locals>.MinimalDistribution.finalize_optionsN   s    r&   r!   N)
__name__
__module____qualname____firstlineno____doc__r,   r;   r?   __static_attributes____classcell__r3   s   @r#   MinimalDistributionr   9   s!    	
	) 	)		 	r&   rJ   T)ignore_option_errorsN)	distutilscorer   parse_config_filesr)   _fetch_build_eggs)r   rJ   dists   &  r#   _install_setup_requiresrQ   6   sP    inn99 6 u%D 	6$ r&   c                   V ^8  d   QhRR/# )r   rP   r   r!   )r"   s   "r#   r$   r$   \   s      L r&   c                    V P                  V P                  4       R#   \         d]   pR pRTP                  P                  9   d:   \        TR4      '       d   TP                  T4       h T P                  RT R24       h Rp?ii ; i)a  
        It is possible a package already installed in your system
        contains an version that is invalid according to PEP 440.
        You can try `pip install --use-pep517` as a workaround for this problem,
        or rely on a new virtual environment.

        If the problem refers to a package that is not installed yet,
        please contact that package's maintainers or distributors.
        InvalidVersionadd_note
N)fetch_build_eggsr)   r7   r3   rB   hasattrrU   announce)rP   exmsgs   &  r#   rO   rO   \   s}    d112  r||444r:&&C  	 3%rl+s    BABBc                     \         P                  ! 4        \        V 4       \        P                  P
                  ! R/ V B # )Nr!   )r   	configurerQ   rL   rM   setup)r   s   ,r#   r^   r^   q   s.    E">>(%((r&   )r   c                     a  ] tR t^t$ RtRtR]R&   R V 3R lltRR ltR R	 lt	]
RR
 R ll4       t]
RR R ll4       tRR R llt]R R l4       t]R R l4       t]R R l4       tRtV ;t# )r   a  
Setuptools internal actions are organized using a *command design pattern*.
This means that each action (or group of closely related actions) executed during
the build should be implemented as a ``Command`` subclass.

These commands are abstractions and do not necessarily correspond to a command that
can (or should) be executed via a terminal, in a CLI fashion (although historically
they would).

When creating a new command from scratch, custom defined classes **SHOULD** inherit
from ``setuptools.Command`` and implement a few mandatory methods.
Between these mandatory methods, are listed:
:meth:`initialize_options`, :meth:`finalize_options` and :meth:`run`.

A useful analogy for command classes is to think of them as subroutines with local
variables called "options".  The options are "declared" in :meth:`initialize_options`
and "defined" (given their final values, aka "finalized") in :meth:`finalize_options`,
both of which must be defined by every command class. The "body" of the subroutine,
(where it does all the work) is the :meth:`run` method.
Between :meth:`initialize_options` and :meth:`finalize_options`, ``setuptools`` may set
the values for options/attributes based on user's input (or circumstance),
which means that the implementation should be careful to not overwrite values in
:meth:`finalize_options` unless necessary.

Please note that other commands (or other parts of setuptools) may also overwrite
the values of the command's options/attributes multiple times during the build
process.
Therefore it is important to consistently implement :meth:`initialize_options` and
:meth:`finalize_options`. For example, all derived attributes (or attributes that
depend on the value of other attributes) **SHOULD** be recomputed in
:meth:`finalize_options`.

When overwriting existing commands, custom defined classes **MUST** abide by the
same APIs implemented by the original class. They also **SHOULD** inherit from the
original class.
Fr   distributionc                    V ^8  d   QhRRRR/# )r   rP   r   r   r    r!   )r"   s   "r#   r$   Command.__annotate__   s      \ D r&   c                Z   < \         SV `  V4       \        V 4      P                  V4       R# )zR
Construct the command for dist, updating
vars(self) with any keyword parameters.
N)r+   r,   varsupdate)r/   rP   kwr3   s   &&,r#   r,   Command.__init__   s$    
 	T
"r&   c           	     	    \        W4      pVf   \        WV4       V# \        V\        4      '       g   \	        RV RV RV R24      hV# )N'z' must be a z (got `z`))getattrsetattr
isinstancestrr   )r/   optionwhatdefaultvals   &&&& r#   _ensure_stringlikeCommand._ensure_stringlike   sS    d#;D'*NC%%&6(,tfGC5PR'STT
r&   c                    V ^8  d   QhRRRR/# )r   rn   rm   r   r    r!   )r"   s   "r#   r$   rb      s        r&   c                j   \        W4      pVf   R# \        V\        4      '       d$   \        W\        P
                  ! RV4      4       R# \        V\        4      '       d6   \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      pMRpV'       g   \        RV RV: R24      hR# )	a|  Ensure that 'option' is a list of strings.  If 'option' is
currently a string, we split it either on /,\s*/ or /\s+/, so
"foo bar baz", "foo,bar,baz", and "foo,   bar baz" all become
["foo", "bar", "baz"].

..
   TODO: This method seems to be similar to the one in ``distutils.cmd``
   Probably it is just here for backward compatibility with old Python versions?

:meta private:
Nz,\s*|\s+c              3  B   "   T F  p\        V\        4      x  K  	  R # 5irA   )rl   rm   ).0vs   & r#   	<genexpr>-Command.ensure_string_list.<locals>.<genexpr>   s     9SAs++Ss   FTri   z!' must be a list of strings (got ))	rj   rl   rm   rk   resplitlistallr   )r/   rn   rq   oks   &&  r#   ensure_string_listCommand.ensure_string_list   s     d#;S!!D"((;"<=#t$$S9S9SSS9S99*x@qI  r&   c               $    V ^8  d   QhRRRRRR/# )r   commandrm   reinit_subcommandsboolr   r   r!   )r"   s   "r#   r$   rb      s$      04	r&   c                	    R # rA   r!   r/   r   r   rf   s   &&&,r#   reinitialize_commandCommand.reinitialize_command   s     r&   c               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   r   r!   )r"   s   "r#   r$   rb      s$       6:	r&   c                	    R # rA   r!   r   s   &&&,r#   r   r      s     r&   c               $    V ^8  d   QhRRRRRR/# )r   r   zstr | _Commandr   r   r   r   r!   )r"   s   "r#   r$   rb      s$      %;?	r&   c                	h    \         P                  ! WV4      p\        V4      P                  V4       V# rA   )r   r   rd   re   )r/   r   r   rf   cmds   &&&, r#   r   r      s.     ++D;MNS	
r&   c                   V ^8  d   QhRR/# r   r   r    r!   )r"   s   "r#   r$   rb      s     " "D "r&   c                    \         h)z
Set or (reset) all options/attributes/caches used by the command
to their default values. Note that these values may be overwritten during
the build.
NotImplementedErrorr>   s   &r#   initialize_optionsCommand.initialize_options   
     "!r&   c                   V ^8  d   QhRR/# r   r!   )r"   s   "r#   r$   rb      s     " "$ "r&   c                    \         h)z
Set final values for all options/attributes used by the command.
Most of the time, each option/attribute/cache should only be set if it does not
have any value yet (e.g. ``if self.attr is None: self.attr = val``).
r   r>   s   &r#   r?   Command.finalize_options   r   r&   c                   V ^8  d   QhRR/# r   r!   )r"   s   "r#   r$   rb      s     " "T "r&   c                    \         h)z
Execute the actions intended by the command.
(Side effects **SHOULD** only take place when :meth:`run` is executed,
for example, creating new files or writing to the terminal output).
r   r>   s   &r#   runCommand.run   r   r&   r!   rA   )F)rB   rC   rD   rE   rF   command_consumes_arguments__annotations__r,   rr   r   r   r   r   r   r?   r   rG   rH   rI   s   @r#   r   r      s    #J "' 6     " " " " " "r&   c                    R \         P                  ! V RR7       4       p\        \         P                  P                  V4      # )z
Find all files under 'path'
c              3  x   "   T F0  w  rpV F$  p\         P                  P                  W4      x  K&  	  K2  	  R # 5irA   )ospathjoin)rw   basedirsfilesfiles   &    r#   ry   #_find_all_simple.<locals>.<genexpr>  s9      !@DD 	T   	!!@s   8:T)followlinks)r   walkfilterr   isfile)r   resultss   & r#   _find_all_simpler     s3    !#4!@G
 "''..'**r&   c                    \        V 4      pV \        P                  8X  d<   \        P                  ! \        P
                  P                  V R7      p\        W!4      p\        V4      # )z
Find all files under 'dir' and return the list of full filenames.
Unless dir is '.', return full filenames with dir prepended.
)start)	r   r   curdir	functoolspartialr   relpathmapr~   )dirr   make_rels   &  r#   findallr     sH    
 S!E
bii$$RWW__C@H$;r&   c                      ] tR tRtRtRtR# )sici  z;Treat this string as-is (https://en.wikipedia.org/wiki/Sic)r!   N)rB   rC   rD   rE   rF   rG   r!   r&   r#   r   r     s    Er&   r   )r^   r   r   r   r   r   find_packagesfind_namespace_packages)@rF   
__future__r   r   r   r|   sysabcr   collections.abcr   typingr   r   r   r   extendr   dirname__file__vendor_pathmodulespop_distutils_hack.override_distutils_hack r   r   dependsr   	discoveryr   r   rP   r   	extensionr   versionr   warningsr   distutils.corerL   distutils.errorsr   __all__r   bootstrap_install_fromfindr   r   rQ   rO   r^   rM   r   r   get_unpatchedr   r   r   rm   r   	patch_allr!   r&   r#   <module>r      s~   F #  	 	 
  # 3 3 bggoobggooh>W.XZfhq!rr+{~  |D  |D  D  IT  HU  U  V T "    9    / 2  1	 Kz2	 ""-22 # L*) $$,,2##INN$:$:;H}"h }"@	+ 		 	F# F
    r&   