https://github.com/python/cpython/commit/884df116d79b05d9342e05e50484d61c684ecb8b
commit: 884df116d79b05d9342e05e50484d61c684ecb8b
branch: main
author: Bogdan Romanyuk <65823030+wrongn...@users.noreply.github.com>
committer: Eclips4 <kirill.ba...@mail.ru>
date: 2025-04-15T18:41:52Z
summary:

gh-114713: Handle case of an empty string passed to `zoneinfo.ZoneInfo` 
(#114731)

Co-authored-by: Stan Ulbrych <89152624+stanfromirel...@users.noreply.github.com>
Co-authored-by: Kirill Podoprigora <kirill.ba...@mail.ru>

files:
A Misc/NEWS.d/next/Library/2025-03-09-01-09-12.gh-issue-114713.lkq9vZ.rst
M Lib/test/test_zoneinfo/test_zoneinfo.py
M Lib/zoneinfo/_tzpath.py

diff --git a/Lib/test/test_zoneinfo/test_zoneinfo.py 
b/Lib/test/test_zoneinfo/test_zoneinfo.py
index 102a487b4cfa4f..fff6c0d865b441 100644
--- a/Lib/test/test_zoneinfo/test_zoneinfo.py
+++ b/Lib/test/test_zoneinfo/test_zoneinfo.py
@@ -236,6 +236,7 @@ def test_bad_keys_paths(self):
             "../zoneinfo/America/Los_Angeles",  # Traverses above TZPATH
             "America/../America/Los_Angeles",  # Not normalized
             "America/./Los_Angeles",
+            "",
         ]
 
         for bad_key in bad_keys:
diff --git a/Lib/zoneinfo/_tzpath.py b/Lib/zoneinfo/_tzpath.py
index 5db17bea045d8c..990a5c8b6a9372 100644
--- a/Lib/zoneinfo/_tzpath.py
+++ b/Lib/zoneinfo/_tzpath.py
@@ -83,6 +83,11 @@ def find_tzfile(key):
 
 
 def _validate_tzfile_path(path, _base=_TEST_PATH):
+    if not path:
+        raise ValueError(
+            "ZoneInfo key must not be an empty string"
+        )
+
     if os.path.isabs(path):
         raise ValueError(
             f"ZoneInfo keys may not be absolute paths, got: {path}"
diff --git 
a/Misc/NEWS.d/next/Library/2025-03-09-01-09-12.gh-issue-114713.lkq9vZ.rst 
b/Misc/NEWS.d/next/Library/2025-03-09-01-09-12.gh-issue-114713.lkq9vZ.rst
new file mode 100644
index 00000000000000..d30975a8a5115b
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-03-09-01-09-12.gh-issue-114713.lkq9vZ.rst
@@ -0,0 +1 @@
+Handle case of an empty string passed to :class:`zoneinfo.ZoneInfo`.

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to