
    wff#                     n   d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ d ZdedefdZdededee   fdZdededee   fdZ dededeee      fdZ!dedee   fdZ"d Z#d Z$d Z%d Z&d Z'deded edefd!Z(d" Z)d# Z*y)$z
Handling of Core Metadata for Python packages (including reading and writing).

See: https://packaging.python.org/en/latest/specifications/core-metadata/
    N)message_from_file)Message)NamedTemporaryFile)OptionalList)rfc822_escape   )_normalization_reqs)Marker)Requirement)canonicalize_name)Version)SetuptoolsDeprecationWarningc                 H    t        | dd       }|t        d      }|| _        |S )Nmetadata_version2.1)getattrr   r   )selfmvs     RC:\xampp-8.1.2\htdocs\client\python\Lib\site-packages\setuptools/_core_metadata.pyget_metadata_versionr      s,    	)4	0B	zU^ "I    contentreturnc           
          | j                         }t        |      dk(  r|d   j                         S dj                  |d   j                         t	        j
                  dj                  |dd             f      S )zFReverse RFC-822 escaping by removing leading whitespaces from content.r	   r   
N)
splitlineslenlstripjointextwrapdedent)r   liness     r   rfc822_unescaper%   !   sc     E
5zQQx  99eAhoo'599M)NOPPr   msgfieldc                     | |   }|dk(  ry|S )zRead Message header field.UNKNOWNN r&   r'   values      r   _read_field_from_msgr-   )   s    JE	Lr   c                 8    t        | |      }||S t        |      S )z4Read Message header field and apply rfc822_unescape.)r-   r%   r+   s      r   _read_field_unescaped_from_msgr/   1   s#     e,E}5!!r   c                 6    | j                  |d      }|g k(  ry|S )z9Read Message header field and return all results as list.N)get_all)r&   r'   valuess      r   _read_list_from_msgr3   9   s!    [[%F|Mr   c                 d    t        | j                               j                         }|dk(  s|sy |S )Nr)   )strget_payloadstrip)r&   r,   s     r   _read_payload_from_msgr8   A   s.    !"((*E	Lr   c                    t        |      }t        |d         | _        t        |d      | _        t        |d      | _        t        |d      | _        t        |d      | _        d| _        t        |d      | _	        d| _
        t        |d      | _        t        |d	      | _        t        |d
      | _        t        |d      | _        | j                  (| j                  t        d      k\  rt!        |      | _        t        |d      | _        d|v r t        |d      j#                  d      | _        t'        |d      | _        t'        |d      | _        | j                  t        d      k(  r4t'        |d      | _        t'        |d      | _        t'        |d      | _        nd| _        d| _        d| _        t'        |d      | _        y)z-Reads the metadata values from a file object.zmetadata-versionnameversionsummaryauthorNzauthor-emailz	home-pagezdownload-urllicensedescriptionr   keywords,platform
classifierz1.1requiresprovides	obsoleteszlicense-file)r   r   r   r-   r:   r;   r?   r=   
maintainerauthor_emailmaintainer_emailurldownload_urlr/   r>   long_descriptionr8   splitr@   r3   	platformsclassifiersrD   rE   rF   license_files)r   filer&   s      r   read_pkg_filerR   H   s   
D
!C#C(:$;<D$S&1DI'Y7DL+C;D&sH5DKDO,S.AD D#C5DH,S.AD1#yADL:3ND$)>)>'%.)P 6s ;+C;DS,S*=CCCH(j9DN*3=D .+C<+C<,S+>,S.ADr   c                     d| v r:d}t        j                  d|       | j                         j                  d      d   } | S )zF
    Quick and dirty validation for Summary pypa/setuptools#1390.
    r   zBnewlines are not allowed in `summary` and will break in the futurezInvalid config.r   )r   emitr7   rM   )valr&   s     r   single_linerV   q   sD     s{ S$))*;SAiik%a(Jr   c                    d}t         j                  j                  |d      }	 t        dd|d      5 }|j                  }| j                  |       ddd       t        j                  t        j                  |      j                        }t        j                  ||t        j                  z  t        j                  z         t        j                  ||       |r6t         j                  j                  |      rt        j                  |       yyy# 1 sw Y   xY w# |r6t         j                  j                  |      rt        j                  |       w w w xY w)z.Write the PKG-INFO file into the release tree. zPKG-INFOwzutf-8F)encodingdirdeleteN)ospathr!   r   r:   write_pkg_filestatS_IMODElstatst_modechmodS_IRGRPS_IROTHreplaceexistsremove)r   base_dirtempfinalfpermissionss         r   write_pkg_inforo      s    DGGLL:.E  g8ER 	#VW66D"	# ll288D>#9#9:
{T\\1DLL@A


4BGGNN4(IIdO )4	# 	# BGGNN4(IIdO )4s#   D DBD DD :Ec                    | j                         }fd} |dt        |              |d| j                                 |d| j                                | j	                         }|r |dt        |             d}|D ]  \  }}t        | |d      }| |||         | j                         }	|	r |dt        |	             | j                  j                         D ]  }
 |d	d
|
z          dj                  | j                               }|r	 |d|       | j                         xs g }|D ]  } |d|        | j                  d| j                                | j                  d| j!                                | j                  d| j#                                | j                  d| j%                                t'        | d      r |d| j(                         | j*                  r |d| j*                         | j                  d| j,                  xs g        t/        |        | j1                         }|r8j3                  d|z         |j5                  d      sj3                  d       yyy)z0Write the PKG-INFO format data to a file object.c                 4    j                  | d|d       y )Nz: r   )write)keyr,   rQ   s     r   write_fieldz#write_pkg_file.<locals>.write_field   s    

