hyb
2026-01-30 44480e71b27aa9d4cb8441f50c873f1b110e9691
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
Ë
?ñúhãó—dZddlmZddlZddlZddlZddlZddlZddl    m
Z
ddl m Z ddl mZmZmZmZddlmZdd    „Zej*dd
„«Zej/e«dd „«Z                dd „Zdd „Zdd„Zdd„Zdd„Z                dd„Zdd„Z y)z2
Tools for converting old- to new-style metadata.
é)Ú annotationsN)ÚMessage)ÚParser)Ú    GeneratorÚIterableÚIteratorÚLiteralé)Ú Requirementcó.—|xr|jd« S)Nú#)Ú
startswith)Ústrs úAH:\Change_password\venv_build\Lib\site-packages\wheel/metadata.pyÚ    _nonblankrs€Ø Ò *s—~‘~ cÓ*Ð*Ð*ócó\—tjjtt|««S)a
    Yield valid lines of a string or iterable.
    >>> list(yield_lines(''))
    []
    >>> list(yield_lines(['foo', 'bar']))
    ['foo', 'bar']
    >>> list(yield_lines('foo\nbar'))
    ['foo', 'bar']
    >>> list(yield_lines('\nfoo\n#bar\nbaz #comment'))
    ['foo', 'baz #comment']
    >>> list(yield_lines(['foo\nbar', 'baz', 'bing\n\n\n']))
    ['foo', 'bar', 'baz', 'bing']
    )Ú    itertoolsÚchainÚ from_iterableÚmapÚ yield_lines)Úiterables rrrs €ô ?‰?× (Ñ (¬¬[¸(Ó)CÓ DÐDrcón—ttttj|j «««S©N)ÚfilterrrrÚstripÚ
splitlines)Útexts rÚ_r )s!€ä ”)œS¤§¡¨D¯O©OÓ,=Ó>Ó ?Ð?rc#óþK—d}g}t|«D]a}|jd«r=|jd«r |s|r||f–—|ddj«}g}ŒEt    d|«‚|j |«Œc||f–—y­w)arSplit a string or iterable thereof into (section, content) pairs
    Each ``section`` is a stripped version of the section header ("[section]")
    and each ``content`` is a list of stripped lines excluding blank lines and
    comment-only lines.  If there are any such lines before the first section
    header, they're returned in a first ``section`` of ``None``.
    Nú[ú]r
éÿÿÿÿzInvalid section heading)rrÚendswithrÚ
ValueErrorÚappend)ÚsÚsectionÚcontentÚlines    rÚsplit_sectionsr,.sèø€ð€GØ€GܘA“ò
!ˆØ ?‰?˜3Ô Ø}‰}˜SÔ!Ù™gØ! 7Ð*Ò*ؘq ˜*×*Ñ*Ó,Ø‘ä Ð!:¸DÓAÐAà N‰N˜4Õ  ð
!ð 7Ð
Óùs‚A;A=cóL—tjdd|«j«S)z°Convert an arbitrary string to a standard 'extra' name
    Any runs of non-alphanumeric characters are replaced with a single '_',
    and the result is always lowercased.
    z[^A-Za-z0-9.-]+r )ÚreÚsubÚlower)Úextras rÚ
safe_extrar2Is!€ô
6‰6Ð# S¨%Ó 0× 6Ñ 6Ó 8Ð8rcó0—tjdd|«S)zŽConvert an arbitrary string to a standard distribution name
    Any runs of non-alphanumeric/. characters are replaced with a single '-'.
    z[^A-Za-z0-9.]+ú-)r.r/)Únames rÚ    safe_namer6Qs€ô 6‰6Ð" C¨Ó .Ð.rcóî—|jrd|jzSg}|jD]*}|j|j|jz«Œ,|rddj t |««zSy)zFReturn the version specifier for a requirement in PEP 345/566 fashion.z @ ú ú,Ú)ÚurlÚ    specifierr'ÚoperatorÚversionÚjoinÚsorted)Ú requirementÚ requires_distÚspecs   rÚrequires_to_requires_distrDXsn€à‡‚ؐ{—‘Ñ&Ð&à!€MØ×%Ñ%ò;ˆØ×јTŸ]™]¨T¯\©\Ñ9Õ:ð;ñؐS—X‘Xœf ]Ó3Ó4Ñ4Ð4àrc#óæK—|D]h}t|«}t|«}djtd„|jD«««}|rd|›d}t |j «|z|z–—Œjy­w)z=Yield Requires-Dist: strings for parsed requirements strings.r9c3ó2K—|]}t|«–—Œy­wr)r2)Ú.0Úes  rú    <genexpr>z'convert_requirements.<locals>.<genexpr>lsèø€Ò R°1¤¨A§Ñ Rùs‚r"r#N)r rDr?r@Úextrasr6r5)Ú requirementsÚreqÚparsed_requirementrCrJs     rÚconvert_requirementsrNgsyèø€àòAˆÜ(¨Ó-ÐÜ(Ð);Ó<ˆØ—‘œ&Ñ RÐ8J×8QÑ8QÔ RÓRÓSˆÙ ؘ˜ ]ˆFäÐ*×/Ñ/Ó0°6Ñ9¸DÑ@Ó@ñAùs‚A/A1c#ó2K—|j«D]€\}}d}|xsd}d|vr|jdd«\}}t|«}|rd|f–—|rd|zdz}|d|›dz }|rd    |z}t|«D]}t    t ||z««}d
