New submission from Karthikeyan Singaravelan <tir.kar...@gmail.com>:
zoneinfo module currently emits deprecation warnings due to API changes in importlib.resources ./python -Wonce -m test test_zoneinfo 0:00:00 load avg: 0.73 Run tests sequentially 0:00:00 load avg: 0.73 [1/1] test_zoneinfo /home/karthikeyan/stuff/python/cpython/Lib/zoneinfo/_tzpath.py:121: DeprecationWarning: open_text is deprecated. Use files() instead. Refer to https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy for migration advice. with resources.open_text("tzdata", "zones") as f: /home/karthikeyan/stuff/python/cpython/Lib/zoneinfo/_common.py:12: DeprecationWarning: open_binary is deprecated. Use files() instead. Refer to https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy for migration advice. return importlib.resources.open_binary(package_name, resource_name) /home/karthikeyan/stuff/python/cpython/Lib/zoneinfo/_tzpath.py:121: DeprecationWarning: open_text is deprecated. Use files() instead. Refer to https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy for migration advice. with resources.open_text("tzdata", "zones") as f: /home/karthikeyan/stuff/python/cpython/Lib/zoneinfo/_common.py:12: DeprecationWarning: open_binary is deprecated. Use files() instead. Refer to https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy for migration advice. return importlib.resources.open_binary(package_name, resource_name) == Tests result: SUCCESS == 1 test OK. Total duration: 376 ms Tests result: SUCCESS A fix would be to adapt the _legacy module changes inline like below patch though normalize_path is not public API and need to be inlined too. diff --git a/Lib/zoneinfo/_common.py b/Lib/zoneinfo/_common.py index 4c24f01bd7..bfe3fe4c3c 100644 --- a/Lib/zoneinfo/_common.py +++ b/Lib/zoneinfo/_common.py @@ -2,14 +2,15 @@ def load_tzdata(key): - import importlib.resources + from importlib.resources import files + from importlib._common import normalize_path components = key.split("/") package_name = ".".join(["tzdata.zoneinfo"] + components[:-1]) resource_name = components[-1] try: - return importlib.resources.open_binary(package_name, resource_name) + return (files(package_name) / normalize_path(resource_name)).open('rb') except (ImportError, FileNotFoundError, UnicodeEncodeError): # There are three types of exception that can be raised that all amount # to "we cannot find this key": diff --git a/Lib/zoneinfo/_tzpath.py b/Lib/zoneinfo/_tzpath.py index 672560b951..b1efe5d99e 100644 --- a/Lib/zoneinfo/_tzpath.py +++ b/Lib/zoneinfo/_tzpath.py @@ -111,14 +111,15 @@ def available_timezones(): determine if a given file on the time zone search path is to open it and check for the "magic string" at the beginning. """ - from importlib import resources + from importlib.resources import files + from importlib._common import normalize_path valid_zones = set() # Start with loading from the tzdata package if it exists: this has a # pre-assembled list of zones that only requires opening one file. try: - with resources.open_text("tzdata", "zones") as f: + with (files("tzdata") / normalize_path("zones")).open('r') as f: for zone in f: zone = zone.strip() if zone: ---------- components: Library (Lib) messages: 408851 nosy: jaraco, p-ganssle, xtreak priority: normal severity: normal status: open title: Deprecation warning in zoneinfo module type: behavior versions: Python 3.11 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue46124> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com