1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
Ë
Añúh©>ãó —dZddlmZddlZddlZddlZddlZddlZddlm    Z    m
Z
m Z ddl m Z ddlmZddlmZmZddlmZdd    lmZdd
lmZmZdd lmZmZmZmZd d lmZd dl m!Z!m"Z#d dl$m%Z%d dl&m'Z'ddl(m)Z)er ddl*m+Z+ddl,m-Z-ed«Z.edd¬«Z/Gd„d«Z0    d0                    d1d„Z1    d0                    d2d„Z2d3d„Z3d4d„Z4d5d„Z5        d6                            d7d„Z6d8d „Z7d9d!„Z8                                d:d"„Z9        d6                            d;d#„Z:        d6                            d<d$„Z;dddd%œ                    d=d&„Z<d>d'„Z=d?d(„Z>d@d)„Z?    d0                    dAd*„Z@    dB                    dCd+„ZAGd,„d-«ZBGd.„d/e e.e/f«ZCy)DaiUtility functions to expand configuration directives or special values
(such glob patterns).
 
We can split the process of interpreting configuration files into 2 steps:
 
1. The parsing the file contents from strings to value objects
   that can be understand by Python (for example a string with a comma
   separated list of keywords into an actual Python list of strings).
 
2. The expansion (or post-processing) of these values according to the
   semantics ``setuptools`` assign to them (for example a configuration field
   with the ``file:`` directive should be expanded from a list of file paths to
   a single string with the contents of those files concatenated)
 
This module focus on the second step, and therefore allow sharing the expansion
functions among several configuration file formats.
 
**PRIVATE MODULE**: API reserved for setuptools internal usage only.
é)Ú annotationsN)ÚIterableÚIteratorÚMapping)Ú ConfigParser)Úiglob)Ú
ModuleSpecÚ all_suffixes)Úchain)ÚPath)Ú
ModuleTypeÚ TracebackType)Ú TYPE_CHECKINGÚAnyÚCallableÚTypeVaré)Ú_static)ÚStrPathÚ    same_path)Úfind_package_path)ÚSetuptoolsWarning)ÚDistutilsOptionError)ÚSelf)Ú DistributionÚ_KÚ_V_coT)Ú    covariantcó(—eZdZdZdd„Zdd„Zdd„Zy)    Ú StaticModulez>Proxy to a module object that avoids executing arbitrary code.có̗tjtj|j«j ««}t |«jt««|`    y©N)
ÚastÚparseÚpathlibr ÚoriginÚ
read_bytesÚvarsÚupdateÚlocalsÚself)r+ÚnameÚspecÚmodules    úKH:\Change_password\venv_build\Lib\site-packages\setuptools/config/expand.pyÚ__init__zStaticModule.__init__8s?€Ü—‘œ7Ÿ<™<¨¯ © Ó4×?Ñ?ÓAÓBˆÜ ˆT‹
×Ñœ&›(Ô#Ø ‰Ióc#ó<‡K—|jjD]|Št‰tj«rˆfd„‰j
D«Ed{–—†Œ;t‰tj «sŒV‰jsŒc‰j‰jf–—Œ~y7ŒJ­w)Nc3ó:•K—|]}|‰jf–—Œy­wr")Úvalue)Ú.0ÚtargetÚ    statements  €r/ú    <genexpr>z1StaticModule._find_assignments.<locals>.<genexpr>@søèø€ÒV¸&˜V Y§_¡_Ô5ÑVùsƒ)    r.ÚbodyÚ
isinstancer#ÚAssignÚtargetsÚ    AnnAssignr4r6)r+r7s @r/Ú_find_assignmentszStaticModule._find_assignments=snøèø€ØŸ™×)Ñ)ò    :ˆIܘ)¤S§Z¡ZÔ0ÛVÀI×DUÑDUÔV×VÑVܘI¤s§}¡}Õ5¸)¿/»/Ø ×'Ñ'¨¯©Ð9Ó9ñ        :àVúsƒA BÁBÁBÁ0 BÁ=Bc󢇗    tˆfd„|j«D««S#t$r }t|j›d‰›«|‚d}~wwxYw)zHAttempt to load an attribute "statically", via :func:`ast.literal_eval`.c3ó •K—|]E\}}t|tj«r&|j‰k(rtj|«–—ŒGy­wr")r:r#ÚNameÚidÚ literal_eval)r5r6r4Úattrs   €r/r8z+StaticModule.__getattr__.<locals>.<genexpr>GsAøèø€òá!F˜Eܘf¤c§h¡hÔ/°F·I±IÀÒ4Eô× Ñ  ×'ñùsƒA Az has no attribute N)Únextr>Ú    ExceptionÚAttributeErrorr,)r+rDÚes ` r/Ú __getattr__zStaticModule.__getattr__Ds]ø€ð    PÜóà%)×%;Ñ%;Ó%=ôóð øô
ò    PÜ  D§I¡I ;Ð.@ÀÀÐ!GÓHÈaÐ Oûð    Púsƒ!%¥    A®A    Á    AN)r,Ústrr-r    ÚreturnÚNone)rKz!Iterator[tuple[ast.AST, ast.AST]])rDrJ)Ú__name__Ú
__module__Ú __qualname__Ú__doc__r0r>rI©r1r/r r 5s„ÙHóó
:ô    Pr1r c
óò‡‡—hd£}g}‰xstj«Š|D]ъtˆfd„|D««rltjj    tjj ‰‰««}|j tˆfd„t|d¬«D«««Œƒtjj‰‰«jtjd«}|j|«ŒÓ|S)aExpand the list of glob patterns, but preserving relative paths.
 
    :param list[str] patterns: List of glob patterns
    :param str root_dir: Path to which globs should be relative
                         (current directory by default)
    :rtype: list
    >Ú*ú?ú[ú]ú{ú}c3ó&•K—|]}|‰v–—Œ
