
    |g
d                        d 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	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 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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jP                  ejR                   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 Z0d Z1ejd                  Z2ejf                  Z3d Z4d  Z5d&d!Z6d" Z7d'd#Z8 G d$ d%e      Z9y)(zUsetuptools.command.egg_info

Create a distribution's .egg-info directory and contents    N)Command)	bdist_egg)sdistwalk_revctrl)edit_config)glob   )_entry_points_normalization)metadata)SetuptoolsDeprecationWarning   )_requirestxt)log)DistutilsInternalError)FileList)convert_pathz{}.{}c                    d} | j                   t        j                  j                        }t	        j
                  t        j                        }d|d}t        |      D ]6  \  }}|t        |      dz
  k(  }|dk(  r|r|dz  }n|d|d|d	z  }2d
}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k7  r|dz   }||	k  r	||   dk7  r||	k\  r|t	        j
                  |
      z  }nU||dz   | }d}|d
   dk(  rd}|dd }|t	        j
                  |      z  }|d|dz  }|}n|t	        j
                  |
      z  }|dz  }||	k  r|r2||z  }9 |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                 X/var/www/html/pythonbot/venv/lib/python3.12/site-packages/setuptools/command/egg_info.pytranslate_patternr7   &   s*    C TZZ$F
))BFF
C!Jf% >5#f+/)
 D=t z377 J	)m8Ds{zC''z!a%Y&5>S+@%kGY&5>S+@%kG 	)eGn.C%kG 	)eGn.C i' 299T?*C "!a%'2E!#J Qx3%(
 %ab	"))E"22JZ11C  Aryy&FAU )mZ 3JC}>@ 5LC::c		!9::    c                   h    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y)

InfoCommonNc                 \    t        j                  | j                  j                               S N)r   	safe_namedistributionget_nameselfs    r6   namezInfoCommon.name}   s"    ''(9(9(B(B(DEEr8   c                 ~    | j                  | j                  j                               }t        j                  |      S r<   )
_maybe_tagr>   get_versionr   safe_version)rA   taggeds     r6   tagged_versionzInfoCommon.tagged_version   s0    !2!2!>!>!@A**622r8   c                 ^    | j                   r| j                  |      r|S || 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   s5     zzd227; 	
 4::%	
r8   rM   returnc                 z    |j                  | j                        xs |j                  | j                               S r<   )endswithrJ   
_safe_tagsrL   s     r6   rK   zInfoCommon._already_tagged   s0     

+Rw/?/?@Q/RRr8   c                     	 t        j                  d| j                         dd  S # t        j                  j
                  $ r2 t        j                  | 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   sj    	J!..4::,/?@DD  // 	J!++DJJ,>,>sC,HII	Js   $' AA65A6c                     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:   y   se    IHF F3	
Ss St S
JC Jc  TNEr8   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y
)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                 J    d | _         d | _        d | _        d | _        d| _        y )NF)egg_baseegg_namerg   egg_versionignore_egg_info_in_manifestr@   s    r6   initialize_optionszegg_info.initialize_options   s'    +0(r8   c                      y r<   re   r@   s    r6   tag_svn_revisionzegg_info.tag_svn_revision       r8   c                      y r<   re   )rA   values     r6   ru   zegg_info.tag_svn_revision   rv   r8   c                     t        j                         }| j                         |d<   d|d<   t        |t	        |             y)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   s=     **, !%		 HdH56r8   c                    | j                   | _        | j                         | _        t        j
                  j                  | j                        }	 t        |t        j
                  j                        }|rdnd}t        j                  j                  || j                  | j                  fz         | j                  ?| j                  j                   }|xs i j#                  dt$        j&                        | _        | j)                  d       t+        j,                  | j                        dz   | _        | j                  t$        j&                  k7  r9t$        j0                  j3                  | j                  | j.                        | _        | j                  | j                  j4                  _        y # t        $ r?}t        j                  j                  d| j                  d| j                        |d }~ww xY w)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   sz   
 		..0"**2243C3CD	#NI4E4E4M4MNJ)8yD""..tt}}dFVFV6W/WX == $$00D!ZR,,R;DMJ'&99$--H;V==BII%GGLLFDM
 .2-=-=""*%  	""77==$"2"24 	s   A"F2 2	G:;:G55G:Nc                 F    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Sr8   c                     |r| j                  |||       yt        j                  j                  |      r.||st	        j
                  d||       y| j                  |       yy)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  sU     OOD(D1WW^^H%|E?xP  * &r8   c                     t        j                  d||       |j                  d      }| j                  s.t	        |d      }|j                  |       |j                          yy)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  sO     	#T84{{7#||Xt$AGGDMGGI r8   c                 t    t        j                  d|       | j                  st        j                  |       yy)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(    )||IIh r8   c           	         | j                  | j                         	 t        j                  | j                  d        t        j                  d      D ]X  }|j                         } || |j                  t        j                  j                  | j                  |j                               Z t        j                  j                  | j                  d      }t        j                  j                  |      r| j                  |       | j!                          y # t        $ r5}d| j                   d}t
        j                  j                  |      |d }~ww xY w)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'  s    DMM"	BHHT]]D) ''.@A 	HBWWYF4"'',,t}}bgg"FG	H
 WW\\$--):;77>>"R   	B;DMM?!LC""55c:A	Bs    D 	E"0EEc                     t         j                  j                  | j                  d      }t	        | j
                        }| j                  |_        ||_        |j                          |j                  | _
        y)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_sources9  sT    GGLLFD--.!%!A!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    
7>B ,4d 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   c                 4    t         |   ||       || _        y r<   )super__init__r   )rA   r   debug_printr   	__class__s       r6   r   zFileList.__init__F  s    {+#6 r8   c           	         | j                  |      \  }}}}| j                  | j                  | j                  | j                  t        j                  | j                  |      t        j                  | j                  |      | j                  | j                  d}dddddddd	d}	 ||   }|j                  d      }
|dv r|g}|
r|fnd}||   }| j                  dj                  |g|
r|gng z   |z                |D ]"  } ||      rt!        j"                  ||g|  $ y # t        $ r d
|d|}	t        |	      d w xY w)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_lineJ  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6?HH%8SEbAHL	

   	=G!'*7<^<	='  	88
$thOC(-47	8s   &D# #Ec                     d}t        t        | j                        dz
  dd      D ]H  } || j                  |         s| j                  d| j                  |   z          | j                  |= d}J |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  sp    
 s4::*B3 	AA'  

1!=>JJqM		
 r8   c                     t        |      D cg c]$  }t        j                  j                  |      r#|& }}| j	                  |       t        |      S c c}w )z#Include files that match 'pattern'.)r   r    r!   isdirextendrd   )rA   r   r   r   s       r6   r   zFileList.include  sD     MBqq1ABBEE{ Cs
   $AAc                 N    t        |      }| j                  |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                  j                  |d|      }t        |d      D cg c]$  }t         j                  j	                  |      r#|& }}| j                  |       t        |      S c c}w )zN
        Include all files anywhere in 'dir/' that match the pattern.
        r   T)	recursive)r    r!   r   r   r   r   rd   )rA   r   r   full_patternr   r   s         r6   r   zFileList.recursive_include  s`     ww||Cw7 >WqbggmmTUFVWWEE{ Xs   $A8A8c                     t        t        j                  j                  |d|            }| j	                  |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  s4     ""'',,sD'"BC!!%++..r8   c                     t        |      D cg c](  }t        j                  j                  |      D ]  }| * }}}| j	                  |       t        |      S c c}}w )zInclude all files from 'dir/'.)r   r   r   findallr   rd   )rA   r   	match_diritemr   s        r6   r   zFileList.graft  sh     "#Y
!**229=
  

 

 	EE{
s   -Ac                     t        t        j                  j                  |d            }| j	                  |j
                        S )zFilter out files from 'dir/'.r   r   )rA   r   r   s      r6   r   zFileList.prune  s0    !"'',,sD"9:!!%++..r8   c                 $   | j                   | j                          t        t        j                  j                  d|            }| j                   D cg c]  }|j                  |      s| }}| j                  |       t        |      S c c}w )z
        Include all files anywhere in the current directory that match the
        pattern. This is very inefficient on large file trees.
        r   )	allfilesr  r7   r    r!   r   r   r   rd   )rA   r   r   r   r   s        r6   r   zFileList.global_include  sl    
 == LLN!"'',,tW"=> MM<qU[[^<<EE{ =s   B+Bc                     t        t        j                  j                  d|            }| j	                  |j
                        S )zD
        Exclude all files anywhere that match the pattern.
        r   r   r   s      r6   r   zFileList.global_exclude  s2     ""'',,tW"=>!!%++..r8   c                     |j                  d      r|d d }t        |      }| j                  |      r| j                  j	                  |       y y )Nr   )rP   r   
_safe_pathr   append)rA   r  r!   s      r6   r  zFileList.append  sF    ==9DD!??4 JJd# !r8   c                 b    | j                   j                  t        | j                  |             y r<   )r   r   filterr
  )rA   pathss     r6   r   zFileList.extend  s    

&%89r8   c                 `    t        t        | j                  | j                              | _        y)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         yt        j                  |d      }|t        j                  ||d       y	 d|v xs d|v }| j
                  r|ryt        j                  j                  |      st        j                  j                  |      ryy # t        $ r, t        j                  ||t        j                                Y y 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>HH>EF ",,VW=	HHXtW-
	B%/L<93LK''Kww~~f%	)B *C " 	BHHXtS%>%>%@A	Bs   $B= =>B= =2C21C2)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   C  sQ    7D=L/
//

/$:?Br8   r   c                   \    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y)r   zMANIFEST.inc                 J    d| _         d| _        d| _        d| _        d| _        y )NTF)use_defaultsr   manifest_onlyforce_manifestr   r@   s    r6   rs   z!manifest_maker.initialize_options  s)     
!"#( r8   c                      y r<   re   r@   s    r6   r   zmanifest_maker.finalize_options  s    r8   c                 &   t        | j                        | _        t        j                  j                  | j                        s| j                          | j                          t        j                  j                  | j                        r| j                          | j                          | j                          | j                          | j                  j                          | j                  j                          | j                          y )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     T5M5MNww~~dmm,!77>>$--(  ""$'')r8   c                 l    t        j                  |      }|j                  t        j                  d      S )N/)r  r  rX   r    r"   )rA   r!   s     r6   _manifest_normalizez"manifest_maker._manifest_normalize&  s'    ++D1||BFFC((r8   c                 
   | j                   j                          | j                   j                  D cg c]  }| j                  |       }}d| j                  z  }| j                  t        | j                  |f|       yc c}w )zo
        Write the file list in 'self.filelist' to the manifest file
        named by 'self.manifest'.
        zwriting manifest file '%s'N)r   r  r   r0  r   executer   )rA   r   r   r   s       r6   r%  zmanifest_maker.write_manifest*  sk    
 	 7;mm6I6IJ))!,JJ*T]]:Z$--!7= Ks   B c                 T    | j                  |      st        j                  | |       y y r<   )_should_suppress_warningr   r   )rA   r   s     r6   r   zmanifest_maker.warn6  s#    ,,S1JJtS! 2r8   c                 .    t        j                  d|       S )z;
        suppress missing-file warnings from sdist
        zstandard file .*not found)r#   r   )r   s    r6   r4  z'manifest_maker._should_suppress_warning:  s    
 xx4c::r8   c                 v   t        j                  |        | j                  j                  | j                         | j                  j                  | j
                         t        t                     }|r| j                  j                  |       n9t        j                  j                  | j
                        r| j                          t        j                  j                  d      r| j                  j                  d       | j                  d      }| j                  j                  |j                         y )Nzsetup.pyrg   )r   r&  r   r  r'  r   r  r   r   r    r!   r   read_manifestget_finalized_commandr   rg   )rA   rcfilesei_cmds      r6   r&  zmanifest_maker.add_defaultsA  s    4 T]]+T]]+|~&MM  )WW^^DMM* 77>>*% MM  ,++J7FOO,r8   c                     | j                   j                  j                  xs g }|D ]  }t        j                  d|        | j
                  j                  |       y )Nzadding license file '%s')r>   r   license_filesr   r   r   r   )rA   r<  lfs      r6   r)  z manifest_maker.add_license_filesS  sN    ))22@@FB 	5BHH/4	5]+r8   c                     t        | j                  dg       }|D ]  }t        j                  d|        | j                  j                  |       y)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   r*  z$manifest_maker._add_referenced_filesY  sI    T..0CRH
 	CBII=rB	CZ(r8   c                     t        |d      r|j                         S t        j                  ddd       |j	                         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)hasattrrE  r   emitget_data_files)rA   build_pys     r6   _safe_data_fileszmanifest_maker._safe_data_filesa  sJ     8>?;;==$))N 8	
 &&((r8   N)r_   r`   ra   r'  rs   r   r   r0  r%  r   staticmethodr4  r&  r)  r*  rK  re   r8   r6   r   r     sM    H))
>" ; ;-$,))r8   r   c                     dj                  |      }|j                  d      }t        | d      5 }|j                  |       ddd       y# 1 sw Y   yxY w)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   z  sO     yy"H w'H	h	 	  s   A

Ac                    t        j                  d|       | j                  s| j                  j                  }| j
                  |j                  c|_        }| j                  |j                  c|_        }	  |j                  | j                         ||c|_        |_        t        | j                  dd       }t        j                  | j                  |       y y # ||c|_        |_        w xY w)Nz
writing %szip_safe)r   r   r   r>   r   rq   rM   rp   rB   write_pkg_inforg   r@  r   write_safety_flag)cmdbasenamer}   r   oldveroldnamesafes          r6   rR  rR    s    HH\8$;;##,,#&??H4D4D &!$x}}w	> $H##CLL1.5v+HM8+s''T:##CLL$7  /6v+HM8+s   6C C+c                      y)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   rT  rU  r}   s      r6   warn_depends_obsoleter[    s    r8   c           	         t         j                  | j                  j                         D cg c]  }|j	                  dd      d    c}      }| j                  d|dj                  t        |            dz          y c c}w )NrU   r   r   ztop-level namesrN  )r|   fromkeysr>   iter_distribution_namesr   r   r   sorted)rT  rU  r}   kpkgss        r6   write_toplevel_namesrb    sk    ==$'$4$4$L$L$N Q D NN$h		&,0G$0NOs   A>c                      t        | ||d       y )NT)	write_argrZ  s      r6   overwrite_argre    s    c8Xt,r8   c                     t         j                  j                  |      d   }t        | j                  |d       }|dj                  |      dz   }| j                  ||||       y )Nr   rN  )r    r!   splitextr@  r>   r   r   )rT  rU  r}   r   argnamerx   s         r6   rd  rd    s\    ggx(+GC$$gt4E		% 4'Whu=r8   c                     t        j                  | j                  j                        }t        j                  |      }| j                  d||d       y )Nzentry pointsT)r
   r   r>   r   renderr   )rT  rU  r}   epsdefns        r6   write_entriesrm    sB    


S--::
;C$D^XtTBr8   c                     t        j                  |       }t        j                  |      }| d| d|xs t         }|r|d| z  }|S )r   r   z-py)r   r   r   )rp   rq   r   r   rB   rM   eggs          r6   r   r     sV    ,,X6D//<GF!G9C
 6h7
8C8*~Jr8   c                       e Zd ZdZy)EggInfoDeprecationWarningz?Deprecated behavior warning for EggInfo, bypassing suppression.N)r_   r`   ra   __doc__re   r8   r6   rq  rq    s    Ir8   rq  r   )NN):rr  rz   r   r    r#   r  r\   rV   packaging.requirementspackaging.versionsetuptools.unicode_utilsr  
setuptoolsr   setuptools.commandr   setuptools.command.sdistr   r   setuptools.command.setoptr   setuptools.globr   r   r
   r   
_importlibr   warningsr   r   distutils.errorsr   distutils.filelistr   r   r   	_FileListdistutils.utilr   formatversion_infor   r7   r:   rg   r   r   rR  r[  write_requirementswrite_setup_requirementsrb  re  rd  rm  r   rq  re   r8   r6   <module>r     s  <   	 	 
     0  ( 8 1   , ! 3     3 4 '7>>3++,P;f, ,^X$z7 X$vEBy EBPl)U l)^
8& "44 '@@ P->CJ < Jr8   