Source code for pathvalidate.handler

"""
.. codeauthor:: Tsuyoshi Hombashi <tsuyoshi.hombashi@gmail.com>
"""

import warnings
from datetime import datetime
from typing import Callable

from .error import ValidationError


ValidationErrorHandler = Callable[[ValidationError], str]


def return_null_string(e: ValidationError) -> str:
    """Null value handler that always returns an empty string.

    Args:
        e (ValidationError): A validation error.

    Returns:
        str: An empty string.
    """

    warnings.warn(
        "'return_null_string' is deprecated. Use 'NullValueHandler.return_null_string' instead.",
        DeprecationWarning,
    )

    return ""


def return_timestamp(e: ValidationError) -> str:
    """Null value handler that returns a timestamp of when the function was called.

    Args:
        e (ValidationError): A validation error.

    Returns:
        str: A timestamp.
    """

    warnings.warn(
        "'return_timestamp' is deprecated. Use 'NullValueHandler.reserved_name_handler' instead.",
        DeprecationWarning,
    )

    return str(datetime.now().timestamp())


[docs] def raise_error(e: ValidationError) -> str: """Null value handler that always raises an exception. Args: e (ValidationError): A validation error. Raises: ValidationError: Always raised. """ raise e
[docs] class NullValueHandler:
[docs] @classmethod def return_null_string(cls, e: ValidationError) -> str: """Null value handler that always returns an empty string. Args: e (ValidationError): A validation error. Returns: str: An empty string. """ return ""
[docs] @classmethod def return_timestamp(cls, e: ValidationError) -> str: """Null value handler that returns a timestamp of when the function was called. Args: e (ValidationError): A validation error. Returns: str: A timestamp. """ return str(datetime.now().timestamp())
[docs] class ReservedNameHandler:
[docs] @classmethod def add_leading_underscore(cls, e: ValidationError) -> str: """Reserved name handler that adds a leading underscore (``"_"``) to the name except for ``"."`` and ``".."``. Args: e (ValidationError): A reserved name error. Returns: str: The converted name. """ if e.reserved_name in (".", "..") or e.reusable_name: return e.reserved_name return f"_{e.reserved_name}"
[docs] @classmethod def add_trailing_underscore(cls, e: ValidationError) -> str: """Reserved name handler that adds a trailing underscore (``"_"``) to the name except for ``"."`` and ``".."``. Args: e (ValidationError): A reserved name error. Returns: str: The converted name. """ if e.reserved_name in (".", "..") or e.reusable_name: return e.reserved_name return f"{e.reserved_name}_"
[docs] @classmethod def as_is(cls, e: ValidationError) -> str: """Reserved name handler that returns the name as is. Args: e (ValidationError): A reserved name error. Returns: str: The name as is. """ return e.reserved_name