From 00b2b578bd9e516d601063a086b03177f546bcdd Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 21 Jan 2022 16:18:31 -0500 Subject: [PATCH] bpo-46124: Update zoneinfo to rely on importlib.resources traversable API. (GH-30190) Automerge-Triggered-By: GH:jaraco --- Lib/zoneinfo/_common.py | 4 ++-- Lib/zoneinfo/_tzpath.py | 2 +- .../next/Library/2021-12-18-18-41-30.bpo-46124.ESPrb7.rst | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2021-12-18-18-41-30.bpo-46124.ESPrb7.rst diff --git a/Lib/zoneinfo/_common.py b/Lib/zoneinfo/_common.py index 4c24f01bd7b..98cdfe37ca6 100644 --- a/Lib/zoneinfo/_common.py +++ b/Lib/zoneinfo/_common.py @@ -2,14 +2,14 @@ import struct def load_tzdata(key): - import importlib.resources + from importlib import resources 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 resources.files(package_name).joinpath(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 672560b9514..4985dce2dc3 100644 --- a/Lib/zoneinfo/_tzpath.py +++ b/Lib/zoneinfo/_tzpath.py @@ -118,7 +118,7 @@ def available_timezones(): # 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 resources.files("tzdata").joinpath("zones").open("r") as f: for zone in f: zone = zone.strip() if zone: diff --git a/Misc/NEWS.d/next/Library/2021-12-18-18-41-30.bpo-46124.ESPrb7.rst b/Misc/NEWS.d/next/Library/2021-12-18-18-41-30.bpo-46124.ESPrb7.rst new file mode 100644 index 00000000000..26f9f81303a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-12-18-18-41-30.bpo-46124.ESPrb7.rst @@ -0,0 +1 @@ +Update :mod:`zoneinfo` to rely on importlib.resources traversable API.