Ë ¼}Xiç7ãóB—dZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl mZmZddl mZddlmZdd lmZmZdd lmZdd lmZdd lmZgd ¢Zej<ZdZej@Z!ej@Z"d„Z#d„Z$d„Z%ejLjJje%_ejNejLjP«Z)Gd„de)«Z(d„Z*ejVfd„Z,ejZe «d„«Z Gd„de.«Z/ej`«y)z@Extensions to the 'distutils' for large or complex distributionséN)ÚDistutilsOptionError)Ú convert_pathé)ÚloggingÚmonkey)Úversion)ÚRequire)Ú PackageFinderÚPEP420PackageFinder)Ú Distribution)Ú Extension)ÚSetuptoolsDeprecationWarning)Úsetupr ÚCommandr r rÚ find_packagesÚfind_namespace_packagescó®—Gd„dtjj«}||«}|jd¬«|jr t |«yy)Ncó4‡—eZdZdZˆfd„Zdˆfd„ Zd„ZˆxZS)ú4_install_setup_requires..MinimalDistributionzl A minimal version of a distribution for supporting the fetch_build_eggs interface. có¶•—d}t|«t|«zD�cic]}|||“Œ }}t‰|� |«|jj «ycc}w)N)Údependency_linksÚsetup_requires)ÚsetÚsuperÚ__init__Ú set_defaultsÚ_disable)ÚselfÚattrsÚ_inclÚkÚfilteredÚ __class__s €ú8/usr/lib/python3.12/site-packages/setuptools/__init__.pyrz=_install_setup_requires..MinimalDistribution.__init__1sXø€Ø8ˆEÜ-0°«Z¼#¸e»*Ò-DÓEÑ-D¨˜˜5 ™8™ Ð-DˆHÐEÜ ‰GÑ ˜XÔ &à × Ñ × &Ñ &Õ (ùòFs� AcóX•— t‰|�|«\}}|dfS#t$r|dfcYSwxYw)zAIgnore ``pyproject.toml``, they are not related to setup_requires©)rÚ _split_standard_project_metadataÚ Exception)rÚ filenamesÚcfgÚtomlr#s €r$Ú_get_project_config_fileszN_install_setup_requires..MinimalDistribution._get_project_config_files8s=ø€ð %Ü!™GÑDÀYÓO‘ ��TؘB�w�øÜò %Ø  "�}Ò$ð %ús ƒ™ )¨)có—y)zl Disable finalize_options to avoid building the working set. Ref #2158. Nr&)rs r$Úfinalize_optionszE_install_setup_requires..MinimalDistribution.finalize_options@s�ó©N)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr,r.Ú __classcell__©r#s@r$ÚMinimalDistributionr+sø„ñ ô  )õ %ö r/r7T)Úignore_option_errors)Ú distutilsÚcorer Úparse_config_filesrÚ_fetch_build_eggs)rr7Údists r$Ú_install_setup_requiresr>(sM€ôœiŸn™n×9Ñ9ôñ6 ˜uÓ %€Dð ×ѰÐÔ6Ø ×Òܘ$Õðr/cóú— |j|j«y#t$rS}d}d|jjvr3t |d«r|j |«‚|jd|›d�«‚d}~wwxYw)Na– 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Ú )Úfetch_build_eggsrr(r#r1ÚhasattrrAÚannounce)r=ÚexÚmsgs r$r<r<Nsz€ðØ ×јd×1Ñ1Õ2øÜ òð ˆð ˜rŸ|™|×4Ñ4Ñ 4Ü�r˜:Ô&Ø— ‘ ˜CÔ ð ð— ‘   3 % r˜lÔ+Ø ûðús‚ž A:§AA5Á5A:c ó~—tj«t|«tjj di|¤ŽS)Nr&)rÚ configurer>r9r:r)rs r$rrcs.€ä ×ÑÔܘEÔ"Ü �>‰>× Ñ Ñ ( %Ñ (Ð(r/có<‡—eZdZdZdZˆfd„Zdd„Zd„Zdd„ZˆxZ S) ra› 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: .. method:: initialize_options(self) 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. .. method:: finalize_options(self) 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``). .. method:: run(self) Execute the actions intended by the command. (Side effects **SHOULD** only take place when ``run`` is executed, for example, creating new files or writing to the terminal output). A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in ``initialize_options()`` and "defined" (given their final values, aka "finalized") in ``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 ``run()`` method. Between ``initialize_options()`` and ``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 ``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 ``initialize_options()`` and ``finalize_options()``. For example, all derived attributes (or attributes that depend on the value of other attributes) **SHOULD** be recomputed in ``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. Fc óX•—t‰|�|«t|«j|«y)zj Construct the command for dist, updating vars(self) with any keyword parameters. N)rrÚvarsÚupdate)rr=Úkwr#s €r$rzCommand.__init__©s$ø€ô ‰Ñ˜ÔÜ ˆT‹ ×ј"Õr/c óŠ—t||«}|€t|||«|St|t«st d|›d|›d|›d�«‚|S)NÚ'z ' must be a z (got `z`))ÚgetattrÚsetattrÚ isinstanceÚstrr)rÚoptionÚwhatÚdefaultÚvals r$Ú_ensure_stringlikezCommand._ensure_stringlike±sL€Ü�d˜FÓ#ˆØ ˆ;Ü �D˜& 'Ô *؈NܘC¤Ô%Ý&Ú28º$ÂÐDóð ðˆ r/cóø—t||«}|€yt|t«r"t||t j d|««yt|t «rtd„|D««}nd}|std|›d|›d�«‚y)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+c3ó<K—|]}t|t«–—Œy­wr0)rSrT)Ú.0Úvs r$Ú z-Command.ensure_string_list..Ïsèø€Ð9±S°œ A¤s×+±Sùs‚FrPz!' must be a list of strings (got Ú)) rQrSrTrRÚreÚsplitÚlistÚallr)rrUrXÚoks r$Úensure_string_listzCommand.ensure_string_list¼su€ô�d˜FÓ#ˆØ ˆ;Ø Ü ˜œSÔ !Ü �D˜&¤"§(¡(¨;¸Ó"<Õ =ä˜#œtÔ$ÜÑ9±SÓ9Ó9‘à�ÙÝ*ÚAGÊÐMóððr/c óh—tj|||«}t|«j|«|Sr0)Ú_CommandÚreinitialize_commandrLrM)rÚcommandÚreinit_subcommandsrNÚcmds r$rhzCommand.reinitialize_command×s.€Ü×+Ñ+¨D°'Ð;MÓNˆÜ ˆS‹ ×Ñ˜ÔØˆ r/r0)r) r1r2r3r4Úcommand_consumes_argumentsrrYrerhr5r6s@r$rrps%ø„ñ4ðl"'Ðôó ò÷6r/rcó†—d„tj|d¬«D«}ttjj|«S)z% Find all files under 'path' c3órK—|]/\}}}|D]$}tjj||«–—Œ&Œ1y­wr0)ÚosÚpathÚjoin)r\ÚbaseÚdirsÚfilesÚfiles r$r^z#_find_all_simple..ás;èø€ðá!@Ñ ˆD�$˜ÛˆDô �‰� ‰ �T˜4× àð !Ù!@ùs‚57T)Ú followlinks)roÚwalkÚfilterrpÚisfile)rpÚresultss r$Ú_find_all_simpler{Ýs3€ñä!#§¡¨¸4Õ!@ó€Gô ”"—'‘'—.‘. 'Ó *Ð*r/cóÊ—t|«}|tjk(r;tjtj j |¬«}t||«}t|«S)zŒ Find all files under 'dir' and return the list of full filenames. Unless dir is '.', return full filenames with dir prepended. )Ústart) r{roÚcurdirÚ functoolsÚpartialrpÚrelpathÚmaprb)ÚdirrtÚmake_rels r$Úfindallr…ésJ€ô ˜SÓ !€EØ Œb�i‰iÒÜ×$Ñ$¤R§W¡W§_¡_¸CÔ@ˆÜ�H˜eÓ$ˆÜ �‹;Ðr/cóH—tjddd¬«t|«S)NzAccess to implementation detaila The function `convert_path` is not provided by setuptools itself, and therefore not part of the public API. Its direct usage by 3rd-party packages is considered improper and the function may be removed in the future. )içé é )Údue_date)rÚemitÚ _convert_path)Úpathnames r$rrõs*€ä ×%Ñ%Ø)ð ð õ ô ˜Ó "Ð"r/có—eZdZdZy)Úsicz;Treat this string as-is (https://en.wikipedia.org/wiki/Sic)N)r1r2r3r4r&r/r$rŽrŽs„ÚEr/rŽ)1r4rror`Ú_distutils_hack.overrideÚ_distutils_hackÚdistutils.corer9Údistutils.errorsrÚdistutils.utilrr‹ÚrrrÚ_version_moduleÚdependsr Ú discoveryr r r=r Ú extensionr ÚwarningsrÚ__all__Ú __version__Úbootstrap_install_fromÚfindrrr>r<rr:Ú get_unpatchedrrgr{r~r…ÚwrapsrTrŽÚ patch_allr&r/r$Úr¡s ðÙFãÛ Û ãÛÝ1Ý8çÝ(Ýß9ÝÝ Ý2ò €ð×)Ñ)€ àÐð×"Ñ"€ Ø-×2Ñ2Ðò# òLò*)ð—‘×$Ñ$×,Ñ,€„ ð ˆ6× Ñ   §¡× 6Ñ 6Ó 7€ôjˆhôjòZ +ð— ‘ ó ð€‡��Óñ #ó ð #ôFˆ#ôFð €×ÑÕr/