y­wr"rQ)r5Úcharr4s  €r/r8z glob_relative.<locals>.<genexpr>_søèø€Ò9 ˆtuŒ}Ñ9ùsƒc3óš•K—|]B}tjj|‰«jtjd«–—ŒDy­w)ú/N)ÚosÚpathÚrelpathÚreplaceÚsep©r5r^Úroot_dirs  €r/r8z glob_relative.<locals>.<genexpr>cs9øèø€òàô—G‘G—O‘O D¨(Ó3×;Ñ;¼B¿F¹FÀC×HñùsƒAA T)Ú    recursiver\) r]ÚgetcwdÚanyr^ÚabspathÚjoinÚextendÚsortedrr_r`raÚappend)ÚpatternsrcÚglob_charactersÚexpanded_valuesÚ    glob_pathr^r4s `    @r/Ú glob_relativerpPsÄù€ò5€OØ€OØÒ&œ2Ÿ9™9›;€HØò)ˆä Ó9¨Ô9Ô 9䟙Ÿ™¬¯©¯ © °X¸uÓ(EÓFˆIØ × "Ñ "Üóä % i¸4Ô @ôóõ ô—7‘7—?‘? 5¨(Ó3×;Ñ;¼B¿F¹FÀCÓHˆDØ × "Ñ " 4Õ (ð)ð" Ðr1có⇗ddlm}tjj    ‰xstj
««Šˆfd„||«D«}dj ˆfd„t|«D««S)zËReturn the content of the files concatenated using ``
`` as str
 
    This function is sandboxed and won't reach anything outside ``root_dir``
 
    (By default ``root_dir`` is the current directory).
    r)Úalways_iterablec3ó^•K—|]$}tjj‰|«–—Œ&y­wr"©r]r^rhrbs  €r/r8zread_files.<locals>.<genexpr>}s øèø€ÒV°4”"—'‘'—,‘,˜x¨×.ÑVùsƒ*-ú
