
    ϶vgC&                       d Z ddlm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 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 Zd,dZd-dZd-dZd.dZ d/dZ!d Z"d Z#d Z$d  Z%d! Z&d0d&Z'd' Z(d( Z)d1d+Z*dS )2z
Handling of Core Metadata for Python packages (including reading and writing).

See: https://packaging.python.org/en/latest/specifications/core-metadata/
    )annotationsN)message_from_file)Message)NamedTemporaryFile)Marker)Requirement)canonicalize_namecanonicalize_version)Version   )_normalization_reqs)SetuptoolsDeprecationWarning)rfc822_escapec                X    t          | dd           }|t          d          }|| _        |S )Nmetadata_version2.1)getattrr   r   )selfmvs     V/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/_core_metadata.pyget_metadata_versionr      s1    	)4	0	0B	zU^^ "I    contentstrreturnc           
     <   |                                  }t          |          dk    r|d                                         S d                    |d                                         t	          j        d                    |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&   #   sy      E
5zzQQx   99eAhoo''599M9M)N)NOPPPr   msgr   field
str | Nonec                &    | |         }|dk    rdS |S )zRead Message header field.UNKNOWNN r'   r(   values      r   _read_field_from_msgr/   +   s     JE	tLr   c                H    t          | |          }||S t          |          S )z4Read Message header field and apply rfc822_unescape.)r/   r&   r-   s      r   _read_field_unescaped_from_msgr1   3   s)     e,,E}5!!!r   list[str] | Nonec                B    |                      |d          }|g k    rdS |S )z9Read Message header field and return all results as list.N)get_all)r'   r(   valuess      r   _read_list_from_msgr6   ;   s(    [[%%F||tMr   c                    t          |                                                                           }|dk    s|sd S |S )Nr+   )r   get_payloadstrip)r'   r.   s     r   _read_payload_from_msgr:   C   s?    !!""((**E	t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                              d          | _        t'          |d          | _        t'          |d          | _        | j        t          d          k    r@t'          |d          | _        t'          |d          | _        t'          |d          | _        nd| _        d| _        d| _        t'          |d          | _        dS )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=   rA   r?   
maintainerauthor_emailmaintainer_emailurldownload_urlr1   r@   long_descriptionr:   splitrB   r6   	platformsclassifiersrF   rG   rH   license_files)r   filer'   s      r   read_pkg_filerT   J   s   
D
!
!C#C(:$;<<D$S&11DI'Y77DL+C;;D&sH55DKDO,S.AAD D#C55DH,S.AAD1#yAADL:3NND$)>'%..)P)P 6s ; ;+C;;DS,S*==CCCHH(j99DN*3==D ..+C<<+C<<,S+>>,S.AADr   c                    d| v rDd}t          j        d|           |                                                     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   emitr9   rO   )valr'   s     r   single_linerX   s   sN     s{{ S$)*;SAAAiikk%%a(Jr   c                   d}t           j                            |d          }	 t          dd|d          5 }|j        }|                     |           ddd           n# 1 swxY w Y   t          j        t          j        |          j	                  }t          j
        ||t          j        z  t          j        z             t          j        ||           |r5t           j                            |          rt          j        |           dS dS dS # |r4t           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_inforq      sq   DGLL:..E  g8ERRR 	#VW6D"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# l28D>>#9::
{T\1DL@AAA

4 	BGNN4(( 	IdOOOOO	 	 	 	4 	BGNN4(( 	IdOOOO	 	s/   D A D  A$$D 'A$(A2D 9Ec                   |                                  }fd} |dt          |                      |d|                                             |d|                                            |                                 }|r |dt          |                     d}|D ]$\  }}t          | |d          }| |||           %|                                 }	|	r |dt          |	                     | j	        
                                D ]}
 |d	d
|
z             d                    |                                           }|r |d|           |                                 pg }|D ]} |d|           |                     d|                                            |                     d|                                            |                     d|                                            |                     d|                                            t'          | d          r |d| j                   | j        r |d| j                   |                     d| j        pg            t/          |            |                                 }|rD                    d|z             |                    d          s                    d           dS dS dS )z0Write the PKG-INFO format data to a file object.c                >                         | d|d           d S )Nz: r   )write)keyr.   rS   s     r   write_fieldz#write_pkg_file.<locals>.write_field   s(    

