Checks if one path is a child of a second one. Useful for checking if paths defined in a manifest exist inside the tree. Optionally checks if the target path exists.
14 lines
449 B
Python
14 lines
449 B
Python
"""Path handling utility functions"""
|
|
import os.path
|
|
|
|
from .types import PathLike
|
|
|
|
|
|
def in_tree(path: PathLike, tree: PathLike, must_exist=False) -> bool:
|
|
"""Return whether the canonical location of 'path' is under 'tree'.
|
|
If 'must_exist' is True, the file must also exist for the check to succeed.
|
|
"""
|
|
path = os.path.abspath(path)
|
|
if path.startswith(tree):
|
|
return not must_exist or os.path.exists(path)
|
|
return False
|