summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/litestar/utils/path.py
blob: 76b43affc9c2d9c142c6832376f48d74d574c64a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from __future__ import annotations

import re
from typing import Iterable

__all__ = ("join_paths", "normalize_path")


multi_slash_pattern = re.compile("//+")


def normalize_path(path: str) -> str:
    """Normalize a given path by ensuring it starts with a slash and does not end with a slash.

    Args:
        path: Path string

    Returns:
        Path string
    """
    path = path.strip("/")
    path = f"/{path}"
    return multi_slash_pattern.sub("/", path)


def join_paths(paths: Iterable[str]) -> str:
    """Normalize and joins path fragments.

    Args:
        paths: An iterable of path fragments.

    Returns:
        A normalized joined path string.
    """
    return normalize_path("/".join(paths))