types
app.common.types
Algunos tipos comunes.
Se crean tipos especiales de variables que se extienden de pydantic, sirven como ejemplo para construir tipos de datos personalizados y ofrecer un validador alterno.
Tipos de datos nuevos en este módulo:
- DefaultItemId
- Phone
- Latitude
- Longitude
- Coordinates
- DefaultFieldList
- DefaultSearchDto
- DefaultDeleteDto
- DefaultMetaDto
Para más información, te recomendamos leer la documentación del Proyecto.
- https://pydantic-docs.helpmanual.io/usage/model_config/
- https://blog.frank-mich.com/creating-a-pydantic-model-for-gis-polygons/
- https://pydantic-docs.helpmanual.io/usage/model_config/#alias-generator
- https://python.astrotech.io/fastapi/pydantic/types-pydantic.html
- https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#advantages-of-annotated
- https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Annotated
con Pydantic 2.8+
- https://docs.pydantic.dev/2.8/migration/
- https://docs.pydantic.dev/2.8/api/config/
- https://docs.pydantic.dev/2.8/concepts/strict_mode/
- https://docs.pydantic.dev/2.8/concepts/validators/#model-validators
- https://docs.pydantic.dev/2.8/api/types/
- https://docs.pydantic.dev/2.8/concepts/types/#custom-types
- https://docs.pydantic.dev/2.8/concepts/types/
- https://docs.pydantic.dev/2.8/concepts/validators/
DefaultItemId = Annotated[StrictStr, Field(min_length=32, max_length=32)]
module-attribute
Define un nuevo tipo de dato: Email.
tenga en cuenta que este tipo no admite alias, si se deasea un tipo mas permisivo, consulte el tipo EmailStr
.
1 2 3 4 |
|
Email = Annotated[str, StringConstraints(min_length=7, max_length=120, strip_whitespace=True, to_lower=True), AfterValidator(after_validate_email)]
module-attribute
Define un nuevo tipo de dato: Phone.
Examples: cell_phone: Phone
Phone = Annotated[str, StringConstraints(min_length=10, max_length=15, strip_whitespace=True, to_lower=True), AfterValidator(after_validate_phone)]
module-attribute
Define un nuevo tipo de dato: Latitude.
Examples: long: Latitude
Latitude = Annotated[float, Field(ge=-90, le=90)]
module-attribute
Define un nuevo tipo de dato: Longitude.
Examples: long: Longitude
ExtrictBaseModel
Bases: BaseModel
Esta clase se extiende de BaseModel(pydantic)
y permite definir validaciones extras y restricciones que serán heredadas a las clases, en las cuales se utilice.
Notes
cada clase que se extienda de ExtrictBaseModel
:
- no permite campos extras.
- permite asignar valores por los alias.
- valida la asignación de valores según el tipo de dato.
- es mutable y admite la asignación de elementos.
- el valor de la propiedad de los enums, es asignado a las propiedades, esto puede ser útil si se quiere serializar, utilizando
model.dict()
más tarde. - se eliminan los espacios en blanco iniciales y finales de los strings y bytes.
Examples:
Coordinates
DefaultFieldList
Bases: RootModel[List[str]]
Define una lista de elementos, pero no valida el contenido interno de los mismos.
Warning
- Esta clase está en revisión, puede cambiar en el futuro.
Notes
-
para la lista de elmentos:
- cada elemento debe ser unico
- minimo 1 elementos
- maximo 25 elementos
cada elemento de la lista debe tener:
1 2 3 |
|
DefaultSearchDto
Bases: ExtrictBaseModel
Una clase para validar ciertos datos de entrada (request body)
Warning
- Esta clase está en revisión, puede cambiar en el futuro.
- No realiza ninguna validación de los valores ó tipos de datos, dentro del campo filters_, así como de la cantidad de elementos enviados.
Notes
- fields: espera el string
all
ó una lista de elementos (veaseDefaultFieldList
) - limit: un valor entero entre
1
y500
- filters: un objeto (diccionario) con restricciones en los nombres de las llaves:
- minimo 2 caracteres
- maximo 25 caracteres
- solo cadenas de caracteres
DefaultDeleteDto
Bases: ExtrictBaseModel
Valida el id interno de cada objeto de la base datos.
Notes
Las clases en python establecen los guiones bajos, como atributos privados, así que se usa un alias en este caso, adicionalmente al utilizar ìd
como nombre, el linter advierte que se utiliza el mismo nombre que un builtin.
DefaultMetaDto
after_validate_email(value)
Una función utilizada en la validación del tipo Email
.
Notes
- Función de uso interno, para validación de tipos.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value | str | el email a validar, enviado por | required |
Raises:
Type | Description |
---|---|
ValueError | error al validar el email |
Returns:
Type | Description |
---|---|
Any | el valor envíado inicialmente |
after_validate_phone(value)
Una función utilizada en la validación del tipo Phone
.
Notes
- Función de uso interno, para validación de tipos.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value | str | el número de teléfono a validar, enviado por | required |
Raises:
Type | Description |
---|---|
ValueError | error al validar el número de teléfono |
Returns:
Type | Description |
---|---|
Any | el valor por envíado inicialmente |