Skip to content

Field Types

Parameter field factories.

Note

Model code only receives resolved parameter values at runtime (float, int, etc.). The underlying Field classes are an implementation detail.

When using a Params subclass, resolved values are accessible as class attributes (e.g. P.width). When using a Model subclass, resolved values are accessible as instance attributes (e.g. self.width).

Float

Float(
    default: float,
    *,
    min: float | None = None,
    max: float | None = None,
    step: float | None = None,
    description: str | None = None,
) -> FloatField

Declare a floating-point parameter.

Parameters:

  • default (float) –

    Default value.

  • min (float | None, default: None ) –

    Minimum allowed value (inclusive).

  • max (float | None, default: None ) –

    Maximum allowed value (inclusive).

  • step (float | None, default: None ) –

    Suggested increment for UI controls.

  • description (str | None, default: None ) –

    Human-readable description.

Source code in bdbox/parameters/field_factories.py
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
@Field.as_dataclass_field
def Float(  # noqa: N802
    default: float,
    *,
    min: float | None = None,  # noqa: A002
    max: float | None = None,  # noqa: A002
    step: float | None = None,
    description: str | None = None,
) -> FloatField:
    """Declare a floating-point parameter.

    Args:
        default: Default value.
        min: Minimum allowed value (inclusive).
        max: Maximum allowed value (inclusive).
        step: Suggested increment for UI controls.
        description: Human-readable description.
    """
    return FloatField(
        default, min=min, max=max, step=step, description=description
    )

Int

Int(
    default: int,
    *,
    min: int | None = None,
    max: int | None = None,
    step: int | None = None,
    description: str | None = None,
) -> IntField

Declare an integer parameter.

Parameters:

  • default (int) –

    Default value.

  • min (int | None, default: None ) –

    Minimum allowed value (inclusive).

  • max (int | None, default: None ) –

    Maximum allowed value (inclusive).

  • step (int | None, default: None ) –

    Suggested increment for UI controls.

  • description (str | None, default: None ) –

    Human-readable description.

Source code in bdbox/parameters/field_factories.py
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
@Field.as_dataclass_field
def Int(  # noqa: N802
    default: int,
    *,
    min: int | None = None,  # noqa: A002
    max: int | None = None,  # noqa: A002
    step: int | None = None,
    description: str | None = None,
) -> IntField:
    """Declare an integer parameter.

    Args:
        default: Default value.
        min: Minimum allowed value (inclusive).
        max: Maximum allowed value (inclusive).
        step: Suggested increment for UI controls.
        description: Human-readable description.
    """
    return IntField(
        default, min=min, max=max, step=step, description=description
    )

Bool

Bool(
    default: bool, *, description: str | None = None
) -> BoolField

Declare a boolean parameter.

Parameters:

  • default (bool) –

    Default value.

  • description (str | None, default: None ) –

    Human-readable description.

Source code in bdbox/parameters/field_factories.py
79
80
81
82
83
84
85
86
87
88
89
90
91
@Field.as_dataclass_field
def Bool(  # noqa: N802
    default: bool,  # noqa: FBT001
    *,
    description: str | None = None,
) -> BoolField:
    """Declare a boolean parameter.

    Args:
        default: Default value.
        description: Human-readable description.
    """
    return BoolField(default, description=description)

Str

Str(
    default: str,
    *,
    min_length: int | None = None,
    max_length: int | None = None,
    description: str | None = None,
) -> StrField

Declare a string parameter.

Parameters:

  • default (str) –

    Default value.

  • min_length (int | None, default: None ) –

    Minimum allowed value length (inclusive).

  • max_length (int | None, default: None ) –

    Maximum allowed value length (inclusive).

  • description (str | None, default: None ) –

    Human-readable description.

Source code in bdbox/parameters/field_factories.py
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
@Field.as_dataclass_field
def Str(  # noqa: N802
    default: str,
    *,
    min_length: int | None = None,
    max_length: int | None = None,
    description: str | None = None,
) -> StrField:
    """Declare a string parameter.

    Args:
        default: Default value.
        min_length: Minimum allowed value length (inclusive).
        max_length: Maximum allowed value length (inclusive).
        description: Human-readable description.
    """
    return StrField(
        default,
        min_length=min_length,
        max_length=max_length,
        description=description,
    )

Choice

Choice(
    default: T,
    choices: Sequence[T],
    *,
    description: str | None = None,
) -> ChoiceField[T]

Declare a parameter for choosing from a fixed set of values.

The value type is inferred from choices.

Parameters:

  • default (T) –

    Default value. Must be one of choices.

  • choices (Sequence[T]) –

    Allowed values. All values must be the same type.

  • description (str | None, default: None ) –

    Human-readable description.

Source code in bdbox/parameters/field_factories.py
118
119
120
121
122
123
124
125
126
127
128
129
130
131
@Field.as_dataclass_field
def Choice(  # noqa: N802
    default: T, choices: Sequence[T], *, description: str | None = None
) -> ChoiceField[T]:
    """Declare a parameter for choosing from a fixed set of values.

    The value type is inferred from ``choices``.

    Args:
        default: Default value. Must be one of ``choices``.
        choices: Allowed values. All values must be the same type.
        description: Human-readable description.
    """
    return ChoiceField(default, choices, description=description)