Saltar a contenido

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
  • Email
  • Phone
  • Latitude
  • Longitude
  • Coordinates
  • DefaultFieldList
  • DefaultSearchDto
  • DefaultDeleteDto
  • DefaultMetaDto

Para más información, te recomendamos leer la documentación del Proyecto.

con Pydantic 2.6+

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
Examples:
    ```
    cell_phone: Email
    ```

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:

1
2
3
4
5
6
7
8
9
from typing import Optional
from pydantic import Field, StrictStr
from app.common.enums import DefaultStatus, EnumNameSerializer
from app.common.types import ExtrictBaseModel
...

class LocaleModel(ExtrictBaseModel):
    name: StrictStr = Field(min_length=3, max_length=32)
    status: Annotated[DefaultStatus, EnumNameSerializer] = Field(default=None)

Coordinates

Bases: ExtrictBaseModel

Define un nuevo tipo de dato: Coordinates.

Examples:

my_coord: 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
- minimo 3 caracteres
- maximo 25 caracteres
- solo cadenas de caracteres

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 (vease DefaultFieldList)
  • limit: un valor entero entre 1 y 500
  • 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

Bases: ExtrictBaseModel

Valida los parametros de la metadata.

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

el email a validar, enviado por AfterValidator

required

Returns:

Type Description
Any

el valor por 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
required

Returns:

Type Description
Any

el valor por envíado inicialmente