mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
gh-85702: Catch PermissionError in zoneinfo.load_tzdata() (#136117)
Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
This commit is contained in:
parent
2bdd50309f
commit
ee47670e8b
2 changed files with 9 additions and 2 deletions
|
@ -9,9 +9,13 @@ def load_tzdata(key):
|
||||||
resource_name = components[-1]
|
resource_name = components[-1]
|
||||||
|
|
||||||
try:
|
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):
|
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":
|
# to "we cannot find this key":
|
||||||
#
|
#
|
||||||
# ImportError: If package_name doesn't exist (e.g. if tzdata is not
|
# ImportError: If package_name doesn't exist (e.g. if tzdata is not
|
||||||
|
|
|
@ -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.
|
Loading…
Add table
Add a link
Reference in a new issue