core: Local Calendar: FileNotFoundError for Time Zone
The problem
When restarting Home Assistant or reloading a local calendar, an error is logged for a missing time zone:
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/UTC-06:00'
During handling of the above exception, another exception occurred:
...
zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key UTC-06:00'
What version of Home Assistant Core has the issue?
2023.2.3
What was the last working version of Home Assistant Core?
No response
What type of installation are you running?
Home Assistant OS
Integration causing the issue
Local Calendar
Link to integration documentation on our website
https://www.home-assistant.io/integrations/local_calendar/
Diagnostics information
No response
Example YAML snippet
No response
Anything in the logs that might be useful for us?
Error while setting up local_calendar platform for calendar
Traceback (most recent call last):
File "/usr/local/lib/python3.10/zoneinfo/_common.py", line 12, in load_tzdata
return importlib.resources.open_binary(package_name, resource_name)
File "/usr/local/lib/python3.10/importlib/resources.py", line 46, in open_binary
return reader.open_resource(resource)
File "/usr/local/lib/python3.10/importlib/abc.py", line 433, in open_resource
return self.files().joinpath(resource).open('rb')
File "/usr/local/lib/python3.10/pathlib.py", line 1119, in open
return self._accessor.open(self, mode, buffering, encoding, errors,
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/UTC-06:00'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 293, in _async_setup_platform
await asyncio.shield(task)
File "/usr/src/homeassistant/homeassistant/components/local_calendar/calendar.py", line 42, in async_setup_entry
calendar = IcsCalendarStream.calendar_from_ics(ics)
File "/usr/local/lib/python3.10/site-packages/ical/calendar_stream.py", line 74, in calendar_from_ics
stream = cls.from_ics(content)
File "/usr/local/lib/python3.10/site-packages/ical/calendar_stream.py", line 61, in from_ics
return cls.parse_obj(result)
File "pydantic/main.py", line 527, in pydantic.main.BaseModel.parse_obj
File "pydantic/main.py", line 340, in pydantic.main.BaseModel.__init__
File "pydantic/main.py", line 1077, in pydantic.main.validate_model
File "pydantic/fields.py", line 895, in pydantic.fields.ModelField.validate
File "pydantic/fields.py", line 928, in pydantic.fields.ModelField._validate_sequence_like
File "pydantic/fields.py", line 1094, in pydantic.fields.ModelField._validate_singleton
File "pydantic/fields.py", line 884, in pydantic.fields.ModelField.validate
File "pydantic/fields.py", line 1101, in pydantic.fields.ModelField._validate_singleton
File "pydantic/fields.py", line 1148, in pydantic.fields.ModelField._apply_validators
File "pydantic/class_validators.py", line 318, in pydantic.class_validators._generic_validator_basic.lambda13
File "pydantic/main.py", line 712, in pydantic.main.BaseModel.validate
File "pydantic/main.py", line 340, in pydantic.main.BaseModel.__init__
File "pydantic/main.py", line 1077, in pydantic.main.validate_model
File "pydantic/fields.py", line 895, in pydantic.fields.ModelField.validate
File "pydantic/fields.py", line 928, in pydantic.fields.ModelField._validate_sequence_like
File "pydantic/fields.py", line 1094, in pydantic.fields.ModelField._validate_singleton
File "pydantic/fields.py", line 884, in pydantic.fields.ModelField.validate
File "pydantic/fields.py", line 1101, in pydantic.fields.ModelField._validate_singleton
File "pydantic/fields.py", line 1148, in pydantic.fields.ModelField._apply_validators
File "pydantic/class_validators.py", line 318, in pydantic.class_validators._generic_validator_basic.lambda13
File "pydantic/main.py", line 712, in pydantic.main.BaseModel.validate
File "/usr/local/lib/python3.10/site-packages/ical/event.py", line 249, in __init__
super().__init__(**data)
File "pydantic/main.py", line 340, in pydantic.main.BaseModel.__init__
File "pydantic/main.py", line 1051, in pydantic.main.validate_model
File "/usr/local/lib/python3.10/site-packages/ical/component.py", line 117, in parse_property_values
validated = [cls._parse_property(field_types, prop) for prop in value]
File "/usr/local/lib/python3.10/site-packages/ical/component.py", line 117, in <listcomp>
validated = [cls._parse_property(field_types, prop) for prop in value]
File "/usr/local/lib/python3.10/site-packages/ical/component.py", line 136, in _parse_property
return cls._parse_single_property(sub_type, prop)
File "/usr/local/lib/python3.10/site-packages/ical/component.py", line 162, in _parse_single_property
return decoder(prop)
File "/usr/local/lib/python3.10/site-packages/ical/types/date_time.py", line 40, in __parse_property_value__
timezone = zoneinfo.ZoneInfo(tzid)
File "/usr/local/lib/python3.10/zoneinfo/_common.py", line 24, in load_tzdata
raise ZoneInfoNotFoundError(f"No time zone found with key {key}")
zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key UTC-06:00'
Additional information
No response
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 22 (10 by maintainers)
btw as a temporary workaround, if you are stuck and need a quick fix, you can edit the ics file (though maybe save a backup!) and remove the
;TDZID...
part. If you have a string likeDTSTART:20230206T220152
it will be interpreted as local time.Thank you for the detail. I was able to reproduce this problem locally in a test and am considering options for fixes.