validation.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from typing import Optional
  2. import pandas as pd
  3. import pandera as pa
  4. from pandera.typing import Series, DataFrame
  5. class ContactSchema(pa.DataFrameModel):
  6. key: Series[str] = pa.Field(unique=True)
  7. Prénom: Series[str]
  8. Nom: Series[str]
  9. Mail: Series[str]
  10. Tél: Series[str]
  11. SMS: Series[bool]
  12. class CreneauDataSchema(pa.DataFrameModel):
  13. title: Series[str]
  14. lieu: Optional[Series[str]]
  15. description: Series[str]
  16. responsable: Series[str]
  17. tags: Optional[Series[str]]
  18. class CreneauSchema(pa.DataFrameModel):
  19. id: Series[str]
  20. template_id: Series[str]
  21. nom: Series[str]
  22. benevole_nom: Series[str]
  23. ligne: Series[int]
  24. start: Series[pd.DatetimeTZDtype] = pa.Field(
  25. dtype_kwargs={"unit": "ns", "tz": "UTC"}, coerce=True
  26. )
  27. end: Series[pd.DatetimeTZDtype] = pa.Field(
  28. dtype_kwargs={"unit": "ns", "tz": "UTC"}, coerce=True
  29. )
  30. class GsheetData:
  31. contact: DataFrame[ContactSchema]
  32. creneauData: DataFrame[CreneauDataSchema]
  33. planning: DataFrame[CreneauSchema]
  34. def __init__(
  35. self,
  36. contact: DataFrame[ContactSchema],
  37. creneauData: DataFrame[CreneauDataSchema],
  38. planning: DataFrame[CreneauSchema],
  39. ):
  40. self.contact = contact
  41. self.creneauData = creneauData
  42. self.planning = planning