VULN_CHECK_I913V6 jydZddlmZddlZddlmZddlZddlZddlZddl m Z m Z ddl m Z mZmZddlmZdd lmZmZdd lmZmZej0eZGd d e ZGd de ZGdde ZGdde ZgdZdZ dZ!ejDdZ#ejDdZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+e*dzZ,d Z-d!Z.e,e.zZ/e0Z1e1jee%e1jee&e1jee(e1jee*e1jee,e1jee/ejDd"Z3d#Z4d$Z5e1Dcic]#}|jmjod%d&|%c}Z8e8jsDcic]\}}|| c}}Z:d'Z;d(Zd+Z?d,Z@d-ZAeBZCejDd.ZDd7d/ZEGd0d1eBZFd2ZGd3ZHd4ZIGd5d6eBZJycc}wcc}}w)8zzImplementation of the Metadata for Python packages PEPs. Supports all metadata formats (1.0, 1.1, 1.2, 1.3/2.1 and 2.2). )unicode_literalsN)message_from_file)DistlibException __version__)StringIO string_types text_type) interpret)extract_by_key get_extras) get_schemePEP440_VERSION_REceZdZdZy)MetadataMissingErrorzA required metadata is missingN__name__ __module__ __qualname____doc__A/usr/lib/python3.12/site-packages/pip/_vendor/distlib/metadata.pyrrs(rrceZdZdZy)MetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.Nrrrrrr sHrrceZdZdZy) MetadataUnrecognizedVersionErrorz Unknown metadata version number.Nrrrrrr$s*rrceZdZdZy)MetadataInvalidErrorzA metadata value is invalidNrrrrrr(s%rr)MetadataPKG_INFO_ENCODINGPKG_INFO_PREFERRED_VERSIONutf-81.1z \| ) Metadata-VersionNameVersionPlatformSummary DescriptionKeywords Home-pageAuthor Author-emailLicense)r&r'r(r)Supported-Platformr*r+r,r-r.r/r0 Classifier Download-URL ObsoletesProvidesRequires)r4r5r6r2r3)r&r'r(r)r1r*r+r,r-r.r/ MaintainerMaintainer-emailr0r2r3Obsoletes-Dist Project-URL Provides-Dist Requires-DistRequires-PythonRequires-External)r;r<r=r9r>r7r8r:)r&r'r(r)r1r*r+r,r-r.r/r7r8r0r2r3r9r:r;r<r=r>Private-Version Obsoleted-BySetup-Requires-Dist ExtensionProvides-Extra)r?rCr@rArB)Description-Content-Typer6r5r4)rD)Dynamic License-Filez"extra\s*==\s*("([^"]+)"|'([^']+)')c|dk(rtS|dk(rtS|dk(rtS|dvrttdtDzS|dk(r t d|dk(rt St|) N1.0r$1.2)1.32.1c32K|]}|tvs |ywN) _345_FIELDS).0fs r z%_version2fieldlist..s"RkQk=Q1ks 2.0z+Metadata 2.0 is withdrawn and not supported2.2) _241_FIELDS _314_FIELDSrNtuple _566_FIELDS ValueError _643_FIELDSr)versions r_version2fieldlistr[vsw% E  E  N "U"Rk"RRRR E FGG E  *7 33rcd}g}|jD]\}}|gddfvr|j| gd}|D]>}|tvr+d|vr'|jdtj d||t vr+d|vr'|jdtj d||tvr+d |vr'|jd tj d ||tvr+d |vr'|jd tj d ||tvr0d |vr,|dk7r'|jd tj d||tvsd|vs|jdtj d|At|dk(r|dSt|dk(r!tj d|tdd|vxr ||t}d |vxr ||t}d |vxr ||t}d|vxr ||t} t!|t!|zt!|zt!| zdkDr td|s|s|s| st"|vrt"S|ry|ry |ry y)z5Detect the best version depending on the fields used.c|D]}||vsyy)NTFr)keysmarkersmarkers r _has_markerz"_best_version.._has_markersF~rUNKNOWNN)rHr$rIrJrKrSrHzRemoved 1.0 due to %sr$zRemoved 1.1 due to %srIzRemoved 1.2 due to %srJzRemoved 1.3 due to %srKr+zRemoved 2.1 due to %srSzRemoved 2.2 due to %srrz)Out of options - unknown metadata set: %szUnknown metadata setz,You used incompatible 1.1/1.2/2.1/2.2 fields)itemsappendrTremoveloggerdebugrUrNrWrYlenr _314_MARKERS _345_MARKERS _566_MARKERS _643_MARKERSintr") fieldsrar^keyvaluepossible_versionsis_1_1is_1_2is_2_1is_2_2s r _best_versionrvsq Dlln U RD) )  C% C k !e/@&@  $ $U + LL0# 6 k !e/@&@  $ $U + LL0# 6 k !e/@&@  $ $U + LL0# 6 k !e/@&@  $ $U + LL0# 6 k !e/@&@m#!((/ 4c: k !e/@&@  $ $U + LL0# 6'2 " ##  1 $ @&I#$:;;' ' KKl,KF ' ' KKl,KF ' ' KKl,KF ' ' KKl,KF 6{S[ 3v;.Vr:r1rArCrBrF)r:)r,)r.r7r*r+z[^A-Za-z0-9.]+c|r?G $$rceZdZdZ d dZdZdZdZdZdZ d Z d Z d Z d Z d Zd!dZdZdZdZdZd!dZd!dZd"dZdZefdZd!dZd!dZdZdZdZdZdZ dZ!y)#LegacyMetadataaoThe legacy metadata of a release. Supports versions 1.0, 1.1, 1.2, 2.0 and 1.3/2.1 (auto-detected). You can instantiate the class with one of these arguments (or none): - *path*, the path to a metadata file - *fileobj* give a file-like object with metadata as content - *mapping* is a dict-like object - *scheme* is a version scheme name Nc|||gjddkr tdi|_g|_d|_||_||j |y||j|y|"|j||jyy)N'path, fileobj and mapping are exclusive) count TypeError_fieldsrequires_files _dependenciesschemeread read_fileupdateset_metadata_version)selfpathfileobjmappingrs r__init__zLegacyMetadata.__init__ s '7 # ) )$ /! 3EF F  !   IIdO  NN7 #  KK  % % '!rcHt|j|jd<yNr&)rvrrs rrz#LegacyMetadata.set_metadata_versions+8+F '(rc2|j|d|dy)Nz:  )write)rrrrps r _write_fieldzLegacyMetadata._write_fields D%01rc$|j|SrM)getrrs r __getitem__zLegacyMetadata.__getitem__sxx~rc&|j||SrM)set)rrrps r __setitem__zLegacyMetadata.__setitem__"sxxe$$rcr|j|} |j|=y#t$r t|wxYwrM) _convert_namerKeyError)rr field_names r __delitem__zLegacyMetadata.__delitem__%s<''-  ! Z( !4.  !s !6c\||jvxs|j||jvSrM)rrrs r __contains__zLegacyMetadata.__contains__,s/ $9""4(DLL8 :rc|tvr|S|jddj}tj ||S)Nrwrx) _ALL_FIELDSr~lower _ATTR2FIELDrrs rrzLegacyMetadata._convert_name0s9 ; K||C%++-tT**rc(|tvs|tvrgSy)Nrb) _LISTFIELDS_ELEMENTSFIELDrs r_default_valuezLegacyMetadata._default_value6s ; $."8Ircv|jdvrtjd|Stjd|S)NrHr$r)metadata_version_LINE_PREFIX_PRE_1_2r}_LINE_PREFIX_1_2rrps r_remove_line_prefixz"LegacyMetadata._remove_line_prefix;s6  N 2'++D%8 8#''e4 4rc2|tvr||St|rM)rAttributeErrorrs r __getattr__zLegacyMetadata.__getattr__As ; : T""rc(t|d|d|S)zhReturn the distribution name with version. If filesafe is true, return a filename-escaped form.r'r()r)rfilesafes r get_fullnamezLegacyMetadata.get_fullnameLs%T&\4 ?HMMrc4|j|}|tvS)z+return True if name is a valid metadata key)rrrs ris_fieldzLegacyMetadata.is_fieldRs!!$'{""rc4|j|}|tvSrM)rrrs ris_multi_fieldzLegacyMetadata.is_multi_fieldWs!!$'{""rctj|dd} |j||jy#|jwxYw)z*Read the metadata values from a file path.rr#encodingN)codecsopenrclose)rfilepathfps rrzLegacyMetadata.read[s8 [[3 9  NN2  HHJBHHJs <Ac t|}|d|jd<tD]}||vr|tvrU|j |}|t vr)|'|Dcgc]}t |jd}}|j||e||}|m|dk7ss|j|||j}|r||d<y|d|d<ycc}w)z,Read the metadata values from a file object.zmetadata-versionr&N,rbr+) rrrrget_all_LISTTUPLEFIELDSrVsplitr get_payload)rfileobmsgfieldvaluesrpbodys rrzLegacyMetadata.read_filecs'+./A+B '(!EC #U+,,1CCIJ6%eEKK$456FJ'E $));HHUE*!" &*d]]0C]Ks!C ctj|dd} |j|||jy#|jwxYw)z&Write the metadata fields to filepath.wr#rN)rr write_filer)rr skip_unknownrs rrzLegacyMetadata.writes: [[3 9  OOB - HHJBHHJs =Ac|jt|dD]}|j|}|r |dgdgfvr|tvr#|j ||dj |J|t vr;|dk(r3|jdvr|jdd}n|jdd}|g}|tvr|Dcgc]}dj |}}|D]}|j |||y cc}w) z0Write the PKG-INFO format data to a file object.r&rbrr+rrr%z |N) rr[rrrjoinrrr~r)r fileobjectrrrrps rrzLegacyMetadata.write_files !!#'-?(@AEXXe_F9b9+*F F&!!*eSXXf5EFK'M),,>!'l!C!'l!C ((7=>ve#((5/v>!!*eU; %B ?s8C/c fd}|snAt|dr"|jD]}||||n|D]\}}||||r"|jD]\}}|||yy)aSet metadata values from the given iterable `other` and kwargs. Behavior is like `dict.update`: If `other` has a ``keys`` method, they are looped over and ``self[key]`` is assigned ``other[key]``. Else, ``other`` is an iterable of ``(key, value)`` iterables. Keys that don't match a metadata field or that have an empty value are dropped. c`|tvr%|r"jj||yyyrM)rrr)rorprs r_setz#LegacyMetadata.update.._sets.k!e++C0%8',!rr^N)hasattrr^rc)rotherkwargsrkvs` rrzLegacyMetadata.updatesx 9  UF #ZZ\Qa!"1Q   1Q ' rc|j|}|tvs|dk(rVt|ttfs@t|t r-|j dDcgc]}|j}}n7g}n4|tvr,t|ttfst|t r|g}ng}tjtjr|d}t|j}|tvrF|D|D]>}|j!|j ddr'tj#d|||@ng|t$vr,|*|j'|sLtj#d|||n3|t(vr+|)|j+|stj#d||||t,vr|d k(r|j/|}||j0|<ycc}w) z"Control then set a metadata field.r)rr'N;rz$'%s': '%s' is not valid (field '%s')z.'%s': '%s' is not a valid version (field '%s')r+)rr isinstancelistrVr rstriprrf isEnabledForloggingWARNINGrr_PREDICATE_FIELDSis_valid_matcherwarning_VERSIONS_FIELDSis_valid_constraint_list_VERSION_FIELDSis_valid_version_UNICODEFIELDSrr)rrrpr project_namers rrzLegacyMetadata.sets!!$' ^ #tz'954-0%.,1KK,<=,A!221773<?CB(!T3))e.?66u=NN#S#/>(U->..u5NN#S#/> > !}$007" TG>sG c|j|}||jvr|tur|j|}|S|tvr|j|}|S|t vrQ|j|}|gSg}|D]5}|t vr|j||j|d|df7|S|tvr0|j|}t|tr|jdS|j|S)zGet a metadata field.rrr) rr_MISSINGrrrrrdrrr r)rrdefaultrpresvals rrzLegacyMetadata.gets!!$' t|| #("--d3N > !LL&EL [ LL&E} C//JJsOJJAA/0  J ^ #LL&E%.{{3''||D!!rc |jgg}}dD]}||vs|j||r$|gk7rddj|z}t|dD]}||vs|j||ddk7r||fSt |j  fd}t |ft jft jffD]A\}}|D]7} |j| d} | || r!|jd | d | 9C||fS) zkCheck if the metadata is compliant. If strict is True then raise if no Name or Version are provided)r'r(zmissing required metadata: %s, )r-r.r&rIc^|D]'}j|jddr'yy)NrrFT)rr)rprrs rare_valid_constraintsz3LegacyMetadata.check..are_valid_constraintss/..qwws|A? rNzWrong value for 'z': ) rrdrrrrrrrrrr) rstrictmissingwarningsattrrrrn controllerrrprs @rcheckzLegacyMetadata.checks5 !!#'D4t$( gm1DIIg4FFC&s+ ++D4t$, " #u ,H$ $DKK(  %67L#M$4$*$C$C$E$3$*$;$;$=#> FJ  -$Z->OO%$OP #>  rc|jt|d}i}|D]O}|r||jvst|}|dk7r ||||<+||Dcgc]}dj |c}||<Q|Scc}w)aReturn fields as a dict. Field names will be converted to use the underscore-lowercase style instead of hyphen-mixed case (i.e. home_page instead of Home-page). This is as per https://www.python.org/dev/peps/pep-0566/#id17. r& project_urlr)rr[r _FIELD2ATTRr)r skip_missingrndatarrous rtodictzLegacyMetadata.todict1s !!##D);$<= J:#=!*--' $Z 0DI6::6F G6F!6F GDI ! !HsA7cL|ddk(rdD] }||vs||= |dxx|z cc<y)Nr&r$)r4r6r5r<r)r requirementsrs radd_requirementszLegacyMetadata.add_requirementsHs: " #u ,>D=U ? _-rc0tt|dSr)rr[rs rr^zLegacyMetadata.keysSs&t,>'?@AArc#>K|jD]}|ywrMr^rros r__iter__zLegacyMetadata.__iter__Vs99;CIscN|jDcgc]}|| c}Scc}wrMrrs rrzLegacyMetadata.valuesZs$%)YY[1[cS [111s "cR|jDcgc] }|||f c}Scc}wrMrrs rrczLegacyMetadata.items]s),0IIK8KSd3i K888s$cjd|jjd|jd|jdS)N) __class__rrrZrs r__repr__zLegacyMetadata.__repr__`s&#~~66 #||- -rNNNrFrM)"rrrrrrrrrrrrrrrrrrrrrrrrrrrr rr^rrrcrrrrrrs9=!( G2%!:+  5 #N # #D8<28*#X!)":*!X..B29-rrz pydist.jsonz metadata.jsonMETADATAcjeZdZdZej dZej dejZej dejZ e Z ej dZ dZ dezZddd d Zd Zd Zedfed fe d fe d fe d fd ZdZ d5dZedZdefZdefZdefdefeeedefeeeedefddd Z[[dZd6dZdZe dZ!e dZ"e"jFdZ"d7dZ$e d Z%e d!Z&e&jFd"Z&d#Z'd$Z(d%Z)d&Z*d'd(d)d*d+d,d-d.d/dd0 Z+d1Z,d8d2Z-d3Z.d4Z/y)9r z The metadata of a release. This implementation uses 2.1 metadata where possible. If not possible, it wraps a LegacyMetadata instance which handles the key-value metadata format. z ^\d+(\.\d+)*$z!^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$z^[A-Z]([0-9A-Z-]*[0-9A-Z])?$z .{1,2047}rRz distlib (%s)r)legacy)rrZsummaryzqname version license summary description author author_email keywords platform home_page classifiers download_urlzwextras run_requires test_requires build_requires dev_requires provides meta_requires obsoleted_by supports_environments)rrrZr"dynamic)_legacy_datarNc|||gjddkr tdd|_d|_||_| |j ||||_yd}|r&t|d5}|j}dddn|r|j}||j|jd|_yt|ts|jd} t!j"||_|j |j|y#t $r%t|||_|jYywxYw#1swYxYw#t$$r.tt'|||_|jYywxYw)Nrr)rrrbr generatorr#)rr)rrr$r%r_validate_mappingrrvalidaterrMETADATA_VERSION GENERATORrr decodejsonloadsrXr)rrrrrr rPs rrzMetadata.__init__s[ '7 # ) )$ /! 3EF F     &&w7$ D$%668D&%||~|)-(=(=!% "$ 2;;w/D $!%D!1DJ**4::v>+4 -gfM   &% " $$2(4.9?$ADLMMO $s/D %D<6E +D98D9<E4E?>E?)rrZlicensekeywordsr"r<rArCr2)r3N)r&N) run_requiresbuild_requires dev_requires test_requires meta_requiresextrasmodules namespacesexportscommands classifiers source_urlrcntj|d}tj|d}||vr#||\}}|jr,| |dn|}|S|jj|}|S|dn|}|dvr|jj||}|St}|}|jjd} | r|dk(r| jd|}nm|dk(r&| jd} | rU| j||}nB| jd } | s|jjd } | r| j||}||ur|}|S||vrtj||}|S|jr|jj|}|S|jj|}|S) N common_keys mapped_keysr<r;r9r:r= extensionsr<python.commandsr=python.detailspython.exports)object__getattribute__r$rr%) rrocommonmappedlkmakerresultrpsentinelds rrHzMetadata.__getattribute__s((}=((}= &=s IB||:%*]TFD A"\\--b1F@ =!& 57..!ZZ^^C7F6 1 &xH%F |4A*,%&UU+"Ga'"&"#%%.F":!"}!5!&/&CEMM$"7"7f)rCrEr=cJd}|jr |jrJt}|j}|jj D]<\}}t |t s||vs||||<$|}d}|D]} ||} |s8|||<>||j|jz} ||j|jz} |jrt|j|d<t| |d<t| |d<|S#ttf$rd}YwxYw)Nc$t}|D]}|jd}|jd}|d}|D]R}|s|s|j|d}|rd|z}|r |r d|d|}n|}|jdj||fT|S) Nrfrgrhrz extra == "%s"(z) and r)rraddr)entriesrorqrfrlrlistrr`s rprocess_entriesz,Metadata._to_legacy..process_entriessEEgeeM** Au ! !# %4u%)rrZrrr)rrrZs rrzMetadata.__repr__0sDyy'K,,.,$(NN$;$;$($9$94J JrrrM)NN)NNFT)0rrrrrecompileMETADATA_VERSION_MATCHERI NAME_MATCHERFIELDNAME_MATCHERrVERSION_MATCHERSUMMARY_MATCHERr,rr-rzr}rvrR __slots__rrr@r none_listdict none_dictrArHrWr[propertyr^r`setterrnrtrwr*r+r rsrrrrrrrrr r js- *rzz*:;2::A244HL" #A244H'O bjj-O,IN !J/O 6r:{+#[1#[1%{3 /I8<!+$ZKLKt It I)$/0$7!""#T*$d+,6K 9)VJ%(NDD__++ (T DD %% /<<5>$BMAIBP$9E N0d.42"Jrr r)Kr __future__rrrrr/rrrrrcompatrr r r_r utilr r rZrr getLoggerrrfrrrr__all__r!r"rrrrTrUrirNrj _426_FIELDS _426_MARKERSrWrkrlrYrrrEXTRA_REr[rvrr~rrcr rrrrrrrrGrr|rrMETADATA_FILENAMEWHEEL_METADATA_FILENAMELEGACY_METADATA_FILENAMEr )rrrs000rrsi ( #  ,55,2   8 $)+)I,I+'7+&+& J#2::n-!rzz,/ '  7 3 ! 4 BB - * L( e ; ; ; ; ; ; 2::? @4$Lb6A5@TDJJLc"D([ /:.?.?.AB.A{tUud{.AB H'> $C 8 BJJ' (  %e-Ve-P ")%JJvJJe Cs (G- G2