hyb
2026-01-30 7657e1b2fa251a2ea372710ad75cb395a3c0e374
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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
Ë
@ñúhòÙãóØ—UdZddlmZddlZddlZddlZddlZddlZddlZddl    Z    ddl
m Z m Z ddl mZddlmZmZmZmZmZmZmZmZddlmZmZdd    lmZdd
lmZdd lm Z m!Z!m"Z"m#Z#dd l$m%Z%m&Z&dd l'm(Z(m)Z)m*Z*erddl+m,Z,ddl-m.Z.ddl/m0Z0edd¬«Z1e2ee3e4ee4dfe4e5fe3e4ee4dfe4ffZ6de7d<ejpd«Z9dd„Z:Gd„d«Z;Gd„d«Z<d„Z=y)z}distutils.dist
 
Provides the Distribution class, which represents the module distribution
being built/installed/distributed.
é)Ú annotationsN)ÚIterableÚMutableMapping)Úmessage_from_file)ÚIOÚ TYPE_CHECKINGÚAnyÚClassVarÚLiteralÚTypeVarÚUnionÚoverload)Úcanonicalize_nameÚcanonicalize_versioné©Úlog)ÚDEBUG)ÚDistutilsArgErrorÚDistutilsClassErrorÚDistutilsModuleErrorÚDistutilsOptionError)Ú FancyGetoptÚtranslate_longopt)Ú check_environÚ rfc822_escapeÚ    strtobool)Ú SupportsWrite)Ú    TypeAlias©ÚCommandÚ    _CommandTr!)ÚboundrÚ _OptionsListz^[a-zA-Z]([a-zA-Z0-9_]*)$cóî—t|t«r    |St|t«sQt|«j}d}|j
dit «¤Ž}tj|«t|«}|S)Nz>Warning: '{fieldname}' should be a list, got type '{typename}'©)    Ú
isinstanceÚstrÚlistÚtypeÚ__name__ÚformatÚlocalsrÚwarning)ÚvalueÚ    fieldnameÚtypenameÚmsgs    úMH:\Change_password\venv_build\Lib\site-packages\setuptools/_distutils/dist.pyÚ _ensure_listr4>sg€Ü%œÔð     ð €Lô˜œtÔ $䘓;×'Ñ'ˆØNˆØˆcj‰jÑ$œ6›8Ñ$ˆÜ  ‰ CÔܐU“ ˆØ €Lóc    ó —eZdZUdZgd¢Zded<dZded<gd¢Zded    <eDcgc]}t|d
«‘Œc}}}Z    d ed <d diZ
ded<dOdPd„Z d„Z dQdRd„Z d„Zd„ZdOd„Zd„Zd„Zd„ZdSd„Z    dT    dUd„Zd„ZdSd„ZdSd„Zd „Zd!„ZdVd"„Ze    dW                    dXd#„«Ze                        dYd$„«ZdWdZd&„ZdOd'„Ze    d[                    d\d(„«Ze    d[                    d]d)„«Z    d[            d^d*„Ze jBfd_d+„Z"dSd,„Z#d`d-„Z$dad.„Z%dad/„Z&dad0„Z'dad1„Z(dad2„Z)dad3„Z*dad4„Z+dad5„Z,e-rndSd6„Z.d%ed7<d8ed9<d8ed:<d8ed;<d8ed<<d8ed=<d8ed><d8ed?<d8ed@<d8edA<d8edB<d8edC<d8edD<d8edE<d8edF<dGedH<dGedI<dGedJ<dKedL<dKedM<dKedN<yycc}}}w)bÚ Distributiona½The core of the Distutils.  Most of the work hiding behind 'setup'
    is really done within a Distribution instance, which farms the work out
    to the Distutils commands specified on the command line.
 
    Setup scripts will almost never instantiate Distribution directly,
    unless the 'setup()' function is totally inadequate to their needs.
    However, it is conceivable that a setup script might wish to subclass
    Distribution for some specialized purpose, and then pass the subclass
    to 'setup()' as the 'distclass' keyword argument.  If so, it is
    necessary to respect the expectations that 'setup' has of Distribution.
    See the code for 'setup()', in core.py, for details.
    ))ÚverboseÚvzrun verbosely (default)r)ÚquietÚqz!run quietly (turns verbosity off))zdry-runÚnzdon't actually do anything)ÚhelpÚhzshow detailed help message)z no-user-cfgNz-ignore pydistutils.cfg in your home directoryzClassVar[_OptionsList]Úglobal_optionsz£Common commands: (see '--help-commands' for more)
 
  setup.py build      will build the package underneath 'build/'
  setup.py install    will install the package
