
    i.                       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dlmZ d ZdOdZdPdZ dPdZ!dQdZ"dRdZ#d Z$d Z%d  Z&d! Z'd" Z(dSd'Z)d( Z*d) Z+dTd,Z,d- Z-i d.d.d/d0d1d2d3d4d5d6d7d8d9d:d;d;d<d<d=d>d?d@dAdAdBdCdDdDdEdFdGdHdIdIdJdKdLdMd3dNZ.dS )Uz
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)	is_static)SetuptoolsDeprecationWarning)rfc822_escapec                X    t          | dd           }|t          d          }|| _        |S )Nmetadata_versionz2.4)getattrr   r   )selfmvs     Q/srv/django_bis/venv311/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   4   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:   D   s?    !!""((**E	tLr   c                X   t          |          }t          |d                   | _        t          |d          | _        t          |d          | _        t          |d          | _        t          |d          | _        d| _        t          |d          | _	        d| _
        t          |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authorNauthor-email	home-pagedownload-urllicenselicense-expressiondescriptionz2.1keywords,platform
classifierz1.1requiresprovides	obsoleteslicense-file)r   r   r   r/   r<   r=   rE   r?   
maintainerauthor_emailmaintainer_emailurldownload_urlr1   rC   license_expressionlong_descriptionr:   splitrF   r6   	platformsclassifiersrJ   rK   rL   license_files)r   filer'   s      r   read_pkg_filerZ   K   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<SBVWWD: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   rU   )valr'   s     r   single_liner^   u   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_inforw      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          }| |||           %| j        x}	r |d|	           n/|                                 x}
r |d	t          |
                     | j
                                        D ]\  }} |d
| d|            d                    |                                           }|r |d|           |                                 pg }|D ]} |d|           |                     d|                                            |                     d|                                            |                     d|                                            |                     d|                                            t)          | d          r |d| j                   | j        r |d| j                   t/          t0          | j        pg           }|                     d|           t5          |            t6                                          D ]3\  }}t          | |d          x}rt9          |          s |d|           4|                                 }|rD                    d|            |                    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.   rY   s     r   write_fieldz#write_pkg_file.<locals>.write_field   s,    

c&&U&&&'''''r   zMetadata-VersionNamer   Summary))z	Home-pagerQ   )zDownload-URLrR   )Authorr?   )zAuthor-emailrO   )
MaintainerrN   )zMaintainer-emailrP   NzLicense-ExpressionLicensezProject-URLz, rG   KeywordsPlatform
ClassifierRequiresProvides	Obsoletespython_requireszRequires-PythonzDescription-Content-TypezLicense-FileDynamicr   ) r   r   get_nameget_versionget_descriptionr^   r   rS   get_licenser   project_urlsitemsr"   get_keywordsget_platforms_write_listget_classifiersget_requiresget_providesget_obsoleteshasattrr   long_description_content_typemap_safe_license_filerX   _write_requirements_POSSIBLE_DYNAMIC_FIELDSr   get_long_descriptionrz   endswith)r   rY   r=   r|   r>   optional_fieldsr(   attrattr_valrS   rC   labelrQ   rF   rV   rH   safe_license_filesr]   rT   s    `                 r   rg   rg      s   ''))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(((!44 7(*<====$$&&	& 7I}W55666'--// 6 6
sMe#4#4s#4#45555xx))++,,H *J)))""$$*I * *J))))T<)=)=)?)?@@@ 	T:t'8'8':':;;;T:t'8'8':':;;;T;(:(:(<(<=== t&'' =%t';<<< ) T.0RSSS/1C1IrJJT>+=>>>d###/5577 * *t4t,,,C 	*inn 	*K	5)))0022 

*(**+++((.. 	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_requiresrz   extras_requirer   	partitionr9   r   
safe_extra_write_provides_extraparse_strings_include_extra)r   rY   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   r\   rz   )rY   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	   ro   r
   )r<   r=   s     r   r   r     sE     >>$''S11W%@@@  r   c                    t           j                            |                               t           j        d          }d|v rt           j                            |          S |S )N/z../)re   rf   normpathro   sepbasename)rY   
normalizeds     r   r   r   )  sP    !!$''//<<J
w
+++r   r?   r@   rO   rI   rW   rE   rT   zdescription-content-typer   rB   rR   rA   rQ   rF   rC   rM   rX   rD   rS   rN   zmaintainer-emailrP   rL   rH   rV   zproject-urlr   rK   r   rJ   r   r   )zprovides-extrarJ   zrequires-distzrequires-pythonr>   )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   re   rh   r#   emailr   email.messager   tempfiler   packaging.markersr   packaging.requirementsr   packaging.utilsr	   r
   packaging.versionr   r`   r   r   _staticr   warningsr   distutils.utilr   r   r&   r/   r1   r6   r:   rZ   r^   rw   rg   r   r   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T    &H H HV  (   0 0 0$G G G   &   h  N  -	 
 %   ?  N    
  y  O   .! " ,# $ *% & ' * + , >- . 
/ 2 ''(=        r   