c3óL•K—|]}t|‰«r t|«–—Œy­wr")Ú _assert_localÚ
_read_filerbs  €r/r8zread_files.<locals>.<genexpr>~s(øèø€òà Ü ˜˜xÔ (ô    4×ñùsƒ!$)Úmore_itertoolsrrr]r^rgrerhÚ_filter_existing_files)Ú    filepathsrcrrÚ
_filepathss `  r/Ú
read_filesr}qsWø€õ/äw‰w‰˜xÒ6¬2¯9©9«;Ó7€HÛV¹?È9Ó;UÔV€JØ 9‰9óä*¨:Ó6ôó ðr1c#ó”K—|D]?}tjj|«r|–—Œ'tjd|›d«ŒAy­w)NzFile z cannot be found)r]r^ÚisfilerÚemit)r{r^s  r/rzrz…sDèø€ØòEˆÜ 7‰7>‰>˜$Ô Ø‹Jä × "Ñ " U¨4¨(Ð2BÐ#CÕ Dñ    Eùs‚AAcóh—t|d¬«5}|j«cddd«S#1swYyxYw)Nzutf-8)Úencoding)ÚopenÚread)ÚfilepathÚfs  r/rxrxs,€Ü     ˆh Ô    )ð¨Q؏v‰v‹x÷÷òúsŽ(¨1cóà—ttjj|««ttjj|««jvrd|›d|›d}t |«‚y)NzCannot access z (or anything outside ú)T)r r]r^rgÚparentsr)r…rcÚmsgs   r/rwrw’sW€Ü ŒBG‰GO‰O˜HÓ %Ó&¬d´2·7±7·?±?À8Ó3LÓ.M×.UÑ.UÑUؘx˜lÐ*@ÀÀ ÈAÐNˆÜ" 3Ó'Ð'à r1có–—|xstj«}|j«jd«}|j    «}dj |«}|xsd}t |||«}t||«}    tt||«|«}tj|«S#t$rt||«}    t|    |«cYSwxYw)a·Reads the value of an attribute from a module.
 
    This function will try to read the attributed statically first
    (via :func:`ast.literal_eval`), and only evaluate the module if it fails.
 
    Examples:
        read_attr("package.attr")
        read_attr("package.module.attr")
 
    :param str attr_desc: Dot-separated string describing how to reach the
        attribute (see examples above)
    :param dict[str, str] package_dir: Mapping of package names to their
        location in disk (represented by paths relative to ``root_dir``).
    :param str root_dir: Path to directory containing all the packages in
        ``package_dir`` (current directory by default).
    :rtype: str
    ú.r0)r]reÚstripÚsplitÚpoprhÚ _find_moduleÚ
_find_specÚgetattrr rÚattempt_conversionrFÚ
_load_spec)
Ú    attr_descÚ package_dirrcÚ
attrs_pathÚ    attr_nameÚ module_namer^r-r4r.s
          r/Ú    read_attrrššsº€ð,Ò&œ2Ÿ9™9›;€HØ—‘Ó"×(Ñ(¨Ó-€JØ—‘Ó €IØ—(‘(˜:Ó&€KØÒ+ €KÜ ˜  [°(Ó ;€DÜ k 4Ó (€Dð*Üœ  [°$Ó7¸ÓCˆä×)Ñ)¨%Ó0Ð0øÜ ò*ä˜D +Ó.ˆÜv˜yÓ)Ò)ð*úsÁ9*B$Â$!CÃCcó¦—tjj||«}|xstjj|«}|€ t    |«‚|Sr")Ú    importlibÚutilÚspec_from_file_locationÚ    find_specÚModuleNotFoundError)r™Ú module_pathr-s   r/r‘r‘ÂsF€Ü >‰>× 1Ñ 1°+¸{Ó K€DØ Ò 8”9—>‘>×+Ñ+¨KÓ8€Dà €|Ü! +Ó.Ð.à €Kr1có —t|d|«}|tjvrtj|Stjj |«}|tj|<|j €J‚|j j|«|S)NrM)r’ÚsysÚmodulesrœrÚmodule_from_specÚloaderÚ exec_module)r-r™r,r.s    r/r”r”Ìst€Ü 4˜ [Ó 1€DØ Œs{‰{Ñ܏{‰{˜4Ñ Ð Ü ^‰^× ,Ñ ,¨TÓ 2€FØ„C‡KKÑØ ;‰;Ð "Ð"Ð "؇KK×јFÔ#Ø €Mr1c󘇗t||xsi|«Štjˆfd„t«D««}t    d„|D«d«S)aõFind the path to the module named ``module_name``,
    considering the ``package_dir`` in the build configuration and ``root_dir``.
 
    >>> tmp = getfixture('tmpdir')
    >>> _ = tmp.ensure("a/b/c.py")
    >>> _ = tmp.ensure("a/b/d/__init__.py")
    >>> r = lambda x: x.replace(str(tmp), "tmp").replace(os.sep, "/")
    >>> r(_find_module("a.b.c", None, tmp))
    'tmp/a/b/c.py'
    >>> r(_find_module("f.g.h", {"": "1", "f": "2", "f.g": "3", "f.g.h": "a/b/d"}, tmp))
    'tmp/a/b/d/__init__.py'
    c3óp•K—|]-}‰›|›tjj‰d|›«f–—Œ/y­w)r0Nrt)r5ÚextÚ
path_starts  €r/r8z_find_module.<locals>.<genexpr>çs=øèø€ò%à ð ˆ<˜uР   œrŸw™wŸ|™|¨J¸(À3À%Ð8HÓIÔJñ%ùsƒ36c3ó`K—|]&}tjj|«sŒ#|–—Œ(y­wr")r]r^r)r5Úxs  r/r8z_find_module.<locals>.<genexpr>ësèø€Ò<q¬"¯'©'¯.©.¸Õ*;”Ñ<ùs‚$.§.N)rr Ú from_iterabler
rE)r™r–rcÚ
candidatesr«s    @r/rr×sLø€ô# ;° Ò0A¸rÀ8ÓL€JÜ×$Ñ$ó%ä“>ô%ó€Jô Ñ<˜JÔ<¸dÓ CÐCr1có̗|xstj«}|jd«}||dzd}|d|}t|||«}t    t ||«|«}t ||«S)z@Given a qualified class name, return the associated class objectrŒéN)r]reÚrfindrr”r‘r’)Úqualified_class_namer–rcÚidxÚ
class_nameÚpkg_namer^r.s        r/Ú resolve_classr·îsn€ð Ò&œ2Ÿ9™9›;€HØ
$ SÓ
)€CØ% c¨A¡g iÐ0€JØ# D SÐ)€Hä ˜ +¨xÓ 8€DÜ œ
 8¨TÓ2°HÓ =€FÜ 6˜:Ó &Ð&r1c
ól—|j«Dcic]\}}|t|||«“Œc}}Scc}}w)z‡Given a dictionary mapping command names to strings for qualified class
    names, apply :func:`resolve_class` to the dict values.
    )Úitemsr·)Úvaluesr–rcÚkÚvs     r/Úcmdclassr½þs2€ðDJÇ<Á<Ã>× R¹4¸1¸aˆAŒ}˜Q  ¨XÓ6Ñ 6Ó RÐRùÓ Rs”0)Ú
namespacesÚfill_package_dirrcc óP‡ —ddlm}m}ddlm}|sddlm}nddlm}|xstj}|jddg«}g}    |€in|}t|||«««Š t‰ «dk(r+tˆ fd    „d|fD««r|jd
‰ d«‰ D]ƒ}
t||
«} |j| fi|¤Ž} |    j!| «| sŒ6|j#d
«|
k(rŒKtj$j'| |«rŒl|j)|| |
««Œ…|    S) aWorks similarly to :func:`setuptools.find_packages`, but with all
    arguments given as keyword arguments. Moreover, ``where`` can be given
    as a list (the results will be simply concatenated).
 
    When the additional keyword argument ``namespaces`` is ``True``, it will
    behave like :func:`setuptools.find_namespace_packages`` (i.e. include
    implicit namespaces as per :pep:`420`).
 
    The ``where`` argument will be considered relative to ``root_dir`` (or the current
    working directory when ``root_dir`` is not given).
 
    If the ``fill_package_dir`` argument is passed, this function will consider it as a
    similar data structure to the ``package_dir`` configuration parameter add fill-in
    any missing package location.
 
    :rtype: list
    r)rrÚunique_everseen)Úconstruct_package_dir)Ú PackageFinder)ÚPEP420PackageFinderÚwhererŒr±c3ó>•K—|]}t‰d|« –—Œy­w)rN)Ú
_same_path)r5r­Úsearchs  €r/r8z find_packages.<locals>.<genexpr>1søèø€ÒVÀ¤J¨v°a©y¸!Ó$<Ô <ÑVùsƒÚ)ryrrrÁÚsetuptools.discoveryrÂrÃrÄr]ÚcurdirrÚlistÚlenÚallÚ
setdefaultÚ
_nest_pathÚfindriÚgetr^Úsamefiler))r¾r¿rcÚkwargsrrrÁrÂrÃrÅÚpackagesr^Ú package_pathÚpkgsrÈs             @r/Ú find_packagesrØ    sø€÷0@å:ñ Þ6åMàÒ$œ2Ÿ9™9€HØ J‰Jw  Ó &€EØ€HØ-Ð5‘rÐ;KÐÜ ‘/¡/°%Ó"8Ó9Ó :€Fä
ˆ6ƒ{aÒœCÓVÀsÈHÀoÔVÔVØ×#Ñ# B¨¨q©    Ô2àòGˆÜ! (¨DÓ1ˆ Ø!ˆ}×!Ñ! ,Ñ9°&Ñ9ˆØ‰˜ÔÚ Ø ×  Ñ   Ó $¨Ó ,´·±×0@Ñ0@ÀÈxÕ0Xà × #Ñ #Ñ$9¸$ÀÓ$EÕ FðGð €Or1cóŒ—|dvr|ntjj||«}tjj|«S)N>rÉrŒ)r]r^rhÚnormpath)Úparentr^s  r/rÐrÐ@s4€Ø˜YÑ&‰6¬B¯G©G¯L©L¸ÀÓ,F€DÜ 7‰7× Ñ ˜DÓ !Ð!r1cóª—t|«r|«n|}t|t«r|St|d«rdj    t t|««S|›S)z`When getting the version directly from an attribute,
    it should be normalised to string.
    Ú__iter__rŒ)Úcallabler:rJÚhasattrrhÚmap)r4Ú_values  r/ÚversionrâEsJ€ô! œ‰UŒW¨U€Fä&œ#ÔØˆ ܈vzÔ"؏x‰xœœC Ó(Ó)Ð)؈XÐr1có6—d|vr|jd«|d<|S)NrSrÉ)r)Ú package_datas r/Úcanonic_package_dataråRs%€Ø
