On Mon, Jun 26, 2023 at 7:10 PM Miro Hrončok <mhroncok(a)redhat.com> 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?
*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
The wording of "encouraged to ensure" doesn't sound like a hard
requirement to me based on a lot of specs I've dealt with, but it
depends a bit on how the specific spec defines "encouraged".
> 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'
>
> 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.
>
> --
> Miro Hrončok
> --
> Phone: +420777974800
> IRC: mhroncok
> _______________________________________________
> devel mailing list -- devel(a)lists.fedoraproject.org
> To unsubscribe send an email to devel-leave(a)lists.fedoraproject.org
> 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@lists.fedoraproject.org
> Do not reply to spam, report it:
https://pagure.io/fedora-infrastructure/new_issue