
    7fhe                     
   d Z ddlmZ ddlmZ ddlmZ ddlm	Z	 ddlZddlZddl
Z
ddlZddlZddlZddlZddl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dlmZ ddlm Z  ddl!m"Z" ddl#Z#ddl$m%Z%  dj&        ej'         Z(d Z) G d d          Z* G d de*e          Z+ G d de          Z G d de          Z,d Z-d Z.d Z/ej0        Z0ej1        Z1d  Z2d! Z3d(d#Z4d$ Z5d)d%Z6 G d& d'e%          Z7dS )*zUsetuptools.command.egg_info

Create a distribution's .egg-info directory and contents    )FileList)DistutilsInternalError)convert_path)logN   )metadata)_entry_points_normalization   )_requirestxt)Command)sdist)walk_revctrl)edit_config)	bdist_egg)glob)SetuptoolsDeprecationWarningz{}.{}c                    d} | j         t          j        j                  }t	          j        t          j                  }d|d}t          |          D ]f\  }}|t          |          dz
  k    }|dk    r|r|dz  }n|d|d|d	z  }7d
}t          |          }	||	k     r||         }
|
dk    r	||dz   z  }n|
dk    r||z  }n|
dk    r|dz   }||	k     r||         dk    r|dz   }||	k     r||         dk    r|dz   }||	k     r#||         dk    r|dz   }||	k     r||         dk    ||	k    r|t	          j        |
          z  }na||dz   |         }d}|d
         dk    rd}|dd         }|t	          j        |          z  }|d|dz  }|}n|t	          j        |
          z  }|dz  }||	k     |s||z  }h|dz  }t	          j        |t          j	        t          j
        z            S )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)splitospathsepreescape	enumeratelencompile	MULTILINEDOTALL)r   patchunksr"   
valid_charcchunk
last_chunki	chunk_lencharinner_iinner
char_classs                 Y/home/feoh/.local/pipx/shared/lib/python3.11/site-packages/setuptools/command/egg_info.pytranslate_patternr7   %   s    C TZ$$F
)BF

CCCC!Jf%% > >5#f++/)
 D== 8t zzz33377 JJ	)mm8Ds{{zC''z!a%Y&&5>S+@+@%kGY&&5>S+@+@%kG 	))eGn.C.C%kG 	))eGn.C.C i'' 29T??*CC "!a%'/2E!#J Qx3%(
 %abb	")E"2"22JCZZZ11C  AAry&FAU )mmZ  	3JC5LC:c	!9::::    c                   v    e Zd ZdZdZed             Zd Zd Zde	de
fdZde	fdZde	fd	Z ee          ZdS )

InfoCommonNc                 X    t          j        | j                                                  S N)r
   	safe_namedistributionget_nameselfs    r6   namezInfoCommon.name|   s"    '(9(B(B(D(DEEEr8   c                     |                      | j                                                  }t          j        |          S r<   )
_maybe_tagr>   get_versionr
   safe_version)rA   taggeds     r6   tagged_versionzInfoCommon.tagged_version   s3    !2!>!>!@!@AA*6222r8   c                 R    | j         r|                     |          r|n	|| j         z   S )z
        egg_info may be called more than once for a distribution,
        in which case the version string already contains all tags.
        )vtags_already_taggedrA   versions     r6   rD   zInfoCommon._maybe_tag   s7     z&"227;;&GG4:%	
