chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import pathlib
|
||||
import urllib
|
||||
|
||||
"""Cross-platform utilities for manipulating paths and URIs.
|
||||
|
||||
NOTE: All functions in this file must support POSIX and Windows.
|
||||
"""
|
||||
|
||||
|
||||
def is_path(path_or_uri: str) -> bool:
|
||||
"""Returns True if uri_or_path is a path and False otherwise.
|
||||
|
||||
Windows paths start with a drive name which can be interpreted as
|
||||
a URI scheme by urlparse and thus needs to be treated differently
|
||||
form POSIX paths.
|
||||
|
||||
E.g. Creating a directory returns the path 'C:\\Users\\mp5n6ul72w\\working_dir'
|
||||
will have the scheme 'C:'.
|
||||
"""
|
||||
if not isinstance(path_or_uri, str):
|
||||
raise TypeError(f" path_or_uri must be a string, got {type(path_or_uri)}.")
|
||||
|
||||
parsed_path = pathlib.Path(path_or_uri)
|
||||
parsed_uri = urllib.parse.urlparse(path_or_uri)
|
||||
|
||||
if isinstance(parsed_path, pathlib.PurePosixPath):
|
||||
return not parsed_uri.scheme
|
||||
elif isinstance(parsed_path, pathlib.PureWindowsPath):
|
||||
return parsed_uri.scheme == parsed_path.drive.strip(":").lower()
|
||||
else:
|
||||
# this should never happen.
|
||||
raise TypeError(f"Unsupported path type: {type(parsed_path).__name__}")
|
||||
Reference in New Issue
Block a user