<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
vh`                 @   s  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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m Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& ddl'j(Z(ddl)m*Z* ddlm+Z+ dd Z,G dd deZ-G dd deZG dd deZ.dd Z/dd Z0dd Z1dd  Z2d!d" Z3d#d$ Z4d%d& Z5d'd( Z6d0d*d+Z7d,d- Z8d.d/ Z9dS )1zUsetuptools.command.egg_info

Create a distribution's .egg-info directory and contents    )FileList)DistutilsInternalError)convert_path)logN)six)map)Command)sdist)walk_revctrl)edit_config)	bdist_egg)parse_requirements	safe_nameparse_versionsafe_versionyield_lines
EntryPointiter_entry_pointsto_filename)glob)	packagingc             C   s  d}| j tjj}tjtj}d|f }xt|D ]\}}|t|d k}|dkrv|rd|d7 }q4|d||f 7 }q4d}t|}	x:||	k r|| }
|
dkr||d 7 }n|
d	kr||7 }n|
d
kr|d }||	k r|| dkr|d }||	k r|| dkr|d }x&||	k r6|| dkr6|d }qW ||	krR|tj|
7 }nR||d | }d}|d dkrd}|dd }|tj|7 }|d|f 7 }|}n|tj|
7 }|d7 }qW |s4||7 }q4W |d7 }tj|tj	tj
B d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[^%s]   z**z.*z
(?:%s+%s)*r   *?[!]^Nz[%s]z\Z)flags)splitospathsepreescape	enumeratelencompile	MULTILINEDOTALL)r   ZpatZchunksr#   Z
valid_charcchunkZ
last_chunkiZ	chunk_lencharZinner_iinnerZ
char_class r0   /usr/lib/python3.6/egg_info.pytranslate_pattern$   sV    




r2   c               @   s   e Zd ZdZd)d*d+d,gZdgZddiZdd Zedd Z	e	j
dd Z	dd Zdd Zd-ddZdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(S ).egg_infoz+create a distribution's .egg-info directory	egg-base=eLdirectory containing .egg-info directories (default: top of the source tree)tag-dated0Add date stamp (e.g. 20050528) to version number
tag-build=b-Specify explicit tag to add to version numberno-dateD"Don't include date stamp [default]c             C   s4   d | _ d | _d | _d | _d | _d| _d| _d | _d S )Nr   F)egg_nameegg_versionegg_baser3   	tag_buildtag_datebroken_egg_infovtags)selfr0   r0   r1   initialize_options   s    zegg_info.initialize_optionsc             C   s   d S )Nr0   )rG   r0   r0   r1   tag_svn_revision   s    zegg_info.tag_svn_revisionc             C   s   d S )Nr0   )rG   valuer0   r0   r1   rI      s    c             C   s0   t j }| j |d< d|d< t|t|d 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.
        rC   r   rD   )r3   N)collectionsOrderedDicttagsr   dict)rG   filenamer3   r0   r0   r1   save_version_info   s    zegg_info.save_version_infoc             C   sV  t | jj | _| j | _| j | _t| j}y6t	|t
jj}|rFdnd}tt|| j| jf  W n, tk
r   tjjd| j| jf Y nX | jd kr| jj}|pi jdtj| _| jd t| jd | _| jtjkrtjj| j| j| _d| jkr| j  | j| jj_| jj}|d k	rR|j | jj! krR| j|_"t| j|_#d | j_d S )Nz%s==%sz%s===%sz2Invalid distribution name or version syntax: %s-%sr   rB   z	.egg-info-)$r   distributionZget_namer@   rM   rF   tagged_versionrA   r   
isinstancer   versionZVersionlistr   
ValueError	distutilserrorsZDistutilsOptionErrorrB   Zpackage_dirgetr!   curdirZensure_dirnamer   r3   r"   joincheck_broken_egg_infometadataZ_patched_distkeylowerZ_versionZ_parsed_version)rG   Zparsed_versionZ
is_versionspecdirsZpdr0   r0   r1   finalize_options   s8    




zegg_info.finalize_optionsFc             C   sN   |r| j ||| n6tjj|rJ|dkr@| r@tjd|| dS | j| 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)rG   whatrO   dataforcer0   r0   r1   write_or_delete_file   s    	
zegg_info.write_or_delete_filec             C   sD   t jd|| tjr|jd}| js@t|d}|j| |j  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 %szutf-8wbN)	r   infor   ZPY3encodedry_runopenwriteclose)rG   rh   rO   ri   fr0   r0   r1   rd      s    


zegg_info.write_filec             C   s    t jd| | jstj| dS )z8Delete `filename` (if not a dry run) after announcing itzdeleting %sN)r   rm   ro   r!   unlink)rG   rO   r0   r0   r1   rg      s    zegg_info.delete_filec             C   s2   | j j }| jr$|j| jr$t|S t|| j S )N)rR   Zget_versionrF   endswithr   )rG   rU   r0   r0   r1   rS     s    
zegg_info.tagged_versionc             C   s   | j | j | jj}x@tdD ]4}|j|d |j }|| |jtj	j
| j|j qW tj	j
| jd}tj	j|r|| j| | j  d S )Nzegg_info.writers)	installerznative_libs.txt)Zmkpathr3   rR   Zfetch_build_eggr   ZrequireZresolvenamer!   r"   r\   re   rg   find_sources)rG   rv   epwriternlr0   r0   r1   run	  s     
zegg_info.runc             C   s,   d}| j r|| j 7 }| jr(|tjd7 }|S )Nr   z-%Y%m%d)rC   rD   timeZstrftime)rG   rU   r0   r0   r1   rM     s    
zegg_info.tagsc             C   s4   t jj| jd}t| j}||_|j  |j| _dS )z"Generate SOURCES.txt manifest filezSOURCES.txtN)	r!   r"   r\   r3   manifest_makerrR   manifestr|   filelist)rG   Zmanifest_filenameZmmr0   r0   r1   rx      s
    
zegg_info.find_sourcesc             C   sd   | j d }| jtjkr&tjj| j|}tjj|r`tjdd d dd  || j	 | j	| _
|| _	d S )Nz	.egg-inforQ   N   z
Note: Your current .egg-info directory has a '-' in its name;
this will not work correctly with "setup.py develop".

