[issue41530] zoneinfo: ZoneInfo raises IsADirectoryError instead of ZoneInfoNotFoundError

STINNER Victor report at bugs.python.org
Wed Aug 12 09:13:24 EDT 2020


STINNER Victor <vstinner at python.org> added the comment:

Oh right, 'Pacific' is a directory, not a valid zone, and so ZoneInfoNotFoundError should be raised. I see.

Example:

$ ./python -m venv env
$ env/bin/python -m pip install tzdata
$ env/bin/python 

# ZoneInfoNotFoundError expected, get IsADirectoryError
>>> import zoneinfo; zoneinfo.ZoneInfo('Pacific')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/vstinner/python/master/Lib/zoneinfo/_common.py", line 12, in load_tzdata
    return importlib.resources.open_binary(package_name, resource_name)
  File "/home/vstinner/python/master/Lib/importlib/resources.py", line 40, in open_binary
    return reader.open_resource(resource)
  File "/home/vstinner/python/master/Lib/importlib/abc.py", line 419, in open_resource
    return self.files().joinpath(resource).open('rb')
  File "/home/vstinner/python/master/Lib/pathlib.py", line 1238, in open
    return io.open(self, mode, buffering, encoding, errors, newline,
IsADirectoryError: [Errno 21] Is a directory: '/home/vstinner/python/master/env/lib/python3.10/site-packages/tzdata/zoneinfo/Pacific'

# valid zone
>>> import zoneinfo; zoneinfo.ZoneInfo('Pacific/Noumea')
zoneinfo.ZoneInfo(key='Pacific/Noumea')

# raise ZoneInfoNotFoundError as expected (from FileNotFoundError)
>>> import zoneinfo; zoneinfo.ZoneInfo('xxx')
Traceback (most recent call last):
  File "/home/vstinner/python/master/Lib/zoneinfo/_common.py", line 12, in load_tzdata
    return importlib.resources.open_binary(package_name, resource_name)
  File "/home/vstinner/python/master/Lib/importlib/resources.py", line 40, in open_binary
    return reader.open_resource(resource)
  File "/home/vstinner/python/master/Lib/importlib/abc.py", line 419, in open_resource
    return self.files().joinpath(resource).open('rb')
  File "/home/vstinner/python/master/Lib/pathlib.py", line 1238, in open
    return io.open(self, mode, buffering, encoding, errors, newline,
  File "/home/vstinner/python/master/Lib/pathlib.py", line 1106, in _opener
    return self._accessor.open(self, flags, mode)
FileNotFoundError: [Errno 2] No such file or directory: '/home/vstinner/python/master/env/lib/python3.10/site-packages/tzdata/zoneinfo/xxx'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/vstinner/python/master/Lib/zoneinfo/_common.py", line 24, in load_tzdata
    raise ZoneInfoNotFoundError(f"No time zone found with key {key}")
zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key xxx'

----------
title: Unhandled exceptions in zoneinfo.ZoneInfo constructor -> zoneinfo: ZoneInfo raises IsADirectoryError instead of ZoneInfoNotFoundError

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue41530>
_______________________________________


More information about the Python-bugs-list mailing list