
    wge                     `   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mZ ddlZddl	Zddl
ZddlmZ ddlmZ ddlmZ ddlmZ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( ejR                  jT                   dejR                  jV                   Z,d Z- G d d      Z. G d de.e      Z/ G d de&      Z% G d de      Z0d)dZ1d)dZ2d)d Z3ejh                  Z4ejj                  Z5d)d!Z6d)d"Z7d*d#e8ddfd$Z9d)d%Z:d+d&Z; G d' d(e      Z<y),zUsetuptools.command.egg_info

Create a distribution's .egg-info directory and contents    N)Callable)Command)	bdist_egg)sdistwalk_revctrl)edit_config)glob   )_entry_points_normalization)metadata)SetuptoolsDeprecationWarning   )_requirestxt)log)DistutilsInternalError)FileList)convert_path.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                 `/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/setuptools/command/egg_info.pytranslate_patternr9   &   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    r8   namezInfoCommon.name}   s"    ''(9(9(B(B(DEEr:   c                 ~    | j                  | j                  j                               }t        j                  |      S r>   )
_maybe_tagr@   get_versionr   safe_version)rC   taggeds     r8   tagged_versionzInfoCommon.tagged_version   s0    !2!2!>!>!@A**622r:   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rC   versions     r8   rF   zInfoCommon._maybe_tag   s5     zzd227; 	
 4::%	
r:   rO   returnc                 z    |j                  | j                        xs |j                  | j                               S r>   )endswithrL   
_safe_tagsrN   s     r8   rM   zInfoCommon._already_tagged   s0     

+Rw/?/?@Q/RRr:   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   )r   rH   rL   	packagingrO   InvalidVersionr?   replacerB   s    r8   rS   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strftimerN   s     r8   tagszInfoCommon.tags   s;    >>t~~%G==t}}X..Gr:   )__name__
__module____qualname__r[   r\   propertyrD   rJ   rF   strboolrM   rS   r_   rL    r:   r8   r<   r<   y   se    IHF F3	
Ss St S
JC Jc  TNEr:   r<   c                       e Zd ZdZg dZdgZddiZd Zedd       Z	e	j                  d	        Z	dd
ZddZedfdZddeddfdZddZddZddZd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]rj   rm   c                 J    d | _         d | _        d | _        d | _        d| _        y )NF)egg_baseegg_namerh   egg_versionignore_egg_info_in_manifestrB   s    r8   initialize_optionszegg_info.initialize_options   s'    +0(r:   rP   Nc                      y r>   rf   rB   s    r8   tag_svn_revisionzegg_info.tag_svn_revision       r:   c                      y r>   rf   )rC   values     r8   rv   zegg_info.tag_svn_revision   rw   r:   c                 f    t        | j                         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.
        r   )r[   r\   )rh   N)dictr_   r   )rC   filenamerh   s      r8   save_version_infozegg_info.save_version_info   s%     $))+:HdH56r:   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   rp   	.egg-info)rD   rq   rJ   rr   rW   rO   Version
isinstancerequirementsRequirement
ValueError	distutilserrorsDistutilsOptionErrorrp   r@   package_dirgetr"   curdirensure_dirnamer   filename_componentrh   r#   joinr   )rC   parsed_version
is_versionspecri   dirss         r8   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:c                 F    t        | j                  | j                  ||      S )0Compute filename of the output egg. Private API.)_egg_basenamerq   rr   )rC   
py_versionplatforms      r8   _get_egg_basenamezegg_info._get_egg_basename   s    T]]D,<,<j(SSr:   forcec                     |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)rC   whatr|   datar   s        r8   write_or_delete_filezegg_info.write_or_delete_file   sU     OOD(D1WW^^H%|E?xP  * &r:   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)rC   r   r|   r   fs        r8   r   zegg_info.write_file  sO     	#T84{{7#||Xt$AGGDMGGI r:   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)rC   r|   s     r8   r   zegg_info.delete_file  s(    )||IIh r:   c           	         t        t        j                  d            }| j                  | j                         	 t        j                  | 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egg_info.writers)groupz'Cannot update time stamp of directory ''znative_libs.txt)listr   entry_pointsmkpathrh   r"   utimeOSErrorr   r   DistutilsFileErrorloadrD   r#   r   r   r   find_sources)rC   writersri   msgepwriternls          r8   runzegg_info.run%  s    x,,3EFGDMM"	BHHT]]D)  	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   rh   manifest_makerr@   rs   ignore_egg_info_dirmanifestr   filelist)rC   manifest_filenamemms      r8   r   zegg_info.find_sources;  sT    GGLLFD--.!%!A!A'
r:   rP   NF)r`   ra   rb   descriptionuser_optionsboolean_optionsnegative_optrt   rc   rv   setterr}   r   PY_MAJORr   re   r   r   r   r   r   rf   r:   r8   rh   rh      s    ?K
L "lO:L1    
	7>B ,4d T+ +QU +$ ,$r:   rh   c                        e Zd Z	 ddeddf fdZddZd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd ZddZddZd Zd Z xZS )r   Nr   rP   c                 4    t         |   ||       || _        y r>   )super__init__r   )rC   r   debug_printr   	__class__s       r8   r   zFileList.__init__H  s     	{+#6 r:   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   rf   rV   )_parse_template_liner   r   global_includeglobal_exclude	functoolspartialrecursive_includerecursive_excluder   r   KeyErrorr   
startswithr   r   r   r   )rC   lineactionpatternsdirdir_pattern
action_maplog_mapprocess_actionr   action_is_recursiveextra_log_argslog_tmplpatterns                 r8   process_template_linezFileList.process_template_lineN  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   )rC   	predicatefoundr2   s       r8   _remove_fileszFileList._remove_files  sp    
 s4::*B3 	AA'  

1!=>JJqM		
 r:   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extendre   )rC   r   r   r   s       r8   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'.)r9   r   matchrC   r   r   s      r8   r   zFileList.exclude  s!    !'*!!%++..r:   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   re   )rC   r   r   full_patternr   r   s         r8   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   r9   r"   r#   r   r   r   )rC   r   r   r   s       r8   r   zFileList.recursive_exclude  s4     ""'',,sD'"BC!!%++..r:   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   re   )rC   r   	match_diritemr   s        r8   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  )rC   r   r   s      r8   r   zFileList.prune  s0    !"'',,sD"9:!!%++..r:   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  r9   r"   r#   r   r   r   re   )rC   r   r   r   r   s        r8   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      r8   r   zFileList.global_exclude  s2     ""'',,tW"=>!!%++..r:   c                     |j                  d      r|d d }t        |      }| j                  |      r| j                  j	                  |       y y )Nr   )rR   r   
_safe_pathr   append)rC   r  r#   s      r8   r  zFileList.append  sF    ==9DD!??4 JJd# !r:   c                 b    | j                   j                  t        | j                  |             y r>   )r   r   filterr  )rC   pathss     r8   r   zFileList.extend  s    

&%89r:   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)r   r  r  r   rB   s    r8   _repairzFileList._repair  s     &$**=>
r:   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)rC   r#   enc_warnu_path	utf8_pathis_egg_infos         r8   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)NNFr   )r`   ra   rb   re   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r  __classcell__)r   s   @r8   r   r   E  sh     HM7@D7	7D=L/
//

/$:?Br:   r   c                   j    e Zd ZdZddZddZddZd ZddZddZ	e
d	        Zdd
ZddZd Zd Zy)r   zMANIFEST.inNc                 J    d| _         d| _        d| _        d| _        d| _        y )NTF)use_defaultsr   manifest_onlyforce_manifestr   rB   s    r8   rt   z!manifest_maker.initialize_options  s)     
!"#( r:   c                      y r>   rf   rB   s    r8   r   zmanifest_maker.finalize_options  s    r:   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_duplicatesrB   s    r8   r   zmanifest_maker.run  s     T5M5MNww~~dmm,!77>>$--(  ""$'')r:   c                 l    t        j                  |      }|j                  t        j                  d      S )N/)r  r  rY   r"   r$   )rC   r#   s     r8   _manifest_normalizez"manifest_maker._manifest_normalize*  s'    ++D1||BFFC((r:   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   r1  r   executer   )rC   r   r   r   s       r8   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   )rC   r   s     r8   r   zmanifest_maker.warn:  s#    ,,S1JJtS! 2r:   c                 .    t        j                  d|       S )z;
        suppress missing-file warnings from sdist
        zstandard file .*not found)r%   r   )r   s    r8   r5  z'manifest_maker._should_suppress_warning>  s    
 xx4c::r:   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.pyrh   )r   r'  r   r  r(  r   r   r   r   r"   r#   r   read_manifestget_finalized_commandr   rh   )rC   rcfilesei_cmds      r8   r'  zmanifest_maker.add_defaultsE  s    4 T]]+T]]+|~&MM  )WW^^DMM* 77>>*% MM  ,++J7FOO,r:   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   )rC   r=  lfs      r8   r*  z manifest_maker.add_license_filesW  sN    ))22@@FB 	5BHH/4	5]+r:   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   )rC   
referencedrfs      r8   r+  z$manifest_maker._add_referenced_files]  sI    T..0CRH
 	CBII=rB	CZ(r:   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)hasattrrF  r   emitget_data_files)rC   build_pys     r8   _safe_data_fileszmanifest_maker._safe_data_filese  sJ     8>?;;==$))N 8	
 &&((r:   r   )r`   ra   rb   r(  rt   r   r   r1  r&  r   staticmethodr5  r'  r*  r+  rL  rf   r:   r8   r   r     sM    H))
>" ; ;-$,))r:   r   rP   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      r8   r   r   ~  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   rr   rO   rq   rD   write_pkg_inforh   rA  r   write_safety_flag)cmdbasenamer|   r   oldveroldnamesafes          r8   rS  rS    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.
    Nrf   rU  rV  r|   s      r8   warn_depends_obsoleter\    s    r:   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 )Nr   r   r   ztop-level namesrO  )r{   fromkeysr@   iter_distribution_namesr!   r   r   sorted)rU  rV  r|   kpkgss        r8   write_toplevel_namesrc    sk    ==$'$4$4$L$L$N Q D NN$h		&,0G$0NOs   A>c                      t        | ||d       y )NT)	write_argr[  s      r8   overwrite_argrf    s    c8Xt,r:   r   c                     t         j                  j                  |      d   }t        | j                  |d       }|dj                  |      dz   }| j                  ||||       y )Nr   rO  )r"   r#   splitextrA  r@   r   r   )rU  rV  r|   r   argnamery   s         r8   re  re    s\    ggx(+GC$$gt4E		% 4'Whu=r:   c                     t        j                  | j                  j                        }t        j                  |      }| j                  d||d       y )Nzentry pointsT)r   r   r@   r   renderr   )rU  rV  r|   epsdefns        r8   write_entriesrn    sB    


S--::
;C$D^XtTBr:   c                     t        j                  |       }t        j                  |      }| d| d|xs t         }|r|d| z  }|S )r   r   z-py)r   r   r   )rq   rr   r   r   rD   rO   eggs          r8   r   r     sV    ,,X6D//<GF!G9C
 6h7
8C8*~Jr:   c                       e Zd ZdZy)EggInfoDeprecationWarningz?Deprecated behavior warning for EggInfo, bypassing suppression.N)r`   ra   rb   __doc__rf   r:   r8   rr  rr    s    Ir:   rr  r   r   )NN)=rs  r   r"   r%   r  r]   collections.abcr   rW   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   version_infomajorminorr   r9   r<   rh   r   r   rS  r\  write_requirementswrite_setup_requirementsrc  rf  re   re  rn  r   rr  rf   r:   r8   <module>r     s%  <  	 	 
  $    0  ( 8 1   , ! 3     3 4 '$$%Qs'7'7'='=&>?P;f, ,^Z$z7 Z$zGBy GBTl)U l)^
8& "44 '@@ P->d >t >CJ < Jr:   