|f–—Œ!Œ‚y ­w) a,
    Convert requirements from a setup()-style dictionary to
    ('Requires-Dist', 'requirement') and ('Provides-Extra', 'extra') tuples.
 
    extras_require is a dictionary of {extra: [requirements]} as passed to setup(),
    using the empty extra {'': [requirements]} to hold install_requires.
    r:ú:r
úProvides-Extraú(z) and z
extra == 'ú'z ; ú Requires-DistN)ÚitemsÚsplitr2rNrr )Úextras_requirer1ÚdependsÚ    conditionÚnew_reqÚ canonical_reqs      rÚgenerate_requirementsr\ssÊèø€ð)×.Ñ.Ó0ò1‰ˆˆw؈    Ø’ ˜ˆØ %‰<Ø$Ÿ{™{¨3°Ó2Ñ ˆE9ä˜5Ó!ˆÙ Ø" EÐ)Ò )ÙØ )™O¨hÑ6    Ø ˜: e W¨AÐ.Ñ .ˆIá Ø     Ñ)ˆIä+¨GÓ4ò    1ˆGܤ ¨G°iÑ,?Ó @ÓAˆMØ! =Ð0Ó 0ñ    1ñ!1ùs‚BBc
ó —t|d¬«5}t«j|«}ddd«jdd«|d=|d=tj
j |d«}tj
j|«rvt|d¬«5}|j«}ddd«tt«d    „¬
«}|D]4\}}    t||    i«D]\}
} |
| f|j«vsŒ| ||
<Œ!Œ6|d } | rq|d j«} d j | d j«tj d j | dd««d f«}|j#|«|d =|S#1swYŒQxYw#1swYŒàxYw)zN
    Convert .egg-info directory with PKG-INFO to the Metadata 2.1 format
    zutf-8)ÚencodingNzMetadata-Versionz2.1rQrTz requires.txtcó—|dxsdS)Nrr:©)Úxs rú<lambda>z%pkginfo_to_metadata.<locals>.<lambda>¢s€ÈQÈqÉTÊZÐUW€r)ÚkeyÚ Descriptionú
rr
)ÚopenrÚparseÚreplace_headerÚosÚpathr?ÚexistsÚreadr@r,r\rUrÚlstripÚtextwrapÚdedentÚ set_payload)Ú egg_info_pathÚ pkginfo_pathÚheadersÚpkg_infoÚ requires_pathÚ requires_fileÚrequiresÚparsed_requirementsr1ÚreqsrcÚvalueÚ descriptionÚdescription_linesÚdedented_descriptions               rÚpkginfo_to_metadatar~’s•€ô
ˆl WÔ    -ð+°Ü“8—>‘> 'Ó*ˆ÷+ð ×ÑÐ.°Ô6àÐ!Ð"ؐÐ!Ü—G‘G—L‘L °Ó?€MÜ    ‡ww‡~~mÔ$Ü -¨'Ô 2ð    ,°mØ$×)Ñ)Ó+ˆH÷    ,ô%¤^°HÓ%=ÑCWÔXÐØ.ò    *‰KˆE4Ü3°U¸D°MÓBò *‘
Uؘ< x§~¡~Ó'7Ò7Ø$)H˜S’Mñ *ð    *ð
˜=Ñ)€KÙØ$ ]Ñ3×>Ñ>Ó@ÐØ#Ÿy™yð" !Ñ$×+Ñ+Ó-Ü—‘ §    ¡    Ð*;¸A¸BÐ*?Ó @ÓAØð ó 
Ðð    ×ÑÐ1Ô2Ø ]Ð #à €O÷C+ñ+ú÷    ,ð    ,úsŽE7ÂFÅ7FÆF )rrÚreturnzbool | Literal[''])rz Iterable[str]rú Iterator[str])rrrr€)r(zstr | Iterator[str]rz3Generator[tuple[str | None, list[str]], None, None])r1rrr)r5rrr)rAr rr)rKz    list[str]rr€)rWzdict[str | None, list[str]]rzIterator[tuple[str, str]])rqrrrrrr)!Ú__doc__Ú
__future__rÚ    functoolsrÚos.pathrir.rnÚ email.messagerÚ email.parserrÚtypingrrrr    Úvendored.packaging.requirementsr rÚsingledispatchrÚregisterrr r,r2r6rDrNr\r~r`rrú<module>r‹s³ðñõ#ãÛÛÛ    ÛÝ!Ýß9Ó9å8ó+ð ×ÑòEóðEð" ×ѐcÓò@óð@ðØðà8óó69ó/ó ó    Að1Ø/ð1àó1ô>%r