
    njIi                       S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSKrSSKrSSKrSSKJrJr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  SSKJrJr  SSKJr  SSK J!r!  SSKJ"r"  SSK#r$SSK%r$SSK$J&r&  SSK#J'r'  SSK%J(r)  SSK*J+r+  \RX                  RZ                   S\RX                  R\                   3r/ " S S5      r0S r1 " S S5      r2 " S S\2\5      r3 " S S\)5      r( " S S \5      r4S+S! jr5S+S" jr6S+S# jr7\"Rp                  r8\"Rr                  r9S+S$ jr:S+S% jr;S,S-S& jjr<S+S' jr=S.S( jr> " S) S*\!5      r?g)/zUsetuptools.command.egg_info

Create a distribution's .egg-info directory and contents    )annotationsN)Callable)ClassVar)Commandunicode_utils)	bdist_egg)sdistwalk_revctrl)edit_config)glob   )_entry_points_normalization)metadata)SetuptoolsDeprecationWarning   )_requirestxt)log)DistutilsInternalError)FileList)convert_path.c                  .    \ rS rSrSrSS jrS rS rSrg)	_NormalizedMatcher(   aq  
Wrap a compiled pattern so that matching is insensitive to Unicode
normalization form.

File names walked from disk (NFD on macOS APFS/HFS+) and patterns from
``MANIFEST.in`` (typically NFC) can denote the same file while differing
byte-for-byte. Normalizing both sides before matching keeps an exclusion
(or inclusion) from silently failing. See GHSA-h35f-9h28-mq5c.
c                    Xl         g N_pattern)selfpatterns     W/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/setuptools/command/egg_info.py__init___NormalizedMatcher.__init__3   s        c                `    U R                   R                  [        R                  " U5      5      $ r   )r   matchr   	normalizer    paths     r"   r'   _NormalizedMatcher.match6   s"    }}""=#:#:4#@AAr%   c                `    U R                   R                  [        R                  " U5      5      $ r   )r   searchr   r(   r)   s     r"   r-   _NormalizedMatcher.search9   s"    }}##M$;$;D$ABBr%   r   N)r!   z
re.PatternreturnNone)	__name__
__module____qualname____firstlineno____doc__r#   r'   r-   __static_attributes__ r%   r"   r   r   (   s     BCr%   r   c                   Sn[         R                  " U 5      n U R                  " [        R                  R
                  5      n[        R                  " [        R
                  5      nSU S3n[        U5       GHG  u  pVU[        U5      S-
  :H  nUS:X  a  U(       a  US-  nOUSU SU S	3-  nM8  S
n[        U5      n	X:  a  Xh   n
U
S:X  a  XS-   -  nOU
S:X  a  X-  nOU
S:X  a  US-   nX:  a  Xk   S:X  a  US-   nX:  a  Xk   S:X  a  US-   nX:  a  Xk   S:w  a  US-   nX:  a
  Xk   S:w  a  M  X:  a  U[        R                  " U
5      -  nOWXhS-   U nSnUS
   S:X  a  SnUSS nU[        R                  " U5      -  nUSU S3-  nUnOU[        R                  " U
5      -  nUS-  nX:  a  M  U(       a  GMC  X-  nGMJ     US-  n[        [        R                  " U[        R                  [        R                  -  S95      $ )z
Translate a file path glob like '*.txt' in to a regular expression.
This differs from fnmatch.translate which allows wildcards to match
directory separators. It also knows about '**/' which matches any number of
directories.
 z[^]r   **z.*z(?:+z)*r   *?[!^Nz\Z)flags)r   r(   splitosr*   sepreescape	enumeratelenr   compile	MULTILINEDOTALL)r   patchunksrE   
valid_charcchunk
last_chunki	chunk_lencharinner_iinner
char_classs                 r"   translate_patternrY   =   s/    C
 ""4(D ZZ$F
))BFF
CcU!Jf%#f+/)
 D=t ZL#b11 J	m8Ds{C''!a%&5>S+@%kG&5>S+@%kG )en.C%kG )en.C ' 299T?*C "a%'2E!#J Qx3%(
 %ab	"))E"22JQzl!,,C  Aryy&FAU mZ zJC} &@ 5LCbjjBLL2994LMNNr%   c                  f    \ rS rSrSrSr\S 5       rS rS r	S
S jr
SS jrSS jr\" \5      rS	rg)
InfoCommon   Nc                ^    [         R                  " U R                  R                  5       5      $ r   )r   	safe_namedistributionget_namer    s    r"   nameInfoCommon.name   s"    ''(9(9(B(B(DEEr%   c                    U R                  U R                  R                  5       5      n[        R                  " U5      $ r   )
_maybe_tagr_   get_versionr   safe_version)r    taggeds     r"   tagged_versionInfoCommon.tagged_version   s0    !2!2!>!>!@A**622r%   c                p    U R                   (       a  U R                  U5      (       a  U$ XR                   -   $ )zw
egg_info may be called more than once for a distribution,
in which case the version string already contains all tags.
)vtags_already_taggedr    versions     r"   re   InfoCommon._maybe_tag   s6     zzd227;; 	
 ::%	
r%   c                X    UR                  U R                  U R                  5       45      $ r   )endswithrl   
_safe_tagsrn   s     r"   rm   InfoCommon._already_tagged   s%     T__-> ?@@r%   c                     [         R                  " SU R                   35      SS  $ ! [        R                  R
                   a3    [         R                  " U R                  R                  SS5      5      s $ f = f)N0r    r   )r   rg   rl   	packagingro   InvalidVersionr^   replacera   s    r"   rs   InfoCommon._safe_tags   sj    	J!..4::,/?@DD  // 	J!++DJJ,>,>sC,HII	Js   %( AA98A9c                    SnU R                   (       a  XR                   -  nU R                  (       a  U[        R                  " S5      -  nU$ )Nr9   z%Y%m%d)	tag_buildtag_datetimestrftimern   s     r"   tagsInfoCommon.tags   s9    >>~~%G==t}}X..Gr%   r7   )ro   strr/   bool)r/   r   )r1   r2   r3   r4   r}   r~   propertyrb   ri   re   rm   rs   r   rl   r6   r7   r%   r"   r[   r[      sF    IHF F3	
A
J TNEr%   r[   c                      \ rS rSr% Sr/ SQrS\S'   S/rS\S'   S	S0rS
\S'   S r	\
SS j5       r\R                  SS j5       rSS jrSS jr\S4S jrSSS jjrSS jrSS jrSS jrSS jrSrg)egg_info   z+create a distribution's .egg-info directory))z	egg-base=ezLdirectory containing .egg-info directories [default: top of the source tree])tag-datedz0Add date stamp (e.g. 20050528) to version number)z
tag-build=bz-Specify explicit tag to add to version number)no-dateDz"Don't include date stamp [default]zHClassVar[list[tuple[str, str, str]] | list[tuple[str, str | None, str]]]user_optionsr   zClassVar[list[str]]boolean_optionsr   zClassVar[dict[str, str]]negative_optc                J    S U l         S U l        S U l        S U l        SU l        g )NF)egg_baseegg_namer   egg_versionignore_egg_info_in_manifestra   s    r"   initialize_optionsegg_info.initialize_options   s'    +0(r%   c                    g r   r7   ra   s    r"   tag_svn_revisionegg_info.tag_svn_revision       r%   c                    g r   r7   )r    values     r"   r   r      r   r%   c                Z    [        U R                  5       SS9n[        U[        US95        g)z
Materialize the value of date into the
build tag. Install build keys in a deterministic order
to avoid arbitrary reordering on subsequent builds.
r   )r}   r~   )r   N)dictr   r   )r    filenamer   s      r"   save_version_infoegg_info.save_version_info   s%     $))+:HdH56r%   c                   U R                   U l        U R                  5       U l        [        R
                  R                  U R                  5      n [        U[        R
                  R                  5      nU(       a  SOSn[        R                  R                  X0R                  U R                  4-  5        U R                  cD  U R                  R                   nU=(       d    0 R#                  S[$        R&                  5      U l        U R)                  S5        [*        R,                  " U R                  5      S-   U l        U R                  [$        R&                  :w  a9  [$        R0                  R3                  U R                  U R.                  5      U l        U R                  U R                  R4                  l        g ! [         a?  n[        R                  R                  SU R                   SU R                   35      UeS nAff = f)Nz%s==%sz%s===%sz-Invalid distribution name or version syntax: -r9   r   	.egg-info)rb   r   ri   r   rx   ro   Version
isinstancerequirementsRequirement
ValueError	distutilserrorsDistutilsOptionErrorr   r_   package_dirgetrD   curdirensure_dirnamer   filename_componentr   r*   joinr   )r    parsed_version
is_versionspecr   dirss         r"   finalize_optionsegg_info.finalize_options   s~   
 		..0"**2243C3CD	#NI4E4E4M4MNJ)8yD""..t}}dFVFV6W/WX == $$00D!ZR,,R;DMJ'&99$--H;V==BII%GGLLFDM
 .2-=-=""*#  	""77?aPTP`P`Oab	s   A&F> >
H:HHNc                D    [        U R                  U R                  X5      $ )0Compute filename of the output egg. Private API.)_egg_basenamer   r   )r    
py_versionplatforms      r"   _get_egg_basenameegg_info._get_egg_basename  s    T]]D,<,<jSSr%   c                    U(       a  U R                  XU5        g[        R                  R                  U5      (       a4  Uc  U(       d  [        R
                  " SX5        gU R                  U5        gg)a  Write `data` to `filename` or delete if empty

If `data` is non-empty, this routine is the same as ``write_file()``.
If `data` is empty but not ``None``, this is the same as calling
``delete_file(filename)`.  If `data` is ``None``, then this is a no-op
unless `filename` exists, in which case a warning is issued about the
orphaned file (if `force` is false), or deleted (if `force` is true).
Nz$%s not set in setup(), but %s exists)
write_filerD   r*   existsr   warndelete_file)r    whatr   dataforces        r"   write_or_delete_fileegg_info.write_or_delete_file  sT     OODD1WW^^H%%|E?P  * &r%   c                    [         R                  " SX5        UR                  S5      n[        US5      nUR	                  U5        UR                  5         g)zWrite `data` to `filename` (if not a dry run) after announcing it

`what` is used in a log message to identify what is being written
to the file.
zwriting %s to %sutf-8wbN)r   infoencodeopenwriteclose)r    r   r   r   fs        r"   r   egg_info.write_file1  sA     	#T4{{7#4 			r%   c                ^    [         R                  " SU5        [        R                  " U5        g)z8Delete `filename` (if not a dry run) after announcing itzdeleting %sN)r   r   rD   unlink)r    r   s     r"   r   egg_info.delete_file=  s    )
		(r%   c           	        [        [        R                  " SS95      nU R                  U R                  5         [
        R                  " U R                  S 5        U HX  nUR                  5       nU" XR                  [
        R                  R                  U R                  UR                  5      5        MZ     [
        R                  R                  U R                  S5      n[
        R                  R                  U5      (       a  U R!                  U5        U R#                  5         g ! [         a5  nSU R                   S3n[        R                  R                  U5      UeS nAff = f)Nzegg_info.writers)groupz'Cannot update time stamp of directory ''znative_libs.txt)listr   entry_pointsmkpathr   rD   utimeOSErrorr   r   DistutilsFileErrorloadrb   r*   r   r   r   find_sources)r    writersr   msgepwriternls          r"   runegg_info.runB  s    x,,3EFGDMM"	BHHT]]D) BWWYF4"'',,t}}bgg"FG 
 WW\\$--):;77>>"R   	B;DMM?!LC""55c:A	Bs   !D) )
E(30E##E(c                    [         R                  R                  U R                  S5      n[	        U R
                  5      nU R                  Ul        Xl        UR                  5         UR                  U l
        g)z"Generate SOURCES.txt manifest filezSOURCES.txtN)rD   r*   r   r   manifest_makerr_   r   ignore_egg_info_dirmanifestr   filelist)r    manifest_filenamemms      r"   r   egg_info.find_sourcesX  sR    GGLLFD--.!%!A!A'
r%   )r   r   r   r   r   r   )r/   z
int | Noner/   r0   Fr   r   r/   r0   )r1   r2   r3   r4   descriptionr   __annotations__r   r   r   r   r   setterr   r   PY_MAJORr   r   r   r   r   r   r6   r7   r%   r"   r   r      s    ?K	     -7<O(7:.L* 1    
	7>@ ,4d T+$

,$r%   r   c                     ^  \ rS rSr S   SU 4S jjjrSS jrS rS rS rS r	S r
S	 rS
 rS rS rSS jrSS jrS rS rSrU =r$ )r   ib  c                0   > [         TU ]  X5        X0l        g r   )superr#   r   )r    r   debug_printr   	__class__s       r"   r#   FileList.__init__e  s     	+#6 r%   c           	        U R                  U5      u  p#pEU R                  U R                  U R                  U R                  [
        R                  " U R                  U5      [
        R                  " U R                  U5      U R                  U R                  S.nSSSSSSSS	S.n Xb   nUR                  S5      n
US;   a  U/nU
(       a  U4OSnXr   nU R                  SR                  U/U
(       a  U/O/ -   U-   5      5        U H)  nU" U5      (       a  M  [         R"                  " X/UQ76   M+     g ! [         a    S
U< SU< 3n	[        U	5      S ef = f)N)includeexcludezglobal-includezglobal-excludezrecursive-includezrecursive-excludegraftprunez%warning: no files found matching '%s'z9warning: no previously-included files found matching '%s'z>warning: no files found matching '%s' anywhere in distributionzRwarning: no previously-included files matching '%s' found anywhere in distributionz:warning: no files found matching '%s' under directory '%s'zNwarning: no previously-included files matching '%s' found under directory '%s'z+warning: no directories found matching '%s'z6no previously-included directories found matching '%s'z$Invalid MANIFEST.in: unknown action z in z
recursive->   r  r  r7   rw   )_parse_template_liner  r  global_includeglobal_exclude	functoolspartialrecursive_includerecursive_excluder  r  KeyErrorr   
startswithr   r   r   r   )r    lineactionpatternsdirdir_pattern
action_maplog_mapprocess_actionr   action_is_recursiveextra_log_argslog_tmplr!   s                 r"   process_template_lineFileList.process_template_linek  s}    04/H/H/N,3 ||||"11"11!*!2!2&&" "+!2!2&&" ZZZZ+

" ?SP6 M2 CM%
*	8'/N %//=''#}H#6#B?HH%8SEbAHL	

  G!'**<^<  '  	88
$thOC(-47	8s   &D5 5!Ec                    Sn[        [        U R                  5      S-
  SS5       HO  nU" U R                  U   5      (       d  M  U R                  SU R                  U   -   5        U R                  U	 SnMQ     U$ )zn
Remove all files from the file list that match the predicate.
Return True if any matching files were removed
Fr   z
 removing T)rangerI   filesr   )r    	predicatefoundrS   s       r"   _remove_filesFileList._remove_files  sn    
 s4::*B3AA''  

1!=>JJqM	 4
 r%   c                    [        U5       Vs/ s H+  n[        R                  R                  U5      (       a  M)  UPM-     nnU R	                  U5        [        U5      $ s  snf )z#Include files that match 'pattern'.)r   rD   r*   isdirextendr   )r    r!   r   r   s       r"   r  FileList.include  sE     MBMqq1AMBEE{ Cs
   (AAc                N    [        U5      nU R                  UR                  5      $ )z#Exclude files that match 'pattern'.)rY   r!  r'   r    r!   r'   s      r"   r  FileList.exclude  s!    !'*!!%++..r%   c                   [         R                  R                  USU5      n[        USS9 Vs/ s H+  n[         R                  R	                  U5      (       a  M)  UPM-     nnU R                  U5        [        U5      $ s  snf )z>
Include all files anywhere in 'dir/' that match the pattern.
r;   T)	recursive)rD   r*   r   r   r$  r%  r   )r    r  r!   full_patternr   r   s         r"   r
  FileList.recursive_include  sc     ww||Cw7 >W>qbggmmTUFV>WEE{ Xs   (A>A>c                    [        [        R                  R                  USU5      5      nU R	                  UR
                  5      $ )z=
Exclude any file anywhere in 'dir/' that match the pattern.
r;   rY   rD   r*   r   r!  r'   )r    r  r!   r'   s       r"   r  FileList.recursive_exclude  s4     ""'',,sD'"BC!!%++..r%   c                    [        U5       VVs/ s H,  n[        R                  R                  U5        H  nUPM     M.     nnnU R	                  U5        [        U5      $ s  snnf )zInclude all files from 'dir/'.)r   r   r   findallr%  r   )r    r  	match_diritemr   s        r"   r  FileList.graft  sc     "#Y
&	!**229= = & 	 

 	EE{
s   3A!c                    [        [        R                  R                  US5      5      nU R	                  UR
                  5      $ )zFilter out files from 'dir/'.r;   r/  )r    r  r'   s      r"   r  FileList.prune  s0    !"'',,sD"9:!!%++..r%   c                6   U R                   c  U R                  5         [        [        R                  R                  SU5      5      nU R                    Vs/ s H  o2R                  U5      (       d  M  UPM     nnU R                  U5        [        U5      $ s  snf )z{
Include all files anywhere in the current directory that match the
pattern. This is very inefficient on large file trees.
r;   )	allfilesr2  rY   rD   r*   r   r'   r%  r   )r    r!   r'   r   r   s        r"   r  FileList.global_include  sk    
 == LLN!"'',,tW"=> MM<Mq[[^M<EE{ =s   B2Bc                    [        [        R                  R                  SU5      5      nU R	                  UR
                  5      $ )z4
Exclude all files anywhere that match the pattern.
r;   r/  r(  s      r"   r  FileList.global_exclude  s2     ""'',,tW"=>!!%++..r%   c                    UR                  S5      n[        U5      nU R                  U5      (       a  U R                  R	                  U5        g g )N)removesuffixr   
_safe_pathr  append)r    r4  r*   s      r"   rA  FileList.append  sB      &D!??4  JJd# !r%   c                b    U R                   R                  [        U R                  U5      5        g r   )r  r%  filterr@  )r    pathss     r"   r%  FileList.extend  s    

&%89r%   c                `    [        [        U R                  U R                  5      5      U l        g)z
Replace self.files with only safe paths

Because some owners of FileList manipulate the underlying
``files`` attribute directly, this method must be called to
repair those paths.
N)r   rD  r@  r  ra   s    r"   _repairFileList._repair  s     &$**=>
r%   c                0   Sn[         R                  " U5      nUc  [        R                  " SU S35        g[         R                  " US5      nUc  [        R                  " X!S5        g SU;   =(       d    SU;   nU R
                  (       a  U(       a  g[        R                  R                  U5      (       d$  [        R                  R                  U5      (       a  gg ! [         a-    [        R                  " X![        R                  " 5       5         g f = f)	Nz!'%s' not %s encodable -- skippingr   z$' in unexpected encoding -- skippingFr   r   s	   .egg-infoT)r   filesys_decoder   r   
try_encoder   rD   r*   r   UnicodeEncodeErrorsysgetfilesystemencoding)r    r*   enc_warnu_path	utf8_pathis_egg_infos         r"   r@  FileList._safe_path  s    6 --d3>HHqBCD ",,VW=	HHXW-
	B%/L<93LK''Kww~~f%%	)B)B *C " 	BHHXS%>%>%@A	Bs   *)C AC 4DD)r  r   )NNF)r   r   r/   r0   r   )r1   r2   r3   r4   r#   r  r!  r  r  r
  r  r  r  r  r  rA  r%  rH  r@  r6   __classcell__)r   s   @r"   r   r   b  ss     HM7@D7	7 7D=L/
//

/$:?B Br%   r   c                      \ rS rSrSrSS jrSS jrSS jrS rSS jr	SS jr
\S	 5       rSS
 jrSS jrS rS rSrg)r   i+  zMANIFEST.inc                J    SU l         SU l        SU l        SU l        SU l        g )NTF)use_defaultsr  manifest_onlyforce_manifestr   ra   s    r"   r   !manifest_maker.initialize_options.  s)     
!"#( r%   c                    g r   r7   ra   s    r"   r   manifest_maker.finalize_options5  s    r%   c                4   [        U R                  S9U l        [        R                  R                  U R                  5      (       d  U R                  5         U R                  5         [        R                  R                  U R                  5      (       a  U R                  5         U R                  5         U R                  5         U R                  5         U R                  R                  5         U R                  R                  5         U R                  5         g )N)r   )r   r   r   rD   r*   r   r   write_manifestadd_defaultstemplateread_templateadd_license_files_add_referenced_filesprune_file_listsortremove_duplicatesra   s    r"   r   manifest_maker.run8  s     T5M5MNww~~dmm,,!77>>$--((  ""$'')r%   c                n    [         R                  " U5      nUR                  [        R                  S5      $ )N/)r   rK  rz   rD   rE   r)   s     r"   _manifest_normalize"manifest_maker._manifest_normalizeF  s'    ++D1||BFFC((r%   c                   U R                   R                  5         U R                   R                   Vs/ s H  oR                  U5      PM     nnSU R                   S3nU R                  [        U R                  U4U5        gs  snf )zW
Write the file list in 'self.filelist' to the manifest file
named by 'self.manifest'.
zwriting manifest file 'r   N)r   rH  r  rk  r   executer   )r    r   r  r   s       r"   r_  manifest_maker.write_manifestJ  sp    
 	 7;mm6I6IJ6I))!,6IJ'a8Z$--!7= Ks   Bc                ^    U R                  U5      (       d  [        R                  " X5        g g r   )_should_suppress_warningr	   r   )r    r   s     r"   r   manifest_maker.warnV  s$    ,,S11JJt! 2r%   c                0    [         R                  " SU 5      $ )z+
suppress missing-file warnings from sdist
zstandard file .*not found)rF   r'   )r   s    r"   rq  'manifest_maker._should_suppress_warningZ  s    
 xx4c::r%   c                   [         R                  " U 5        U R                  R                  U R                  5        U R                  R                  U R
                  5        [        [        5       5      nU(       a  U R                  R                  U5        O>[        R                  R                  U R
                  5      (       a  U R                  5         [        R                  R                  S5      (       a  U R                  R                  S5        U R                  S5      nU R                  R                  UR                  5        g )Nzsetup.pyr   )r	   r`  r   rA  ra  r   r   r
   r%  rD   r*   r   read_manifestget_finalized_commandr  r   )r    rcfilesei_cmds      r"   r`  manifest_maker.add_defaultsa  s    4 T]]+T]]+|~&MM  )WW^^DMM** 77>>*%% MM  ,++J7FOO,r%   c                    U R                   R                  R                  =(       d    / nU H  n[        R                  " SU5        M     U R
                  R                  U5        g )Nzadding license file '%s')r_   r   license_filesr   r   r   r%  )r    r|  lfs      r"   rc   manifest_maker.add_license_filess  sI    ))22@@FBBHH/4  ]+r%   c                    [        U R                  S/ 5      nU H  n[        R                  " SU5        M     U R                  R                  U5        g)zGAdd files referenced by the config (e.g. `file:` directive) to filelist_referenced_filesz%adding file referenced by config '%s'N)getattrr_   r   debugr   r%  )r    
referencedrfs      r"   rd  $manifest_maker._add_referenced_filesy  sB    T..0CRH
BII=rB Z(r%   c                    [        US5      (       a  UR                  5       $ [        R                  " SSSS9  UR	                  5       $ )z
The parent class implementation of this method
(``sdist``) will try to include data files, which
might cause recursion problems when
``include_package_data=True``.

Therefore, avoid triggering any attempt of
analyzing/building the manifest again.
get_data_files_without_manifestz@`build_py` command does not inherit from setuptools' `build_py`.z
            Custom 'build_py' does not implement 'get_data_files_without_manifest'.
            Please extend command classes from setuptools instead of distutils.
            z!https://peps.python.org/pep-0632/)see_url)hasattrr  r   emitget_data_files)r    build_pys     r"   _safe_data_filesmanifest_maker._safe_data_files  sM     8>??;;==$))N 8	
 &&((r%   )r   rZ  r   rY  r  rX  Nr   )r1   r2   r3   r4   ra  r   r   r   rk  r_  r   staticmethodrq  r`  rc  rd  r  r6   r7   r%   r"   r   r   +  sM    H))
>" ; ;-$,))r%   r   c                    SR                  U5      nUR                  S5      n[        U S5       nUR                  U5        SSS5        g! , (       d  f       g= f)zsCreate a file with the specified name and write 'contents' (a
sequence of strings without line terminators) to it.

r   r   N)r   r   r   r   )r   contentsr   s      r"   r   r     sF     yy"H w'H	h		 
		s   A


Ac                   [         R                  " SU5        U R                  R                  nU R                  UR
                  sUl        nU R                  UR                  sUl        n UR                  " U R                  5        XTsUl        Ul        [        U R                  SS 5      n[        R                  " U R                  U5        g ! XTsUl        Ul        f = f)Nz
writing %szip_safe)r   r   r_   r   r   ro   r   rb   write_pkg_infor   r  r   write_safety_flag)cmdbasenamer   r   oldveroldnamesafes          r"   r  r    s    HH\8$((H"0@0@Hf \\8==HM7:-*1'x'3##Z6Dd3	 +2'x's   +C Cc                    g)aR  
Unused: left to avoid errors when updating (from source) from <= 67.8.
Old installations have a .dist-info directory with the entry-point
``depends.txt = setuptools.command.egg_info:warn_depends_obsolete``.
This may trigger errors when running the first egg_info in build_meta.
TODO: Remove this function in a version sufficiently > 68.
Nr7   r  r  r   s      r"   warn_depends_obsoleter    s    r%   c           	     
   [         R                  U R                  R                  5        Vs/ s H  o3R	                  SS5      S   PM     sn5      nU R                  SUSR                  [        U5      5      S-   5        g s  snf )Nr   r   r   ztop-level namesr  )r   fromkeysr_   iter_distribution_namesrC   r   r   sorted)r  r  r   kpkgss        r"   write_toplevel_namesr    sn    ==$'$4$4$L$L$N$NqQ$N D NN$h		&,0G$0NOs   B c                    [        XUS5        g )NT)	write_argr  s      r"   overwrite_argr    s    cXt,r%   c                    [         R                  R                  U5      S   n[        U R                  US 5      nUb  SR                  U5      S-   nU R                  XBXS5        g )Nr   r  )rD   r*   splitextr  r_   r   r   )r  r  r   r   argnamer   s         r"   r  r    sX    ggx(+GC$$gt4E		% 4'W=r%   c                    [         R                  " U R                  R                  5      n[         R                  " U5      nU R                  SX$S5        g )Nzentry pointsT)r   r   r_   r   renderr   )r  r  r   epsdefns        r"   write_entriesr    s@    


S--::
;C$D^XTBr%   c                    [         R                  " U 5      n[         R                  " U5      nU SU SU=(       d    [         3nU(       a  USU 3-  nU$ )r   r   z-py)r   r   r   )r   r   r   r   rb   ro   eggs          r"   r   r     sV    ,,X6D//<GF!G9C
 6h7
8C8*~Jr%   c                      \ rS rSrSrSrg)EggInfoDeprecationWarningi  z?Deprecated behavior warning for EggInfo, bypassing suppression.r7   N)r1   r2   r3   r4   r5   r6   r7   r%   r"   r  r    s    Ir%   r  r   r   r   )NN)@r5   
__future__r   r  rD   rF   rN  r   collections.abcr   typingr   rx   packaging.requirementspackaging.version
setuptoolsr   r   setuptools.commandr   setuptools.command.sdistr	   r
   setuptools.command.setoptr   setuptools.globr   r9   r   r   
_importlibr   warningsr   r   distutils.errorsr   distutils.filelistr   r   r   	_FileListdistutils.utilr   version_infomajorminorr   r   rY   r[   r   r   r   r  r  write_requirementswrite_setup_requirementsr  r  r  r  r   r  r7   r%   r"   <module>r     s'  < #  	 	 
  $     - ( 8 1   , ! 3     3 4 '$$%Qs'7'7'='=&>?C C*UOp, ,^[$z7 [$|FBy FBRl)U l)^
4  "44 '@@ P->CJ < Jr%   