ˆlÑØ'×+Ñ+¨CÓ0ˆ RÑØ Ðr1c    ó—t|t«r|S|j«Dcgc]\}}|t||«f‘Œc}}Scc}}w)z˜For compatibility with ``setup.py``, ``data_files`` should be a list
    of pairs instead of a dict.
 
    This function also expands glob patterns.
    )r:rÌr¹rp)Ú
data_filesrcÚdestrls    r/Úcanonic_data_filesréXsO€ô*œdÔ#ØÐð)×.Ñ.Ó0÷ á ˆD(ð
Œ}˜X xÓ0Ò1ó ðùó s¦Ac    ó—tdd¬«}t|_|j||«|j    «Dcic]\}}|t |j    ««“Œ!}}}|j |jd«|Scc}}w)a?Given the contents of entry-points file,
    process it into a 2-level dictionary (``dict[str, dict[str, str]]``).
    The first level keys are entry-point groups, the second level keys are
    entry-point names, and the second level values are references to objects
    (that correspond to the entry-point value).
    N)ú=)Údefault_sectionÚ
delimiters)rrJÚ optionxformÚ read_stringr¹Údictrrì)ÚtextÚ text_sourceÚparserr»r¼Úgroupss      r/Ú entry_pointsrõisr€ô¨$¸6Ô B€FÜ€FÔØ
×ѐt˜[Ô)Ø-3¯\©\«^× <¡T Q¨ˆa”a—g‘g“i“Ñ Ð <€FÑ <Ø
‡JJˆv×%Ñ% tÔ,Ø €Mùó=s¾$BcóT—eZdZdZd    d„Zd„Zd
d„Z                        d d„Zd d„Ze    d d„«Z
y) ÚEnsurePackagesDiscoveredaØSome expand functions require all the packages to already be discovered before
    they run, e.g. :func:`read_attr`, :func:`resolve_class`, :func:`cmdclass`.
 
    Therefore in some cases we will need to run autodiscovery during the evaluation of
    the configuration. However, it is better to postpone calling package discovery as
    much as possible, because some parameters can influence it (e.g. ``package_dir``),
    and those might not have been processed yet.
    có —||_d|_y)NF)Ú_distÚ_called)r+Ú distributions  r/r0z!EnsurePackagesDiscovered.__init__…s€Ø!ˆŒ
