Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-117349: Micro-optimize a few os.path functions #117350

Merged
merged 50 commits into from
Apr 2, 2024
Merged
Changes from 1 commit
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
c90a883
Speed up `posixpath.ismount`
nineteendo Mar 28, 2024
5984959
Speed up `posixpath.expanduser`
nineteendo Mar 28, 2024
833ddc9
Speed up `posixpath.normpath`
nineteendo Mar 28, 2024
a4d9fcb
Refactor `posixpath.expandvars` & `ntpath.commonpath`
nineteendo Mar 28, 2024
b853d4d
Remove start- & endswith
nineteendo Mar 29, 2024
a8984dc
Remove `startswith`
nineteendo Mar 29, 2024
78929b0
Remove `isabs` calls
nineteendo Mar 29, 2024
afc7bbc
Rename result of `splitroot`
nineteendo Mar 29, 2024
f5bbaf6
Refactor `os.path`
nineteendo Mar 29, 2024
e740f10
fix unbound variable
nineteendo Mar 29, 2024
d02c726
hardcode constants like documented
nineteendo Mar 29, 2024
b794897
📜🤖 Added by blurb_it.
blurb-it[bot] Mar 29, 2024
c2c04bf
Fix typo
nineteendo Mar 29, 2024
7c9dcae
exclude stylistic-only changes
nineteendo Mar 29, 2024
d35783c
Revert renaming
nineteendo Mar 29, 2024
eb24723
Revert unnesting
nineteendo Mar 29, 2024
5ca9ea3
Revert further changes
nineteendo Mar 29, 2024
3e4d0e3
Revert renaming
nineteendo Mar 29, 2024
72babad
Remove newline
nineteendo Mar 29, 2024
abfe46c
Remove slice
nineteendo Mar 30, 2024
2a055ba
Speedup `posixpath.ismount`
nineteendo Mar 30, 2024
759b189
Update Lib/posixpath.py
nineteendo Mar 30, 2024
cca16ba
Revert unnesting
nineteendo Mar 30, 2024
7e21192
Merge branch 'speedup-os.path' of https://github.com/nineteendo/cpyth…
nineteendo Mar 30, 2024
581862e
Remove line breaks
nineteendo Mar 30, 2024
d2987fd
Revert `ntpath.expandvars`
nineteendo Mar 30, 2024
1866544
Unexpose `posixpath._normpath_fallback`
nineteendo Mar 30, 2024
4a01123
Update Lib/posixpath.py
nineteendo Mar 30, 2024
67f0620
Indent for git blame
nineteendo Mar 30, 2024
9905730
Merge branch 'speedup-os.path' of https://github.com/nineteendo/cpyth…
nineteendo Mar 30, 2024
9d18f8c
Move back in except
nineteendo Mar 30, 2024
9520cc6
Revert changing comment
nineteendo Mar 30, 2024
de4b09e
Split try except blocks
nineteendo Mar 30, 2024
6f8e7d7
Update Misc/NEWS.d/next/Core and Builtins/2024-03-29-15-04-13.gh-issu…
nineteendo Mar 30, 2024
47a4b57
Update ACKS
nineteendo Mar 30, 2024
48f2971
Remove `_get_sep()` call
nineteendo Mar 30, 2024
33259d9
Revert unnecessary change
nineteendo Mar 30, 2024
4568cd1
Revert insignificant changes
nineteendo Mar 30, 2024
1382f49
Fix incorrect change
nineteendo Mar 30, 2024
a81dc6e
Revert unnesting
nineteendo Mar 30, 2024
e6cb4a3
Move to new pull request
nineteendo Mar 30, 2024
67ec9a6
assign `devnull` first
nineteendo Mar 30, 2024
87d43b8
speedup `posixpath.realpath`
nineteendo Mar 31, 2024
6c8901a
Speedup `ntpath.isreserved()`
nineteendo Apr 1, 2024
7940a64
Revert starts- & endswith
nineteendo Apr 1, 2024
e637698
Revert `len()` call
nineteendo Apr 1, 2024
b5fdd27
;(
nineteendo Apr 1, 2024
c923e49
Merge branch 'main' into speedup-os.path
nineteendo Apr 2, 2024
887f3c1
Replace definition of colon
nineteendo Apr 2, 2024
e3ace2f
Merge branch 'speedup-os.path' of https://github.com/nineteendo/cpyth…
nineteendo Apr 2, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Speed up posixpath.expanduser
  • Loading branch information
nineteendo committed Mar 28, 2024
commit 598495952c92b37afc3bedfc9c31a3ddd2425869
42 changes: 18 additions & 24 deletions Lib/posixpath.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,37 +235,31 @@ def expanduser(path):
i = path.find(sep, 1)
if i < 0:
i = len(path)
if i == 1:
if 'HOME' not in os.environ:
try:
import pwd
except ImportError:
# pwd module unavailable, return path unchanged
return path
try:
userhome = pwd.getpwuid(os.getuid()).pw_dir
except KeyError:
# bpo-10496: if the current user identifier doesn't exist in the
# password database, return the path unchanged
return path
else:
userhome = os.environ['HOME']
else:
if i != 1:
try:
import pwd
except ImportError:
name = path[1:i]
if isinstance(name, bytes):
name = name.decode('ascii')

userhome = pwd.getpwnam(name).pw_dir
except (ImportError, KeyError):
# pwd module unavailable, return path unchanged
# bpo-10496: if the user name from the path doesn't exist in the
# password database, return the path unchanged
return path
name = path[1:i]
if isinstance(name, bytes):
name = str(name, 'ASCII')
elif 'HOME' in os.environ:
userhome = os.environ['HOME']
else:
try:
pwent = pwd.getpwnam(name)
except KeyError:
# bpo-10496: if the user name from the path doesn't exist in the
import pwd
userhome = pwd.getpwuid(os.getuid()).pw_dir
except (ImportError, KeyError):
# pwd module unavailable, return path unchanged
# bpo-10496: if the current user identifier doesn't exist in the
# password database, return the path unchanged
return path
userhome = pwent.pw_dir

# if no user home, return the path unchanged on VxWorks
if userhome is None and sys.platform == "vxworks":
return path
Expand Down