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,
    unit: Unit | str | 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.

  • unit (Unit | str | None, default: None ) –

    Numeric unit (Only current option is "in" for inches)

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

    Human-readable description.

Source code in bdbox/model/field_factories.py
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
@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,
    unit: Unit | str | 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.
        unit: Numeric unit (Only current option is "in" for inches)
        description: Human-readable description.
    """
    return FloatField(
        default,
        min=min,
        max=max,
        step=step,
        unit=Unit.get(unit),
        description=description,
    )

Inches

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

Declare a floating-point parameter in inches.

Input parameter values are automatically converted to millimeters at model run time.

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/model/field_factories.py
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
89
90
91
92
@Field.as_dataclass_field
def Inches(  # 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 in inches.

    Input parameter values are automatically converted to millimeters at model
    run time.

    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,
        unit=Unit.Inches,
        description=description,
    )

Int

Int(
    default: int,
    *,
    min: int | None = None,
    max: int | None = None,
    step: int | None = None,
    unit: Unit | str | 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.

  • unit (Unit | str | None, default: None ) –

    Numeric unit ("in" or "mm")

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

    Human-readable description.

Source code in bdbox/model/field_factories.py
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
@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,
    unit: Unit | str | 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.
        unit: Numeric unit ("in" or "mm")
        description: Human-readable description.
    """
    return IntField(
        default,
        min=min,
        max=max,
        step=step,
        unit=Unit.get(unit),
        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/model/field_factories.py
125
126
127
128
129
130
131
132
133
134
135
136
137
@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/model/field_factories.py
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
@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/model/field_factories.py
164
165
166
167
168
169
170
171
172
173
174
175
176
177
@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)