Skip to content

Remove _get_[both]sep[s]() calls in os.path #117634

@nineteendo

Description

@nineteendo

Feature or enhancement

Proposal:

Python function calls are always expensive. We can replace all _get_sep() & _get_bothseps() calls in os.path with ternary operators, merging with existing isinstance() checks where applicable. e.g:

-seps = _get_bothseps(p)
+seps = b'\\/' if isinstance(p, bytes) else '\\/'

Also, in posixpath.expanduser() we can replace root with the already assigned sep from earlier:

if isinstance(path, bytes):
    userhome = os.fsencode(userhome)
-    root = b'/'
-else:
-    root = '/'
-userhome = userhome.rstrip(root)
-return (userhome + path[i:]) or root
+userhome = userhome.rstrip(sep)
+return (userhome + path[i:]) or sep

Has this already been discussed elsewhere?

This is a minor feature, which does not need previous discussion elsewhere

Links to previous discussion of this feature:

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    performancePerformance or resource usagestdlibPython modules in the Lib dirtype-featureA feature request or enhancement

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions