CasperSecurity

Current Path : /usr/lib/python3.10/distutils/__pycache__/
Upload File :
Current File : //usr/lib/python3.10/distutils/__pycache__/filelist.cpython-310.pyc

o

��bc 2�@s�dZddlZddlZddlZddlZddlmZddlmZm	Z	ddl
mZGdd�d�Zdd	�Z
ejfd
d�Zdd
�Zddd�ZdS)zsdistutils.filelist

Provides the FileList class, used for poking about the filesystem
and building lists of files.
�N��convert_path)�DistutilsTemplateError�DistutilsInternalError)�logc@s~eZdZdZddd�Zdd�Zejfdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zddd�Z	ddd�ZdS)�FileLista�A list of files built by on exploring the filesystem and filtered by
    applying various patterns to what we find there.

    Instance attributes:
      dir
        directory from which files will be taken -- only used if
        'allfiles' not supplied to constructor
      files
        list of filenames currently being built/filtered/manipulated
      allfiles
        complete list of files under consideration (ie. without any
        filtering applied)
    NcCsd|_g|_dS�N)�allfiles�files)�self�warn�debug_print�r�)/usr/lib/python3.10/distutils/filelist.py�__init__s
zFileList.__init__cCs
||_dSr)r	)rr	rrr�set_allfiles#s
zFileList.set_allfilescCst|�|_dSr)�findallr	)r�dirrrrr&szFileList.findallcCs ddlm}|rt|�dSdS)z~Print 'msg' to stdout if the global DEBUG (taken from the
        DISTUTILS_DEBUG environment variable) flag is true.
        r)�DEBUGN)�distutils.debugr�print)r�msgrrrrr
)s�zFileList.debug_printcC�|j�|�dSr)r
�append)r�itemrrrr3�zFileList.appendcCrr)r
�extend)r�itemsrrrr6rzFileList.extendcCs<tttjj|j��}g|_|D]}|j�tjj|��qdSr)�sorted�map�os�path�splitr
r�join)r�sortable_files�
sort_tuplerrr�sort9s
�z
FileList.sortcCs@tt|j�ddd�D]}|j||j|dkr|j|=qdS)N�r���)�range�lenr
)r�irrr�remove_duplicatesCs
��zFileList.remove_duplicatescCs�|��}|d}d}}}|dvr*t|�dkrtd|��dd�|dd�D�}n?|dvrLt|�d	kr:td
|��t|d�}dd�|dd�D�}n|dvrct|�dkr\td
|��t|d�}ntd|��||||fS)Nr)�include�exclude�global-include�global-exclude�z&'%s' expects <pattern1> <pattern2> ...cS�g|]}t|��qSrr��.0�wrrr�
<listcomp>W�z1FileList._parse_template_line.<locals>.<listcomp>r')�recursive-include�recursive-exclude�z,'%s' expects <dir> <pattern1> <pattern2> ...cSr2rrr3rrrr6]r7)�graft�prunez#'%s' expects a single <dir_pattern>zunknown action '%s')r"r*rr)r�line�words�action�patternsr�dir_patternrrr�_parse_template_lineLs0���zFileList._parse_template_linecCs6|�|�\}}}}|dkr+|�dd�|��|D]}|j|dd�s(t�d|�qdS|dkrM|�dd�|��|D]}|j|dd�sJt�d	|�q;dS|d
kro|�dd�|��|D]}|j|dd�slt�d
|�q]dS|dkr�|�dd�|��|D]}|j|dd�s�t�d|�qdS|dkr�|�d|d�|�f�|D]}|j||d�s�t�d||�q�dS|dkr�|�d|d�|�f�|D]}|j||d�s�t�d||�q�dS|dkr�|�d|�|jd|d�s�t�d|�dSdS|dk�r|�d|�|jd|d��st�d|�dSdStd|��)Nr-zinclude � r')�anchorz%warning: no files found matching '%s'r.zexclude z9warning: no previously-included files found matching '%s'r/zglobal-include rz>warning: no files found matching '%s' anywhere in distributionr0zglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionr8zrecursive-include %s %s)�prefixz:warning: no files found matching '%s' under directory '%s'r9zrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r;zgraft z+warning: no directories found matching '%s'r<zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')rBr
r#�include_patternrr�exclude_patternr)rr=r?r@rrA�patternrrr�process_template_linehs�����������������������
���zFileList.process_template_liner'rcCsld}t||||�}|�d|j�|jdur|��|jD]}|�|�r3|�d|�|j�|�d}q|S)a�Select strings (presumably filenames) from 'self.files' that
        match 'pattern', a Unix-style wildcard (glob) pattern.  Patterns
        are not quite the same as implemented by the 'fnmatch' module: '*'
        and '?'  match non-special characters, where "special" is platform-
        dependent: slash on Unix; colon, slash, and backslash on
        DOS/Windows; and colon on Mac OS.

        If 'anchor' is true (the default), then the pattern match is more
        stringent: "*.py" will match "foo.py" but not "foo/bar.py".  If
        'anchor' is false, both of these will match.

        If 'prefix' is supplied, then only filenames starting with 'prefix'
        (itself a pattern) and ending with 'pattern', with anything in between
        them, will match.  'anchor' is ignored in this case.

        If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and
        'pattern' is assumed to be either a string containing a regex or a
        regex object -- no translation is done, the regex is just compiled
        and used as-is.

        Selected strings will be added to self.files.

        Return True if files are found, False otherwise.
        Fz%include_pattern: applying regex r'%s'Nz adding T)�translate_patternr
