Closed alexkno79 closed 7 months ago
Yes you are right, this is a difference between pydantic 1 vs pydantic 2. Having something as Optional does not default to None with pydantic 2. https://docs.pydantic.dev/2.0/migration/#required-optional-and-nullable-fields
I will set all optional fields default to None on the next version. Thank you.
On latest version: get_lights work fine. But for outlets I seem to run into a validation error for a third party outlet:
Traceback (most recent call last): File "//./ikea_103.py", line 26, in
lights = dirigera_hub.get_outlets()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/dirigera/hub/hub.py", line 155, in get_outlets
return [dict_to_outlet(outlet, self) for outlet in outlets]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/dirigera/devices/outlet.py", line 59, in dict_to_outlet
return Outlet(dirigeraClient=dirigera_client, **data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/pydantic/main.py", line 171, in init
self.__pydantic_validator__.validate_python(data, self_instance=self)
pydantic_core._pydantic_core.ValidationError: 1 validation error for Outlet
attributes.startupOnOff
Field required [type=missing, input_value={'customName': 'PiHWR', '...taScheduleEnd': '00:00'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.6/v/missing
I see startup_on_off: Optional[StartupEnum] in outlet.py but maybe it should be startup_on_off: Optional[StartupEnum] = None ?