e,-r   zMetadata-VersionNamer   Summary))z	Home-pagerJ   )zDownload-URLrK   )Authorr=   )zAuthor-emailrH   )
MaintainerrG   )zMaintainer-emailrI   NLicensezProject-URLz%s, %srA   KeywordsPlatform
ClassifierRequiresProvides	Obsoletespython_requireszRequires-PythonzDescription-Content-TypezLicense-Filez
%sr   )r   r5   get_nameget_versionget_descriptionrV   r   get_licenser   project_urlsitemsr!   get_keywordsget_platforms_write_listget_classifiersget_requiresget_providesget_obsoleteshasattrr   long_description_content_typerP   _write_requirementsget_long_descriptionrr   endswith)r   rQ   r;   rt   r<   optional_fieldsr'   attrattr_valr>   project_urlr@   rN   rB   rL   s    `             r   r_   r_      s^   '')G. "CL1(	4++-.""$GI{734O ' )t4t,x()
  GI}W56((..0 ;M8k#9:; xx))+,HJ)""$*I *J)* 	T<)=)=)?@ 	T:t'8'8':;T:t'8'8':;T;(:(:(<= t&'%t';';< )).0R0RST>4+=+=+CDd#002

6,,-((.JJt / r   c                    t        j                  | j                        D ]  }|j                  d| d        i }| j                  j                         D ]  \  }}|j                  d      \  }}}|j                         }t        j                  |      }	|	rt        |||	|       t        j                  |      D ]2  }t        ||	|j                               }
|j                  d|
 d       4  |S )NzRequires-Dist: r   :)r   parseinstall_requiresrr   extras_requirer   	partitionr7   r
   
safe_extra_write_provides_extraparse_strings_include_extra)r   rQ   reqprocessed_extrasaugmented_extrareqsunsafe_extra_	conditionextrars              r   r   r      s    {{4001 .

_SE,-. !%!4!4!:!:!< 
0%4%>%>s%C"a#))+)),7!$(8%N&&t, 	0CsE9??+<=AJJ2./	0
0 r   r   r   r   c                     t        |       }|j                  rd|j                   dnd |rd| dnd |rd|nd f}t        dj                  d |D                    |_        |S )N()z	extra ==  and c              3   &   K   | ]	  }|s|  y w)Nr*   ).0xs     r   	<genexpr>z!_include_extra.<locals>.<genexpr>   s     "9q1"9s   )r   markerr   r!   )r   r   r   r   partss        r   r   r      sj    CA88!AHH:Q%!I;a4!&)E9DE
 gll"9e"99:AHHr   c           
          |j                  |      }||k(  r#t        j                  dd|d|d|dd       y |||<   | j                  d| d	       y )
Nz8Ambiguity during "extra" normalization for dependencies.z
            r   z/ normalize to the same value:

                zW

            In future versions, setuptools might halt the build process.
            z!https://peps.python.org/pep-0685/)see_urlzProvides-Extra: r   )getr   rT   rr   )rQ   r   safeunsafepreviouss        r   r   r      sw    ##D)H6$))FLfZ ( 
 8	
 "(

%dV2./r   c                     dj                  t        | j                               j                  dd      | j	                               S )Nz{}-{}-r   )formatr   r   rg   r   )r   s    r   get_fullnamer     s:    >>$--/*223< r   )+__doc__r]   r`   r"   emailr   email.messager   tempfiler   typingr   r   distutils.utilr   rX   r
   r   extern.packaging.markersr   extern.packaging.requirementsr   extern.packaging.utilsr   extern.packaging.versionr   warningsr   r   r5   r%   r-   r/   r3   r8   rR   rV   ro   r_   r   r   r   r   r*   r   r   <module>r      s   
   # ! ' ! ( # , 6 5 - 2QS QS Qg c hsm " " " "W S Xd3i5H  HSM &BR&BJ( C C K 0$r   