+
    hQ                    b   ^ RI Ht ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H
t
Ht ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtHt ^ RI H!t!H"t" ^ RI#H$t$H%t% ^ RI&H't'H(t( ^ RI)H*t* ^RI+H,t,H-t- ].! RRRRRRRR.R7      t/]P`                  Pc                  R?]Pd                  ! RRRR7      ]Pd                  ! RRR R7      ]Pd                  ! R!RR"R7      ]Pd                  ! R#R$R%R7      ]Pd                  ! R&R'R(R7      34      R) 4       t3R* t4]P`                  Pc                  R@]4! 4       4      R+ 4       t5R, t6]P`                  Pc                  R@]6! 4       4      R- 4       t7 ! R. R/4      t8 ! R0 R14      t9R2 t:R3 R4 lt;R5 R6 lt<R7 R8 lt=R9 R: lt>RAR; R< llt?R= R> lt@R# )B    )annotationsN)message_from_string)	Generator)EmailMessageMessage)Parser)EmailPolicy)cleandoc)Path)Mock)Metadata)Requirement)_reqssic)rfc822_escaperfc822_unescape)egg_infowrite_requirements)expandsetupcfg)Distribution)retrieve_fileurls_from_filepackagez0.0.1zFoo Barzfoo@bar.netzLong
descriptionzShort descriptiononetwo)nameversionauthorauthor_emaillong_descriptiondescriptionkeywordszJust a single linesingle_line)idz%Multiline
Text
without
extra indents
	multilinez,Multiline
    With

additional
  indentationmultiline_with_indentationz  Leading whitespacezLeading whitespaceremove_leading_whitespacez-  Leading whitespace
In
    Multiline commentz+Leading whitespace
In
    Multiline comment#remove_leading_whitespace_multilinec                P    T;'       g    T \        \        V 4      4      8X  g   Q hR # N)r   r   contentresults   &&E/usr/lib/python3/dist-packages/setuptools/tests/test_core_metadata.pytest_rfc822_unescaper0   '   s$    > g/-2H"IIII    c                 z   \         p \        P                  ! \        V 4      pR V! 4       3RV! RR7      3RV! . R+OR7      3RV! RR7      3R	V! R
R7      3\        P
                  ! RV! \        RR7      R7      \        P                  P                  RR7      R7      RV! RR7      3RV! RR7      3RV! RR7      3\        P
                  ! RV! RR.R7      \        P                  P                  RR7      R7      R \        RR!R"R#7      3R$\        RR!R%R&7      3R'\        RR!R(7      3R)\        R\        R*4      R(7      3.# ),zMetadata version 1.0z,Metadata Version 1.0: Short long descriptionzShort long description)r!   z!Metadata version 1.1: Classifiers)classifiersz"Metadata version 1.1: Download URLzhttps://example.com)download_urlz%Metadata Version 1.2: Requires-Pythonz>=3.7)python_requiresz!Metadata Version 1.2: Project-Urlzhttps://example.bar)Fooproject_urlsz"Issue #1578: project_urls not read)reason)marksz3Metadata Version 2.1: Long Description Content Typeztext/x-rst; charset=UTF-8)long_description_content_typeLicenseMIT)licensezLicense multilinez+This is a long license 
over multiple linesz$Metadata Version 2.1: Provides Extrafoobarprovides_extraszprovides_extras not readzMissing authorz1.0.0zsnorri@sturluson.name)r   r   r    zMissing author e-mailzSnorri Sturluson)r   r   r   zMissing author and e-mail)r   r   zBypass normalized versionz1.0.0a)z#Programming Language :: Python :: 3z%Programming Language :: Python :: 3.7z&License :: OSI Approved :: MIT License)	EXAMPLE_BASE_INFO	functoolspartialdictpytestparammarkxfailr   )baseparamss     r/   __read_test_casesrM   I   s   DtT*F 
 *:!9	
 0		
 12	
 4 '	
 	/)> ?@++##; $ 	
 B.I	
 	
  F	
 	2E5>2++##+E#F	
 4	
 $)	
 (	
 (H	
gZ Zr1   c                   \        V4      pVP                  pVP                  p\        P                  ! 4       pVP                  V4       VP                  ^ 4       VP                  4       p\        V4      '       g   Q hVP                  ^ 4       V! 4       pVP                  V4       RVP                  3RVP                  3RVP                  3RVP                  3RVP                  3RVP                  3RVP                   3RVP"                  3R	VP$                  3R
VP&                  3RVP(                  3RVP*                  3RVP,                  3RVP.                  3RR 3RR 3.pV F  w  rV
! V4      V
! V4      8X  d   K  Q h	  R# )r   r   r   r   r    metadata_versionprovidesr"   r!   r4   r#   	platforms	obsoletesrequiresr3   r8   c                    \        V R / 4      # r7   getattrss   &r/   <lambda>$test_read_metadata.<locals>.<lambda>   s    71nb#Ar1   rB   c                    \        V R / 4      # rA   rU   rW   s   &r/   rY   rZ      s    ga1BB&Gr1   N)r   metadata	__class__ioStringIOwrite_pkg_fileseekread_valid_metadataread_pkg_fileget_nameget_versionget_contactget_contact_emailget_metadata_versionget_providesget_descriptionget_long_descriptionget_download_urlget_keywordsget_platformsget_obsoletesget_requiresget_classifiers)r   attrsdistmetadata_out
dist_classPKG_INFOpkg_infometadata_intested_attrsattrgetters   &&         r/   test_read_metadatar}      s   D==L''J {{}H)MM!}}H8$$$$MM!,Kh' 
$$%	J**+	:))*	556	Z<<=	Z,,-	
223	Z<<=	445	Z,,-	j../	j../	Z,,-	
223	AB	GH!L& %k"f\&:::: %r1   c                 2   R RRRRR/p R pRV P                  4       3RV! V R	R
/4      3RV! V R	R
RR/4      3RV! V RR/4      3RV! V RRRR/4      3RV! V R	R
RR/4      3RV! V R	R
RRRRRR/4      3RV! V RRRR/4      3RV! V R	R/4      3RV! V RR/4      3.
# )r   r   r   z1.0r"   xxxc                H    V P                  4       p V P                  V4       V # r+   )copyupdate)d1d2s   &&r/   merge_dicts,__maintainer_test_cases.<locals>.merge_dicts   s    WWY
		"	r1   zNo author, no maintainerz!Author (no e-mail), no maintainerr   zAuthor NamezAuthor (e-mail), no maintainerr    zauthor@name.comz!No author, maintainer (no e-mail)
maintainerzMaintainer NamezNo author, maintainer (e-mail)maintainer_emailzmaintainer@name.comz)Author (no e-mail), Maintainer (no-email)z$Author (e-mail), Maintainer (e-mail)z*No author (e-mail), no maintainer (e-mail)zAuthor unicodeu	   鉄沢寛zMaintainer unicodeu   Jan Łukasiewicz)r   )rs   r   s     r/   __maintainer_test_casesr      sO   Y	5-GE 
$UZZ\2/-89	

 --ARS	
 0.?@A	

 - "3&(=		
 8-?PQ	
 3m"$5 "3&(=		
 9"$5&(=		
 
;ux.EFG	{5<AS2TUVo8 8r1   c                   R RRRRRRR/p\        V4      pVP                  R4      p\        V4      pVP                  P	                  V4       \        \        VP                  R	4      4      R
RR7      ;_uu_ 4       pVP                  4       pRRR4       \        X4      '       g   Q hVP                  4       p	\        \        RV	RR 4      4      p
\        V
4      p\        V
4      \        V4      8X  g   Q hVP                  4        FU  w  rVP                  VR4      pVf,   V
 F#  pVP!                  VR,           4      '       g   K#  Q h	  KF  V RV 2pW9   d   KU  Q h	  R#   + '       g   i     L; i)r   Authorr    zAuthor-emailr   
Maintainerr   zMaintainer-emailrx   PKG-INFOrutf-8encodingN:z: )r   mkdirstrr\   write_pkg_infoopenjoinrb   rc   
splitlineslistfiltersetlenitemsget
startswith)r   rs   tmpdirtested_keysrt   fnfn_sfrx   raw_pkg_lines	pkg_linespkg_lines_setfkeydkeyvallines   &&&             r/   test_maintainer_authorr     sU    	(l.	K D	j	!Br7DMM  &	c"''*%&g	>	>!668 
? 8$$$$ '')MVD-"456I	NM y>S////!'')
iid#;!??4#:6666 " V2cU#D((( * 
?	>s   ;E  E0	c                      ] tR tRtR tR t]! ]4      P                  t	]	R,          t
]P                  ! R.]! ]
4      OR7      R 4       t]P                  P                   R 4       tR	tR# )
#TestParityWithMetadataFromPyPaWheeli@  c                	N    \        R/ \        BR RRRRRRR. //B p\        V4      # )	r5   z>=3.8install_requiresa,  
            packaging==23.2
            more-itertools==8.8.0; extra == "other"
            jaraco.text==3.7.0
            importlib-resources==5.10.2; python_version<"3.8"
            importlib-metadata==6.0.0 ; python_version<"3.8"
            colorama>=0.4.4; sys_platform == "win32"
            extras_requiretestinga  
                    pytest >= 6
                    pytest-checkdocs >= 2.4
                    tomli ; \
                            # Using stdlib when possible
                            python_version < "3.11"
                    ini2toml[lite]>=0.9
                    other )rF   rC   r   )selfrs   s   & r/   base_example0TestParityWithMetadataFromPyPaWheel.base_exampleA  sP     

 $
	
   

2 E""r1   c                	    V P                  4       p\        V4      p\        V4      '       g   Q h. ROpV F  pWS9   d   K  Q h	  R# )Metadata-Version:N)r   zRequires-Python: >=3.8zProvides-Extra: otherzProvides-Extra: testingzDRequires-Dist: tomli; python_version < "3.11" and extra == "testing"z6Requires-Dist: more-itertools==8.8.0; extra == "other"z6Requires-Dist: ini2toml[lite]>=0.9; extra == "testing")r   _get_pkginforc   )r   tmp_pathrt   rx   expectedr   s   &&    r/   test_requires_dist6TestParityWithMetadataFromPyPaWheel.test_requires_dist]  sJ      "%x((((
 D### r1   zconfig/setupcfg_examples.txtN)rL   c              #    "   VP                  V4       VP                  \        R\        RR7      4       VP                  \        R\        RR7      4       VP                  \        R\        RR7      4       VP
                  f   V P                  4       x  R# \        VP
                  4      p\        P                  ! \	        / 4      V4      x  R# 5i)z4Example of distribution with arbitrary configuration	read_attrz0.42)return_value
read_fileshello world_finalize_license_filesN)
chdirsetattrr   r   r   rH   r   r   r   apply_configuration)r   requestmonkeypatchr   configs   &&&& r/   rt   (TestParityWithMetadataFromPyPaWheel.distr  s      	(#FK61JKFL$M2RS3Tt5L	
 == ##%% #7==1F..|B/?HHs   CCc                   \         P                  ! R4      p\        VRR4      pVf   \        P                  ! R4       \        V4      pVR,          pVP                  RR7       VR,          P                  VR	R
7       \        \        V4      WfR,          4       V! WfR,          4      p\        V4      p\        V4      p	\        V	4      p
W8X  g   Q h\        V4       R# )zHEnsure output from setuptools is equivalent to the one from `pypa/wheel`zwheel.metadatapkginfo_to_metadataNzjwheel.metadata.pkginfo_to_metadata is undefined, (this is likely to be caused by API changes in pypa/wheelzpkg.egg-infoT)parentsr   r   r   zrequires.txt)	importlibimport_modulerV   rG   rJ   r   r   
write_textr   r   _normalize_metadatar   _assert_roundtrip_message)r   r   rt   wheel_metadatar   rx   egg_info_dirmetadata_msgmetadata_strpkg_info_msgpkg_info_strs   &&&        r/   test_equivalent_output:TestParityWithMetadataFromPyPaWheel.test_equivalent_output  s     #001AB%n6KTR&LLL  %.04(	
	"..x'.J8D><9VW +<
9RS*<8*84*<8 +++ 	"(+r1   r   )__name__
__module____qualname____firstlineno__r   r   r   __file__parentHEREEXAMPLES_FILErG   fixturer   rt   rI   uses_networkr   __static_attributes__r   r1   r/   r   r   @  sq    #8$$ >  D99M^^DA>-#@ABI CI [[, ,r1   r   c                     ] tR tRtR]! R4      R]! R4      /t]P                  P                  R]P                  4       4      R 4       t
]P                  P                  R]P                  4       4      ]P                  P                  RR	R/R
R/RRRR.3/RRR.3/RRRR RRR.3/.4      R 4       4       t]P                  P                  RRR.4      R 4       tRtR# )!
TestPEP643i  z	setup.cfga  
            [metadata]
            name = package
            version = 0.0.1
            author = Foo Bar
            author_email = foo@bar.net
            long_description = Long
                               description
            description = Short description
            keywords = one, two
            platforms = abcd
            [options]
            install_requires = requests
            pyproject.tomla  
            [project]
            name = "package"
            version = "0.0.1"
            authors = [
              {name = "Foo Bar", email = "foo@bar.net"}
            ]
            description = "Short description"
            readme = {text = "Long\ndescription", content-type = "text/plain"}
            keywords = ["one", "two"]
            dependencies = ["requests"]
            license = "AGPL-3.0-or-later"
            [tool.setuptools]
            provides = ["abcd"]
            obsoletes = ["abcd"]
            filec                	    \        V4      P                  V P                  V,          R R7       \        4       pVP	                  R4      e   Q hVP	                  R4      e   Q hR# )r   r   DynamicNdynamic)r   r   STATIC_CONFIG_get_metadataget_all)r   r   
tmpdir_cwdr\   s   &&& r/   !test_static_config_has_no_dynamic,TestPEP643.test_static_config_has_no_dynamic  sY    T
d006I ?	*222	*222r1   fieldszrequires-pythonzauthor-emailr#   helloworldplatformrQ   abcdsummaryr"   zrequires-distr   zhello-worldc                	T   \        V4      P                  V P                  V,          R R7       \        4       pVP	                  4        F'  w  rV\        WEV4       \        VP                  WV4       K)  	  \        V4      p\        VP                  R4      4      \        V4      8X  g   Q hR# )r   r   r   N)
r   r   r   	_makedistvaluesr   r\   r   r   r   )r   r   r   r   rt   r{   valuer\   s   &&&&    r/   &test_modified_fields_marked_as_dynamic1TestPEP643.test_modified_fields_marked_as_dynamic  s    & 	T
d006I{ "==?KD D&DMM4/ + !&8##I./3v;>>>r1   
extra_tomlz'# Let setuptools autofill license-filesz2license-files = ['LICENSE*', 'AUTHORS*', 'NOTICE']c                	   R V P                   R ,          P                  RRV 24      RRRRRR/pWR ,          9   g   Q hRV9  g   Q h\        P                  P	                  V4       \        R	R
7      p\        V4      p\        VP                  R4      4      RR08X  g   Q hVP                  R4      R	8X  g   Q h\        VP                  R4      4      0 Rm8X  g   Q hR# )r   zlicense = "AGPL-3.0-or-later"zdynamic = ['license']

LICENSE.mdz--- mock license ---NOTICEz--- mock notice ---AUTHORS.txtz
--- me ---zAGPL-3.0-or-later)license_expressionr   zlicense-filezlicense-expressionzLicense-ExpressionzLicense-FileN>   r  r  r  )
r   replacejaracopathbuildr   r   r   r   r   )r   r  r   filesrt   r\   s   &&&   r/   test_license_files_dynamic%TestPEP643.test_license_files_dynamic  s     d001ABJJ/)*6 0+<
 #34444.j@@@% ,?@ &8##I./ 4
 
 	
 
 ||015HHHH8##N34 9
 
 	
 
r1   r   N)r5   z>=3.12)r    zsnoopy@peanuts.com)r"   r   )r!   zbla bla bla bla)r   r   r   r   r
   r   rG   rI   parametrizekeysr   r   r  r   r   r1   r/   r   r     s+   X
  	(
##MJ [[V]%7%7%9:3 ;3 [[V]%7%7%9:[[  =>CD*w&89:+x01 9F"4}o!F	
 ?! ;"?" [[5@	


r1   r   c                 <    \        V 4      pVP                  4        V# r+   )r   parse_config_files)rs   rt   s   , r/   r   r     s    DKr1   c                    V ^8  d   QhRRRR/# )   r\   r   returnNoner   )formats   "r/   __annotate__r  !  s     ' ' ' 'r1   c                   \         P                  ! V 4      ;_uu_ 4       p\        \        4      P	                  V4      pRRR4       \        RR^ R7      p\         P                  ! 4       ;_uu_ 4       p\         P                  ! VRR7      p\        WCR7      P                  X4       VP                  4        VP                  4       pRRR4       \        V R4      pRP                  VP                  4       4      pRP                  XP                  4       4      pWV8X  g   Q hR#   + '       g   i     L; i  + '       g   i     Lw; i)	zEmulate the way wheel.bdist_wheel parses and regenerates the message,
then ensures the metadata generated by setuptools is compatible.
NTF)utf8mangle_from_max_line_lengthr   r   )policy   
)r^   r_   r   r   parser	   BytesIOTextIOWrapperr   flattenflushgetvaluebytesr   r   )r\   buffermsgserialization_policyoutregeneratedraw_metadatas   &      r/   r   r   !  s     
X		&\"((0 
 '
 
v8#3;;C@		oo'	 
 7+L::l5578L**[3356K&&&% 
	 
s   D!1AD4!D1	4E	c                    V ^8  d   QhRRRR/# )r  r&  r   r  r   r   )r  s   "r/   r  r  :  s      W  r1   c                ~   V P                  R. 4       Uu/ uF  qP                  RR4      VbK  	  pp\        P                  ! V P                  R. 4      4       Uu. uF  p\	        W24      NK  	  ppV R V R \        V4       F  pW0R&   K	  	  \        V4       F  pWPR&   K	  	  V R V P                  4       # u upi u upi )z1Allow equivalent metadata to be compared directlyzProvides-Extra_-zRequires-DistzMetadata-Version)r   r  r   r  _normalize_reqsorted	as_string)r&  xextrasreqreqsextras   &     r/   r   r   :  s     /2kk:JB.OP.OiiS!1$.OFP ;;s{{?B?@@C 	s#@ 	  	O d|"O  %   	==?# Qs   B5B:c               $    V ^8  d   QhRRRRRR/# )r  r4  r   r3  zdict[str, str]r  r   r   )r  s   "r/   r  r  Z  s!       ^  r1   c                    \        V 4      P                  V P                  V P                  P                  RR4      4      pVP                  4        F  w  r4VP                  WC4      pK  	  V# )z<Allow equivalent requirement objects to be compared directlyr-  r.  )r   r  r   r   )r4  r3  as_strnormorigs   &&   r/   r/  r/  Z  sR    Xchh(8(8c(BCFlln
+ %Mr1   c                   V ^8  d   QhRR/# )r  rt   r   r   )r  s   "r/   r  r  b  s      | r1   c                    \         P                  ! 4       ;_uu_ 4       pV P                  P                  V4       VP	                  4       uuR R R 4       #   + '       g   i     R # ; ir+   )r^   r_   r\   r`   r#  )rt   fps   & r/   r   r   b  s6    	"$$R({{} 
s   +AA%	c                   V ^8  d   QhRR/# )r  rt   zDistribution | Noner   )r  s   "r/   r  r  h  s     B B+ Br1   c                N    \        \        T ;'       g    \        4       4      4      # r+   )r   r   r   )rt   s   &r/   r   r   h  s    |D,?,?IK@AAr1   c                    V ^8  d   QhRRRR/# )r  textr   r  boolr   )r  s   "r/   r  r  l  s        #  $  r1   c                :    \         P                  ! V R R7      pVRJ# )T)validateN)r   
from_email)rB  r\   s   & r/   rc   rc   l  s    ""4$7H4r1   r,   )r   rs   r+   )A
__future__r   rD   r   r^   emailr   email.generatorr   email.messager   r   email.parserr   email.policyr	   inspectr
   pathlibr   unittest.mockr   jaraco.pathr  rG   packaging.metadatar   packaging.requirementsr   
setuptoolsr   r   setuptools._core_metadatar   r   setuptools.command.egg_infor   r   setuptools.configr   r   setuptools.distr   config.downloadsr   r   rF   rC   rI   r  rH   r0   rM   r}   r   r   r   r   r   r   r   r/  r   r   rc   r   r1   r/   <module>rY     s   "   	 % % /  $      ' . ! D D . ( ;	(#U^   	

 	7	

 	>+	

 	" *	

 	=;4	
+<J=<J_D *,=,?@%; A%;PAH *,C,EF$) G$)N`, `,Fu
 u
p'2@B r1   