Numeric Types

The Numeric Types (integer, number) have the following supported properties:

  • minimum: Minimum value for the number.

  • maximum: Maximum value for the number.

  • exclusiveMinimum: If true, the value must be greater than the minimum.

  • exclusiveMaximum: If true, the value must be less than the maximum.

  • multipleOf: The value must be a multiple of this number.

And the additional generic properties:

  • default: Default value for the string.

  • description: Description of the string field.

Examples

  1. Basic Integer with minimum and maximum:

from jambo import SchemaConverter

schema = {
    "title": "IntegerExample",
    "type": "object",
    "properties": {
        "age": {
            "type": "integer",
            "minimum": 0,
            "maximum": 120,
        },
    },
    "required": ["age"],
}

Model = SchemaConverter.build(schema)

obj = Model(age=30)
print(obj) # Output: IntegerExample(age=30)

try:
    obj = Model(age=-5)  # This will raise a validation error
except ValueError as e:
    print("Validation fails as expected:", e) # Output: Validation fails as expected: 1 validation error for IntegerExample
  1. Number with exclusiveMinimum and exclusiveMaximum:

from jambo import SchemaConverter

schema = {
    "title": "NumberExample",
    "type": "object",
    "properties": {
        "price": {
            "type": "number",
            "exclusiveMinimum": 0,
            "exclusiveMaximum": 1000,
        },
    },
    "required": ["price"],
}

Model = SchemaConverter.build(schema)

obj = Model(price=1)
print(obj) # Output: NumberExample(price=1)

try:
    obj = Model(price=0)  # This will raise a validation error
except ValueError as e:
    print("Validation fails as expected:", e) # Output: Validation fails as expected: 1 validation error for NumberExample


obj = Model(price=999)
print(obj) # Output: NumberExample(price=999)

try:
    obj = Model(price=1000)  # This will raise a validation error
except ValueError as e:
    print("Validation fails as expected:", e) # Output: Validation fails as expected: 1 validation error for NumberExample
  1. Number with multipleOf:

from jambo import SchemaConverter

schema = {
    "title": "MultipleOfExample",
    "type": "object",
    "properties": {
        "quantity": {
            "type": "number",
            "multipleOf": 0.5,
        },
    },
    "required": ["quantity"],
}

Model = SchemaConverter.build(schema)

obj = Model(quantity=2.5)
print(obj) # Output: MultipleOfExample(quantity=2.5)

try:
    obj = Model(quantity=2.3)  # This will raise a validation error
except ValueError as e:
    print("Validation fails as expected:", e) # Output: Validation fails as expected: 1 validation error for MultipleOfExample