eee,-----r   zMetadata-VersionNamer   Summary))z	Home-pagerL   )zDownload-URLrM   )Authorr?   )zAuthor-emailrJ   )
MaintainerrI   )zMaintainer-emailrK   NLicensezProject-URLz%s, %srC   KeywordsPlatform
ClassifierRequiresProvides	Obsoletespython_requireszRequires-PythonzDescription-Content-TypezLicense-Filez
%sr   )r   r   get_nameget_versionget_descriptionrX   r   get_licenser   project_urlsitemsr"   get_keywordsget_platforms_write_listget_classifiersget_requiresget_providesget_obsoleteshasattrr   long_description_content_typerR   _write_requirementsget_long_descriptionrt   endswith)r   rS   r=   rv   r>   optional_fieldsr(   attrattr_valr@   project_urlrB   rP   rD   rN   s    `             r   ra   ra      sZ   ''))G. . . . . K"CLL111K(((K	4++--...""$$G 5I{733444O ' ) )t4t,,Kx(((  G 7I}W55666(..00 ; ;M8k#9::::xx))++,,H *J)))""$$*I * *J))))T<)=)=)?)?@@@ 	T:t'8'8':':;;;T:t'8'8':':;;;T;(:(:(<(<=== t&'' =%t';<<< ) T.0RSSST>4+=+CDDDd###0022 

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

,S,,,----!%!4!:!:!<!< 
0 
0%4%>%>s%C%C"a#))++),77 	O!$(8%NNN&t,, 	0 	0CsE9??+<+<==AJJ....////	0 r   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                    d |D                                 |_        |S )N()z	extra ==  and c              3     K   | ]}||V  	d S Nr,   ).0xs     r   	<genexpr>z!_include_extra.<locals>.<genexpr>   s'      "9"9q"91"9"9"9"9"9"9r   )r   markerr   r"   )r   r   r   r   partss        r   r   r      s    CA8-AH%/I4!&0EDE
 gll"9"9e"9"9"999::AHHr   c           
         |                     |          }||k    r#t          j        dd|d|d|dd           d S |||<   |                     d| d	           d S )
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   rV   rt   )rS   r   safeunsafepreviouss        r   r   r      s    ##D))H6$)F $   
 8	
 	
 	
 	
 	
 	
 "(

.d.../////r   c                j    t          |                                 |                                           S r   )_distribution_fullnamer   r   )r   s    r   get_fullnamer   
  s&    !$--//43C3C3E3EFFFr   r<   r=   c                    d                     t          |                               dd          t          |d                    S )a  
    >>> _distribution_fullname('setup.tools', '1.0-2')
    'setup_tools-1.0.post2'
    >>> _distribution_fullname('setup-tools', '1.2post2')
    'setup_tools-1.2.post2'
    >>> _distribution_fullname('setup-tools', '1.0-r2')
    'setup_tools-1.0.post2'
    >>> _distribution_fullname('setup.tools', '1.0.post')
    'setup_tools-1.0.post0'
    >>> _distribution_fullname('setup.tools', '1.0+ubuntu-1')
    'setup_tools-1.0+ubuntu.1'
    z{}-{}-r   F)strip_trailing_zero)formatr	   ri   r
   )r<   r=   s     r   r   r     sE     >>$''S11W%@@@  r   )r   r   r   r   )r'   r   r(   r   r   r)   )r'   r   r(   r   r   r2   )r'   r   r   r)   )r   r   r   r   r   r   r   r   )r<   r   r=   r   r   r   )+__doc__
__future__r   r_   rb   r#   emailr   email.messager   tempfiler   packaging.markersr   packaging.requirementsr   packaging.utilsr	   r
   packaging.versionr   rZ   r   r   warningsr   distutils.utilr   r   r&   r/   r1   r6   r:   rT   rX   rq   ra   r   r   r   r   r   r,   r   r   <module>r      s    # " " " " " 				   # # # # # # ! ! ! ! ! ! ' ' ' ' ' ' $ $ $ $ $ $ . . . . . . C C C C C C C C % % % % % % # # # # # # # # 2 2 2 2 2 2 ( ( ( ( ( (  Q Q Q Q   " " " "      &B &B &BR    &B B BJ  (   0 0 0$G G G     r   