r8   rM   returnc                     |                     | j                  p&|                     |                                           S r<   )endswithrJ   
_safe_tagsrL   s     r6   rK   zInfoCommon._already_tagged   s7     
++Rw/?/?@Q@Q/R/RRr8   c                     	 t          j        d| j                   dd          S # t          j        j        $ r0 t          j        | j                            dd                    cY S w xY w)N0r    .)r
   rF   rJ   	packagingrM   InvalidVersionr=   replacer@   s    r6   rQ   zInfoCommon._safe_tags   s{    	J!./?4:/?/?@@DD / 	J 	J 	J!+DJ,>,>sC,H,HIIIII	Js   #& AA*)A*c                 h    d}| j         r
|| j         z  }| j        r|t          j        d          z  }|S )Nr   z%Y%m%d)	tag_buildtag_datetimestrftimerL   s     r6   tagszInfoCommon.tags   s@    > 	&t~%G= 	/t}X...Gr8   )__name__
__module____qualname__rZ   r[   propertyrB   rH   rD   strboolrK   rQ   r^   rJ    r8   r6   r:   r:   x   s        IHF F XF3 3 3	
 	
 	
Ss St S S S S
JC J J J Jc     HTNNEEEr8   r:   c                       e Zd ZdZg dZdgZddiZd Zed             Z	e	j
        d             Z	d Zd	 Zed
fdZddZd Zd Zd Zd Zd
S )egg_infoz+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]ri   rl   c                 L    d | _         d | _        d | _        d | _        d| _        d S )NF)egg_baseegg_namerg   egg_versionignore_egg_info_in_manifestr@   s    r6   initialize_optionszegg_info.initialize_options   s-    +0(((r8   c                     d S r<   re   r@   s    r6   tag_svn_revisionzegg_info.tag_svn_revision       r8   c                     d S r<   re   )rA   values     r6   ru   zegg_info.tag_svn_revision   rv   r8   c                     t          j                    }|                                 |d<   d|d<   t          |t	          |                     dS )z
        Materialize the value of date into the
        build tag. Install build keys in a deterministic order
        to avoid arbitrary reordering on subsequent builds.
        rZ   r   r[   )rg   N)collectionsOrderedDictr^   r   dict)rA   filenamerg   s      r6   save_version_infozegg_info.save_version_info   sQ     *,, !%		 HdH55566666r8   c                 Z   | j         | _        |                                 | _        t          j                            | j                  }	 t          |t          j        j                  }|rdnd}t          j        	                    || j        | j        fz             nB# t          $ r5}t          j                            d| j        d| j                  |d }~ww xY w| j        3| j        j        }|pi                     dt$          j                  | _        |                     d           t+          j        | j                  dz   | _        | j        t$          j        k    r/t$          j                            | j        | j                  | _        | j        | j        j        _        d S )Nz%s==%sz%s===%sz-Invalid distribution name or version syntax: -r   ro   	.egg-info)rB   rp   rH   rq   rV   rM   Version
isinstancerequirementsRequirement
ValueError	distutilserrorsDistutilsOptionErrorro   r>   package_dirgetr    curdirensure_dirnamer
   filename_componentrg   r!   joinr   )rA   parsed_version
is_versionspecrh   dirss         r6   finalize_optionszegg_info.finalize_options   s   
 	..00"*2243CDD	#NI4E4MNNJ)888yD"..tt}dFV6W/WXXXX 	 	 	"777===$"2"24  	 = $0D!ZR,,R;;DMJ'''&9$-HH;V=BI%%GLLFFDM
 .2-="***s   AB 
C)0CCNc                 :    t          | j        | j        ||          S )0Compute filename of the output egg. Private API.)_egg_basenamerp   rq   )rA   
py_versionplatforms      r6   _get_egg_basenamezegg_info._get_egg_basename   s    T]D,<j(SSSr8   Fc                     |r|                      |||           dS t          j                            |          r3||st	          j        d||           dS |                     |           dS dS )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_filer    r!   existsr   warndelete_file)rA   whatr}   dataforces        r6   write_or_delete_filezegg_info.write_or_delete_file  s      	+OOD(D11111W^^H%% 	+|E|?xPPP  *****	+ 	+r8   c                     t          j        d||           |                    d          }| j        s;t	          |d          }|                    |           |                                 dS dS )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dry_runopenwriteclose)rA   r   r}   r   fs        r6   r   zegg_info.write_file  sm     	#T8444{{7##| 	Xt$$AGGDMMMGGIIIII	 	r8   c                 j    t          j        d|           | j        st          j        |           dS dS )z8Delete `filename` (if not a dry run) after announcing itzdeleting %sN)r   r   r   r    unlink)rA   r}   s     r6   r   zegg_info.delete_file   s>    )))| 	 Ih	  	 r8   c           	         |                      | j                   	 t          j        | j        d            n=# t          $ r0}d| j         d}t
          j                            |          |d }~ww xY wt          j	        d          D ]P}|
                                } || |j        t          j                            | j        |j                             Qt          j                            | j        d          }t          j                            |          r|                     |           |                                  d S )Nz'Cannot update time stamp of directory ''zegg_info.writers)groupznative_libs.txt)mkpathrg   r    utimeOSErrorr   r   DistutilsFileErrorr   entry_pointsloadrB   r!   r   r   r   find_sources)rA   rh   msgepwriternls         r6   runzegg_info.run&  s9   DM"""	BHT]D)))) 	B 	B 	BLDMLLLC"55c::A	B '.@AAA 	H 	HBWWYYFF4"',,t}bg"F"FGGGG W\\$-):;;7>>" 	!R   s   7 
A1+A,,A1c                     t           j                            | j        d          }t	          | j                  }| j        |_        ||_        |	                                 |j
        | _
        dS )z"Generate SOURCES.txt manifest filezSOURCES.txtN)r    r!   r   rg   manifest_makerr>   rr   ignore_egg_info_dirmanifestr   filelist)rA   manifest_filenamemms      r6   r   zegg_info.find_sources8  sV    GLLFFD-..!%!A'
r8   F)r_   r`   ra   descriptionuser_optionsboolean_optionsnegative_optrs   rb   ru   setterr~   r   PY_MAJORr   r   r   r   r   r   re   r8   r6   rg   rg      s       ?K
 
 
L "lO:L1 1 1   X   
7 7 7> > >B ,4d T T T T+ + + +$         $$ $ $ $ $r8   rg   c                   t     e Zd Zd fd	Zd Zd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd Zd Z xZS )r   NFc                 Z    t                                          ||           || _        d S r<   )super__init__r   )rA   r   debug_printr   	__class__s       r6   r   zFileList.__init__E  s+    {+++#6   r8   c           	      f   |                      |          \  }}}}| j        | j        | j        | j        t          j        | j        |          t          j        | j        |          | j	        | j
        d}dddddddd	d}	 ||         }n&# t          $ r d
|d|}	t          |	          d w xY w|                    d          }
|dv r|g}|
r|fnd}||         }|                     d                    |g|
r|gng z   |z                        |D ] } ||          st!          j        ||g|R   !d S )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   re   rT   )_parse_template_liner   r   global_includeglobal_exclude	functoolspartialrecursive_includerecursive_excluder   r   KeyErrorr   
startswithr   r   r   r   )rA   lineactionpatternsdirdir_pattern
action_maplog_mapprocess_actionr   action_is_recursiveextra_log_argslog_tmplpatterns                 r6   process_template_linezFileList.process_template_lineI  s    04/H/H/N/N,3 ||"1"1!*!2&" " "+!2&" " ZZ
 

" ?SP6 M2 CM%
 
*	8'/NN 	8 	8 	8OOOtOOC(--47	8 %//=='''#}H#6>#B6?HH%8@SEEbAHL 	
 	
 	

   	= 	=G!>'** =7<^<<<<	= 	=s    B	 	#B,c                     d}t          t          | j                  dz
  dd          D ]E} || j        |                   r-|                     d| j        |         z              | j        |= d}F|S )z
        Remove all files from the file list that match the predicate.
        Return True if any matching files were removed
        Fr   z
 removing T)ranger&   filesr   )rA   	predicatefoundr0   s       r6   _remove_fileszFileList._remove_files  s|    
 s4:*B33 	 	AyA''   
1!=>>>JqMr8   c                 |    d t          |          D             }|                     |           t          |          S )z#Include files that match 'pattern'.c                 P    g | ]#}t           j                            |          !|$S re   r    r!   isdir.0r   s     r6   
<listcomp>z$FileList.include.<locals>.<listcomp>  s+    BBBqq1A1ABBBBr8   r   extendrd   )rA   r   r   s      r6   r   zFileList.include  s9    BBDMMBBBEE{{r8   c                 T    t          |          }|                     |j                  S )z#Exclude files that match 'pattern'.)r7   r   matchrA   r   r   s      r6   r   zFileList.exclude  s%    !'**!!%+...r8   c                     t           j                            |d|          }d t          |d          D             }|                     |           t          |          S )zN
        Include all files anywhere in 'dir/' that match the pattern.
        r   c                 P    g | ]#}t           j                            |          !|$S re   r   r   s     r6   r   z.FileList.recursive_include.<locals>.<listcomp>  s,    WWWqbgmmTUFVFVWWWWr8   T)	recursive)r    r!   r   r   r   rd   )rA   r   r   full_patternr   s        r6   r   zFileList.recursive_include  sY     w||Cw77WWD>>>WWWEE{{r8   c                     t          t          j                            |d|                    }|                     |j                  S )zM
        Exclude any file anywhere in 'dir/' that match the pattern.
        r   r7   r    r!   r   r   r   )rA   r   r   r   s       r6   r   zFileList.recursive_exclude  s9     ""',,sD'"B"BCC!!%+...r8   c                 |    d t          |          D             }|                     |           t          |          S )zInclude all files from 'dir/'.c                 V    g | ]&}t           j                            |          D ]}|'S re   )r   r   findall)r   	match_diritems      r6   r   z"FileList.graft.<locals>.<listcomp>  sP     
 
 
!*229==
 
  
 
 
 
r8   r   )rA   r   r   s      r6   r   zFileList.graft  sF    
 
!#YY
 
 

 	EE{{r8   c                     t          t          j                            |d                    }|                     |j                  S )zFilter out files from 'dir/'.r   r  )rA   r   r   s      r6   r   zFileList.prune  s5    !"',,sD"9"9::!!%+...r8   c                    | j         |                                  t          t          j                            d|                    fd| j         D             }|                     |           t          |          S )z
        Include all files anywhere in the current directory that match the
        pattern. This is very inefficient on large file trees.
        Nr   c                 >    g | ]}                     |          |S re   )r   )r   r   r   s     r6   r   z+FileList.global_include.<locals>.<listcomp>  s(    <<<qU[[^^<<<<r8   )allfilesr	  r7   r    r!   r   r   rd   )rA   r   r   r   s      @r6   r   zFileList.global_include  sp    
 = LLNNN!"',,tW"="=>><<<<DM<<<EE{{r8   c                     t          t          j                            d|                    }|                     |j                  S )zD
        Exclude all files anywhere that match the pattern.
        r   r  r   s      r6   r   zFileList.global_exclude  s7     ""',,tW"="=>>!!%+...r8   c                     |                     d          r
|d d         }t          |          }|                     |          r| j                            |           d S d S )Nr   )rP   r   
_safe_pathr   append)rA   r  r!   s      r6   r  zFileList.append  sj    == 	9DD!!??4   	$Jd#####	$ 	$r8   c                 `    | j                             t          | j        |                     d S r<   )r   r   filterr  )rA   pathss     r6   r   zFileList.extend  s*    
&%8899999r8   c                 ^    t          t          | j        | j                            | _        dS )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)listr  r  r   r@   s    r6   _repairzFileList._repair  s%     &$*==>>