؈ r1cód—|js$d|_|jjd¬«yy)zBTrigger the automatic package discovery, if it is still necessary.TF)r,N)rúrùÚ set_defaults©r+s r/Ú__call__z!EnsurePackagesDiscovered.__call__‰s*€à|Š|؈DŒLØ J‰J× #Ñ #¨Ð #Õ /ðr1có—|Sr"rQrþs r/Ú    __enter__z"EnsurePackagesDiscovered.__enter__s€Øˆ r1cóf—|jr%|jjj«yyr")rúrùrýÚ analyse_name)r+Úexc_typeÚ    exc_valueÚ    tracebacks    r/Ú__exit__z!EnsurePackagesDiscovered.__exit__’s&€ð <Š<Ø J‰J× #Ñ #× 0Ñ 0Õ 2ð r1cóH—|«|jj}|€iS|Sr")rùr–)r+Úpkg_dirs  r/Ú_get_package_dirz)EnsurePackagesDiscovered._get_package_dir›s%€Ù ŒØ—*‘*×(Ñ(ˆØ_ˆrÐ1¨'Ð1r1có,—t|j«S)zCProxy to ``package_dir`` that may trigger auto-discovery when used.)ÚLazyMappingProxyr
rþs r/r–z$EnsurePackagesDiscovered.package_dir s€ô  × 5Ñ 5Ó6Ð6r1N)rûrrKrL)rKr)rztype[BaseException] | NonerzBaseException | NonerzTracebackType | None)rKzMapping[str, str]) rMrNrOrPr0rÿrrr
Úpropertyr–rQr1r/r÷r÷{sP„ñóò0ó ð3à,ð3ð(ð3ð(ó    3ó2ð
ò7óñ7r1r÷có8—eZdZdZdd„Zd    d„Zd
d„Zd d„Zd d„Zy) r a…Mapping proxy that delays resolving the target object, until really needed.
 
    >>> def obtain_mapping():
    ...     print("Running expensive function!")
    ...     return {"key": "value", "other key": "other value"}
    >>> mapping = LazyMappingProxy(obtain_mapping)
    >>> mapping["key"]
    Running expensive function!
    'value'
    >>> mapping["other key"]
    'other value'
    có —||_d|_yr")Ú_obtainrá)r+Úobtain_mapping_values  r/r0zLazyMappingProxy.__init__´s€Ø+ˆŒ Ø15ˆ r1có\—|j€|j«|_|jSr")rárrþs r/Ú_targetzLazyMappingProxy._target¸s#€Ø ;‰;Ð ØŸ,™,›.ˆDŒK؏{‰{Ðr1có(—|j«|Sr")r)r+Úkeys  r/Ú __getitem__zLazyMappingProxy.__getitem__½s€Ø|‰|‹~˜cÑ"Ð"r1có4—t|j««Sr")rÍrrþs r/Ú__len__zLazyMappingProxy.__len__Às€Ü4—<‘<“>Ó"Ð"r1có4—t|j««Sr")Úiterrrþs r/rÝzLazyMappingProxy.__iter__Ãs€ÜD—L‘L“NÓ#Ð#r1N)rz Callable[[], Mapping[_K, _V_co]]rKrL)rKzMapping[_K, _V_co])rrrKr)rKÚint)rKz Iterator[_K])    rMrNrOrPr0rrrrÝrQr1r/r r ¦s „ñ ó6óó
#ó#ô$r1r r")rlz Iterable[str]rcúStrPath | NonerKú    list[str])r{zStrPath | Iterable[StrPath]rcrrKrJ)r{zIterable[StrPath]rKzIterator[StrPath])r…zbytes | StrPathrKrJ)r…rrcrJ)NN)r•rJr–úMapping[str, str] | NonercrrKr)r™rJr¡rrKr    )r-r    r™rJrKr )r™rJr–rrcrrKz
str | None)r³rJr–rrcrrKr)rºzdict[str, str]r–rrcrrKzdict[str, Callable])r¿zdict[str, str] | NonercrrKr)rÛrr^rrKrJ)r4z$Callable | Iterable[str | int] | strrKrJ)rärðrKrð)rçz list | dictrcrrKzlist[tuple[str, list[str]]])z entry-points)rñrJròrJrKzdict[str, dict[str, str]])DrPÚ
__future__rr#rœr]r%r£Úcollections.abcrrrÚ configparserrÚglobrÚimportlib.machineryr    r
Ú    itertoolsr r Útypesr rÚtypingrrrrrÉrÚ_pathrrrÇÚ    discoveryrÚwarningsrÚdistutils.errorsrÚtyping_extensionsrÚsetuptools.distrrrr rpr}rzrxrwršr‘r”rr·r½rØrÐrârårérõr÷r rQr1r/ú<module>r-s;ðñõ(#ã
ÛÛ    ÛÛ
ß7Ñ7Ý%Ýß8ÝÝß+ß8Ó8åß4Ý)Ý(å1áÝ&å,á ˆTƒ]€Ù 4Ô(€÷PñPð89=ðØðØ'5ðàóðDHLðØ*ðØ6Dðàóó(Eóó
ð-1Ø#ð%*Øð%*à)ð%*ðð%*ð    ó    %*óPóðDØðDØ#;ðDØGNðDàóDð2-1Ø#ð 'Øð 'à)ð 'ðð 'ðó     'ð$-1Ø#ðSØ ðSà)ðSððSðó    SðØ.2Ø#ñ    4ð,ð4ðð    4ð ó 4ón"ó
 
óð9=ðØðØ'5ðà óð$#1ðØ
ðØðàó÷$(7ñ(7ôV$w˜r 5˜yÑ)õ$r1