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 <mhron...@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? > 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@lists.fedoraproject.org To unsubscribe send an email to devel-le...@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