Server IP : 149.255.58.128 / Your IP : 216.73.216.145
System : Linux cloud516.thundercloud.uk 5.14.0-427.26.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 17 15:51:13 EDT 2024 x86_64
PHP Version : 8.2.28
Disable Function : allow_url_include, apache_child_terminate, apache_setenv, exec, passthru, pcntl_exec, posix_kill, posix_mkfifo, posix_getpwuid, posix_setpgid, posix_setsid, posix_setuid, posix_setgid, posix_seteuid, posix_setegid, posix_uname, proc_close, proc_get_status, proc_open, proc_terminate, shell_exec, show_source, system
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Upload Files :
Command :
Current File : /usr/lib/python3.9/site-packages/setuptools//glob.py
"""
Filename globbing utility. Mostly a copy of `glob` from Python 3.5.
Changes include:
* `yield from` and PEP3102 `*` removed.
* Hidden files are not ignored.
"""
import os
import re
import fnmatch
__all__ = ["glob", "iglob", "escape"]
def glob(pathname, recursive=False):
"""Return a list of paths matching a pathname pattern.
The pattern may contain simple shell-style wildcards a la
fnmatch. However, unlike fnmatch, filenames starting with a
dot are special cases that are not matched by '*' and '?'
patterns.
If recursive is true, the pattern '**' will match any files and
zero or more directories and subdirectories.
"""
return list(iglob(pathname, recursive=recursive))
def iglob(pathname, recursive=False):
"""Return an iterator which yields the paths matching a pathname pattern.
The pattern may contain simple shell-style wildcards a la
fnmatch. However, unlike fnmatch, filenames starting with a
dot are special cases that are not matched by '*' and '?'
patterns.
If recursive is true, the pattern '**' will match any files and
zero or more directories and subdirectories.
"""
it = _iglob(pathname, recursive)
if recursive and _isrecursive(pathname):
s = next(it) # skip empty string
assert not s
return it
def _iglob(pathname, recursive):
dirname, basename = os.path.split(pathname)
glob_in_dir = glob2 if recursive and _isrecursive(basename) else glob1
if not has_magic(pathname):
if basename:
if os.path.lexists(pathname):
yield pathname
else:
# Patterns ending with a slash should match only directories
if os.path.isdir(dirname):
yield pathname
return
if not dirname:
yield from glob_in_dir(dirname, basename)
return
# `os.path.split()` returns the argument itself as a dirname if it is a
# drive or UNC path. Prevent an infinite recursion if a drive or UNC path
# contains magic characters (i.e. r'\\?\C:').
if dirname != pathname and has_magic(dirname):
dirs = _iglob(dirname, recursive)
else:
dirs = [dirname]
if not has_magic(basename):
glob_in_dir = glob0
for dirname in dirs:
for name in glob_in_dir(dirname, basename):
yield os.path.join(dirname, name)
# These 2 helper functions non-recursively glob inside a literal directory.
# They return a list of basenames. `glob1` accepts a pattern while `glob0`
# takes a literal basename (so it only has to check for its existence).
def glob1(dirname, pattern):
if not dirname:
if isinstance(pattern, bytes):
dirname = os.curdir.encode('ASCII')
else:
dirname = os.curdir
try:
names = os.listdir(dirname)
except OSError:
return []
return fnmatch.filter(names, pattern)
def glob0(dirname, basename):
if not basename:
# `os.path.split()` returns an empty basename for paths ending with a
# directory separator. 'q*x/' should match only directories.
if os.path.isdir(dirname):
return [basename]
else:
if os.path.lexists(os.path.join(dirname, basename)):
return [basename]
return []
# This helper function recursively yields relative pathnames inside a literal
# directory.
def glob2(dirname, pattern):
assert _isrecursive(pattern)
yield pattern[:0]
for x in _rlistdir(dirname):
yield x
# Recursively yields relative pathnames inside a literal directory.
def _rlistdir(dirname):
if not dirname:
if isinstance(dirname, bytes):
dirname = os.curdir.encode('ASCII')
else:
dirname = os.curdir
try:
names = os.listdir(dirname)
except os.error:
return
for x in names:
yield x
path = os.path.join(dirname, x) if dirname else x
for y in _rlistdir(path):
yield os.path.join(x, y)
magic_check = re.compile('([*?[])')
magic_check_bytes = re.compile(b'([*?[])')
def has_magic(s):
if isinstance(s, bytes):
match = magic_check_bytes.search(s)
else:
match = magic_check.search(s)
return match is not None
def _isrecursive(pattern):
if isinstance(pattern, bytes):
return pattern == b'**'
else:
return pattern == '**'
def escape(pathname):
"""Escape all special characters.
"""
# Escaping is done by wrapping any of "*?[" between square brackets.
# Metacharacters do not work in the drive part and shouldn't be escaped.
drive, pathname = os.path.splitdrive(pathname)
if isinstance(pathname, bytes):
pathname = magic_check_bytes.sub(br'[\1]', pathname)
else:
pathname = magic_check.sub(r'[\1]', pathname)
return drive + pathname
Name |
Size |
Last Modified |
Owner / Group |
Permissions |
Options |
.. | -- | March 19 2025 22:42:16 | 0 / root | 0755 | |
__pycache__ | -- | December 04 2024 22:44:03 | 0 / root | 0755 | |
_distutils | -- | December 04 2024 22:44:03 | 0 / root | 0755 | |
_vendor | -- | December 04 2024 22:44:03 | 0 / root | 0755 | |
command | -- | December 04 2024 22:44:03 | 0 / root | 0755 | |
extern | -- | December 04 2024 22:44:03 | 0 / root | 0755 | |
| | | | | |
__init__.py | 7.501 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
_deprecation_warning.py | 0.213 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
_imp.py | 2.332 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
archive_util.py | 6.911 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
build_meta.py | 9.859 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
config.py | 21.234 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
dep_util.py | 0.927 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
depends.py | 5.346 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
dist.py | 39.823 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
errors.py | 0.512 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
extension.py | 1.645 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
glob.py | 4.759 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
installer.py | 3.483 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
launch.py | 0.793 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
lib2to3_ex.py | 2.28 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
monkey.py | 5.095 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
msvc.py | 49.928 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
namespaces.py | 3.021 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
package_index.py | 39.768 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
py34compat.py | 0.239 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
sandbox.py | 13.819 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
script (dev).tmpl | 0.213 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
script.tmpl | 0.135 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
ssl_support.py | 8.364 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
unicode_utils.py | 0.919 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
version.py | 0.141 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
wheel.py | 8.094 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |
windows_support.py | 0.697 KB | October 02 2024 19:20:21 | 0 / root | 0644 | |