Source code for doxysphinx.utils.pathlib_fix
# =====================================================================================
# C O P Y R I G H T
# -------------------------------------------------------------------------------------
# Copyright (c) 2023 by Robert Bosch GmbH. All rights reserved.
#
# Author(s):
# - Markus Braun, :em engineering methods AG (contracted by Robert Bosch GmbH)
# =====================================================================================
"""The pathlib_fix module contains several pathlib fixes."""
from pathlib import Path
[docs]def path_resolve(path: Path) -> Path:
"""
Fix/Workaround for bug https://bugs.python.org/issue38671.
On Windows resolve will not return correct absolute paths for non-existing files
(only for existing ones). This got fixed in python 3.10, however as we need to
support older versions....
"""
if path.is_absolute():
return path
maybe_absolute = path.resolve()
if maybe_absolute.is_absolute():
return maybe_absolute
return Path().resolve() / maybe_absolute
[docs]def path_is_relative_to(path: Path, base: Path) -> bool:
"""
Fix/Workaround for strange behavior in python 3.8.
The issue is that Path.is_relative_to complains about PosixPath not having such an attribute in a
foreign project.
"""
absolute_base = path_resolve(base)
absolute_path = path_resolve(path)
return str(absolute_base) in str(absolute_path)