<!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 dl m Z  d dlmZ d dljj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mZ yd dlmZ W n" ek
r   G dd dZY nX G d	d
 d
ejeZdddZdd ZdS )    )glob)convert_pathN)six)mapfilterfilterfalse)	Mixin2to3c               @   s   e Zd ZdddZdS )r   Tc             C   s   dS )z
do nothingN )selffilesZdoctestsr	   r	   /usr/lib/python3.6/build_py.pyrun_2to3   s    zMixin2to3.run_2to3N)T)__name__
__module____qualname__r   r	   r	   r	   r   r      s   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	dd Z
d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 S )!build_pyaX  Enhanced 'build_py' command that includes data files with packages

    The data files are specified via a 'package_data' argument to 'setup()'.
    See 'setuptools.dist.Distribution' for more details.

    Also, this version of the 'build_py' command allows you to specify both
    'py_modules' and 'packages' in the same setup operation.
    c             C   sF   t jj|  | jj| _| jjp i | _d| jkr6| jd= g | _g | _d S )N
data_files)	origr   finalize_optionsdistributionpackage_dataexclude_package_data__dict___build_py__updated_files_build_py__doctests_2to3)r
   r	   r	   r   r   !   s    

zbuild_py.finalize_optionsc             C   s|   | j  r| j rdS | j r"| j  | jr8| j  | j  | j| jd | j| jd | j| jd | jt	j
j| dd dS )z?Build modules, packages, and copy data files to build directoryNFTr   )Zinclude_bytecode)Z
py_modulespackagesZbuild_modulesZbuild_packagesbuild_package_datar   r   r   Zbyte_compiler   r   Zget_outputs)r
   r	   r	   r   run+   s    zbuild_py.runc             C   s&   |dkr| j  | _| jS tjj| |S )zlazily compute data filesr   )_get_data_filesr   r   r   __getattr__)r
   attrr	   r	   r   r   ?   s    
zbuild_py.__getattr__c             C   sJ   t jrt|t jr|jd}tjj| |||\}}|rB| jj	| ||fS )N.)
r   ZPY2
isinstanceZstring_typessplitr   r   build_moduler   append)r
   moduleZmodule_filepackageZoutfilecopiedr	   r	   r   r$   F   s    

zbuild_py.build_modulec             C   s   | j   tt| j| jpf S )z?Generate list of '(package,src_dir,build_dir,filenames)' tuples)analyze_manifestlistr   _get_pkg_data_filesr   )r
   r	   r	   r   r   P   s    zbuild_py._get_data_filesc                sJ   | j | tjj| jg|jd  } fdd| j| D }| ||fS )Nr!   c                s   g | ]}t jj| qS r	   )ospathrelpath).0file)src_dirr	   r   
<listcomp>^   s   z0build_py._get_pkg_data_files.<locals>.<listcomp>)get_package_dirr,   r-   joinZ	build_libr#   find_data_files)r
   r'   	build_dir	filenamesr	   )r1   r   r+   U   s
    

zbuild_py._get_pkg_data_filesc             C   sX   | j | j||}tt|}tjj|}ttj	j
|}tj| jj|g |}| j|||S )z6Return filenames for package's data files in 'src_dir')_get_platform_patternsr   r   r   	itertoolschainfrom_iterabler   r,   r-   isfilemanifest_filesgetexclude_data_files)r
   r'   r1   patternsZglobs_expandedZglobs_matchesZ
glob_filesr   r	   r	   r   r5   c   s    
zbuild_py.find_data_filesc       
      C   s   x| j D ]\}}}}xr|D ]j}tjj||}| jtjj| tjj||}| j||\}}	tjj|}|	r|| jj	kr| j
j| qW qW dS )z$Copy data files into build directoryN)r   r,   r-   r4   ZmkpathdirnameZ	copy_fileabspathr   Zconvert_2to3_doctestsr   r%   )
r
   r'   r1   r6   r7   filenametargetZsrcfileZoutfr(   r	   r	   r   r   t   s    