Please rename %s to %s to correct this problem.
)r@   rB   r!   r[   r"   r\   re   r   rf   r3   rE   )rG   Zbeir0   r0   r1   r]   (  s    

zegg_info.check_broken_egg_infoN)r4   r5   r6   )r7   r8   r9   )r:   r;   r<   )r=   r>   r?   )F)__name__
__module____qualname__descriptionZuser_optionsZboolean_optionsZnegative_optrH   propertyrI   setterrP   rc   rk   rd   rg   rS   r|   rM   rx   r]   r0   r0   r0   r1   r3   w   s(   /
r3   c               @   s|   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )r   c             C   s<  | j |\}}}}|dkrV| jddj|  x"|D ]}| j|s4tjd| q4W n|dkr| jddj|  x"|D ]}| j|sxtjd| qxW n|dkr| jd	dj|  x"|D ]}| j|stjd
| qW nZ|dkr(| jddj|  x&|D ]}| j|stjd| qW n|dkrx| jd|dj|f  x|D ]"}| j	||sPtjd|| qPW n|dkr| jd|dj|f  x|D ]"}| j
||stjd|| qW np|dkr| jd|  | j|s8tjd| n>|dkr,| jd|  | j|s8tjd| ntd| d S )Nincludezinclude  z%warning: no files found matching '%s'excludezexclude z9warning: no previously-included files found matching '%s'zglobal-includezglobal-include z>warning: no files found matching '%s' anywhere in distributionzglobal-excludezglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionzrecursive-includezrecursive-include %s %sz:warning: no files found matching '%s' under directory '%s'zrecursive-excludezrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'graftzgraft z+warning: no directories found matching '%s'prunezprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')Z_parse_template_linedebug_printr\   r   r   rf   r   global_includeglobal_excluderecursive_includerecursive_excluder   r   r   )rG   lineactionZpatternsdirZdir_patternpatternr0   r0   r1   process_template_line;  sd    













zFileList.process_template_linec             C   sV   d}xLt t| jd ddD ]2}|| j| r| jd| j|   | j|= d}qW |S )z
        Remove all files from the file list that match the predicate.
        Return True if any matching files were removed
        Fr   z
 removing Tr   )ranger'   filesr   )rG   Z	predicatefoundr-   r0   r0   r1   _remove_files  s    zFileList._remove_filesc             C   s$   dd t |D }| j| t|S )z#Include files that match 'pattern'.c             S   s   g | ]}t jj|s|qS r0   )r!   r"   isdir).0rs   r0   r0   r1   
<listcomp>  s    z$FileList.include.<locals>.<listcomp>)r   extendbool)rG   r   r   r0   r0   r1   r     s    
zFileList.includec             C   s   t |}| j|jS )z#Exclude files that match 'pattern'.)r2   r   match)rG   r   r   r0   r0   r1   r     s    zFileList.excludec             C   s8   t jj|d|}dd t|ddD }| j| t|S )zN
        Include all files anywhere in 'dir/' that match the pattern.
        z**c             S   s   g | ]}t jj|s|qS r0   )r!   r"   r   )r   rs   r0   r0   r1   r     s    z.FileList.recursive_include.<locals>.<listcomp>T)	recursive)r!   r"   r\   r   r   r   )rG   r   r   Zfull_patternr   r0   r0   r1   r     s    
zFileList.recursive_includec             C   s    t tjj|d|}| j|jS )zM
        Exclude any file anywhere in 'dir/' that match the pattern.
        z**)r2   r!   r"   r\   r   r   )rG   r   r   r   r0   r0   r1   r     s    zFileList.recursive_excludec             C   s$   dd t |D }| j| t|S )zInclude all files from 'dir/'.c             S   s"   g | ]}t jj|D ]}|qqS r0   )rX   r   findall)r   Z	match_diritemr0   r0   r1   r     s   z"FileList.graft.<locals>.<listcomp>)r   r   r   )rG   r   r   r0   r0   r1   r     s    
zFileList.graftc             C   s   t tjj|d}| j|jS )zFilter out files from 'dir/'.z**)r2   r!   r"   r\   r   r   )rG   r   r   r0   r0   r1   r     s    zFileList.prunec                sJ   | j dkr| j  ttjjd|  fdd| j D }| j| t|S )z
        Include all files anywhere in the current directory that match the
        pattern. This is very inefficient on large file trees.
        Nz**c                s   g | ]} j |r|qS r0   )r   )r   rs   )r   r0   r1   r     s    z+FileList.global_include.<locals>.<listcomp>)Zallfilesr   r2   r!   r"   r\   r   r   )rG   r   r   r0   )r   r1   r     s    

zFileList.global_includec             C   s   t tjjd|}| j|jS )zD
        Exclude all files anywhere that match the pattern.
        z**)r2   r!   r"   r\   r   r   )rG   r   r   r0   r0   r1   r     s    zFileList.global_excludec             C   s8   |j dr|d d }t|}| j|r4| jj| d S )Nr   r   )ru   r   
_safe_pathr   append)rG   r   r"   r0   r0   r1   r     s
    

zFileList.appendc             C   s   | j jt| j| d S )N)r   r   filterr   )rG   pathsr0   r0   r1   r     s    zFileList.extendc             C   s   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)rV   r   r   r   )rG   r0   r0   r1   _repair  s    zFileList._repairc             C   s   d}t j|}|d kr(tjd|  dS t j|d}|d krNtj||d dS y tjj|shtjj|rldS W n& tk
r   tj||t	j
  Y nX d S )Nz!'%s' not %s encodable -- skippingz''%s' in unexpected encoding -- skippingFzutf-8T)unicode_utilsfilesys_decoder   rf   Z
try_encoder!   r"   re   UnicodeEncodeErrorsysgetfilesystemencoding)rG   r"   Zenc_warnZu_pathZ	utf8_pathr0   r0   r1   r     s    
zFileList._safe_pathN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r0   r0   r1   r   8  s   I


r   c               @   s\   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	e
dd Zdd Zdd ZdS )r~   zMANIFEST.inc             C   s   d| _ d| _d| _d| _d S )Nr   )Zuse_defaultsr   Zmanifest_onlyZforce_manifest)rG   r0   r0   r1   rH     s    z!manifest_maker.initialize_optionsc             C   s   d S )Nr0   )rG   r0   r0   r1   rc     s    zmanifest_maker.finalize_optionsc             C   sd   t  | _tjj| js| j  | j  tjj| jr<| j	  | j
  | jj  | jj  | j  d S )N)r   r   r!   r"   re   r   write_manifestadd_defaultstemplateZread_templateprune_file_listsortZremove_duplicates)rG   r0   r0   r1   r|     s    

zmanifest_maker.runc             C   s   t j|}|jtjdS )N/)r   r   replacer!   r#   )rG   r"   r0   r0   r1   _manifest_normalize  s    
z"manifest_maker._manifest_normalizec                sB    j j   fdd j jD }d j } jt j|f| dS )zo
        Write the file list in 'self.filelist' to the manifest file
        named by 'self.manifest'.
        c                s   g | ]} j |qS r0   )r   )r   rs   )rG   r0   r1   r      s    z1manifest_maker.write_manifest.<locals>.<listcomp>zwriting manifest file '%s'N)r   r   r   r   Zexecuterd   )rG   r   msgr0   )rG   r1   r     s    

zmanifest_maker.write_manifestc             C   s   | j |stj| | d S )N)_should_suppress_warningr	   rf   )rG   r   r0   r0   r1   rf   $  s    
zmanifest_maker.warnc             C   s   t jd| S )z;
        suppress missing-file warnings from sdist
        zstandard file .*not found)r$   r   )r   r0   r0   r1   r   (  s    z'manifest_maker._should_suppress_warningc             C   st   t j|  | jj| j | jj| j tt }|rB| jj| nt	j
j| jrX| j  | jd}| jj|j d S )Nr3   )r	   r   r   r   r   r   rV   r
   r   r!   r"   re   Zread_manifestget_finalized_commandr   r3   )rG   ZrcfilesZei_cmdr0   r0   r1   r   /  s    


zmanifest_maker.add_defaultsc             C   sZ   | j d}| jj }| jj|j | jj| tjtj	}| jj
d| d | dd d S )Nbuildz(^|z)(RCS|CVS|\.svn)r   )Zis_regex)r   rR   Zget_fullnamer   r   Z
build_baser$   r%   r!   r#   Zexclude_pattern)rG   r   Zbase_dirr#   r0   r0   r1   r   ;  s    

zmanifest_maker.prune_file_listN)r   r   r   r   rH   rc   r|   r   r   rf   staticmethodr   r   r   r0   r0   r0   r1   r~     s   r~   c          	   C   s8   dj |}|jd}t| d}|j| W dQ R X dS )z{Create a file with the specified name and write 'contents' (a
    sequence of strings without line terminators) to it.
    
zutf-8rl   N)r\   rn   rp   rq   )rO   contentsrs   r0   r0   r1   rd   E  s    

rd   c             C   s|   t jd| | jsx| jj}| j|j |_}| j|j |_}z|j	| j
 W d || |_|_X t| jdd }tj| j
| d S )Nz
writing %sZzip_safe)r   rm   ro   rR   r^   rA   rU   r@   rw   write_pkg_infor3   getattrr   Zwrite_safety_flag)cmdbasenamerO   r^   ZoldverZoldnameZsafer0   r0   r1   r   R  s    r   c             C   s   t jj|rtjd d S )NzsWARNING: 'depends.txt' is not used by setuptools 0.6!
Use the install_requires/extras_require setup() args instead.)r!   r"   re   r   rf   )r   r   rO   r0   r0   r1   warn_depends_obsoletee  s    r   c             C   s,   t |pf }dd }t||}| j| d S )Nc             S   s   | d S )Nr   r0   )r   r0   r0   r1   <lambda>o  s    z%_write_requirements.<locals>.<lambda>)r   r   
writelines)streamZreqslinesZ	append_crr0   r0   r1   _write_requirementsm  s    
r   c             C   sn   | j }tj }t||j |jp"i }x2t|D ]&}|jdjf t	  t|||  q.W | j
d||j  d S )Nz
[{extra}]
Zrequirements)rR   r   StringIOr   Zinstall_requiresextras_requiresortedrq   formatvarsrk   getvalue)r   r   rO   Zdistri   r   Zextrar0   r0   r1   write_requirementst  s    
r   c             C   s,   t j }t|| jj | jd||j  d S )Nzsetup-requirements)ior   r   rR   Zsetup_requiresrk   r   )r   r   rO   ri   r0   r0   r1   write_setup_requirements  s    r   c             C   s:   t jdd | jj D }| jd|djt|d  d S )Nc             S   s   g | ]}|j d dd qS ).r   r   )r    )r   kr0   r0   r1   r     s   z(write_toplevel_names.<locals>.<listcomp>ztop-level namesr   )rN   fromkeysrR   Ziter_distribution_namesrd   r\   r   )r   r   rO   Zpkgsr0   r0   r1   write_toplevel_names  s    r   c             C   s   t | ||d d S )NT)	write_arg)r   r   rO   r0   r0   r1   overwrite_arg  s    r   Fc             C   sH   t jj|d }t| j|d }|d k	r4dj|d }| j|||| d S )Nr   r   )r!   r"   splitextr   rR   r\   rk   )r   r   rO   rj   ZargnamerJ   r0   r0   r1   r     s
    r   c             C   s   | j j}t|tjs|d kr"|}nr|d k	rg }xZt|j D ]J\}}t|tjsttj||}dj	tt
t|j }|jd||f  q<W dj	|}| jd||d d S )Nr   z	[%s]
%s

r   zentry pointsT)rR   Zentry_pointsrT   r   Zstring_typesr   itemsr   Zparse_groupr\   r   strvaluesr   rk   )r   r   rO   ry   ri   Zsectionr   r0   r0   r1   write_entries  s    
r   c              C   s^   t jdt tjjdrZtjd2} x*| D ]"}tj	d|}|r*t
|jdS q*W W dQ R X dS )zd
    Get a -r### off of PKG-INFO Version in case this is an sdist of
    a subversion revision.
    z$get_pkg_info_revision is deprecated.zPKG-INFOzVersion:.*-r(\d+)\s*$r   Nr   )warningsrf   DeprecationWarningr!   r"   re   r   rp   r$   r   intgroup)rs   r   r   r0   r0   r1   get_pkg_info_revision  s    
r   )F):__doc__Zdistutils.filelistr   Z	_FileListZdistutils.errorsr   Zdistutils.utilr   rX   r   r!   r$   r   r   r   r}   rK   Zsetuptools.externr   Zsetuptools.extern.six.movesr   Z
setuptoolsr   Zsetuptools.command.sdistr	   r
   Zsetuptools.command.setoptr   Zsetuptools.commandr   Zpkg_resourcesr   r   r   r   r   r   r   r   Zsetuptools.unicode_utilsr   Zsetuptools.globr   r   r2   r3   r~   rd   r   r   r   r   r   r   r   r   r   r   r0   r0   r0   r1   <module>   sR   (
S B EI

