Adds Docs for Array, Bool and Numeric

This commit is contained in:
2025-06-20 23:12:33 -03:00
parent 249195ff26
commit b92cf37145
4 changed files with 242 additions and 1 deletions

View File

@@ -0,0 +1,86 @@
Array Type
=================
The Array type has the following required properties:
- items: Schema for the items in the array, which can be a type or a schema object.
And the additional supported properties:
- maxItems: Maximum number of items in the array.
- minItems: Minimum number of items in the array.
- uniqueItems: If true, all items in the array must be unique.
And the additional generic properties:
- default: Default value for the array.
- description: Description of the array field.
Examples
-----------------
1. Basic Array with maxItems and minItems:
.. code-block:: python
from jambo import SchemaConverter
schema = {
"title": "ArrayExample",
"type": "object",
"properties": {
"tags": {
"type": "array",
"items": {"type": "string"},
"minItems": 1,
"maxItems": 5,
},
},
"required": ["tags"],
}
Model = SchemaConverter.build(schema)
obj = Model(tags=["python", "jambo", "pydantic"])
print(obj) # Output: ArrayExample(tags=['python', 'jambo', 'pydantic'])
try:
obj = Model(tags=[]) # 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 ArrayExample
2. Array with uniqueItems:
.. code-block:: python
from jambo import SchemaConverter
schema = {
"title": "UniqueArrayExample",
"type": "object",
"properties": {
"unique_tags": {
"type": "array",
"items": {"type": "string"},
"uniqueItems": True,
},
},
"required": ["unique_tags"],
}
Model = SchemaConverter.build(schema)
obj = Model(unique_tags=["python", "jambo", "pydantic"])
print(obj) # Output: UniqueArrayExample(unique_tags={'python', 'jambo', 'pydantic'})
try:
obj = Model(unique_tags=["python", "jambo", "python"]) # 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 UniqueArrayExample

View File

@@ -0,0 +1,34 @@
Bool Types
=================
The Bool type has no specific properties, it has only the generic properties:
- default: Default value for the string.
- description: Description of the string field.
Examples
-----------------
.. code-block:: python
from jambo import SchemaConverter
schema = {
"title": "BoolExample",
"type": "object",
"properties": {
"is_active": {
"type": "boolean",
},
},
"required": ["is_active"],
}
Model = SchemaConverter.build(schema)
obj = Model(is_active=True)
print(obj) # Output: BoolExample(is_active=True)

View File

@@ -0,0 +1,118 @@
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:
.. code-block:: python
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
2. Number with exclusiveMinimum and exclusiveMaximum:
.. code-block:: python
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
3. Number with multipleOf:
.. code-block:: python
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

View File

@@ -38,3 +38,6 @@ For more complex schemas and types see our documentation on
:caption: Contents: :caption: Contents:
usage.string usage.string
usage.numeric
usage.bool
usage.array