diff options
author | Ethan Furman <ethan@stoneleaf.us> | 2016-06-04 19:06:26 (GMT) |
---|---|---|
committer | Ethan Furman <ethan@stoneleaf.us> | 2016-06-04 19:06:26 (GMT) |
commit | 410ef8e23088ab2b8bd92ac70a8176f71da2b931 (patch) | |
tree | dceeb23e4a2dcddecc72e0bc6faa15a1177ab633 /Lib/os.py | |
parent | c55014f3717ce8a810a7e934c8ad5b519dbf88c5 (diff) | |
download | cpython-410ef8e23088ab2b8bd92ac70a8176f71da2b931.zip cpython-410ef8e23088ab2b8bd92ac70a8176f71da2b931.tar.gz cpython-410ef8e23088ab2b8bd92ac70a8176f71da2b931.tar.bz2 |
issue27186: add C version of os.fspath(); patch by Jelle Zijlstra
Diffstat (limited to 'Lib/os.py')
-rw-r--r-- | Lib/os.py | 35 |
1 files changed, 18 insertions, 17 deletions
@@ -1104,23 +1104,24 @@ def fdopen(fd, *args, **kwargs): import io return io.open(fd, *args, **kwargs) -# Supply os.fspath() -def fspath(path): - """Return the string representation of the path. +# Supply os.fspath() if not defined in C +if not _exists('fspath'): + def fspath(path): + """Return the string representation of the path. - If str or bytes is passed in, it is returned unchanged. - """ - if isinstance(path, (str, bytes)): - return path + If str or bytes is passed in, it is returned unchanged. + """ + if isinstance(path, (str, bytes)): + return path - # Work from the object's type to match method resolution of other magic - # methods. - path_type = type(path) - try: - return path_type.__fspath__(path) - except AttributeError: - if hasattr(path_type, '__fspath__'): - raise + # Work from the object's type to match method resolution of other magic + # methods. + path_type = type(path) + try: + return path_type.__fspath__(path) + except AttributeError: + if hasattr(path_type, '__fspath__'): + raise - raise TypeError("expected str, bytes or os.PathLike object, not " - + path_type.__name__) + raise TypeError("expected str, bytes or os.PathLike object, not " + + path_type.__name__) |