diff --git a/pathvalidate/_base.py b/pathvalidate/_base.py index 8d9dd08..c74e842 100644 --- a/pathvalidate/_base.py +++ b/pathvalidate/_base.py @@ -183,6 +183,7 @@ def sanitize(self, value: PathType, replacement_text: str = "") -> PathType: # class BaseValidator(AbstractValidator): __RE_ROOT_NAME: Final = re.compile(r"([^\.]+)") + __RE_REPEAD_DOT: Final = re.compile(r"^\.{3,}") @property def min_len(self) -> int: @@ -238,6 +239,12 @@ def _validate_max_len(self) -> None: @classmethod def __extract_root_name(cls, path: str) -> str: + if path in (".", ".."): + return path + + if cls.__RE_REPEAD_DOT.search(path): + return path + match = cls.__RE_ROOT_NAME.match(os.path.basename(path)) if match is None: return ""