Ë ] øHâ‰ãóJ—dgZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZmZmZddlZddlZddlZddlZddlZddlmZddlmZmZdd lmZdd lmZd d l m!Z!m"Z"d d l#m$Z$d dl%m&Z&m'Z'd dl(m)Z)m*Z*d dl+m,Z,d dl-m.Z.d dl-m/Z/d dl-m0Z0d dl-m1Z2d dl3m4Z4d dl5m6Z6m7Z7d dl8m9Z9d dl:m;Z;d dlZ>e?e@fZAd„ZBd„ZCd„ZDd„ZEd„ZFd„ZGd „ZHd!„ZId"„ZJd#„ZKd$„ZLd%„ZMd&„ZNd'„ZOe;ej j¢«ZRGd(„deR«ZQGd)„d*e>«ZSy)+Ú DistributionéN)Úsuppress)Úiglob)ÚPath)ÚListÚOptionalÚSet)ÚDEBUG)ÚDistutilsOptionErrorÚDistutilsSetupError)Útranslate_longopt)Ú strtoboolé)Ú partitionÚunique_everseen)Ú OrderedSet)Ú InvalidMarkerÚMarker)ÚInvalidSpecifierÚ SpecifierSet)ÚVersion)Ú _entry_points)Ú_normalization)Ú_reqs)Úcommand)Úmetadata)ÚsetupcfgÚ pyprojecttoml)ÚConfigDiscovery)Ú get_unpatched)ÚInformationOnlyÚSetuptoolsDeprecationWarningcó¸— tj|dd¬«}|jrJ‚y#ttt t f$r}t|›d|›d�«|‚d}~wwxYw)N)ÚvalueÚnameÚgroupz/ must be importable 'module:attrs' string (got Ú))rÚ EntryPointÚextrasÚ TypeErrorÚ ValueErrorÚAttributeErrorÚAssertionErrorr )ÚdistÚattrr$ÚepÚes ú4/usr/lib/python3.12/site-packages/setuptools/dist.pyÚcheck_importabler3-sZ€ðÜ × Ñ  u°4¸tÔ DˆØ—9’9Ј}�9øÜ ”z¤>´>Ð BòÜ!ÚFJÊEÐ Ró àð ûðús‚&)©AÁAÁAcóÈ— t|ttf«sJ‚dj|«|k7sJ‚y#tt t tf$r}t|›d|›d�«|‚d}~wwxYw)z"Verify that value is a string listÚz must be a list of strings (got r'N) Ú isinstanceÚlistÚtupleÚjoinr*r+r,r-r ©r.r/r$r1s r2Úassert_string_listr;7sd€ð ô˜%¤$¬ Ô/Ð/Ð/à�w‰w�u‹~ Ò&Ð&Ñ&øÜ ”z¤>´>Ð BòÜ!Ú7;ºUÐ Có àð ûðús‚.1±A!Á AÁA!có—|}t|||«|D]x}|j|«stdd|zz«‚|jd«\}}}|r%||vr!tj j d||«tjddd¬«Œzy ) z(Verify that namespace packages are validz1Distribution contains no modules or packages for znamespace package %rÚ.z^WARNING: %r is declared as a package namespace, but %r is not: please correct this in setup.pyz/The namespace_packages parameter is deprecated.zÐ 2òÜ!ð &ó ðð  ûðús‚14´AÁ AÁAcóÆ—|jd«\}}} t|«t t j |««y#t$rd|›d|›d�}t|«d‚wxYw)NÚ:zInvalid environment marker: z (r')rÚ _check_markerrr r7rÚparse)ÚextraÚreqsr%rHÚmarkerÚmsgs r2rOrOnsi€ØŸ™¨Ó,Ñ€Dˆ#ˆvð1Ü�fÔô Œ�‰�TÓ Õøô ò1Ø,¨V¨H°B°u°i¸qÐAˆÜ! #Ó&¨DÐ0ð1ús — AÁA có@—|syt|«}|j«y©N)rÚevaluate)rXÚms r2rTrTxs€Ù ØÜˆv‹€A؇J�J…LrKcó\—t|«|k7rd}t|j||¬««‚y)z)Verify that value is True, False, 0, or 1z0{attr!r} must be a boolean value (got {value!r}))r/r$N)Úboolr Úformat)r.r/r$Útmpls r2Ú assert_boolrbs0€ä ˆEƒ{�eÒØAˆÜ! $§+¡+°4¸u +Ó"EÓFÐFðrKcóT—|stj|›d�«yt|›d�«‚)Nz is ignored.z is invalid.)ÚDistDeprecationWarningrDr ©r.r/r$s r2Úinvalid_unless_falserf†s/€Ù Ü×#Ñ# t f¨LÐ$9Ô:àÜ    lÐ3Ó 4Ð4rKcóð— ttj|««t|tt f«r t d«‚y#t tf$r$}d}t|j||¬««|‚d}~wwxYw)z9Verify that install_requires is a valid requirements listzUnordered types are not allowedzm{attr!r} must be a string or list of strings containing valid project/version requirement specifiers; {error}©r/ÚerrorN) r7rrUr6ÚdictÚsetr*r+r r`©r.r/r$riras r2Úcheck_requirementsrmŽsv€ð RÜ ŒU�[‰[˜Ó Ô Ü �eœd¤C˜[Ô )ÜÐ=Ó>Ð >ð *øä ”zÐ "òRð Oð ô" $§+¡+°4¸u +Ó"EÓFÈEÐQûð Rús‚?AÁA5ÁA0Á0A5cóˆ— t|«y#ttf$r$}d}t|j ||¬««|‚d}~wwxYw)z.Verify that value is a valid version specifierzF{attr!r} must be a string containing valid version specifiers; {error}rhN)rrr,r r`rls r2Úcheck_specifierroœsK€ðRÜ�UÕøÜ œnÐ -òRà Wð ô" $§+¡+°4¸u +Ó"EÓFÈEÐQûð Rús‚ ŽA�<¼Acój— tj|«y#t$r}t|«|‚d}~wwxYw)z)Verify that entry_points map is parseableN)rÚloadÚ Exceptionr r:s r2Úcheck_entry_pointsrs§s2€ð,Ü×ј5Õ!øÜ ò,Ü! !Ó$¨!Ð+ûð,ús‚˜ 2¡ -­2có:—t|t«s td«‚y)Nztest_suite must be a string)r6Ústrr res r2Úcheck_test_suiterv¯s€Ü �eœSÔ !Ü!Ð"?Ó@Ð@ð "rKcó—t|t«stdj|««‚|j «D]L\}}t|t «stdj||««‚t |dj|«|«ŒNy)z@Verify that value is a dictionary of package names to glob listszT{!r} must be a dictionary mapping package names to lists of string wildcard patternsz,keys of {!r} dict must be strings (got {!r})zvalues of {!r} dictN)r6rjr r`rPrur;)r.r/r$ÚkÚvs r2Úcheck_package_datarz´s~€ä �eœTÔ "Ü!ð 'ß'-¡v¨d£|ó ð ð— ‘ – ‰ˆˆ1ܘ!œSÔ!Ü%Ø>×EÑEÀdÈAÓNóð ô ˜4Ð!6×!=Ñ!=¸dÓ!CÀQÕGñ rKcó€—|D]9}tjd|«rŒtjj d|«Œ;y)Nz \w+(\.\w+)*z[WARNING: %r not a valid package name; please use only .-separated package names in setup.py)ÚreÚmatchrArBrC)r.r/r$Úpkgnames r2Úcheck_packagesrÃs4€ÛˆÜ�x‰x˜¨Õ0Ü �M‰M× Ñ ð8àõ ñrKcó>‡—eZdZdZd„eed„d„eedœZdZd„Z d,d„Z d „Z d „Z e d „«Zd „Zd „Zd„Ze d„«Zd,d„Zd„Zd„Zd„Zd,d„Zd„Zd-d„Zd„Zd„Ze d„«Zd„Zd„Zd„Zd„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-ˆfd+„Z.ˆxZ/S).raG Distribution with support for tests and package data This is an enhanced version of 'distutils.dist.Distribution' that effectively adds the following new optional keyword arguments to 'setup()': 'install_requires' -- a string or sequence of strings specifying project versions that the distribution requires when installed, in the format used by 'pkg_resources.require()'. They will be installed automatically when the package is installed. If you wish to use packages that are not available in PyPI, or want to give your users an alternate download location, you can add a 'find_links' option to the '[easy_install]' section of your project's 'setup.cfg' file, and then setuptools will scan the listed web pages for links that satisfy the requirements. 'extras_require' -- a dictionary mapping names of optional "extras" to the additional requirement(s) that using those extras incurs. For example, this:: extras_require = dict(reST = ["docutils>=0.3", "reSTedit"]) indicates that the distribution can optionally provide an extra capability called "reST", but it can only be used if docutils and reSTedit are installed. If the user installs your package using EasyInstall and requests one of your extras, the corresponding additional requirements will be installed if needed. 'test_suite' -- the name of a test suite to run for the 'test' command. If the user runs 'python setup.py test', the package will be installed, and the named test suite will be run. The format is the same as would be used on a 'unittest.py' command line. That is, it is the dotted name of an object to import and call to generate a test suite. 'package_data' -- a dictionary mapping package names to lists of filenames or globs to use to find data files contained in the named packages. If the dictionary has filenames or globs listed under '""' (the empty string), those names will be searched for in every package, in addition to any names for the specific package. Data files found using these names/globs will be installed along with the package, in the same location as the package. Note that globs are allowed to reference the contents of non-package subdirectories, as long as you use '/' as a path separator. (Globs are automatically converted to platform-specific paths at runtime.) In addition to these new keywords, this class also has several new methods for manipulating the distribution's contents. For example, the 'include()' and 'exclude()' methods can be thought of as in-place add and subtract commands that add or remove packages, modules, extensions, and so on from the distribution. có—yr[©r‚rKr2ÚzDistribution.s€°rKcó—yr[r‚r‚rKr2rƒzDistribution.s€ rKcó—yr[r‚r‚rKr2rƒzDistribution. s€ rK)Úlong_description_content_typeÚ project_urlsÚprovides_extrasÚ license_fileÚ license_filesÚinstall_requiresÚextras_requireNcó~—|rd|vsd|vrytjt|d««j«}t t j «5t j|«}|�>|jd«s-tjt|d««|_ ||_ ddd«y#1swYyxYw)Nr%ÚversionzPKG-INFO) rÚ safe_nameruÚlowerrrÚPackageNotFoundErrorÚ distributionÚ read_textÚ safe_versionÚ_versionÚ _patched_dist)ÚselfÚattrsr%r.s r2Úpatch_missing_pkg_infoz#Distribution.patch_missing_pkg_infos™€ñ ˜ eÑ+¨yÀÑ/EØ Ü×'Ñ'¬¨E°&©MÓ(:Ó;×AÑAÓCˆÜ ”h×3Ñ3Õ 4Ü×(Ñ(¨Ó.ˆDØÐ¨¯©°zÔ(BÜ .× ;Ñ ;¼CÀÀiÑ@PÓÐ?Ñ?ˆ Ø',§{¡{¤}ÔO¡}™t˜q !¸ÀÒ8N�a˜‘d }ˆ ÑOÜ×јt ZÔ0ô ,/«5ˆÔä+¨DÓ1ˆÔà ×#Ñ# EÔ*à $× 7Ñ 7¸¿ ¹ ×8MÑ8MÓ Nˆ� ‰ ÔØ ×ÑÕ!ùóPs Ã( FÃ5Fcó´—dh}t|j«D�chc]}t|j|d«�|’Œ}}||z }|rd|›�}t|«‚ycc}w)Nr%z&Required package metadata is missing: )r¥rÚgetattrr )r—ÚrequiredÚkeyÚprovidedÚmissingrYs r2Ú_validate_metadatazDistribution._validate_metadata=sw€Ø�8ˆô˜DŸM™MÔ*ó á*�Ü�t—}‘} c¨4Ó0Ð<ò Ø*ð ð ð ˜XÑ%ˆá Ø:¸7¸)ÐDˆCÜ% cÓ*Ð *ð ùò s› Ac ó¼—|jj«D]?\}}t|j«j ||j ||«««ŒAy)zä Fill-in missing metadata fields not supported by distutils. Some fields may have been set by other tools (e.g. pbr). Those fields (vars(self.metadata)) take precedence to supplied attrs. N)r§rPr¥rr¦Úget)r—r˜ÚoptionÚdefaults r2r¬z#Distribution._set_metadata_defaultsJsH€ð $×CÑC×IÑIÖK‰OˆF�GÜ �—‘Ó × *Ñ *¨6°5·9±9¸VÁWÃYÓ3OÕ Pñ LrKcóì—ddlm}t|tj«r t |«}nt||«s|€|St t |««}||k7rtjd|›d|›d�«|S|S)Nr)Úsicz Normalizing 'z' to 'Ú') r5r¾r6ÚnumbersÚNumberrurr!rD)rŽr¾Ú normalizeds r2r­zDistribution._normalize_versionTsn€åä �gœwŸ~™~Ô .ä˜'“l‰GÜ ˜ Ô %¨¨ØˆN䜠Ó)Ó*ˆ Ø �jÒ Ü × Ñ  =°° ¸À ¸|È1Ð!MÔ NØÐ ؈rKcó°—t|dd«r|j|j_|j«|j|j_|j |j_|j r\|j j «D]>}|jd«d}|sŒ|jjj|«Œ@yy)z€ Set `metadata.python_requires` and fix environment markers in `install_requires` and `extras_require`. Úpython_requiresNrSr) r³rÄrÚ_normalize_requiresr‹rŒÚkeysÚsplitrˆÚadd)r—rVs r2r®zDistribution._finalize_requiresds¨€ô �4Ð*¨DÔ 1Ø,0×,@Ñ,@ˆD�M‰MÔ )à × Ñ Ô"Ø)-×)>Ñ)>ˆ� ‰ Ô&Ø'+×':Ñ':ˆ� ‰ Ô$à × Ò Ø×,Ñ,×1Ñ1Ö3�àŸ ™  CÓ(¨Ñ+�ÚØ—M‘M×1Ñ1×5Ñ5°eÕ<ñ 4ð rKcód—t|dd«xsg}t|dd«xsi}tttt j |«««|_|j«D��cic]6\}}|tttt j |xsg«««“Œ8c}}|_ycc}}w)zAMake sure requirement-related attributes exist and are normalizedr‹NrŒ) r³r7ÚmaprurrUr‹rPrŒ)r—r‹rŒrxrys r2rÅz Distribution._normalize_requiresws–€ä" 4Ð);¸TÓBÒHÀbÐÜ  Ð'7¸Ó>ÒDÀ"ˆÜ $¤S¬¬e¯k©kÐ:JÓ.KÓ%LÓ MˆÔà@N×@TÑ@TÔ@Vô Ù@V¹¸¸1ˆAŒt”CœœUŸ[™[¨ª¨bÓ1Ó2Ó3Ñ 3Ð@Vò ˆÕùó sÁ';B,có—|jj}|r|ng}|jj}|r||vr|j|«|€|€d}t t |j |«««|j_y)z>> list(Distribution._expand_patterns(['LICENSE'])) ['LICENSE'] >>> list(Distribution._expand_patterns(['setup.cfg', 'LIC*'])) ['setup.cfg', 'LICENSE'] c3ó²K—|]O}tt|««D]6}|jd«s#tjj |«r|–—Œ8ŒQy­w)Ú~N)ÚsortedrÚendswithÚosÚpathÚisfile)Ú.0ÚpatternrÖs r2Ú z0Distribution._expand_patterns..›sIèø€ð á#�Üœu W›~Ö.�Ø—=‘= Ô%¬"¯'©'¯.©.¸Ô*>ô à.ð Ù#ùs‚AAr‚)rÎs r2rÍzDistribution._expand_patterns“s€ñ á#ó ð rKc ó&—ddlm}tjtjk(rgngd¢}t |«}|€|j «}tr|jd«|«}t|_ |D]í}t|d¬«5}tr)|jdjd it«¤Ž«|j|«ddd«|j«D]r}|j!|«}|j#|«} |D]I} | d k(s| |vrŒ |j%|| «} |j'| |«} |j)| |«} || f| | <ŒKŒt|j+«Œïd |j,vry|j,d j/«D]S\} \} } |j0j%| «} | r t3| « } n| d vr t3| «} t5|| xs| | «ŒUy#1swY�Œ$xYw#t6$r}t9|«|‚d}~wwxYw) z£ Adapted from distutils.dist.Distribution.parse_config_files, this method provides the same functionality in subtly-improved ways. r)Ú ConfigParser) z install-basezinstall-platbasez install-libzinstall-platlibzinstall-purelibzinstall-headerszinstall-scriptsz install-dataÚprefixz exec-prefixÚhomeÚuserÚrootNz"Distribution.parse_config_files():úutf-8©Úencodingz reading {filename}Ú__name__Úglobal)ÚverboseÚdry_runr‚)Ú configparserrÜÚsysrÝÚ base_prefixÚ frozensetÚfind_config_filesr ÚannounceruÚ optionxformÚopenr`ÚlocalsÚ read_fileÚsectionsÚoptionsÚget_option_dictrºÚwarn_dash_deprecationÚmake_option_lowercaser©Úcommand_optionsrPÚ negative_optrÚsetattrr+r )r—Ú filenamesrÜÚignore_optionsÚparserÚfilenameÚreaderÚsectionróÚopt_dictÚoptÚvalÚsrcÚaliasr1s r2Ú_parse_config_filesz Distribution._parse_config_files£sý€õ .ô �z‰zœSŸ_™_Ò,ñ òð ô(# >Ó2ˆà Ð Ø×.Ñ.Ó0ˆIå Ø �M‰MÐ>Ô ?á“ˆÜ ˆÔÛ!ˆHÜ�h¨Õ1°VÝØ—M‘MÐ"?Ð"8×"?Ñ"?Ñ"KÄ&Ã(Ñ"KÔLØ× Ñ  Ô(÷2ð"Ÿ?™?Ö,�Ø Ÿ.™.¨Ó1�Ø×/Ñ/°Ó8�ã"�CؘjÒ(¨C°>Ñ,AØ à Ÿ*™* W¨cÓ2�CØ×4Ñ4°S¸'ÓB�CØ×4Ñ4°S¸'ÓB�CØ%-¨s O�H˜S’Mñ#ð -ð �O‰OÕ ð)"ð, ˜4×/Ñ/Ñ /Ø ð $×3Ñ3°HÑ=×CÑCÖE‰OˆC‘�#�sØ×%Ñ%×)Ñ)¨#Ó.ˆEÙÜ# C›.Ð(‘ØÐ.Ñ.Ü “n�ð 5ܘ˜ešl s¨CÕ0ñ F÷72Ñ1ûôHò 5Ü*¨1Ó-°1Ð4ûð 5ús%ÂAG)ÇG6Ç)G3 Ç6 HÇ? H È Hcó@—|dvr|S|jdd«}ttjtj j |j«««}|jd«s |dk7r||vr|Sd|vr tjdd|›d|›d �d d ¬ «|S) N)zoptions.extras_requirezoptions.data_filesÚ-Ú_rórzInvalid dash-separated optionsz) Usage of dash-separated zZ will not be supported in future versions. Please use the underscore name z instead. ú!userguide/declarative_config.html©ièé é©r>Údue_date) Úreplacer7rMÚchainrArÚ__all__Ú_setuptools_commandsÚ startswithr"rD)r—rrÿÚunderscore_optÚcommandss r2rõz"Distribution.warn_dash_deprecationòsÅ€Ø ð ñ ðˆJàŸ™ S¨#Ó.ˆÜÜ �O‰OÜ×!Ñ!×)Ñ)Ø×)Ñ)Ó+ó ó ˆð×"Ñ" 9Ô-ؘ:Ò%ؘxÑ'à!Ð !à �#‰:Ü (× -Ñ -Ø0ð)Ø),¨ð0:Ø:HÐ9KðLðð=Ø&õ ðÐrKcóŒ— tjd«jjS#tj$rgcYSwxYw)NÚ setuptools)rr’r¤Únamesr‘)r—s r2rz!Distribution._setuptools_commandss>€ð Ü×(Ñ(¨Ó6×CÑC×IÑIÐ IøÜ×,Ñ,ò àŠIð ús‚(+«AÁAc óš—|dk7s|j«r|S|j«}tjdd|›d|›d|›d�dd¬ «|S) NrzInvalid uppercase configurationz$ Usage of uppercase key z in zL will not be supported in future versions. Please use lowercase z instead. r r r )Úislowerr�r"rD)r—rrÿÚ lowercase_opts r2röz"Distribution.make_option_lowercasesi€Ø �jÒ  C§K¡K¤M؈JàŸ ™ › ˆ Ü$×)Ñ)Ø -ð$Ø$' 7¨$¨w¨kð:3Ø3@Ð2CðD ð ð9Ø"õ ðÐrKc óÚ—|j«}|€|j|«}tr|jd|z«|j «D]×\}\}}tr|jd|›d|›d|›d�« |j D�cgc] }t |«‘Œ}} |j} t|t«} || vr| rt|| |t|« «nL||vr| rt||t|««n/t||«rt|||«ntd|›d|›d |›d �«‚ŒÙycc}w#t$rg}YŒ wxYw#t$ri} YŒ¤wxYw#t$r} t| «| ‚d} ~ wwxYw) aË Set the options for 'command_obj' from 'option_dict'. Basically this means copying elements of a dictionary ('option_dict') to attributes of an instance ('command'). 'command_obj' must be a Command instance. If 'option_dict' is not supplied, uses the standard option dictionary for this command (from 'self.command_options'). (Adopted from distutils.dist.Distribution._set_command_options) Nz# setting options for '%s' command:z z = z (from r'z error in z : command 'z' has no such option 'r¿)Úget_command_namerôr rírPÚboolean_optionsr r,rør6rurùrr¡r r+) r—Ú command_objÚ option_dictÚ command_namer»Úsourcer$ÚoÚ bool_optsÚneg_optÚ is_stringr1s r2Ú_set_command_optionsz!Distribution._set_command_options-sq€ð#×3Ñ3Ó5ˆ Ø Ð Ø×.Ñ.¨|Ó<ˆKå Ø �M‰MÐ?À,ÑNÔ OØ'2×'8Ñ'8Ö':Ñ #ˆF‘O�V˜UÝØ— ’ ºÂÊÐOÔPð Ø;F×;VÒ;VÓWÑ;V°aÔ.¨qÕ1Ð;V� ÐWð Ø%×2Ñ2�ð 5Ü& u¬cÓ2� ؘWÑ$©Ü˜K¨°©¼iÈÓ>NÐ:NÕOؘyÑ(©YܘK¨´¸5Ó1AÕBܘ[¨&Ô1ܘK¨°Õ7å.â!¢<²ð9óðøñ+(;ùòXøÜ!ò Ø’ ð ûô"ò Ø’ð ûô ò 5Ü*¨1Ó-°1Ð4ûð 5úsOÁ9D.ÂD)ÂD. D?Â)A=EÄ)D.Ä. D<Ä;D<Ä? E Å E Å E*Å E%Å%E*cóâ—g}t|jxstjd«}|�-t d„|«}t |d«}t |d«}||fS|j «r|g}||fS)z/Add default file and split between INI and TOMLzpyproject.tomlcó2—t|«jdk(S)Nz.toml)rÚsuffix)Úfs r2rƒz8Distribution._get_project_config_files..`s€¬¨Q«¯©¸'Ò(ArKrr)rrœrÕÚcurdirrr7Úexists)r—rúÚ tomlfilesÚstandard_project_metadataÚpartss r2Ú_get_project_config_filesz&Distribution._get_project_config_files[s}€àˆ Ü$(¨¯©Ò)C¼"¿)¹)ÐEUÓ$VÐ!Ø Ð ÜÑAÀ9ÓMˆEܘU 1™X›ˆIܘU 1™X›ˆIð˜)Ð#Ð#ð'× -Ñ -Ô /Ø2Ð3ˆIؘ)Ð#Ð#rKcó—|j|«\}}|j|¬«tj||j|¬«|D]}t j |||«Œ|j«|j«y)zXParses configuration files from various levels and loads configuration. )rú)Úignore_option_errorsN) r1rrÚparse_configurationr÷rÚapply_configurationr®rÏ)r—rúr3Úinifilesr.rýs r2Úparse_config_fileszDistribution.parse_config_filesgs€ð#×<Ñ<¸YÓGш�)à × Ñ ¨8Ð Ô4ä×$Ñ$Ø �$×&Ñ&Ð=Qõ ó"ˆHÜ × -Ñ -¨d°HÐ>RÕ Sð"ð ×ÑÔ!Ø ×$Ñ$Õ&rKcó —ddlm}|||«S)zResolve pre-setup requirementsr)Ú_fetch_build_eggs)Ú installerr9)r—Úrequiresr9s r2Úfetch_build_eggszDistribution.fetch_build_eggsxs€å0á   xÓ0Ð0rKcóÈ—d}d„}tj|¬«}tj|j|«}t d„|«}t ||¬«D] }||«Œ y)zè Allow plugins to apply arbitrary operations to the distribution. Each hook may optionally define a 'order' to influence the order of execution. Smaller numbers go first and the default is 0. z(setuptools.finalize_distribution_optionscó—t|dd«S)NÚorderr)r³)Úhooks r2Úby_orderz/Distribution.finalize_options..by_order‡s€Ü˜4 ¨!Ó,Ð ,rKr có"—|j«Sr[)rq)r1s r2rƒz/Distribution.finalize_options..Œs €˜qŸv™vœxrK)rµN)rr¤rMÚ filterfalseÚ_removedrÊrÓ)r—r&rAÚdefinedÚfilteredÚloadedr0s r2Úfinalize_optionszDistribution.finalize_options~s[€ð;ˆò -ô×'Ñ'¨eÔ4ˆÜ×(Ñ(¨¯©¸Ó@ˆÜÑ'¨Ó2ˆÜ˜ X×.ˆBÙ ˆt�Hñ/rKcó$—dh}|j|vS)zà When removing an entry point, if metadata is loaded from an older version of Setuptools, that removed entry point will attempt to be loaded and will fail. See #2765 for more details. Ú 2to3_doctests)r%)r0Úremoveds r2rDzDistribution._removed�s€ð ð ˆð�w‰w˜'Ð!Ð!rKcó²—tjd¬«D]>}t||jd«}|€Œ|j «||j|«Œ@y)NrŸr )rr¤r³r%rq)r—r0r$s r2Ú_finalize_setup_keywordsz%Distribution._finalize_setup_keywordsžsI€Ü×'Ñ'Ð.H×IˆBܘD "§'¡'¨4Ó0ˆEØÑ Ø�—‘“ ˜$ §¡¨Õ/ñJrKcóæ—ddlm}tjj tj d«}tjj |«s�tj|«|j|«tjj |d«}t|d«5}|jd«|jd«|jd«ddd«|S|S#1swY|SxYw) Nr)Úwindows_supportz.eggsz README.txtÚwzcThis directory contains eggs that were downloaded by setuptools to build, test, and run plug-ins. zAThis directory caches those eggs to prevent repeated downloads. z/However, it is safe to delete this directory. ) r5rOrÕrÖr9r,r-ÚmkdirÚ hide_filerïÚwrite)r—rOÚ egg_cache_dirÚreadme_txt_filenamer+s r2Úget_egg_cache_dirzDistribution.get_egg_cache_dir¤s½€Ý%䟙Ÿ ™ ¤R§Y¡Y°Ó8ˆ Ü�w‰w�~‰~˜mÔ,Ü �H‰H�]Ô #Ø × %Ñ % mÔ 4Ü"$§'¡'§,¡,¨}¸lÓ"KÐ ÜÐ)¨3Ô/°1Ø—‘ðJôð—‘ð.ôð—‘ÐKÔL÷0ðЈ}Ð÷0ðÐús Â&4C&Ã&C0có —ddlm}|||«S)z Fetch an egg needed for buildingr)Úfetch_build_egg)r:rX)r—ÚreqrXs r2rXzDistribution.fetch_build_egg¹s€å.á˜t SÓ)Ð)rKcóè—||jvr|j|Stjd|¬«}|D]$}|j«x|j|<}|cStj ||«S)z(Pluggable version of get_command_class()údistutils.commands)r&r%)Úcmdclassrr¤rqr¨Úget_command_class)r—rÚepsr0r\s r2r]zDistribution.get_command_class¿sm€à �d—m‘mÑ #Ø—=‘= Ñ)Ð )ä×#Ñ#Ð*>ÀWÔMˆÛˆBØ02·±³ Ð 9ˆD�M‰M˜'Ñ " XØŠOðô!×2Ñ2°4¸ÓAÐ ArKcóæ—tjd¬«D]D}|j|jvsŒ|j «}||j|j<ŒFt j |«S©Nr[r )rr¤r%r\rqr¨Úprint_commands©r—r0r\s r2razDistribution.print_commandsËsY€Ü×'Ñ'Ð.B×CˆBØ�w‰w˜dŸm™mÒ+ØŸ7™7›9�Ø)1�— ‘ ˜bŸg™gÒ&ðDô×+Ñ+¨DÓ1Ð1rKcóæ—tjd¬«D]D}|j|jvsŒ|j «}||j|j<ŒFt j |«Sr`)rr¤r%r\rqr¨Úget_command_listrbs r2rdzDistribution.get_command_listÒsY€Ü×'Ñ'Ð.B×CˆBØ�w‰w˜dŸm™mÒ+ØŸ7™7›9�Ø)1�— ‘ ˜bŸg™gÒ&ðDô×-Ñ-¨dÓ3Ð3rKc óŽ—|j«D]2\}}t|d|zd«}|r ||«Œ!|j||«Œ4y)aôAdd items to distribution that are named in keyword arguments For example, 'dist.include(py_modules=["x"])' would add 'x' to the distribution's 'py_modules' attribute, if it was not already there. Currently, this method only supports inclusion for attributes that are lists or tuples. If you need to add support for adding to other attributes in this or a subclass, you can add an '_include_X' method, where 'X' is the name of the attribute. The method will be called with the value passed to 'include()'. So, 'dist.include(foo={"bar":"baz"})' will try to call 'dist._include_foo({"bar":"baz"})', which can then handle whatever special inclusion logic is needed. Ú _include_N)rPr³Ú _include_misc)r—r˜rxryÚincludes r2rhzDistribution.includeÙsD€ð—K‘K–M‰DˆAˆqܘd K°!¡O°TÓ:ˆGÙÙ˜• à×"Ñ" 1 aÕ(ñ "rKcóä—|dz}|jr7|jD�cgc]}||k7sŒ |j|«rŒ|‘Œc}|_|jr7|jD�cgc]}||k7sŒ |j|«rŒ|‘Œc}|_|jrJ|jD�cgc].}|j|k7r|jj|«s|‘Œ0c}|_yycc}wcc}wcc}w)z9Remove packages, modules, and extensions in named packager=N)ÚpackagesrÚ py_modulesÚ ext_modulesr%©r—ÚpackageÚpfxÚps r2Úexclude_packagezDistribution.exclude_packageïsâ€ð˜‰mˆØ �=Š=àŸ=š=óÙ(�a¨A°«LÀÇÁÈcÕAR’˜=ñˆDŒMð �?Š?àŸ?š?óÙ*�a¨a°7«lÀ1Ç<Á<ÐPSÕCT’˜?ñˆDŒOð × Ò ð×)Ò)ó á)�AØ—6‘6˜WÒ$¨Q¯V©V×->Ñ->¸sÔ-CòØ)ñ ˆDÕ ð ùòùò ùò  s'  C#«C#½C#Á# C(Á.C(ÂC(Â&3C-cóh—|dz}|j«D]}||k(s|j|«sŒyy)zBÂEÐJóð ð Xܘ$ Ó%ˆCð ˆ?¤:¨c´8Ô#<Ü%ØÐMÑMóð ñÜ �D˜$±#Ó K±#¨$¸ÀUÒ9J¢°#Ñ KÕ Lðøô ò XÜ%Ð&HÈ4Ñ&OÓPÐVWÐ Wûð Xüò!Ls#£ A3Á B Á&B Á3 BÁ<B  BcóN—t|t«st|›d|›d�«‚ t||«}|€t |||«yt|t«st|dz«‚|D�cgc] }||vsŒ|‘Œ }}t ||||z«y#t$r}td|z«|‚d}~wwxYwcc}w)zAHandle 'include()' for list/tuple attrs without a special handlerz: setting must be a list (r'ruNrvrw)r—r%r$ryr1rzÚnews r2rgzDistribution._include_misc s¼€ô˜%¤Ô*Ü%Ê4ÒQVÐ&WÓXÐ Xð Xܘ$ Ó%ˆCð ˆ;Ü �D˜$ Õ &ܘC¤Ô*Ü%ØÐMÑMóð ñ%*Ó=¡E˜D¨T¸ª_’4 EˆCÐ=Ü �D˜$  c¡ Õ *øôò XÜ%Ð&HÈ4Ñ&OÓPÐVWÐ Wûð Xüò>s#£ BÁ! B"Á+B" B BÂBc óŽ—|j«D]2\}}t|d|zd«}|r ||«Œ!|j||«Œ4y)aRemove items from distribution that are named in keyword arguments For example, 'dist.exclude(py_modules=["x"])' would remove 'x' from the distribution's 'py_modules' attribute. Excluding packages uses the 'exclude_package()' method, so all of the package's contained packages, modules, and extensions are also excluded. Currently, this method only supports exclusion from attributes that are lists or tuples. If you need to add support for excluding from other attributes in this or a subclass, you can add an '_exclude_X' method, where 'X' is the name of the attribute. The method will be called with the value passed to 'exclude()'. So, 'dist.exclude(foo={"bar":"baz"})' will try to call 'dist._exclude_foo({"bar":"baz"})', which can then handle whatever special exclusion logic is needed. Ú _exclude_N)rPr³r{)r—r˜rxryÚexcludes r2r€zDistribution.exclude3sD€ð —K‘K–M‰DˆAˆqܘd K°!¡O°TÓ:ˆGÙÙ˜• à×"Ñ" 1 aÕ(ñ "rKcó€—t|t«std|›d�«‚tt |j |««y)Nz+packages: setting must be a list or tuple (r')r6rxr r7rÊrq)r—rjs r2Ú_exclude_packageszDistribution._exclude_packagesJs6€Ü˜(¤HÔ-Ý%ÚDLÐNóð ô ŒS�×%Ñ% xÓ 0Õ1rKcó —|jj|_|jj|_|d}|jd«}||vr.||\}}||=ddl}|j |d«|dd|d}||vrŒ.t j|||«}|j|«} t| dd«rd|f|j|«d<|�gS|S)NrÚaliasesTrÚcommand_consumes_argumentsú command lineÚargs) Ú __class__Úglobal_optionsrørôÚshlexrÇr¨Ú_parse_command_optsr]r³) r—rür‡rr„rrrŠÚnargsÚ cmd_classs r2r‹z Distribution._parse_command_optsQsê€à"Ÿn™n×;Ñ;ˆÔØ ŸN™N×7Ñ7ˆÔð�q‘'ˆØ×&Ñ& yÓ1ˆØ˜Ñ Ø  Ñ)‰JˆC�Ø˜Ð Û à—{‘{ 5¨$Ó/ˆD��!ˆHؘ1‘gˆGð ˜Ò ô×1Ñ1°$¸ÀÓEˆð×*Ñ*¨7Ó3ˆ Ü �9Ð:¸DÔ AØ5CÀUÐ4KˆD× Ñ  Ó )¨&Ñ 1ØÐ Ø� àˆ rKc óà—i}|jj«D]Î\}}|j«D]¶\}\}}|dk7rŒ|jdd«}|dk(ru|j|«}|jj «}|j t|di««|j«D]\} } | |k(sŒ | }d}ntd«‚|dk(rd}||j|i«|<Œ¸ŒÐ|S) ahReturn a '{cmd: {opt:val}}' map of all command-line options Option names are all long, but do not include the leading '--', and contain dashes rather than underscores. If the option doesn't take an argument (e.g. '--quiet'), the 'val' is 'None'. Note that options provided by config files are intentionally excluded. r†rrrrøNzShouldn't be able to get herer) r÷rPrÚget_command_objrøÚcopyÚupdater³r-r¦) r—ÚdÚcmdÚoptsrrrÚcmdobjr%ÚnegÚposs r2Úget_cmdline_optionsz Distribution.get_cmdline_optionsls÷€ð ˆà×-Ñ-×3Ñ3Ö5‰IˆC�Ø#'§:¡:¦<‘�‘Z�c˜3ؘ.Ò(Øà—k‘k # sÓ+�à˜!’8Ø!×1Ñ1°#Ó6�FØ"×/Ñ/×4Ñ4Ó6�GØ—N‘N¤7¨6°>À2Ó#FÔGØ$+§M¡M¦O™˜˜SØ #›:Ø"%˜CØ"&˜CÙ!ð %4ô -Ð-LÓMÐMà˜A’XØ�Cà-0�— ‘ ˜S "Ó% cÒ*ñ+$0ð6ð0ˆrKc#óK—|jxsdEd{–—†|jxsdEd{–—†|jxsdD]>}t|t«r|\}}n |j }|j d«r|dd}|–—Œ@y7Œn7ŒX­w)z@Yield all packages, modules, and extension names in distributionr‚NÚmoduleiúÿÿÿ)rjrkrlr6r8r%rÔ)r—Úextr%Ú buildinfos r2rsz$Distribution.iter_distribution_names’s…èø€ð—=‘=Ò& B×&Ð&à—?‘?Ò( b×(Ð(à×#Ñ#Ò) rÒ)ˆCܘ#œuÔ%Ø"%‘�‘ià—x‘x�Ø�}‰}˜XÔ&ؘC˜R�y�Ø‹Jñ*ð 'øà(ús ‚B –B—B ®B¯AB ÂB cóF—ddl}|jrtj||«St |j t j«stj||«S|j jj«dvrtj||«S|j j}|j jd¬« tj||«|j j|¬«S#|j j|¬«wxYw)zÚIf there were any non-global "display-only" options (--help-commands or the metadata display options) on the command line, display the requested info and return true; else return false. rN)ráÚutf8rárâ) réÚ help_commandsr¨Úhandle_display_optionsr6ÚstdoutÚioÚ TextIOWrapperrãr�Ú reconfigure)r—Ú option_orderrérãs r2r z#Distribution.handle_display_options¢sã€ó à × Ò Ü ×7Ñ7¸¸lÓKÐ Kô˜#Ÿ*™*¤b×&6Ñ&6Ô7Ü ×7Ñ7¸¸lÓKÐ Kð �:‰:× Ñ × $Ñ $Ó &Ð*;Ñ ;Ü ×7Ñ7¸¸lÓKÐ Kð—:‘:×&Ñ&ˆØ � ‰ ×ѨÐÔ0ð 6Ü ×7Ñ7¸¸lÓKà �J‰J× "Ñ "¨HÐ "Õ 5øˆC�J‰J× "Ñ "¨HÐ "Õ 5ús ÃDÄD cóD•—|j«t‰|� |«yr[)r«ÚsuperÚ run_command)r—rrˆs €r2r¨zDistribution.run_command¾sø€Ø ×ÑÔô ‰Ñ˜GÕ$rKr[)NF)0räÚ __module__Ú __qualname__Ú__doc__rjrr7r§r–r™r©r¸r¬Ú staticmethodr­r®rÅrÏrÍrrõrrör'r1r7r<rHrDrMrVrXr]rardrhrqr?r{rgr€r‚r‹r˜rsr r¨Ú __classcell__)rˆs@r2rrÐs"ø„ñ1ñh*6ØØ%Ù$Ù%Ø Øñ'Ð#ð€Mò *ó"ò> +òQðñ óð ò=ò& ò ð&ñ  óð  óM5ò^ òDòó$,5ò\ $ó'ò"1ò ð$ñ "óð "ò0ò ò**ò Bò2ò4ò)ò,ò* òMò"+ò&)ò.2òò6$òLò 6÷8%ð%rKcó—eZdZdZy)rdzrClass for warning about deprecations in dist in setuptools. Not ignored by default, unlike DeprecationWarning.N)rär©rªr«r‚rKr2rdrdÆs„òFrKrd)Trr¢rMrÀrÕr|réÚ contextlibrÚglobrÚpathlibrÚtypingrrr Ú distutils.cmdrAÚdistutils.commandÚdistutils.coreÚdistutils.distÚ distutils.logÚdistutils.debugr Údistutils.errorsr r Údistutils.fancy_getoptr Údistutils.utilrÚextern.more_itertoolsrrÚextern.ordered_setrÚextern.packaging.markersrrÚextern.packaging.specifiersrrÚextern.packaging.versionrr5rrrrrÚ _importlibrÚconfigrrÚ discoveryrÚmonkeyr Úwarningsr!r"r8r7rxr3r;rJrQrOrTrbrfrmrorsrvrzrÚcorerr¨rdr‚rKr2ÚrÇsÿðØ Ð €ó ÛÛÛ Û Û ÝÝÝß&Ñ&ãÛÛÛÛÝ!ßFÝ4Ý$ç=Ý*ß;ßGÝ-åÝÝÝÝ ß+Ý&Ý!ßCð �$ˆ;€òò ò ò: òòòGò5ò RòRò,òAò Hòñ˜iŸn™n×9Ñ9Ó:€ ôs %�=ôs %ôlFÐ9õFrK