Skip to content

Filters

miniset.filters

build_identifier_filter(identifier_quote_character)

Build identifier filter based on a quote character

Parameters:

Name Type Description Default
identifier_quote_character IdentifierQuoteCharacterType

Quote character for identifier

required
Source code in miniset/filters.py
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
def build_identifier_filter(
    identifier_quote_character: types.IdentifierQuoteCharacterType,
):
    """Build identifier filter based on a quote character

    Args:
        identifier_quote_character (types.IdentifierQuoteCharacterType): Quote character for identifier
    """

    def quote_and_escape(value: str):
        # Escape double quote with 2 double quotes,
        # or escape backtick with 2 backticks
        return (
            identifier_quote_character
            + value.replace(identifier_quote_character, identifier_quote_character * 2)
            + identifier_quote_character
        )

    def identifier_filter(raw_identifier: Union[Iterable[str], str]):
        if isinstance(raw_identifier, str):
            raw_identifier = (raw_identifier,)

        if not isinstance(raw_identifier, Iterable):
            raise ValueError("identifier filter expects a string or an Iterable")

        return Markup(".".join(quote_and_escape(s) for s in raw_identifier))

    return identifier_filter

dummy_sql_safe(value)

Dummy sql_safe filter for linting

Parameters:

Name Type Description Default
value Any

Value

required

Returns:

Name Type Description
Any Any

Value

Source code in miniset/filters.py
15
16
17
18
19
20
21
22
23
24
def dummy_sql_safe(value: Any) -> Any:
    """Dummy sql_safe filter for linting

    Args:
        value (Any): Value

    Returns:
        Any: Value
    """
    return value

dummy_where_in(values, mark="'")

Dummy where_in filter for linting

Parameters:

Name Type Description Default
values List[Any]

Values

required
mark str

Quote mark. Defaults to "'".

"'"

Returns:

Name Type Description
str str

A string representation of a parenthesis list suitable for an IN expression

Source code in miniset/filters.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
def dummy_where_in(values: list[Any], mark: str = "'") -> str:
    """Dummy where_in filter for linting

    Args:
        values (List[Any]): Values
        mark (str, optional): Quote mark. Defaults to "'".

    Returns:
        str: A string representation of a parenthesis list suitable for an IN expression
    """

    def quote(value: Any) -> str:
        if isinstance(value, str):
            value = value.replace(mark, mark * 2)
            return f"{mark}{value}{mark}"

        return str(value)

    joined_values = ", ".join(quote(value) for value in values)
    return f"({joined_values})"

sql_safe(value)

Filter to mark the value of an expression as safe for inserting in a SQL statement

Parameters:

Name Type Description Default
value Any

Value

required

Returns:

Name Type Description
Markup Markup

Markup

Source code in miniset/filters.py
49
50
51
52
53
54
55
56
57
58
def sql_safe(value: Any) -> Markup:
    """Filter to mark the value of an expression as safe for inserting in a SQL statement

    Args:
        value (Any): Value

    Returns:
        Markup: Markup
    """
    return Markup(value)