r8   c                    d}t          j        |          }|t          j        d|z             dS t          j        |d          }|t          j        ||d           dS 	 d|v pd|v }| j        r|rdS t          j                            |          st          j                            |          rdS d S # t          $ r+ t          j        ||t          j                               Y d S w xY w)Nz!'%s' not %s encodable -- skippingz''%s' in unexpected encoding -- skippingFr   r   s	   .egg-infoT)unicode_utilsfilesys_decoder   r   
try_encoder   r    r!   r   UnicodeEncodeErrorsysgetfilesystemencoding)rA   r!   enc_warnu_path	utf8_pathis_egg_infos         r6   r  zFileList._safe_path  s   6 -d33>H>EFFF5 ",VW==	HXtW---5
	B%/L<93LK' K uw~~f%% 	)B)B t  " 	B 	B 	BHXtS%>%@%@AAAAAA	Bs   "B7 5>B7 71C,+C,)NNF)r_   r`   ra   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r  __classcell__)r   s   @r6   r   r   B  s       7 7 7 7 7 7D= D= D=L    / / /
  / / /  / / /

 
 
/ / /$ $ $: : :? ? ?B B B B B B Br8   r   c                   j    e Zd ZdZd Zd Zd Zd Zd Zd Z	e
d             Zd	 Zd
 Zd Zd Zd ZdS )r   zMANIFEST.inc                 L    d| _         d| _        d| _        d| _        d| _        d S )NTF)use_defaultsr   manifest_onlyforce_manifestr   r@   s    r6   rs   z!manifest_maker.initialize_options  s/     
