Description
Using the dataclass-wizard
module using Python v3.11.0 I got the following error:
Traceback (most recent call last):
File "C:\Users\victor.luque.NEUROELECTRICS\.pyenv\pyenv-win\versions\3.11.0\Lib\zoneinfo\_common.py", line 12, in load_tzdata
return resources.files(package_name).joinpath(resource_name).open("rb")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\victor.luque.NEUROELECTRICS\.pyenv\pyenv-win\versions\3.11.0\Lib\importlib\resources\_common.py", line 22, in files
return from_package(get_package(package))
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\victor.luque.NEUROELECTRICS\.pyenv\pyenv-win\versions\3.11.0\Lib\importlib\resources\_common.py", line 53, in get_package
resolved = resolve(package)
^^^^^^^^^^^^^^^^
File "C:\Users\victor.luque.NEUROELECTRICS\.pyenv\pyenv-win\versions\3.11.0\Lib\importlib\resources\_common.py", line 44, in resolve
return cand if isinstance(cand, types.ModuleType) else importlib.import_module(cand)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\victor.luque.NEUROELECTRICS\.pyenv\pyenv-win\versions\3.11.0\Lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1128, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'tzdata'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Repositories\ItsShunya\src\today.py", line 8, in <module>
from config import environment, config
File "C:\Repositories\ItsShunya\src\config\config.py", line 3, in <module>
from dataclass_wizard import YAMLWizard
File "C:\Repositories\ItsShunya\.venv\Lib\site-packages\dataclass_wizard\__init__.py", line 121, in <module>
from .bases_meta import LoadMeta, DumpMeta, EnvMeta
File "C:\Repositories\ItsShunya\.venv\Lib\site-packages\dataclass_wizard\bases_meta.py", line 10, in <module>
from .abstractions import AbstractJSONWizard
File "C:\Repositories\ItsShunya\.venv\Lib\site-packages\dataclass_wizard\abstractions.py", line 10, in <module>
from .bases import META
File "C:\Repositories\ItsShunya\.venv\Lib\site-packages\dataclass_wizard\bases.py", line 9, in <module>
from .v1.enums import KeyAction, KeyCase
File "C:\Repositories\ItsShunya\.venv\Lib\site-packages\dataclass_wizard\v1\__init__.py", line 20, in <module>
from .models import (Alias,
File "C:\Repositories\ItsShunya\.venv\Lib\site-packages\dataclass_wizard\v1\models.py", line 23, in <module>
UTC = ZoneInfo('UTC')
^^^^^^^^^^^^^^^
File "C:\Users\victor.luque.NEUROELECTRICS\.pyenv\pyenv-win\versions\3.11.0\Lib\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'
I was able to narrow down the issue to an environment with only dataclass_wizard
installed and the issue is reproduced consistently on my machine. To solve it I just had to do pip install tzdata
.
The reason for this issue seems to come from the ZoneInfo
module, which since Python 3.9 is provided with the default Python installation. (source: https://docs.python.org/3/library/zoneinfo.html#data-sources)
The zoneinfo module does not directly provide time zone data, and instead pulls time zone information from the system time zone database or the first-party PyPI package tzdata, if available. Some systems, including notably Windows systems, do not have an IANA database available, and so for projects targeting cross-platform compatibility that require time zone data, it is recommended to declare a dependency on tzdata. If neither system data nor tzdata are available, all calls to ZoneInfo will raise ZoneInfoNotFoundError.
This seems to be caused by the latest update (v0.35.0) where support and awareness for UTC timezone was added: