PHP 8.5.2
Preview: genericpath.py Size: 5.44 KB
//lib/python3.12/genericpath.py

"""
Path operations common to more than one OS
Do not use directly.  The OS specific modules import the appropriate
functions from this module themselves.
"""
import os
import stat

__all__ = ['commonprefix', 'exists', 'getatime', 'getctime', 'getmtime',
           'getsize', 'isdir', 'isfile', 'islink', 'samefile', 'sameopenfile',
           'samestat', 'ALLOW_MISSING']


# Does a path exist?
# This is false for dangling symbolic links on systems that support them.
def exists(path):
    """Test whether a path exists.  Returns False for broken symbolic links"""
    try:
        os.stat(path)
    except (OSError, ValueError):
        return False
    return True


# This follows symbolic links, so both islink() and isdir() can be true
# for the same path on systems that support symlinks
def isfile(path):
    """Test whether a path is a regular file"""
    try:
        st = os.stat(path)
    except (OSError, ValueError):
        return False
    return stat.S_ISREG(st.st_mode)


# Is a path a directory?
# This follows symbolic links, so both islink() and isdir()
# can be true for the same path on systems that support symlinks
def isdir(s):
    """Return true if the pathname refers to an existing directory."""
    try:
        st = os.stat(s)
    except (OSError, ValueError):
        return False
    return stat.S_ISDIR(st.st_mode)


# Is a path a symbolic link?
# This will always return false on systems where os.lstat doesn't exist.

def islink(path):
    """Test whether a path is a symbolic link"""
    try:
        st = os.lstat(path)
    except (OSError, ValueError, AttributeError):
        return False
    return stat.S_ISLNK(st.st_mode)


def getsize(filename):
    """Return the size of a file, reported by os.stat()."""
    return os.stat(filename).st_size


def getmtime(filename):
    """Return the last modification time of a file, reported by os.stat()."""
    return os.stat(filename).st_mtime


def getatime(filename):
    """Return the last access time of a file, reported by os.stat()."""
    return os.stat(filename).st_atime


def getctime(filename):
    """Return the metadata change time of a file, reported by os.stat()."""
    return os.stat(filename).st_ctime


# Return the longest prefix of all list elements.
def commonprefix(m):
    "Given a list of pathnames, returns the longest common leading component"
    if not m: return ''
    # Some people pass in a list of pathname parts to operate in an OS-agnostic
    # fashion; don't try to translate in that case as that's an abuse of the
    # API and they are already doing what they need to be OS-agnostic and so
    # they most likely won't be using an os.PathLike object in the sublists.
    if not isinstance(m[0], (list, tuple)):
        m = tuple(map(os.fspath, m))
    s1 = min(m)
    s2 = max(m)
    for i, c in enumerate(s1):
        if c != s2[i]:
            return s1[:i]
    return s1

# Are two stat buffers (obtained from stat, fstat or lstat)
# describing the same file?
def samestat(s1, s2):
    """Test whether two stat buffers reference the same file"""
    return (s1.st_ino == s2.st_ino and
            s1.st_dev == s2.st_dev)


# Are two filenames really pointing to the same file?
def samefile(f1, f2):
    """Test whether two pathnames reference the same actual file or directory

    This is determined by the device number and i-node number and
    raises an exception if an os.stat() call on either pathname fails.
    """
    s1 = os.stat(f1)
    s2 = os.stat(f2)
    return samestat(s1, s2)


# Are two open files really referencing the same file?
# (Not necessarily the same file descriptor!)
def sameopenfile(fp1, fp2):
    """Test whether two open file objects reference the same file"""
    s1 = os.fstat(fp1)
    s2 = os.fstat(fp2)
    return samestat(s1, s2)


# Split a path in root and extension.
# The extension is everything starting at the last dot in the last
# pathname component; the root is everything before that.
# It is always true that root + ext == p.

# Generic implementation of splitext, to be parametrized with
# the separators
def _splitext(p, sep, altsep, extsep):
    """Split the extension from a pathname.

    Extension is everything from the last dot to the end, ignoring
    leading dots.  Returns "(root, ext)"; ext may be empty."""
    # NOTE: This code must work for text and bytes strings.

    sepIndex = p.rfind(sep)
    if altsep:
        altsepIndex = p.rfind(altsep)
        sepIndex = max(sepIndex, altsepIndex)

    dotIndex = p.rfind(extsep)
    if dotIndex > sepIndex:
        # skip all leading dots
        filenameIndex = sepIndex + 1
        while filenameIndex < dotIndex:
            if p[filenameIndex:filenameIndex+1] != extsep:
                return p[:dotIndex], p[dotIndex:]
            filenameIndex += 1

    return p, p[:0]

def _check_arg_types(funcname, *args):
    hasstr = hasbytes = False
    for s in args:
        if isinstance(s, str):
            hasstr = True
        elif isinstance(s, bytes):
            hasbytes = True
        else:
            raise TypeError(f'{funcname}() argument must be str, bytes, or '
                            f'os.PathLike object, not {s.__class__.__name__!r}') from None
    if hasstr and hasbytes:
        raise TypeError("Can't mix strings and bytes in path components") from None

# A singleton with a true boolean value.
@object.__new__
class ALLOW_MISSING:
    """Special value for use in realpath()."""
    def __repr__(self):
        return 'os.path.ALLOW_MISSING'
    def __reduce__(self):
        return self.__class__.__name__

Directory Contents

Dirs: 31 × Files: 169

Name Size Perms Modified Actions
asyncio DIR
- drwxr-xr-x 2026-02-07 06:05:43
Edit Download
- drwxr-xr-x 2026-02-07 06:05:14
Edit Download
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
- drwxr-xr-x 2026-02-07 06:05:10
Edit Download
ctypes DIR
- drwxr-xr-x 2026-02-07 06:05:40
Edit Download
curses DIR
- drwxr-xr-x 2026-02-07 06:05:40
Edit Download
dbm DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
email DIR
- drwxr-xr-x 2026-02-07 06:05:42
Edit Download
encodings DIR
- drwxr-xr-x 2026-02-07 06:05:14
Edit Download
html DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
http DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
importlib DIR
- drwxr-xr-x 2026-02-07 06:05:14
Edit Download
json DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
- drwxr-xr-x 2026-02-07 06:05:12
Edit Download
logging DIR
- drwxr-xr-x 2026-02-07 06:05:14
Edit Download
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
re DIR
- drwxr-xr-x 2026-02-07 06:05:14
Edit Download
sqlite3 DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
test DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
tomllib DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
unittest DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
urllib DIR
- drwxr-xr-x 2026-02-07 06:05:43
Edit Download
venv DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
wsgiref DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
xml DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
xmlrpc DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
zipfile DIR
- drwxr-xr-x 2026-02-07 06:05:43
Edit Download
zoneinfo DIR
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
- drwxr-xr-x 2026-02-07 06:05:43
Edit Download
- drwxr-xr-x 2026-02-07 06:05:44
Edit Download
6.38 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
33.41 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
500 B lrw-r--r-- 2026-01-22 20:57:42
Edit Download
99.37 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
62.75 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
20.12 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
31.70 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
3.34 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
11.57 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
24.82 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
33.61 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
12.13 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.37 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
14.52 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
10.44 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
36.01 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.77 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
3.97 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
20.12 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
52.53 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
26.99 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
129 B lrw-r--r-- 2026-01-22 20:57:42
Edit Download
8.21 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
7.44 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
6.40 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
3.82 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
16.00 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
60.31 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
268 B lrw-r--r-- 2026-01-22 20:57:42
Edit Download
320 B lrw-r--r-- 2026-01-22 20:57:42
Edit Download
81.36 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
29.50 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
103.98 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
79.72 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
645 B lrw-r--r-- 2026-01-22 20:57:42
Edit Download
9.95 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
15.35 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.86 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
37.17 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
33.92 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
37.23 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.44 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
7.31 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.85 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
21.24 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
8.53 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
9.43 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
24.28 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
9.13 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
22.48 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
7.54 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
52.59 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
4.29 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
122.48 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
3.50 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
76.46 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
1.05 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
13.61 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.52 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
76.72 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
12.97 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
77.06 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
9.11 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
22.35 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
23.14 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
6.76 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
40.12 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
29.32 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
2.82 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
11.20 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
12.87 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
10.71 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
58.95 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
38.85 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
49.95 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
67.83 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
63.38 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
91.66 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
8.77 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
17.85 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
42.32 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
27.91 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
13.95 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
17.21 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
23.59 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
22.55 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
28.60 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.99 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
11.13 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
110.44 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
7.69 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
11.23 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
7.01 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
33.87 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
6.42 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
7.64 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
12.60 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
6.20 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
1.94 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
19.21 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
8.36 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
13.04 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
56.76 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
2.44 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
23.34 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
155 B lrw-r--r-- 2024-04-10 05:33:47
Edit Download
42.51 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
7.27 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
36.53 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
27.20 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
231 B lrw-r--r-- 2026-01-22 20:57:42
Edit Download
232 B lrw-r--r-- 2026-01-22 20:57:42
Edit Download
229 B lrw-r--r-- 2026-01-22 20:57:42
Edit Download
49.63 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.36 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
49.05 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
11.51 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
12.61 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
257 B lrw-r--r-- 2026-01-22 20:57:42
Edit Download
86.65 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
18.04 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
10.50 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
32.00 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
11.26 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
109.92 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
22.75 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
36.46 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
19.26 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
1003 B lrw-r--r-- 2026-01-22 20:57:42
Edit Download
58.71 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
13.15 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
2.42 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
20.72 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
28.50 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
45.24 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
17.62 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
1.99 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
142.93 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
10.74 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
114.68 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
7.19 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
28.96 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
21.25 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
22.24 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
21.01 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
23.07 KB lrwxr-xr-x 2026-01-22 20:57:42
Edit Download
5.80 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
7.37 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
27.47 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
3.93 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
31.33 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
8.56 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.55 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.58 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
14.31 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
21.51 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
89.94 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
223.85 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
91.40 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
8.83 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
6.04 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
3.05 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
24.04 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
48.34 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
48.34 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
7.05 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.75 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
5.10 KB lrw-r--r-- 2026-01-22 20:57:42
Edit Download
227 B lrw-r--r-- 2026-01-22 20:57:42
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).