From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Thu, 19 Jun 2025 15:10:54 +0000 (+0200) Subject: [3.13] gh-135273: Unify `ZoneInfo.from_file` signatures (GH-135274) (#135715) X-Git-Tag: v3.13.6~193 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a8c3af080a883bc79750e94318f960b0af3f7222;p=thirdparty%2FPython%2Fcpython.git [3.13] gh-135273: Unify `ZoneInfo.from_file` signatures (GH-135274) (#135715) gh-135273: Unify `ZoneInfo.from_file` signatures (GH-135274) Align `ZoneInfo.from_file` pure-Python signature with Argument Clinic signature. (cherry picked from commit 7cc89496922b7edb033e2ed47550c7c9e2ae8525) Co-authored-by: Andrii Hrimov --- diff --git a/Doc/library/zoneinfo.rst b/Doc/library/zoneinfo.rst index a57f3b8b3e85..53d8e2598ec1 100644 --- a/Doc/library/zoneinfo.rst +++ b/Doc/library/zoneinfo.rst @@ -195,7 +195,7 @@ The ``ZoneInfo`` class The ``ZoneInfo`` class has two alternate constructors: -.. classmethod:: ZoneInfo.from_file(fobj, /, key=None) +.. classmethod:: ZoneInfo.from_file(file_obj, /, key=None) Constructs a ``ZoneInfo`` object from a file-like object returning bytes (e.g. a file opened in binary mode or an :class:`io.BytesIO` object). @@ -325,7 +325,7 @@ The behavior of a ``ZoneInfo`` file depends on how it was constructed: >>> a is b False -3. ``ZoneInfo.from_file(fobj, /, key=None)``: When constructed from a file, the +3. ``ZoneInfo.from_file(file_obj, /, key=None)``: When constructed from a file, the ``ZoneInfo`` object raises an exception on pickling. If an end user wants to pickle a ``ZoneInfo`` constructed from a file, it is recommended that they use a wrapper type or a custom serialization function: either serializing by diff --git a/Lib/zoneinfo/_zoneinfo.py b/Lib/zoneinfo/_zoneinfo.py index b77dc0ed391b..3ffdb4c83719 100644 --- a/Lib/zoneinfo/_zoneinfo.py +++ b/Lib/zoneinfo/_zoneinfo.py @@ -75,12 +75,12 @@ class ZoneInfo(tzinfo): return obj @classmethod - def from_file(cls, fobj, /, key=None): + def from_file(cls, file_obj, /, key=None): obj = super().__new__(cls) obj._key = key obj._file_path = None - obj._load_file(fobj) - obj._file_repr = repr(fobj) + obj._load_file(file_obj) + obj._file_repr = repr(file_obj) # Disable pickling for objects created from files obj.__reduce__ = obj._file_reduce