rHr	r�searchr
r)rrHrDrE�is_regex�files_found�
pattern_re�namerrrrF�s�


�zFileList.include_patterncCsrd}t||||�}|�d|j�tt|j�ddd�D]}|�|j|�r6|�d|j|�|j|=d}q|S)aRemove strings (presumably filenames) from 'files' that match
        'pattern'.  Other parameters are the same as for
        'include_pattern()', above.
        The list 'self.files' is modified in place.
        Return True if files are found, False otherwise.
        Fz%exclude_pattern: applying regex r'%s'r'r(z
 removing T)rJr
rHr)r*r
rK)rrHrDrErLrMrNr+rrrrG�s��zFileList.exclude_pattern)NN�r'Nr)�__name__�
__module__�__qualname__�__doc__rrr �curdirrr
rrr&r,rBrIrFrGrrrrrs


	
L,�rcCs&dd�tj|dd�D�}ttjj|�S)z%
    Find all files under 'path'
    css.�|]\}}}|D]
}tj�||�Vq	qdSr)r r!r#)r4�base�dirsr
�filerrr�	<genexpr>�s����z#_find_all_simple.<locals>.<genexpr>T)�followlinks)r �walk�filterr!�isfile)r!�resultsrrr�_find_all_simple�s�r_cCs6t|�}|tjkrtjtjj|d�}t||�}t|�S)z�
    Find all files under 'dir' and return the list of full filenames.
    Unless dir is '.', return full filenames with dir prepended.
    )�start)	r_r rU�	functools�partialr!�relpathr�list)rr
�make_relrrrrs


rcCs8t�|�}tj}tjdkrd}d|}t�d||�}|S)z�Translate a shell-like glob pattern to a regular expression; return
    a string containing the regex.  Differs from 'fnmatch.translate()' in
    that '*' does not match "special characters" (which are
    platform-specific).
    �\z\\\\z\1[^%s]z((?<!\\)(\\\\)*)\.)�fnmatch�	translater �sep�re�sub)rHrNri�escapedrrr�
glob_to_res

rmr'c
Cs|rt|t�rt�|�S|Std��d�\}}}|r+t|�}|�|�r(|�|�s*J�nd}|durqt|�}|�|�r?|�|�sAJ�|t|�t|�t|��}t	j
}	t	j
dkrYd}	|t|�t|�t|��}d|||	||f}n|rd||t|�d�f}t�|�S)aTranslate a shell-like wildcard pattern to a compiled regular
    expression.  Return the compiled regex.  If 'is_regex' true,
    then 'pattern' is directly compiled to a regex (if it's a string)
    or just returned as-is (assumes it's a regex object).
    �_�Nrfz\\z%s\A%s%s.*%s%sz%s\A%s)�
isinstance�strrj�compilerm�	partition�
startswith�endswithr*r ri)
rHrDrErLr`rn�endrN�	prefix_rerirrrrJ%s*



rJrP)rTr rjrgra�distutils.utilr�distutils.errorsrr�	distutilsrrr_rUrrmrJrrrr�<module>si
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY