Skip to content

Instantly share code, notes, and snippets.

@brettcannon
Created April 13, 2016 17:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brettcannon/b3719f54715787d54a206bc011869aa1 to your computer and use it in GitHub Desktop.
Save brettcannon/b3719f54715787d54a206bc011869aa1 to your computer and use it in GitHub Desktop.
Possibly implementations of os.fspath()
# str-only.
def fspath(path):
try:
path = path.__fspath__()
except AttributeError:
pass
if isinstance(path, str):
return path
else:
raise TypeError
# Default to str, bytes allowed only when an argument.
def fspath(path, *, allow_bytes=False):
if allow_bytes and isinstance(path, bytes):
return path
try:
path = path.__fspath__()
except AttributeError:
pass
if isinstance(path, str):
return path
else:
raise TypeError
# Default to str, bytes allowed from anywhere.
def fspath(path, *, allow_bytes=False):
try:
path = path.__fspath__()
except AttributeError:
pass
if isinstance(path, str):
return path
elif allow_bytes and isinstance(path, bytes):
return path
else:
raise TypeError
# str or bytes allowed.
def fspath(path):
try:
path = path.__fspath__()
except AttributeError:
pass
if isinstance(path, (str, bytes)):
return path
else:
raise TypeError
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment