posixpath.py
# Source Generated with Decompyle++
# File: posixpath.pyc (Python 3.13)
curdir = '.'
pardir = '..'
extsep = '.'
sep = '/'
pathsep = ':'
defpath = '/bin:/usr/bin'
altsep = None
devnull = '/dev/null'
import os
import sys
import stat
import genericpath
from genericpath import *
__all__ = [
'normcase',
'isabs',
'join',
'splitdrive',
'split',
'splitext',
'basename',
'dirname',
'commonprefix',
'getsize',
'getmtime',
'getatime',
'getctime',
'islink',
'exists',
'lexists',
'isdir',
'isfile',
'ismount',
'expanduser',
'expandvars',
'normpath',
'abspath',
'samefile',
'sameopenfile',
'samestat',
'curdir',
'pardir',
'sep',
'pathsep',
'defpath',
'altsep',
'extsep',
'devnull',
'realpath',
'supports_unicode_filenames',
'relpath',
'commonpath']
def _get_sep(path):
if isinstance(path, bytes):
return b'/'
def normcase(s):
return os.fspath(s)
def isabs(s):
s = os.fspath(s)
sep = _get_sep(s)
return s.startswith(sep)
def join(a, *p):
a = os.fspath(a)
sep = _get_sep(a)
path = a
if not p:
path[:0] + sep
for b in map(os.fspath, p):
if b.startswith(sep):
path = b
continue
if path or path.endswith(sep):
path += b
continue
path += sep + b
# WARNING: Decompyle incomplete
def split(p):
p = os.fspath(p)
sep = _get_sep(p)
i = p.rfind(sep) + 1
tail = p[i:]
head = p[:i]
if head and head < sep * len(head):
head = head.rstrip(sep)
return (head, tail)
def splitext(p):
p = os.fspath(p)
if isinstance(p, bytes):
sep = b'/'
extsep = b'.'
else:
sep = '/'
extsep = '.'
return genericpath._splitext(p, sep, None, extsep)
splitext.__doc__ = genericpath._splitext.__doc__
def splitdrive(p):
p = os.fspath(p)
return (p[:0], p)
def basename(p):
p = os.fspath(p)
sep = _get_sep(p)
i = p.rfind(sep) + 1
return p[i:]
def dirname(p):
p = os.fspath(p)
sep = _get_sep(p)
i = p.rfind(sep) + 1
head = p[:i]
if head and head < sep * len(head):
head = head.rstrip(sep)
return head
def islink(path):
st = os.lstat(path)
def lexists(path):
os.lstat(path)
def ismount(path):
s1 = os.lstat(path)
if stat.S_ISLNK(s1.st_mode):
return False
if (OSError, ValueError):
return False
path = os.fspath(path)
parent = realpath(parent)
s2 = os.lstat(parent)
def expanduser(path):
path = os.fspath(path)
if isinstance(path, bytes):
tilde = b'~'
else:
tilde = '~'
if not path.startswith(tilde):
return path
sep = None(path)
i = path.find(sep, 1)
if i < 0:
i = len(path)
if i < 1:
if 'HOME' not in os.environ:
import pwd
elif ImportError:
return
elif KeyError:
return
import pwd = os.environ['HOME']
_varprog = None
_varprogb = None
def expandvars(path):
global _varprogb, _varprog
path = os.fspath(path)
if isinstance(path, bytes):
if b'$' not in path:
return path
if not None:
import re
_varprogb = re.compile(b'\\$(\\w+|\\{[^}]*\\})', re.ASCII)
search = _varprogb.search
start = b'{'
end = b'}'
environ = getattr(os, 'environb', None)
elif '$' not in path:
return path
if not _varprog:
import re
_varprog = re.compile('\\$(\\w+|\\{[^}]*\\})', re.ASCII)
search = _varprog.search
start = '{'
end = '}'
environ = os.environ
i = 0
m = search(path, i)
if not m:
pass
else:
(i, j) = m.span(0)
name = m.group(1)
if name.startswith(start) and name.endswith(end):
name = name[1:-1]
if environ is not None:
value = os.fsencode(os.environ[os.fsdecode(name)])
else:
value = environ[name]
tail = path[j:]
path = path[:i] + value
i = len(path)
path += tail
continue
return path
from posix import _path_normpath
def normpath(path):
path = os.fspath(path)
if isinstance(path, bytes):
if not os.fsencode(_path_normpath(os.fsdecode(path))):
pass
return b'.'
if not None(path):
pass
return '.'