summaryrefslogtreecommitdiff
path: root/sphinx/util/osutil.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/util/osutil.py')
-rw-r--r--sphinx/util/osutil.py22
1 files changed, 13 insertions, 9 deletions
diff --git a/sphinx/util/osutil.py b/sphinx/util/osutil.py
index 6a070a27a..2b3fe51b0 100644
--- a/sphinx/util/osutil.py
+++ b/sphinx/util/osutil.py
@@ -21,6 +21,7 @@ from io import StringIO
from os import path
from sphinx.deprecation import RemovedInSphinx30Warning, RemovedInSphinx40Warning
+from sphinx.testing.path import path as Path
if False:
# For type annotation
@@ -190,15 +191,18 @@ fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()
def abspath(pathdir):
# type: (str) -> str
- pathdir = path.abspath(pathdir)
- if isinstance(pathdir, bytes):
- try:
- pathdir = pathdir.decode(fs_encoding)
- except UnicodeDecodeError:
- raise UnicodeDecodeError('multibyte filename not supported on '
- 'this filesystem encoding '
- '(%r)' % fs_encoding)
- return pathdir
+ if isinstance(pathdir, Path):
+ return pathdir.abspath()
+ else:
+ pathdir = path.abspath(pathdir)
+ if isinstance(pathdir, bytes):
+ try:
+ pathdir = pathdir.decode(fs_encoding)
+ except UnicodeDecodeError:
+ raise UnicodeDecodeError('multibyte filename not supported on '
+ 'this filesystem encoding '
+ '(%r)' % fs_encoding)
+ return pathdir
def getcwd():