diff options
author | Ethan Furman <ethan@stoneleaf.us> | 2016-06-04 17:19:27 (GMT) |
---|---|---|
committer | Ethan Furman <ethan@stoneleaf.us> | 2016-06-04 17:19:27 (GMT) |
commit | c1cbeedf0c650c3f7c64f04479070d39e15e1baf (patch) | |
tree | af1e666a424da1ec083a1bb8363b529413809134 /Lib/os.py | |
parent | 7a3827f61f8d3875bd2611aee5f5a5e5e2913907 (diff) | |
download | cpython-c1cbeedf0c650c3f7c64f04479070d39e15e1baf.zip cpython-c1cbeedf0c650c3f7c64f04479070d39e15e1baf.tar.gz cpython-c1cbeedf0c650c3f7c64f04479070d39e15e1baf.tar.bz2 |
issue27182: update fsencode and fsdecode for os.path(); patch by Dusty Phillips
Diffstat (limited to 'Lib/os.py')
-rw-r--r-- | Lib/os.py | 22 |
1 files changed, 14 insertions, 8 deletions
@@ -877,29 +877,35 @@ def _fscodec(): def fsencode(filename): """ - Encode filename to the filesystem encoding with 'surrogateescape' error - handler, return bytes unchanged. On Windows, use 'strict' error handler if - the file system encoding is 'mbcs' (which is the default encoding). + Encode filename (an os.PathLike, bytes, or str) to the filesystem + encoding with 'surrogateescape' error handler, return bytes unchanged. + On Windows, use 'strict' error handler if the file system encoding is + 'mbcs' (which is the default encoding). """ + filename = fspath(filename) if isinstance(filename, bytes): return filename elif isinstance(filename, str): return filename.encode(encoding, errors) else: - raise TypeError("expect bytes or str, not %s" % type(filename).__name__) + raise TypeError("expected str, bytes or os.PathLike object, not " + + path_type.__name__) def fsdecode(filename): """ - Decode filename from the filesystem encoding with 'surrogateescape' error - handler, return str unchanged. On Windows, use 'strict' error handler if - the file system encoding is 'mbcs' (which is the default encoding). + Decode filename (an os.PathLike, bytes, or str) from the filesystem + encoding with 'surrogateescape' error handler, return str unchanged. On + Windows, use 'strict' error handler if the file system encoding is + 'mbcs' (which is the default encoding). """ + filename = fspath(filename) if isinstance(filename, str): return filename elif isinstance(filename, bytes): return filename.decode(encoding, errors) else: - raise TypeError("expect bytes or str, not %s" % type(filename).__name__) + raise TypeError("expected str, bytes or os.PathLike object, not " + + path_type.__name__) return fsencode, fsdecode |