Skip to content

converters.py

Provides converters for dynamic route parameters.

BaseConverter

Base class for route parameter converters.

Attributes:

Name Type Description
pattern

Regex pattern to match request endpoint.

identifier

Identifier used in route endpoint.

convert

Callable to convert matched string to Python type.

Source code in jetweb/converters.py
26
27
28
29
30
31
32
33
34
35
36
class BaseConverter:
    """
    Base class for route parameter converters.

    :var pattern: Regex pattern to match request endpoint.
    :var identifier: Identifier used in route endpoint.
    :var convert: Callable to convert matched string to Python type.
    """
    pattern = None
    identifier = None
    convert = None

FloatConverter

Bases: BaseConverter

Converter for float parameters.

Source code in jetweb/converters.py
49
50
51
52
53
54
55
56
@converter
class FloatConverter(BaseConverter):
    """
    Converter for float parameters.
    """
    pattern = r"[\d.]+"
    identifier = "float"
    convert = float

IntConverter

Bases: BaseConverter

Converter for integer parameters.

Source code in jetweb/converters.py
39
40
41
42
43
44
45
46
@converter
class IntConverter(BaseConverter):
    """
    Converter for integer parameters.
    """
    pattern = r"\d+"
    identifier = "int"
    convert = int

PathConverter

Bases: BaseConverter

Converter for URL path segments.

Source code in jetweb/converters.py
69
70
71
72
73
74
75
76
@converter
class PathConverter(BaseConverter):
    """
    Converter for URL path segments.
    """
    pattern = r"[\w/]+"
    identifier = "path"
    convert = str

StringConverter

Bases: BaseConverter

Converter for alphanumeric strings.

Source code in jetweb/converters.py
59
60
61
62
63
64
65
66
@converter
class StringConverter(BaseConverter):
    """
    Converter for alphanumeric strings.
    """
    pattern = r"\w+"
    identifier = "str"
    convert = str

converter(converter)

Register a converter class in the global registry.

Parameters:

Name Type Description Default
converter Type[BaseConverter]

A subclass of BaseConverter.

required

Returns:

Type Description
Type[BaseConverter]

The same converter class.

Source code in jetweb/converters.py
12
13
14
15
16
17
18
19
20
21
22
23
def converter(converter: Type[BaseConverter]) -> Type[BaseConverter]:
    """
    Register a converter class in the global registry.

    :param converter: A subclass of BaseConverter.
    :returns: The same converter class.
    """
    if not all([converter.pattern, converter.identifier, converter.convert]):
        raise ValueError("Converter must contain pattern, identifier and convert")

    CONVERTERS[converter.identifier] = converter
    return converter