!"#(   r8   c                     d S r<   re   r@   s    r6   r   zmanifest_maker.finalize_options  s    r8   c                 F   t          | j                  | _        t          j                            | j                  s|                                  |                                  t          j                            | j	                  r| 
                                 |                                  |                                  |                                  | j                                         | j                                         |                                  d S )N)r   )r   r   r   r    r!   r   r   write_manifestadd_defaultstemplateread_templateadd_license_files_add_referenced_filesprune_file_listsortremove_duplicatesr@   s    r6   r   zmanifest_maker.run  s     T5MNNNw~~dm,, 	"!!!7>>$-(( 	!      ""$$$'')))r8   c                 j    t          j        |          }|                    t          j        d          S )N/)r  r  rX   r    r"   )rA   r!   s     r6   _manifest_normalizez"manifest_maker._manifest_normalize%  s(    +D11||BFC(((r8   c                       j                                           fd j         j        D             }d j        z  }                     t
           j        |f|           dS )zo
        Write the file list in 'self.filelist' to the manifest file
        named by 'self.manifest'.
        c                 :    g | ]}                     |          S re   )r9  )r   r   rA   s     r6   r   z1manifest_maker.write_manifest.<locals>.<listcomp>1  s'    JJJ))!,,JJJr8   zwriting manifest file '%s'N)r   r  r   r   executer   )rA   r   r   s   `  r6   r.  zmanifest_maker.write_manifest)  si    
 	 KJJJdm6IJJJ*T]:Z$-!7=====r8   c                 ^    |                      |          st          j        | |           d S d S r<   )_should_suppress_warningr   r   )rA   r   s     r6   r   zmanifest_maker.warn5  s:    ,,S11 	"JtS!!!!!	" 	"r8   c                 ,    t          j        d|           S )z;
        suppress missing-file warnings from sdist
        zstandard file .*not found)r#   r   )r   s    r6   r>  z'manifest_maker._should_suppress_warning9  s    
 x4c:::r8   c                 d   t          j        |            | j                            | j                   | j                            | j                   t          t                                }|r| j                            |           n8t          j
                            | j                  r|                                  t          j
                            d          r| j                            d           |                     d          }| j                            |j                   d S )Nzsetup.pyrg   )r   r/  r   r  r0  r   r  r   r   r    r!   r   read_manifestget_finalized_commandr   rg   )rA   rcfilesei_cmds      r6   r/  zmanifest_maker.add_defaults@  s    4   T]+++T]+++|~~&& 	!M  ))))W^^DM** 	!   7>>*%% 	- M  ,,,++J77FO,,,,,r8   c                     | j         j        j        pg }|D ]}t          j        d|           | j                            |           d S )Nzadding license file '%s')r>   r   license_filesr   r   r   r   )rA   rF  lfs      r6   r2  z manifest_maker.add_license_filesR  sV    )2@FB 	5 	5BH/4444]+++++r8   c                     t          | j        dg           }|D ]}t          j        d|           | j                            |           dS )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   )rA   
referencedrfs      r6   r3  z$manifest_maker._add_referenced_filesX  sZ    T.0CRHH
 	C 	CBI=rBBBBZ(((((r8   c                 Z   |                      d          }| j                                        }| j                            |j                   | j                            |           t          j        t          j	                  }| j        
                    d|z   dz   |z   d           d S )Nbuildz(^|z)(RCS|CVS|\.svn)T)is_regex)rB  r>   get_fullnamer   r   
build_baser#   r$   r    r"   exclude_pattern)rA   rO  base_dirr"   s       r6   r4  zmanifest_maker.prune_file_list`  s    **733$1133E,---H%%%i%%SL..4t 	& 	
 	
 	
 	
 	
r8   c                     t          |d          r|                                S t          j        ddd           |                                S )a0  
        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)hasattrrV  r   emitget_data_files)rA   build_pys     r6   _safe_data_fileszmanifest_maker._safe_data_filesj  sd     8>?? 	>;;===$)N 8	
 	
 	
 	
 &&(((r8   N)r_   r`   ra   r0  rs   r   r   r9  r.  r   staticmethodr>  r/  r2  r3  r4  r\  re   r8   r6   r   r   
  s        H) ) )    ) ) )
> 
> 
>" " " ; ; \;- - -$, , ,) ) )
 
 
) ) ) ) )r8   r   c                     d                     |          }|                    d          }t          | d          5 }|                    |           ddd           dS # 1 swxY w Y   dS )z{Create 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      r6   r   r     s     yy""H w''H	h		 	                 s   AA"%A"c                 ~   t          j        d|           | j        s| j        j        }| j        |j        c|_        }| j        |j        c|_        }	  |j	        | j
                   ||c|_        |_        n# ||c|_        |_        w xY wt          | j        dd           }t          j        | j
        |           d S d S )Nz
writing %szip_safe)r   r   r   r>   r   rq   rM   rp   rB   write_pkg_inforg   rJ  r   write_safety_flag)cmdbasenamer}   r   oldveroldnamesafes          r6   rc  rc    s    H\8$$$; 8#,#&?H4D &!$x}w	> $H#CL111.5v+HM8++gv+HM8+====s'T::#CL$777778 8s   A7 7Bc                     dS )aj  
    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.
    Nre   re  rf  r}   s      r6   warn_depends_obsoleterl    s      r8   c           	          t                               d | j                                        D                       }|                     d|d                    t          |                    dz              d S )Nc                 F    g | ]}|                     d d          d         S )rU   r   r   )r   )r   ks     r6   r   z(write_toplevel_names.<locals>.<listcomp>  s6        Q  r8   ztop-level namesr_  )r|   fromkeysr>   iter_distribution_namesr   r   sorted)re  rf  r}   pkgss       r6   write_toplevel_namesrt    sv    ==  $'$4$L$L$N$N    D NN$h		&,,0G0G$0NOOOOOr8   c                 *    t          | ||d           d S )NT)	write_argrk  s      r6   overwrite_argrw    s    c8Xt,,,,,r8   Fc                     t           j                            |          d         }t          | j        |d           }|d                    |          dz   }|                     ||||           d S )Nr   r_  )r    r!   splitextrJ  r>   r   r   )re  rf  r}   r   argnamerx   s         r6   rv  rv    sl    gx((+GC$gt44E		%  4'Whu=====r8   c                     t          j        | j        j                  }t          j        |          }|                     d||d           d S )Nzentry pointsT)r	   r   r>   r   renderr   )re  rf  r}   epsdefns        r6   write_entriesr    sH    

S-:
;
;C$$D^XtTBBBBBr8   c                     t          j        |           }t          j        |          }| d| d|pt           }|r|d| z  }|S )r   r   z-py)r
   r   r   )rp   rq   r   r   rB   rM   eggs          r6   r   r     s_    ,X66D/<<G
8
8G
8
8
 6h
8
8C ~8~~Jr8   c                       e Zd ZdZdS )EggInfoDeprecationWarningz?Deprecated behavior warning for EggInfo, bypassing suppression.N)r_   r`   ra   __doc__re   r8   r6   r  r    s        IIIIr8   r  r   )NN)8r  distutils.filelistr   	_FileListdistutils.errorsr   distutils.utilr   r   r   r   r    r#   r   r\   rz   
_importlibr   r   r	   r
   r   
setuptoolsr   setuptools.command.sdistr   r   setuptools.command.setoptr   setuptools.commandr   setuptools.unicode_utilsr  setuptools.globr   rV   warningsr   formatversion_infor   r7   r:   rg   r   r   rc  rl  write_requirementswrite_setup_requirementsrt  rw  rv  r  r   r  re   r8   r6   <module>r     sR  < < 5 4 4 4 4 4 3 3 3 3 3 3 ' ' ' ' ' '                   				 				 



      ! ! ! ! ! ! , , , , , , , ,             * * * * * * 1 1 1 1 1 1 1 1 1 1 1 1 ( ( ( ( ( ( 0 0 0 0 0 0                 3 3 3 3 3 3 7>3+,P; P; P;f, , , , , , , ,^X$ X$ X$ X$ X$z7 X$ X$ X$vEB EB EB EB EBy EB EB EBPv) v) v) v) v)U v) v) v)r
 
 
8 8 8&   "4 '@ P P P- - -> > > >C C C   J J J J J < J J J J Jr8   