
    ?wg>+                       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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(dAdZ)d Z*d Z+dBdZ,i ddd d!d"d#d$d%d&d'd(d)d*d+d,d,d-d-d.d.d/d0d1d1d2d3d4d5d6d6d7d8d9d9d:d;d$d<Z-y)Cz
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                H    t        | dd       }|t        d      }|| _        |S )Nmetadata_versionz2.2)getattrr   r   )selfmvs     P/var/www/horilla/myenv/lib/python3.12/site-packages/setuptools/_core_metadata.pyget_metadata_versionr      s,    	)4	0B	zU^ "I    c           
         | 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)contentliness     r   rfc822_unescaper$   $   sc     E
5zQQx  99eAhoo'599M)NOPPr   c                    | |   }|dk(  ry|S )zRead Message header field.UNKNOWNN msgfield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.   4   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_msgr2   <   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_msgr7   D   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authorNauthor-email	home-pagedownload-urllicensedescriptionz2.1keywords,platform
classifierz1.1requiresprovides	obsoleteszlicense-file)r   r   r   r,   r9   r:   rA   r<   
maintainerauthor_emailmaintainer_emailurldownload_urlr.   r@   long_descriptionr7   splitrB   r2   	platformsclassifiersrF   rG   rH   license_files)r   filer)   s      r   read_pkg_filerT   K   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   emitr6   rO   )valr)   s     r   single_linerX   t   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   r9   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      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                z   | 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
|         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/        |        t0        j                         D ]*  \  }}t        | |d      x}st3        |      r" |d|       , | j5                         }|r8j7                  d|        |j9                  d      sj7                  d       yyy)z0Write the PKG-INFO format data to a file object.c                4    j                  |  d| d       y )Nz: r   )write)keyr+   rS   s     r   write_fieldz#write_pkg_file.<locals>.write_field   s    

cU"UG2&'r   zMetadata-VersionNamer   Summary))z	Home-pagerL   )zDownload-URLrM   )Authorr<   )zAuthor-emailrJ   )
MaintainerrI   )zMaintainer-emailrK   NLicensezProject-URLz, rC   KeywordsPlatform
ClassifierRequiresProvides	Obsoletespython_requireszRequires-PythonzDescription-Content-TypezLicense-FileDynamicr   )r   r4   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_POSSIBLE_DYNAMIC_FIELDSr   get_long_descriptionrt   endswith)r   rS   r:   rv   r;   optional_fieldsr*   attrattr_valr@   labelrL   rB   rP   rD   rW   rN   s    `               r   ra   ra      s   '')G( "CL1(	4++-.""$GI{734O ' )t4t,x()
  GI}W56''--/ 6
sMeWBse#456 xx))+,HJ)""$*I *J)* 	T<)=)=)?@ 	T:t'8'8':;T:t'8'8':;T;(:(:(<= t&'%t';';< )).0R0RST>4+=+=+CDd#/557 *t4t,,C,in	5)* 002

R()*+((.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_requiresrt   extras_requirer   	partitionr6   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01 .

_SE,-. !%!4!4!:!:!< 
0%4%>%>s%C"a#))+)),7!$(8%N&&t, 	0CsE9??+<=AJJ2./	0
0 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   rV   rt   )rS   r   safeunsafepreviouss        r   r   r      sw    ##D)H6$))FLfZ ( 
 8	
 "(

%dV2./r   c                R    t        | j                         | j                               S r   )_distribution_fullnamer   r   )r   s    r   get_fullnamer     s    !$--/43C3C3EFFr   c                n    dj                  t        |       j                  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
   )r9   r:   s     r   r   r     s4     >>$''S1W%@ r   r<   r=   rJ   rE   rQ   rA   rN   zdescription-content-typer   r?   rM   r>   rL   rB   r@   rI   zmaintainer-emailrK   rH   rD   rP   zproject-urlr   rG   zprovides-extrar   rF   r   r   )zrequires-distzrequires-pythonr;   )r"   r4   returnr4   )r)   r   r*   r4   r   
str | None)r)   r   r*   r4   r   zlist[str] | None)r)   r   r   r   )r   r4   r   r4   r   r4   r   r   )r9   r4   r:   r4   r   r4   ).__doc__
__future__r   r_   rb   r    emailr   email.messager   tempfiler   packaging.markersr   packaging.requirementsr   packaging.utilsr	   r
   packaging.versionr   rZ   r   r   _staticr   warningsr   distutils.utilr   r   r$   r,   r.   r2   r7   rT   rX   rq   ra   r   r   r   r   r   r   r'   r   r   <module>r      sp   # 	   # ! ' $ . C % #  2 (Q"&BR&FR(0$G&h N -	
 %  ? N  
 y , *   !" >#$ 
%( &)* 
+, ((3 r   