Hi Miro,
Very much appreciate the feedback. Please see my responses below.
Thank you,
Patsy
On Mon, Jun 26, 2023 at 2:09 PM Miro Hrončok <mhroncok@xxxxxxxxxx> wrote:
Hello Patsy,
On 26. 06. 23 17:54, Aoife Moloney wrote:
> https://fedoraproject.org/wiki/Changes/AllowRemovalOfTzdata
>
> == Summary ==
> Allow the removal of tzdata especially on containers in order to minimize size.
> ...
>
> In order for this to work, we need packages that use tzdata at run
> time to switch from Require'ing tzdata to Recommend'ing tzdata. These
> packages should also gracefully handle instances where tzdata has been
> removed. For example, this would require recognizing that tzdata is
> not present and providing an appropriate error, such as recommending
> that the user install tzdata.
> ...
> * python3.XX (3.9, 3.10, 3.11, 3.12)
Who is expected to work on this? Python maintainers or this Change proposal owners?
This does not
change the default. It allows users to remove tzdata if they want to
minimize their container. (Note: currently we are seeing cases where
just the data is removed leaving tzdata in an inconsistent state.)
We
will work with maintainers as needed. The respective package owners
are more knowledgeable in the changes needed to check for the
availability of tzdata and respond appropriately, such as informing the
user that tzdata needs to be installed.
*PEP 615 – Support for the IANA Time Zone Database in the Standard Library* says:
"""
Python distributors are encouraged to ensure that time zone data is installed
alongside Python whenever possible (e.g. by declaring tzdata as a dependency
for the python package).
"""
from https://peps.python.org/pep-0615/#system-time-zone-information
By changing the Requires to Recommends, we would diverge from upstream
recommendation.
---
The current problem with Python without tzdata is:
=======================================================================
>>> from zoneinfo import ZoneInfo
>>> ZoneInfo("Europe/Prague")
Traceback (most recent call last):
File "/usr/lib64/python3.11/zoneinfo/_common.py", line 12, in load_tzdata
return resources.files(package_name).joinpath(resource_name).open("rb")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.11/importlib/resources/_common.py", line 22, in files
return from_package(get_package(package))
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.11/importlib/resources/_common.py", line 53, in
get_package
resolved = resolve(package)
^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.11/importlib/resources/_common.py", line 44, in resolve
return cand if isinstance(cand, types.ModuleType) else
importlib.import_module(cand)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1126, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1126, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1140, 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 "<stdin>", line 1, in <module>
File "/usr/lib64/python3.11/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 Europe/Prague'
=======================================================================
Not that ZoneInfo("UTC") also fails:
=======================================================================
>>> ZoneInfo("UTC")
Traceback (most recent call last):
...
zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key UTC'
=======================================================================
So we would need to patch Python to detect missing tzdata and report something
like:
ZoneInfoNotInstalledError: 'No time zone information installed on the system,
you can only use UTC'
Yes, or possibly recommend installing tzdata if additional timezone info is needed.
We would also need to ensure UTC work even without tzdata installed.
I would be reluctant to carry this as a downstream-only patch. And the upstream
window for changes like this has already closed for Python 3.12.
Understood.
--
Miro Hrončok
--
Phone: +420777974800
IRC: mhroncok
_______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue