from typing import Optional import pandas as pd import pandera as pa from pandera.typing import Series, DataFrame class ContactSchema(pa.DataFrameModel): key: Series[str] = pa.Field(unique=True) Prénom: Series[str] Nom: Series[str] Mail: Series[str] Tél: Series[str] SMS: Series[bool] class CreneauDataSchema(pa.DataFrameModel): title: Series[str] lieu: Optional[Series[str]] description: Series[str] responsable: Series[str] tags: Optional[Series[str]] class CreneauSchema(pa.DataFrameModel): id: Series[str] template_id: Series[str] nom: Series[str] benevole_nom: Series[str] ligne: Series[int] start: Series[pd.DatetimeTZDtype] = pa.Field( dtype_kwargs={"unit": "ns", "tz": "UTC"}, coerce=True ) end: Series[pd.DatetimeTZDtype] = pa.Field( dtype_kwargs={"unit": "ns", "tz": "UTC"}, coerce=True ) class GsheetData: contact: DataFrame[ContactSchema] creneauData: DataFrame[CreneauDataSchema] planning: DataFrame[CreneauSchema] def __init__( self, contact: DataFrame[ContactSchema], creneauData: DataFrame[CreneauDataSchema], planning: DataFrame[CreneauSchema], ): self.contact = contact self.creneauData = creneauData self.planning = planning