gh-85702: Catch PermissionError in zoneinfo.load_tzdata() (#136117)

Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
This commit is contained in:
Victor Stinner 2025-06-30 16:33:01 +02:00 committed by GitHub
parent 2bdd50309f
commit ee47670e8b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 2 deletions

View file

@ -9,9 +9,13 @@ def load_tzdata(key):
resource_name = components[-1]
try:
return resources.files(package_name).joinpath(resource_name).open("rb")
path = resources.files(package_name).joinpath(resource_name)
# gh-85702: Prevent PermissionError on Windows
if path.is_dir():
raise IsADirectoryError
return path.open("rb")
except (ImportError, FileNotFoundError, UnicodeEncodeError, IsADirectoryError):
# There are three types of exception that can be raised that all amount
# There are four types of exception that can be raised that all amount
# to "we cannot find this key":
#
# ImportError: If package_name doesn't exist (e.g. if tzdata is not

View file

@ -0,0 +1,3 @@
If ``zoneinfo._common.load_tzdata`` is given a package without a resource a
:exc:`zoneinfo.ZoneInfoNotFoundError` is raised rather than a :exc:`PermissionError`.
Patch by Victor Stinner.