z ClassVar[str]Ú common_usage))z help-commandsNzlist all available commands)ÚnameNzprint package name)ÚversionÚVzprint package version)ÚfullnameNzprint <package name>-<version>)ÚauthorNzprint the author's name)ú author-emailNz print the author's email address)Ú
maintainerNzprint the maintainer's name)zmaintainer-emailNz$print the maintainer's email address)ÚcontactNz7print the maintainer's name if known, else the author's)z contact-emailNz@print the maintainer's email address if known, else the author's)ÚurlNzprint the URL for this package)ÚlicenseNz print the license of the package)ÚlicenceNzalias for --license)Ú descriptionNzprint the package description)zlong-descriptionNz"print the long package description)Ú    platformsNzprint the list of platforms)Ú classifiersNzprint the list of classifiers)ÚkeywordsNzprint the list of keywords)ÚprovidesNz+print the list of packages/modules provided)ÚrequiresNz+print the list of packages/modules required)Ú    obsoletesNz0print the list of packages/modules made obsoleteÚdisplay_optionsrzClassVar[list[str]]Údisplay_option_namesr:r8zClassVar[dict[str, str]]Ú negative_optNc    ó‚—d|_d|_d|_|jD]}t    ||d«Œt «|_|j jD](}d|z}t    ||t|j |««Œ*i|_    d|_
d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r7|j=d«}|K|d=|j?«D]5\}}|jA|«}|j?«D] \}    }
d|
f||    <ŒŒ7d|vr"|d|d    <|d=d
} tCjD| «|j?«D] \} }
tG|j d | z«r t|j d | z«|
«Œ?tG|j | «rt    |j | |
«ŒmtG|| «rt    || |
«Œ‡d | ›} tCjD| «Œ¢d|_$|jLtK|j«|_ |jD]#} | jMd «sn| dk(sŒd|_$n|jO«y)a0Construct a new Distribution instance: initialize all the
        attributes of a Distribution, and then use 'attrs' (a dictionary
        mapping attribute names to values) to assign some of those
        attributes their "real" values.  (Any attributes not mentioned in
        'attrs' will be assigned to some null value: 0, None, an empty list
        or dictionary, etc.)  Most importantly, initialize the
        'command_obj' attribute to the empty dictionary; this will be
        filled in with real command objects by 'parse_command_line()'.
        TFÚget_NÚÚoptionsz setup scriptrKrJz:'licence' distribution option is deprecated; use 'license'Úset_zUnknown distribution option: ú-z --no-user-cfg)(r8Údry_runr=rTÚsetattrÚDistributionMetadataÚmetadataÚ_METHOD_BASENAMESÚgetattrÚcmdclassÚcommand_packagesÚ script_nameÚ script_argsÚcommand_optionsÚ
dist_filesÚpackagesÚ package_dataÚ package_dirÚ
py_modulesÚ    librariesÚheadersÚ ext_modulesÚ ext_packageÚ include_dirsÚ
extra_pathÚscriptsÚ
data_filesÚpasswordÚ command_objÚhave_runÚgetÚitemsÚget_option_dictÚwarningsÚwarnÚhasattrÚ want_user_cfgr)Ú
startswithÚfinalize_options)ÚselfÚattrsÚattrÚbasenameÚ method_namerYÚcommandÚ cmd_optionsÚopt_dictÚoptÚvalr2ÚkeyÚargs              r3Ú__init__zDistribution.__init__šsÚ€ðˆŒ ØˆŒ ؈Œ    Ø×-Ñ-ò    'ˆDÜ D˜$ Õ &ð    'ô-Ó.ˆŒ ØŸ ™ ×7Ñ7ò    LˆHØ  8Ñ+ˆKÜ D˜+¤w¨t¯}©}¸kÓ'JÕ Kð    Lð35ˆŒ ð9=ˆÔð
;?ˆÔØ-1ˆÔðGIˆÔð79ˆŒð
ˆŒ Ø24ˆÔØˆÔØˆŒØˆŒØˆŒ ØˆÔØˆÔØ ˆÔ؈ŒØˆŒ ؈ŒØˆŒ ð 02ˆÔð*,ˆŒ ò ð
—i‘i     Ó*ˆGØÐ"ؘ)Ð$Ø,3¯M©M«Oò>Ñ(G˜[Ø#×3Ñ3°GÓ<HØ$/×$5Ñ$5Ó$7ò>™˜˜SØ)7¸Ð(=˜ š ñ>ð>ð
˜EÑ!Ø#(¨Ñ#3iѠؘ)Ð$ØRÜ— ‘ ˜cÔ"ð"ŸK™K›Mò     '‘Sܘ4Ÿ=™=¨&°3©,Ô7Ø8”G˜DŸM™M¨6°C©<Ó8¸Õ=ܘTŸ]™]¨CÔ0ܘDŸM™M¨3°Õ4ܘT 3Ô'ܘD # sÕ+à9¸#¸ÐACÜ—M‘M #Õ&ð     'ð""ˆÔà × Ñ Ð 'ä# D×$4Ñ$4Ó5ˆDÔ Ø×'Ñ'ò Ø—~‘~ cÔ*ÙØ˜/Ó)Ø).DÔ&Ùð  ð     ×ÑÕr5cób—|jj|«}|€ix}|j|<|S)zíGet the option dictionary for a given command.  If that
        command's option dictionary hasn't been created yet, then create it
        and return the new dictionary; otherwise, return the existing
        option dictionary.
        )rfrw)r€r…Údicts   r3ryzDistribution.get_option_dict7s9€ð ×#Ñ#×'Ñ'¨Ó0ˆØ ˆ<Ø35Ð 5ˆD4×'Ñ'¨Ñ0؈ r5cóÒ—ddlm}|€#t|jj    ««}||j ||z«|dz}|s|j |dz«y|D]…}|jj |«}|€|j |d|›dz«Œ9|j |d|›dz«||«}|jd    «D]}|j |dz|z«ŒŒ‡y)
Nr)Úpformatú  zno commands known yetzno option dict for 'z    ' commandzoption dict for 'ú
' command:ú
)ÚpprintrÚsortedrfÚkeysÚannouncerwÚsplit)    r€ÚheaderÚcommandsÚindentrÚcmd_namer‡ÚoutÚlines             r3Údump_option_dictszDistribution.dump_option_dictsBsò€Ý"à Рܘd×2Ñ2×7Ñ7Ó9Ó:ˆHà Ð Ø M‰M˜& 6™/Ô *ؘd‘]ˆFáØ M‰M˜&Ð#:Ñ:Ô ;Ø à ò    8ˆHØ×+Ñ+×/Ñ/°Ó9ˆHØÐØ— ‘ ˜fÐ)=¸h¸ZÀyÐ'QÑQÕRà— ‘ ˜fÐ):¸8¸*ÀJÐ'OÑOÔPÙ˜hÓ'ØŸI™I d›Oò8DØ—M‘M &¨4¡-°$Ñ"6Õ7ñ8ñ    8r5có—t«|j«Dcgc]-}tjj    |«sŒ#t |«‘Œ/}}t r/|jdjdj|«««|Scc}w)aÖFind as many configuration files as should be processed for this
        platform, and return a list of filenames in the order in which they
        should be parsed.  The filenames returned are guaranteed to exist
        (modulo nasty race conditions).
 
        There are multiple possible config files:
        - distutils.cfg in the Distutils installation directory (i.e.
          where the top-level Distutils __inst__.py file lives)
        - a file in the user's home directory named .pydistutils.cfg
          on Unix and pydistutils.cfg on Windows/Mac; may be disabled
          with the ``--no-user-cfg`` option
        - setup.cfg in the current directory
        - a file named by an environment variable
        zusing config files: {}z, )
rÚ
_gen_pathsÚosÚpathÚisfiler(rr—r,Újoin)r€r£Úfiless   r3Úfind_config_fileszDistribution.find_config_files\se€ô    ŒØ'+§¡Ó'8ÖQ˜t¼B¿G¹G¿N¹NÈ4Õ<P”T•ÐQˆÐQå Ø M‰MÐ2×9Ñ9¸$¿)¹)ÀEÓ:JÓKÔ Làˆ ùò Rs $BÁ Bc#ófK—tjtjdj«j
}|dz –—dt jdk(z}|dz}|jrJtjt«5tjd«j«|z –—ddd«tjd«–—tjt«5tjt jd««–—ddd«y#1swYŒmxYw#1swYyxYw­w)    NÚ    distutilsz distutils.cfgú.Úposixzpydistutils.cfgú~z    setup.cfgÚDIST_EXTRA_CONFIG)ÚpathlibÚPathÚsysÚmodulesÚ__file__Úparentr¢rAr}Ú
contextlibÚsuppressÚ RuntimeErrorÚ
expanduserÚ    TypeErrorÚgetenv)r€Úsys_dirÚprefixÚfilenames    r3r¡zDistribution._gen_pathsssôèø€ä—,‘,œsŸ{™{¨;Ñ7×@Ñ@ÓA×HÑHˆØ˜Ñ'Ò'𜟙 7Ñ*Ñ+ˆØÐ-Ñ-ˆØ × Ò Ü×$Ñ$¤\Ó2ñ @Ü—l‘l 3Ó'×2Ñ2Ó4°xÑ?Ò?÷ @ôl‰l˜;Ó'Ò'ô×  Ñ  ¤Ó +ñ    ?Ü—,‘,œrŸy™yÐ)<Ó=Ó>Ò >÷    ?ð    ?÷ @ð @ú÷    ?ð    ?üs6‚BD1Â)DÂ-8D1Ã%+D%Ä    D1ÄD"ÄD1Ä%D.Ä*D1có¨—ddlm}tjtjk7rgd¢}ng}t |«}|€|j «}tr|jd«|«}|D]³}tr|jd|›«|j|d¬«|j«D]a}|j|«}|j|«}|D]8}    |    dk7sŒ    |    |vsŒ|j||    «}
|    jd    d
«}    ||
f||    <Œ:Œc|j«Œµd |j vr‡|j d j#«D]f\}    \} }
|j$j|    «}     | rt'|| t)|
« «n(|    d vrt'||    t)|
««n t'||    |
«Œhyy#t*$r} t-| «‚d} ~ wwxYw) Nr)Ú ConfigParser) z install-basezinstall-platbasez install-libzinstall-platlibzinstall-purelibzinstall-headerszinstall-scriptsz install-datar»z exec-prefixÚhomeÚuserÚrootz"Distribution.parse_config_files():z
  reading zutf-8©Úencodingr+r[Ú_Úglobal)r8r\)Ú configparserr¾r°r»Ú base_prefixÚ    frozensetr§rr—ÚreadÚsectionsrYryrwÚreplacerŒrfrxrUr]rÚ
