picselliahq / picsellia-training-engine

MIT License
2 stars 0 forks source link

feat: added optional parameter extraction #156

Closed picsalex closed 3 weeks ago

picsalex commented 3 weeks ago

Description

Add the possibility to extract None values from parameters, using the expected_type to `Union[type, None]'.

-> This is inspired from pydantic v2: https://pydantic.dev/articles/pydantic-v2#required-vs-nullable-cleanup

One can use this feature as follow:

values = {
   "time" : "null"
}
parameter = self.extract_parameter(keys=["freeze"], expected_type=Union[int, None], default=None) # None
parameter = self.extract_parameter(keys=["time"], expected_type=Union[str, None]) # None
parameter = self.extract_parameter(keys=["time"], expected_type=str)  # "null"
parameter = self.extract_parameter(keys=["freeze"], expected_type=Union[int, None]) # raises KeyError ("freeze" does not exists)
parameter = self.extract_parameter(keys=["freeze"], expected_type=int, default=None) # raises ValueError (a default is provided, but the expected type is not optional)