zbuild_py.build_package_datac             C   s   i  | _ }| jjsd S i }x$| jp$f D ]}||t| j|< q&W | jd | jd}x|jj	D ]}t
jjt|\}}d }|}	x:|r||kr||kr|}t
jj|\}}
t
jj|
|}qW ||kr^|jdr||	krq^|j|| g j| q^W d S )NZegg_infoz.py)r=   r   Zinclude_package_datar   assert_relativer3   Zrun_commandZget_finalized_commandZfilelistr   r,   r-   r#   r4   endswith
setdefaultr%   )r
   ZmfZsrc_dirsr'   Zei_cmdr-   dfprevZoldfZdfr	   r	   r   r)      s(    


zbuild_py.analyze_manifestc             C   s   d S )Nr	   )r
   r	   r	   r   get_data_files   s    zbuild_py.get_data_filesc             C   s   y
| j | S  tk
r   Y nX tjj| ||}|| j |< | sJ| jj rN|S x,| jjD ]}||ksr|j|d rXP qXW |S tj	|d}|j
 }W dQ R X d|krtjjd|f |S )z8Check namespace packages' __init__ for declare_namespacer!   rbNs   declare_namespacezNamespace package problem: %s is a namespace package, but its
__init__.py does not call declare_namespace()! Please fix it.
(See the setuptools manual under "Namespace Packages" for details.)
")packages_checkedKeyErrorr   r   check_packager   Znamespace_packages
startswithioopenread	distutilserrorsZDistutilsError)r
   r'   Zpackage_dirZinit_pyZpkgrI   contentsr	   r	   r   rO      s&    


zbuild_py.check_packagec             C   s   i | _ tjj|  d S )N)rM   r   r   initialize_options)r
   r	   r	   r   rW      s    zbuild_py.initialize_optionsc             C   s0   t jj| |}| jjd k	r,tjj| jj|S |S )N)r   r   r3   r   Zsrc_rootr,   r-   r4   )r
   r'   resr	   r	   r   r3      s    zbuild_py.get_package_dirc                s\   t | j| j||}fdd|D }tjj|}t|  fddD }t t|S )z6Filter filenames for package's data files in 'src_dir'c             3   s   | ]}t j |V  qd S )N)fnmatchr   )r/   pattern)r   r	   r   	<genexpr>   s   z.build_py.exclude_data_files.<locals>.<genexpr>c             3   s   | ]}| kr|V  qd S )Nr	   )r/   fn)badr	   r   r[      s   )r*   r8   r   r9   r:   r;   set_unique_everseen)r
   r'   r1   r   r@   Zmatch_groupsZmatchesZkeepersr	   )r]   r   r   r?      s    

zbuild_py.exclude_data_filesc                s.   t j| jdg | j|g } fdd|D S )z
        yield platform-specific path patterns (suitable for glob
        or fn_match) from a glob-based spec (such as
        self.package_data or self.exclude_package_data)
        matching package in src_dir.
         c             3   s    | ]}t jj t|V  qd S )N)r,   r-   r4   r   )r/   rZ   )r1   r	   r   r[      s   z2build_py._get_platform_patterns.<locals>.<genexpr>)r9   r:   r>   )specr'   r1   Zraw_patternsr	   )r1   r   r8      s
    

zbuild_py._get_platform_patternsN)r   r   r   __doc__r   r   r   r$   r   r+   r5   r   r)   rK   rO   rW   r3   r?   staticmethodr8   r	   r	   r	   r   r      s    

r   c             c   sj   t  }|j}|dkr:xPt|j| D ]}|| |V  q"W n,x*| D ]"}||}||kr@|| |V  q@W dS )zHList unique elements, preserving order. Remember all elements ever seen.N)r^   addr   __contains__)iterablekeyseenZseen_addelementkr	   r	   r   r_      s    
r_   c             C   s:   t jj| s| S ddlm} tjdj |  }||d S )Nr   )DistutilsSetupErrorz
        Error: setup script specifies an absolute path:

            %s

        setup() arguments must *always* be /-separated paths relative to the
        setup.py directory, *never* absolute paths.
        )r,   r-   isabsdistutils.errorsrk   textwrapdedentlstrip)r-   rk   msgr	   r	   r   rE     s    rE   )N)r   Zdistutils.utilr   Zdistutils.command.build_pyZcommandr   r   r,   rY   rn   rQ   rm   rT   r9   Zsetuptools.externr   Zsetuptools.extern.six.movesr   r   r   Zsetuptools.lib2to3_exr   ImportErrorr_   rE   r	   r	   r	   r   <module>   s$    Y