ValueErrorr)r€Ú    filenamesr¾Úignore_optionsÚparserr¼ÚsectionrYr‡rˆr‰Ú_srcÚaliasr2s              r3Úparse_config_fileszDistribution.parse_config_files†sÏ€Ý-ô :‰:œŸ™Ò (ò‰Nð  ˆNä" >Ó2ˆà Ð Ø×.Ñ.Ó0ˆIå Ø M‰MÐ>Ô ?ᓈØ!ò    ˆHÝØ— ‘  
¨8¨*Ð5Ô6Ø K‰K˜¨7ˆKÔ 3Ø!Ÿ?™?Ó,ò 8Ø Ÿ.™.¨Ó1Ø×/Ñ/°Ó8à"ò8CؘjÓ(¨S¸Ò-FØ$Ÿj™j¨°#Ó6˜Ø!Ÿk™k¨#¨sÓ3˜Ø)1°3¨˜ š ñ    8ð     8ð O‰OÕ ð!    ð* t×+Ñ+Ñ +Ø$(×$8Ñ$8¸Ñ$B×$HÑ$HÓ$Jò
4Ñ ‘[d˜CØ×)Ñ)×-Ñ-¨cÓ2ð4ÙÜ  e´¸3³Ð-?Õ@ØР6Ñ6Ü  c¬9°S«>Õ:ä  c¨3Ô/øñ
4ð ,øô"ò4Ü.¨sÓ3Ð3ûð4úsÅ2AF8Æ8    GÇ G Ç Gcó¢—|j«}g|_t||jz«}|j    |j
«|j ddi«|j|j|¬«}|j«}tj«jtjd|jzz
«|j|«ry|r|j!||«}|€y|rŒ|j"r5|j%|t'|j«dk(|j¬«y|js t)d«‚y    )
a‡Parse the setup script's command line, taken from the
        'script_args' instance attribute (which defaults to 'sys.argv[1:]'
        -- see 'setup()' in core.py).  This list is first processed for
        "global options" -- options that set attributes of the Distribution
        instance.  Then, it is alternately scanned for Distutils commands
        and options for that command.  Each new command terminates the
        options for the previous command.  The allowed options for a
        command are determined by the 'user_options' attribute of the
        command class -- thus, we have to be able to load command classes
        in order to parse the command line.  Any error in that 'options'
        attribute raises DistutilsGetoptError; any error on the
        command-line raises DistutilsArgError.  If no Distutils commands
        were found on the command line, raises DistutilsArgError.  Return
        true if command-line was successfully parsed and we should carry
        on with executing commands; false if no errors but we shouldn't
        execute commands (currently, this only happens if user asks for
        help).
        rKrJ)ÚargsÚobjecté
Nr©rSršzno commands suppliedT)Ú_get_toplevel_optionsršrrSÚset_negative_aliasesrUÚ set_aliasesÚgetoptreÚget_option_orderÚloggingÚ    getLoggerÚsetLevelÚWARNr8Úhandle_display_optionsÚ_parse_command_optsr=Ú
_show_helpÚlenr)r€Útoplevel_optionsrÏrÕÚ option_orders     r3Úparse_command_linezDistribution.parse_command_lineÊs/€ð. ×5Ñ5Ó7ÐðˆŒ ÜÐ-°×0DÑ0DÑDÓEˆØ×#Ñ# D×$5Ñ$5Ô6Ø×јI yÐ1Ô2؏}‰} $×"2Ñ"2¸4ˆ}Ó@ˆØ×.Ñ.Ó0ˆ Ü×ÑÓ×$Ñ$¤W§\¡\°B¸¿¹Ñ4EÑ%EÔFð × &Ñ & |Ô 4Ø ÙØ×+Ñ+¨F°DÓ9ˆD؈|Øòð 9Š9Ø O‰Oج¨D¯M©MÓ(:¸aÑ(?È$Ï-É-ð ô ð ð}Š}Ü#Ð$:Ó;Ð ;ðr5có"—|jdgzS)zÃReturn the non-display options recognized at the top level.
 
        This includes options that are recognized *only* at the top
        level as well as options recognized for commands.
        )zcommand-packages=Nz0list of packages that provide distutils commands)r?©r€s r3rÙz"Distribution._get_toplevel_options s!€ð ×"Ñ"ð ð&
ñ
ð    
r5có—ddlm}|d}tj|«st    d|›d«‚|j
j |«    |j|«}t||«std|›d«‚t|d«rt|jt«sd    }t||z«‚|j }t|d
«r+|j#«}|j%|j «t|d «r0t|j&t«rt)|j&«}ng}|j+|j,|jz|z«|j/|«|j1|d d«\}}    t|    d «r"|    j2r|j5|d|g¬«yt|d «rwt|j&t«r]d}
|j&D]I\} } } }t|    |j7| ««sŒ$d }
t9|«r|«Œ9td|›d| ›d«‚|
ry|j;|«}t=|    «j?«D] \}}d|f||<Œ|S#t$r}t|«‚d}~wwxYw)aÚParse the command-line options for a single command.
        'parser' must be a FancyGetopt instance; 'args' must be the list
        of arguments, starting with the current command (whose options
        we are about to parse).  Returns a new version of 'args' with
        the next command at the front of the list; will be the empty
        list if there are no more commands on the command line.  Returns
        None if the user asked for help on this command.
        rr zinvalid command name 'ú'Nzcommand class z must subclass CommandÚ user_optionszIcommand class %s must provide 'user_options' attribute (a list of tuples)rUÚ help_optionsrr=FrØzinvalid help function z for help option 'z-': must be a callable object (function, etc.)z command line) Ú distutils.cmdr!Ú
command_reÚmatchÚ
SystemExitršÚappendÚget_command_classrrÚ
issubclassrr|r'rír)rUÚcopyÚupdaterîÚfix_help_optionsÚset_option_tabler?rÚrÜr=räÚ get_attr_nameÚcallableryÚvarsrx)r€rÏrÕr!r…Ú    cmd_classr2rUrîÚoptsÚhelp_option_foundÚ help_optionÚ_shortÚ_descÚfuncr‡rAr/s                  r3rãz Distribution._parse_command_optss€õ    *ðq‘'ˆÜ×Ñ Ô(ÜÐ5°g°Y¸aÐ@ÓAÐ AØ  ‰ ×јWÔ%ð
    )Ø×.Ñ.¨wÓ7ˆIô ˜) WÔ-Ü%Ø    Ð+AÐBóð ô I˜~Ô .ܘ9×1Ñ1´4Ô8ð>ð ô& c¨I¡oÓ6Ð 6ð×(Ñ(ˆ Ü 9˜nÔ -Ø'×,Ñ,Ó.ˆLØ × Ñ      × 6Ñ 6Ô 7ô 9˜nÔ -´*Ø × "Ñ "¤Dô3
ô,¨I×,BÑ,BÓC‰LàˆLð    ×ÑØ × Ñ  )×"8Ñ"8Ñ 8¸<Ñ Gô    
ð    ×#Ñ# LÔ1Ø—}‘} T¨!¨" XÓ.‰ ˆˆtÜ 4˜Ô   T§Y¢YØ O‰O˜F°EÀYÀKˆOÔ PØ ä 9˜nÔ -´*Ø × "Ñ "¤Dô3
ð!"Ð Ø4=×4JÑ4Jò     Ñ0 ˜V U¨Dܘ4 ×!5Ñ!5°kÓ!BÕCØ()Ð%Ü ”~ٝä1Ø4°T°HÐ<NÈ{Èmð\IðIóðð      ñ!Øð×'Ñ'¨Ó0ˆÜ ›:×+Ñ+Ó-ò    5‰KˆD%Ø,¨eÐ4ˆHTŠNð    5ðˆ øôS$ò    )Ü# CÓ(Ð (ûð    )úsÁ I.É.    JÉ7 JÊJcóö—dD]o}t|j|«}|€Œt|t«sŒ-|j    d«Dcgc]}|j «‘Œ}}t |j||«Œqycc}w)z›Set final values for all the options on the Distribution
        instance, analogous to the .finalize_options() method of Command
        objects.
        ©rOrMNú,)rar_r'r(r˜Ústripr])r€r‚r/Úelms    r3rzDistribution.finalize_options}sm€ð
.ò    4ˆDܘDŸM™M¨4Ó0ˆE؈}ØÜ˜%¤Õ%Ø05· ± ¸CÓ0@ÖA¨˜Ÿ™ÐAÐAܘŸ ™  t¨UÕ3ñ     4ùò
BsÁA6có—ddlm}ddlm}|rX|r|j    «}n |j
}|j |«|j|jdz«t«|r6|j |j«|jd«t«|D]Î}t|t«rt||«r|}    n|j|«}    t|    d«rLt|    j t"«r2|j |    j$t'|    j «z«n|j |    j$«|jd|    j(›d«t«ŒÐt||j*««y    )
abShow help for the setup script command-line in the form of
        several lists of command-line options.  'parser' should be a
        FancyGetopt instance; do not expect it to be returned in the
        same state, as its option table will be reset to make it
        generate the correct help text.
 
        If 'global_options' is true, lists the global options:
        --verbose, --dry-run, etc.  If 'display_options' is true, lists
        the "display-only" options: --name, --version, etc.  Finally,
        lists per-command help for every command name or command class
        in 'commands'.
        rr ©Ú    gen_usagez
Global options:zKInformation display options (just display information, ignore any commands)rîz Options for 'r’N)rïr!Údistutils.corer rÙr?rùÚ
print_helpr@ÚprintrSr'r*rõrôr|rîr)rírør+rd)
r€rÏr?rSršr!r rYr…Úklasss
          r3räzDistribution._show_helpŠsJ€õ     *Ý,á ÙØ×4Ñ4Ó6‘à×-Ñ-Ø × #Ñ # GÔ ,Ø × Ñ ˜d×/Ñ/Ð2EÑEÔ FÜ ŒGá Ø × #Ñ # D×$8Ñ$8Ô 9Ø × Ñ Ø]ô ô ŒGàò     ˆGܘ'¤4Ô(¬Z¸ÀÔ-IØ‘à×.Ñ.¨wÓ7Üu˜nÔ-´*¸U×=OÑ=OÔQUÔ2VØ×'Ñ'Ø×&Ñ&Ô)9¸%×:LÑ:LÓ)MÑMõð×'Ñ'¨×(:Ñ(:Ô;Ø × Ñ   ¨e¯n©nÐ-=¸ZÐHÔ IÜ Gð     ô    ‰i˜×(Ñ(Ó)Õ*r5có—ddlm}|jr6|j«t    «t    ||j
««yd}t «}|jD]}|j|d«Œ|D]\}}|sŒ    ||vsŒt|«}t|jd|z««}|dvrt    dj|««n*|dvrt    dj|««n t    |«d}Œƒ|S)    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.
        rr
rrWrr)rNrPrQrRr“) r r Ú help_commandsÚprint_commandsrrdÚsetrSÚaddrrar_r¥)    r€rçr Úany_display_optionsÚis_display_optionÚoptionrˆr‰r/s             r3râz#Distribution.handle_display_options½sû€õ     -ð
× Ò Ø × Ñ Ô !Ü ŒGÜ ‘)˜D×,Ñ,Ó-Ô .Øð
 ÐÜ›EÐØ×*Ñ*ò    -ˆFØ × !Ñ ! &¨¡)Õ ,ð    -ð%ò
    (‰HˆCÚsÐ/Ò/Ü'¨Ó,Ø<œ § ¡ ¨v¸©|Ó<Ó>ØÐ3Ñ3ܘ#Ÿ(™( 5›/Õ*ØÐPÑPܘ$Ÿ)™) EÓ*Õ+ä˜%”LØ&'Ñ#ð
    (ð#Ð"r5cóò—t|dz«|D]S}|jj|«}|s|j|«}    |j}td|d|›d›d|›«ŒUy#t
$rd}YŒ&wxYw)zZPrint a subset of the list of all commands -- used by
        'print_commands()'.
        ú:ú(no description available)r‘ú<rXN)rrbrwrôrLÚAttributeError)r€ršr™Ú
max_lengthÚcmdrrLs       r3Úprint_command_listzDistribution.print_command_listäsŽ€ô    ˆfs‰lÔàò        ;ˆCØ—M‘M×%Ñ% cÓ*ˆEÙØ×.Ñ.¨sÓ3ð ;Ø#×/Ñ/ ô Bs˜1˜Z˜L¨˜.Ð)¨¨K¨=Ð9Õ :ñ        ;øô "ò ;Ø:’ ð ;úsÁ A(Á( A6Á5A6cób—ddl}|jj}t|«}|jj «Dcgc]    }||vsŒ|‘Œ }}d}||zD]}t |«|kDsŒt |«}Œ|j|d|«|rt«|j|d|«yycc}w)anPrint out a help message listing all available commands with a
        description of each.  The list is divided into "standard commands"
        (listed in distutils.command.__all__) and "extra commands"
        (mentioned in self.cmdclass, but not a standard command).  The
        descriptions come from the command class attribute
        'description'.
        rNzStandard commandszExtra commands)    Údistutils.commandr…Ú__all__rrbr–rårr)r€r©Ú std_commandsÚis_stdrÚextra_commandsrs       r3rzDistribution.print_commandsõs²€ó    !à ×(Ñ(×0Ñ0ˆ ܐ\Ó"ˆà)-¯©×);Ñ);Ó)=ÖS #ÀÈFÒARš#ÐSˆÐSàˆ
Ø .Ñ0ò    &ˆCܐ3‹x˜*Ó$Ü  ›X‘
ð    &ð     ×Ñ  Ð.AÀ:ÔNÙ Ü ŒGØ × #Ñ # NÐ4DÀjÕ Qð ùòTs Á    B,Á B,cóˆ—ddl}|jj}t|«}|jj «Dcgc]    }||vsŒ|‘Œ }}g}||zD]P}|jj |«}|s|j|«}    |j}|j||f«ŒR|Scc}w#t$rd}YŒ)wxYw)a>Get a list of (command, description) tuples.
        The list is divided into "standard commands" (listed in
        distutils.command.__all__) and "extra commands" (mentioned in
        self.cmdclass, but not a standard command).  The descriptions come
        from the command class attribute 'description'.
        rNr) r!r…r"rrbr–rwrôrLrró)    r€r©r#r$rr%ÚrvrrLs             r3Úget_command_listzDistribution.get_command_listsπó    !à ×(Ñ(×0Ñ0ˆ ܐ\Ó"ˆà)-¯©×);Ñ);Ó)=ÖS #ÀÈFÒARš#ÐSˆÐSà ˆØ .Ñ0ò    *ˆCØ—M‘M×%Ñ% cÓ*ˆEÙØ×.Ñ.¨sÓ3ð ;Ø#×/Ñ/ ð I‰Is˜KÐ(Õ )ð    *ðˆ    ùòTøô"ò ;Ø:’ ð ;úsÁ    B.Á B. B3Â3 CÃCcóî—|j}t|t«sS|€d}|jd«Dcgc]}|dk7sŒ    |j    «‘Œ}}d|vr|j dd«||_|Scc}w)z9Return a list of packages from which commands are loaded.rXrzdistutils.commandr)rcr'r)r˜rÚinsert)r€ÚpkgsÚpkgs   r3Úget_command_packagesz!Distribution.get_command_packages,sr€à×$Ñ$ˆÜ˜$¤Ô%؈|ؐØ+/¯:©:°c«?ÖH C¸cÀR»iC—I‘I•KÐHˆDÐHØ"¨$Ñ.Ø— ‘ ˜AÐ2Ô3Ø$(ˆDÔ !؈ ùò    Is
´
A2¿A2c óx—|jj|«}|r|S|j«D]I}|›d|›}|}    t|«tj
|}    t||«}||j|<|cStd|›d«‚#t $rYŒfwxYw#t$rtd|›d|›d|›d«‚wxYw)aoReturn the class that implements the Distutils command named by
        'command'.  First we check the 'cmdclass' dictionary; if the
        command is mentioned there, we fetch the class object from the
        dictionary and return it.  Otherwise we load the command module
        ("distutils.command." + command) and fetch the command class from
        the module.  The loaded class is also stored in 'cmdclass'
        to speed future calls to 'get_command_class()'.
 
        Raises DistutilsModuleError if the expected module could not be
        found, or if that module does not define the expected class.
        rªzinvalid command 'z ' (no class 'z ' in module 'z')rì)
rbrwr-Ú
__import__r°r±Ú ImportErrorrarr)r€r…rÚpkgnameÚ module_nameÚ
klass_nameÚmodules       r3rôzDistribution.get_command_class8sñ€ð— ‘ ×!Ñ! 'Ó*ˆÙ ؈Là×0Ñ0Ó2ò    ˆGØ$˜I Q w iÐ0ˆKØ ˆJð ܘ;Ô'ÜŸ™ [Ñ1ð Ü ¨
Ó3ð &+ˆDM‰M˜'Ñ "ØŠLð%    ô(#Ð%6°w°i¸qÐ#AÓBÐBøôò Ùð ûô
"ò Ü*Ø'¨ y° ¸j¸\ÈÐWbÐVcÐceÐfóðð ús½B Á B     BÂBÂB9có—y©Nr&©r€r…Úcreates   r3Úget_command_objzDistribution.get_command_obj^ó€ðr5có—yr6r&r7s   r3r9zDistribution.get_command_objbs€ðr5ÚboolcóF—|jj|«}|sƒ|rtr|jd|›d«|j    |«}||«x}|j|<d|j
|<|j j|«}|r|j||«|S)aReturn the command object for 'command'.  Normally this object
        is cached on a previous call to 'get_command_obj()'; if no command
        object for 'command' is in the cache, then we either create and
        return it (if 'create' is true) or return None.
        z*Distribution.get_command_obj(): creating 'z' command objectF)rurwrr—rôrvrfÚ_set_command_options)r€r…r8Úcmd_objrrYs      r3r9zDistribution.get_command_objfs©€ð ×"Ñ"×&Ñ& wÓ/ˆÙ™6ÝØ— ‘ ð!Ø!(     Ð)9ð;ôð
×*Ñ*¨7Ó3ˆEÙ27¸³+Ð =ˆGd×&Ñ& wÑ/Ø%*ˆDM‰M˜'Ñ "ð×*Ñ*×.Ñ.¨wÓ7ˆGÙØ×)Ñ)¨'°7Ô;àˆr5c
óÚ—|j«}|€|j|«}tr|jd|›d«|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) aySet 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').
        Nz  setting options for 'r’z    z = z (from ú)z    error in z : command 'z' has no such option 'rì)Úget_command_nameryrr—rxÚboolean_optionsrrrUr'r(r]rr|rrÌ) r€ruÚ option_dictÚ command_namerÚsourcer/ÚoÚ    bool_optsÚneg_optÚ    is_stringr2s             r3r>z!Distribution._set_command_optionsƒs“€ð#×3Ñ3Ó5ˆ Ø Ð Ø×.Ñ.¨|Ó<ˆKå Ø M‰MÐ3°L°>ÀÐLÔ MØ'2×'8Ñ'8Ó':ò    0Ñ #ˆF‘OV˜UÝØ— ‘   V H¨C°¨w°g¸f¸XÀQÐGÔHð Ø;F×;VÑ;VÖW°aÔ.¨qÕ1ÐW    ÐWð Ø%×2Ñ2ð 0Ü& u¬cÓ2    Ø˜WÑ$©Ü˜K¨°©¼iÈÓ>NÐ:NÕOؘyÑ(©YܘK¨´¸5Ó1AÕBܘ[¨&Ô1ܘK¨°Õ7ä.Ø# F 8¨;°|°nÐDZÐ[aÐZbÐbcÐdóðøñ+    0ùòXøÜ!ò Ø’    ð ûô"ò Ø’ð ûôò 0Ü*¨3Ó/Ð/ûð 0úsOÁ:D/ÂD*ÂD/ EÂ*A=EÄ*D/Ä/ D=Ä<D=Å EÅ EÅ    E*Å E%Å%E*có—yr6r&©r€r…Úreinit_subcommandss   r3Úreinitialize_commandz!Distribution.reinitialize_command­r:r5có—yr6r&rLs   r3rNz!Distribution.reinitialize_command±s€ðr5cóN—ddlm}t||«s|}|j|«}n|j    «}|j
s|S|j «d|_d|j|<|j|«|r'|j«D]}|j||«Œ|S)a³Reinitializes a command to the state it was in when first
        returned by 'get_command_obj()': ie., initialized but not yet
        finalized.  This provides the opportunity to sneak option
        values in programmatically, overriding or supplementing
        user-supplied values from the config files and command line.
        You'll have to re-finalize the command object (by calling
        'finalize_options()' or 'ensure_finalized()') before using it for
        real.
 
        'command' should be a command name (string) or command object.  If
        'reinit_subcommands' is true, also reinitializes the command's
        sub-commands, as declared by the 'sub_commands' class attribute (if
        it has one).  See the "install" command for an example.  Only
        reinitializes the sub-commands that actually matter, ie. those
        whose test predicates return true.
 
        Returns the reinitialized command object.
        rr F) rïr!r'r9rBÚ    finalizedÚinitialize_optionsrvr>Úget_sub_commandsrN)r€r…rMr!rEÚsubs      r3rNz!Distribution.reinitialize_commandµs§€õ*    *ä˜' 7Ô+Ø"ˆLØ×*Ñ*¨<Ó8‰Gà"×3Ñ3Ó5ˆLàנҠ؈NØ×"Ñ"Ô$Ø!ˆÔØ&+ˆ ‰ lÑ#Ø ×!Ñ! 'Ô*á Ø×/Ñ/Ó1ò CØ×)Ñ)¨#Ð/AÕBð Cðˆr5có0—tj||«yr6r)r€r2Úlevels   r3r—zDistribution.announceás€Ü ‰sÕr5cóH—|jD]}|j|«Œy)z¶Run each command that was seen on the setup script command line.
        Uses the list of commands found and cache of command objects
        created by 'get_command_obj()'.
        N)ršÚ run_command)r€rs  r3Ú run_commandszDistribution.run_commandsäs%€ð
—=‘=ò    "ˆCØ × Ñ ˜SÕ !ñ    "r5cóè—|jj|«rytjd|«|j    |«}|j «|j «d|j|<y)aªDo whatever it takes to run a command (including nothing at all,
        if the command has already been run).  Specifically: if we have
        already created and run the command named by 'command', return
        silently without doing anything.  If the command named by 'command'
        doesn't even have a command object yet, create one.  Then invoke
        'run()' on that command object (or an existing one).
        Nz
running %sT)rvrwrÚinfor9Úensure_finalizedÚrun)r€r…r?s   r3rXzDistribution.run_commandîsZ€ð =‰=× Ñ ˜WÔ %Ø ä ‰˜wÔ'Ø×&Ñ& wÓ/ˆØ× Ñ Ô"؏ ‰ Œ Ø!%ˆ ‰ gÒr5cóV—t|jxs|jxsg«dkDS©Nr)rårhrkrês r3Úhas_pure_moduleszDistribution.has_pure_moduless$€Ü4—=‘=Ò9 D§O¡OÒ9°rÓ:¸QÑ>Ð>r5cóN—|jxrt|j«dkDSr_)rnrårês r3Úhas_ext_moduleszDistribution.has_ext_moduless#€Ø×ÑÒ=¤C¨×(8Ñ(8Ó$9¸AÑ$=Ð=r5cóN—|jxrt|j«dkDSr_)rlrårês r3Úhas_c_librarieszDistribution.has_c_librariess€Ø~‰~Ò9¤# d§n¡nÓ"5¸Ñ"9Ð9r5cóF—|j«xs|j«Sr6)r`rbrês r3Ú has_moduleszDistribution.has_modules s€Ø×$Ñ$Ó&Ò@¨$×*>Ñ*>Ó*@Ð@r5cóN—|jxrt|j«dkDSr_)rmrårês r3Ú has_headerszDistribution.has_headersó€Ø|‰|Ò5¤ D§L¡LÓ 1°AÑ 5Ð5r5cóN—|jxrt|j«dkDSr_)rrrårês r3Ú has_scriptszDistribution.has_scriptsrir5cóN—|jxrt|j«dkDSr_)rsrårês r3Úhas_data_fileszDistribution.has_data_filess€Ø‰Ò;¤3 t§¡Ó#7¸!Ñ#;Ð;r5cón—|j«xr$|j« xr|j« Sr6)r`rbrdrês r3Úis_purezDistribution.is_pures;€à × !Ñ !Ó #ò +Ø×(Ñ(Ó*Ð*ò +à×(Ñ(Ó*Ð*ð    
r5cór—|jj|_|jj|_|jj|_|jj|_|jj
|_|jj |_|jj|_|jj|_|jj|_    |jj|_
|jj|_ |jj|_ |jj|_ |jj|_|jj|_|jj |_|jj"|_|jj$|_|jj&|_|jj(|_|jj*|_yr6)r_Úget_nameÚ get_versionÚ get_fullnameÚ
get_authorÚget_author_emailÚget_maintainerÚget_maintainer_emailÚ get_contactÚget_contact_emailÚget_urlÚ get_licenseÚ get_licenceÚget_descriptionÚget_long_descriptionÚ get_keywordsÚ get_platformsÚget_classifiersÚget_download_urlÚ get_requiresÚ get_providesÚ get_obsoletesrês r3rÄzDistribution._&sy€Ø ŸM™M×2Ñ2ˆDŒMØ#Ÿ}™}×8Ñ8ˆDÔ Ø $§ ¡ × :Ñ :ˆDÔ Ø"Ÿm™m×6Ñ6ˆDŒOØ$(§M¡M×$BÑ$BˆDÔ !Ø"&§-¡-×">Ñ">ˆDÔ Ø(,¯ © ×(JÑ(JˆDÔ %Ø#Ÿ}™}×8Ñ8ˆDÔ Ø%)§]¡]×%DÑ%DˆDÔ "ØŸ=™=×0Ñ0ˆDŒLØ#Ÿ}™}×8Ñ8ˆDÔ Ø#Ÿ}™}×8Ñ8ˆDÔ Ø#'§=¡=×#@Ñ#@ˆDÔ  Ø(,¯ © ×(JÑ(JˆDÔ %Ø $§ ¡ × :Ñ :ˆDÔ Ø!%§¡×!<Ñ!<ˆDÔ Ø#'§=¡=×#@Ñ#@ˆDÔ  Ø$(§M¡M×$BÑ$BˆDÔ !Ø $§ ¡ × :Ñ :ˆDÔ Ø $§ ¡ × :Ñ :ˆDÔ Ø!%§¡×!<Ñ!<ˆDÕ r5rzstr | Literal[False]rArBrDrEÚ author_emailrGÚmaintainer_emailrHÚ contact_emailrIrJrKrLÚlong_descriptionz str | list[str] | Literal[False]rMrNrOzlist[str] | Literal[False]rPrQrRr6)rzMutableMapping[str, Any] | NoneÚreturnÚNone)NNrX)r›r(rŠr‹)rŠr‹)TTr&)ršr)r…r(rŠz type[Command])T)r…r(r8z Literal[True]rŠr!)r…r(r8zLiteral[False]rŠúCommand | None)r…r(r8r<rŠrŒ)F)r…r(rMr<rŠr!)r…r"rMr<rŠr")r…z str | CommandrŠr!)rVÚintrŠr‹)r…r(rŠr‹)rŠr<)/r+Ú
__module__Ú __qualname__Ú__doc__r?Ú__annotations__r@rSrrTrUrŒryrŸr§r¡rÓrèrÙrãrrärârrr(r-rôrr9r>rNrÞÚINFOr—rYrXr`rbrdrfrhrkrmrorrÄ)Ú.0Úxrs000r3r7r7Ms›…ñ ò*.€NÐ*óð#€L-óò/€OÐ+óð8*9÷1ð1Ø$%Ô˜!˜A™$Õô1ÐÐ-óð
/6°yÐ-A€LÐ*ÓAô
[ òz    ô8ò4ò.?ó&@4òHAòF 
ò`óD 4ðWYð1+ØKSó1+òf%#óN;ó"Rò2ò<
ó$CðLà48ðØðØ$1ðà    òóðððØðØ$2ðà    òóðôó:(0ðTà7<ðØðØ04ðà    òóððà=BðØ ðØ6:ðà    òóðð:?ð(Ø$ð(à    ó(ðX*1¯©ôó"ó&ó(?ó>ó:óAó6ó6ó<ó
ñó    =ð0ÓØ"Ó"Ø%Ó%Ø&Ó&Ø$Ó$Ø*Ó*Ø(Ó(Ø.Ó.Ø%Ó%Ø+Ó+Ø !Ó!Ø%Ó%Ø%Ó%Ø)Ó)Ø.Ó.Ø3Ó3Ø5Ó5Ø2Ó2Ø,Ó,Ø,Ó,Ø-Ô-ð]ùôi1s§F    r7có*—eZdZdZdZ    d$            d%d„Zd&d„Zd'd„Zd(d„Zd„Z    d)d    „Z
d)d
„Z d)d „Z e d*d „«Zd+d „Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„ZeZd+d„Zd+d„Zd,d„Zd-d„Zd.d„Zd-d„Zd,d„Zd-d„Zd+d„Z d,d„Z!d/d„Z"d,d „Z#d/d!„Z$d,d"„Z%d/d#„Z&y)0r^z]Dummy class to hold the distribution meta-data: name, version,
    author, and so forth.
    )rArBrEr†rGr‡rIrJrLr‰rOrMrDrHrˆrNÚ download_urlrPrQrRNcó,—||jt|««yd|_d|_d|_d|_d|_d|_d|_d|_    d|_
d|_ d|_ d|_ d|_d|_d|_d|_d|_yr6)Ú read_pkg_fileÚopenrArBrEr†rGr‡rIrJrLr‰rOrMrNr–rPrQrR)r€r£s  r3rŒzDistributionMetadata.__init__rs™€ð Ð Ø × Ñ œt D›zÕ *à$(ˆDŒIØ'+ˆDŒLØ&*ˆDŒKØ,0ˆDÔ Ø*.ˆDŒOØ04ˆDÔ !Ø#'ˆDŒHØ'+ˆDŒLØ+/ˆDÔ Ø04ˆDÔ !Ø48ˆDŒMØ59ˆDŒNØ7;ˆDÔ Ø,0ˆDÔ à48ˆDŒMØ48ˆDŒMØ59ˆDNr5cól‡—t|«Šdˆfd„ }ˆfd„}‰d}|d«|_|d«|_|d«|_|d«|_d|_|d    «|_d|_|d
«|_|d «|_    d ‰vr|d «|_
nd|_
|d «|_ |d«|_d‰vr|d«jd«|_ |d«|_|d«|_|dk(r(|d«|_|d«|_|d«|_yd|_d|_d|_y)z-Reads the metadata values from a file object.rAcó"•—‰|}|r|dk7r|Sy©NÚUNKNOWNr&)rAr/r2s  €r3Ú _read_fieldz7DistributionMetadata.read_pkg_file.<locals>._read_fieldsø€Ø˜‘IˆEÙ˜ )Ò+ؐ Ør5có8•—‰j|d«}|gk(ry|Sr6)Úget_all)rAÚvaluesr2s  €r3Ú
_read_listz6DistributionMetadata.read_pkg_file.<locals>._read_list•s"ø€Ø—[‘[  tÓ,ˆFؘŠ|ØØˆMr5zmetadata-versionrBÚsummaryrENrFz    home-pagerJz download-urlrLrOrÚplatformÚ
classifierú1.1rQrPrR)rAr(rŠú
str | None)rrArBrLrErGr†r‡rIrJr–r‰r˜rOrMrNrQrPrR)r€Úfileržr¢Úmetadata_versionr2s     @r3r˜z"DistributionMetadata.read_pkg_file‹s<ø€ä Ó%ˆõ    ô     ð Ð1Ñ2ÐÙ Ó'ˆŒ    Ù" 9Ó-ˆŒ Ù& yÓ1ˆÔá! (Ó+ˆŒ ؈ŒÙ'¨Ó7ˆÔØ $ˆÔÙ˜{Ó+ˆŒÙ" 9Ó-ˆŒ à ˜SÑ  Ù +¨NÓ ;ˆDÕ à $ˆDÔ á +¨MÓ :ˆÔÙ& yÓ1ˆÔà ˜Ñ Ù'¨
Ó3×9Ñ9¸#Ó>ˆDŒMá# JÓ/ˆŒÙ% lÓ3ˆÔð ˜uÒ $Ù& zÓ2ˆDŒMÙ& zÓ2ˆDŒMÙ'¨ Ó4ˆDNà ˆDŒMØ ˆDŒMØ!ˆDNr5có¨—ttjj|d«dd¬«5}|j    |«ddd«y#1swYyxYw)z.Write the PKG-INFO file into the release tree.zPKG-INFOÚwzUTF-8rÂN)r™r¢r£r¥Úwrite_pkg_file)r€Úbase_dirÚpkg_infos   r3Úwrite_pkg_infoz#DistributionMetadata.write_pkg_info¿sF€ä Ü G‰GL‰L˜ :Ó .°¸gô
ð    *à Ø × Ñ  Ô )÷    *÷    *ñ    *ús ­AÁAcó0‡—d}|js0|js$|js|js |jrd}‰j d|›d«‰j d|j «›d«‰j d|j«›d«ˆfd„}|d|j««|d    |j««|d
|j««|d |j««|d |j««|d |j«|dt|j«xsd««|ddj|j!«««|j#‰d|j%««|j#‰d|j'««|j#‰d|j)««|j#‰d|j+««|j#‰d|j-««y)z0Write the PKG-INFO format data to a file object.z1.0r¦zMetadata-Version: r“zName: z    Version: có:•—|r‰j|›d|›d«yy©Nz: r“©Úwrite)r™r‰r¨s  €r3Ú maybe_writez8DistributionMetadata.write_pkg_file.<locals>.maybe_write×s$ø€ÙØ—
‘
˜f˜X R¨ u¨BÐ/Õ0ðr5ÚSummaryz    Home-pageÚAuthorz Author-emailÚLicensez Download-URLÚ DescriptionrXÚKeywordsrÚPlatformÚ
ClassifierÚRequiresÚProvidesÚ    ObsoletesN)rPrQrRrNr–r´rqrrr}rzrxryr{rr~r¥rÚ _write_listr€rrƒr„r…)r€r¨rBrµs `  r3r¬z#DistributionMetadata.write_pkg_fileÆs½ø€àˆà MŠM؏}Š}؏~Š~Ø×ÒØ× Ò àˆGð     
‰
Ð'¨ y°Ð3Ô4Ø 
‰
V˜DŸM™M›OÐ,¨BÐ/Ô0Ø 
‰
Y˜t×/Ñ/Ó1Ð2°"Ð5Ô6ô    1ñ
    I˜t×3Ñ3Ó5Ô6ِK §¡£Ô0ِH˜d×.Ñ.Ó0Ô1ِN D×$:Ñ$:Ó$<Ô=ِI˜t×/Ñ/Ó1Ô2ِN D×$5Ñ$5Ô6ِM¤=°×1JÑ1JÓ1LÒ1RÐPRÓ#SÔTِJ §¡¨×):Ñ):Ó)<Ó =Ô>à ×ј˜z¨4×+=Ñ+=Ó+?Ô@Ø ×ј˜|¨T×-AÑ-AÓ-CÔDð     ×ј˜z¨4×+<Ñ+<Ó+>Ô?Ø ×ј˜z¨4×+<Ñ+<Ó+>Ô?Ø ×ј˜{¨D×,>Ñ,>Ó,@ÕAr5cóL—|xsg}|D]}|j|›d|›d«Œyr²r³)r€r¨rAr¡r/s     r3rÀz DistributionMetadata._write_listís3€Ø’˜2ˆØò    -ˆEØ J‰J˜$˜˜r % ¨Ð+Õ ,ñ    -r5có"—|jxsdSrœ)rArês r3rqzDistributionMetadata.get_nameôs€Øy‰yÒ%˜IÐ%r5có"—|jxsdS)Nz0.0.0)rBrês r3rrz DistributionMetadata.get_version÷s€Ø|‰|Ò&˜wÐ&r5có^—|j|j«|j««Sr6)Ú    _fullnamerqrrrês r3rsz!DistributionMetadata.get_fullnameús"€Ø~‰~˜dŸm™m›o¨t×/?Ñ/?Ó/AÓBÐBr5cón—djt|«jdd«t|d¬««S)a    
        >>> DistributionMetadata._fullname('setup.tools', '1.0-2')
        'setup_tools-1.0.post2'
        >>> DistributionMetadata._fullname('setup-tools', '1.2post2')
        'setup_tools-1.2.post2'
        >>> DistributionMetadata._fullname('setup-tools', '1.0-r2')
        'setup_tools-1.0.post2'
        >>> DistributionMetadata._fullname('setup.tools', '1.0.post')
        'setup_tools-1.0.post0'
        >>> DistributionMetadata._fullname('setup.tools', '1.0+ubuntu-1')
        'setup_tools-1.0+ubuntu.1'
        z{}-{}r[rÄF)Ústrip_trailing_zero)r,rrËr)rArBs  r3rÅzDistributionMetadata._fullnameýs4€ð~‰~Ü ˜dÓ #× +Ñ +¨C°Ó 5Ü   ¸eÔ Dó
ð    
r5có—|jSr6)rErês r3rtzDistributionMetadata.get_authors €Ø{‰{Ðr5có—|jSr6)r†rês r3ruz%DistributionMetadata.get_author_emailó€Ø× Ñ Ð r5có—|jSr6)rGrês r3rvz#DistributionMetadata.get_maintainers €Ø‰Ðr5có—|jSr6)r‡rês r3rwz)DistributionMetadata.get_maintainer_emailó€Ø×$Ñ$Ð$r5có6—|jxs |jSr6)rGrErês r3rxz DistributionMetadata.get_contacts€Ø‰Ò- $§+¡+Ð-r5có6—|jxs |jSr6)r‡r†rês r3ryz&DistributionMetadata.get_contact_emails€Ø×$Ñ$Ò9¨×(9Ñ(9Ð9r5có—|jSr6)rIrês r3rzzDistributionMetadata.get_url"s €Øx‰xˆr5có—|jSr6)rJrês r3r{z DistributionMetadata.get_license%s €Ø|‰|Ðr5có—|jSr6)rLrês r3r}z$DistributionMetadata.get_description*s€Ø×ÑÐr5có—|jSr6)r‰rês r3r~z)DistributionMetadata.get_long_description-rÍr5có"—|jxsgSr6)rOrês r3rz!DistributionMetadata.get_keywords0ó€Ø}‰}Ò" Ð"r5có&—t|d«|_y)NrO)r4rO©r€r/s  r3Ú set_keywordsz!DistributionMetadata.set_keywords3s€Ü$ U¨JÓ7ˆ r5có—|jSr6)rMrês r3r€z"DistributionMetadata.get_platforms6s €Ø~‰~Ðr5có&—t|d«|_y)NrM)r4rMr×s  r3Ú set_platformsz"DistributionMetadata.set_platforms9s€Ü% e¨[Ó9ˆr5có"—|jxsgSr6)rNrês r3rz$DistributionMetadata.get_classifiers<s€Ø×ÑÒ% 2Ð%r5có&—t|d«|_y)NrN)r4rNr×s  r3Úset_classifiersz$DistributionMetadata.set_classifiers?s€Ü'¨¨}Ó=ˆÕr5có—|jSr6)r–rês r3r‚z%DistributionMetadata.get_download_urlBrÊr5có"—|jxsgSr6)rQrês r3rƒz!DistributionMetadata.get_requiresFrÕr5cóp—ddl}|D]}|jj|«Œt|«|_yr_)Údistutils.versionpredicateÚversionpredicateÚVersionPredicater)rQ©r€r/r©r9s    r3Ú set_requiresz!DistributionMetadata.set_requiresIs3€Û)àò    ;ˆAØ × &Ñ &× 7Ñ 7¸Õ :ð    ;ä˜U› ˆ r5có"—|jxsgSr6)rPrês r3r„z!DistributionMetadata.get_providesPrÕr5có¢—|Dcgc]}|j«‘Œ}}|D]!}ddl}|jj|«Œ#||_ycc}wr_)rrârãÚsplit_provisionrP)r€r/r9r©s    r3Ú set_providesz!DistributionMetadata.set_providesSsO€Ø$)Ö*˜q—‘•Ð*ˆÐ*Øò    :ˆAÛ -à × &Ñ &× 6Ñ 6°qÕ 9ð    :ðˆ ùò +s…A có"—|jxsgSr6)rRrês r3r…z"DistributionMetadata.get_obsoletes[s€Ø~‰~Ò# Ð#r5cóp—ddl}|D]}|jj|«Œt|«|_yr_)rârãrär)rRrås    r3Ú set_obsoletesz"DistributionMetadata.set_obsoletes^s3€Û)àò    ;ˆAØ × &Ñ &× 7Ñ 7¸Õ :ð    ;ä˜e›ˆr5r6)r£z:str | bytes | os.PathLike[str] | os.PathLike[bytes] | NonerŠr‹)r¨zIO[str]rŠr‹)r­zstr | os.PathLike[str]rŠr‹)r¨zSupportsWrite[str]rŠr‹)rŠr()rAr(rBr(rŠr()rŠr§)rŠústr | list[str])r/ústr | Iterable[str]rŠr‹)rŠzstr | list[str] | None)r/z Iterable[str]rŠr‹)'r+rŽrrr`rŒr˜r¯r¬rÀrqrrrsÚ staticmethodrÅrtrurvrwrxryrzr{r|r}r~rrØr€rÛrrÞr‚rƒrær„rêr…rír&r5r3r^r^Usà„ñðÐð2RVð:ØNð:à     ó:ó22"óh*ó%BòN-ó&ó'óCðò
óð
ó$ó!óó%ó.ó:óóð€Kó ó%ó#ó8óó:ó&ó>ó!ó#ó$ó#óó$ô%r5r^có2—|Dcgc]}|dd‘Œ    c}Scc}w)zConvert a 4-tuple 'help_options' list as found in various command
    classes to the 3-tuple form required by FancyGetopt.
    rér&)rYrˆs  r3rørøfs€ð!(Ö (˜ˆC!ŠHÒ (Ð(ùÒ (s… )r/rïrŠrî)>rÚ
__future__rr´rÞr¢r®Úrer°rzÚcollections.abcrrÚemailrÚtypingrrr    r
r r r rÚpackaging.utilsrrÚ_logrÚdebugrÚerrorsrrrrÚ fancy_getoptrrÚutilrrrÚ    _typeshedrÚtyping_extensionsrrr!r"r)Útupler(rr$r‘Úcompilerðr4r7r^rør&r5r3ú<module>rsõðòõ #ãÛÛ    ÛÛ    Û
Ûß4Ý#÷    ÷    ó    ÷DåÝ÷ó÷ 9ß9Ñ9áÝ'Ý+õá K yÔ 1€    ØØ    ˆ%U˜3 ˜9Ñ% s¨CÐ/Ñ
0°%¸¸UÀ3ÈÀ9Ñ=MÈsÐ8RÑ2SÐ
SÑTñ€ ˆióðˆRZ‰ZÐ4Ó 5€
ó ÷E.ñE.÷P N%ñN%ób)r5