-
Notifications
You must be signed in to change notification settings - Fork 459
Closed
Description
Overview Description
Importing babel.localtime
crashes on Python 3.9 if /etc/localtime
contains double-slashes.
Steps to Reproduce
ls -lh /etc/localtime
lrwxrwxrwx 1 root root 24 Mar 2 03:25 /etc/localtime -> /usr/share/zoneinfo//UTC
Note the double-slash, //UTC
.
# python
Python 3.9.16 (main, Mar 12 2023, 19:18:41)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import babel.localtime
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.9/site-packages/babel/localtime/__init__.py", line 41, in <module>
LOCALTZ = get_localzone()
File "/usr/local/lib/python3.9/site-packages/babel/localtime/__init__.py", line 37, in get_localzone
return _get_localzone()
File "/usr/local/lib/python3.9/site-packages/babel/localtime/_unix.py", line 49, in _get_localzone
tzinfo = _get_tzinfo(zone_name)
File "/usr/local/lib/python3.9/site-packages/babel/localtime/_helpers.py", line 21, in _get_tzinfo
return zoneinfo.ZoneInfo(tzenv)
File "/usr/local/lib/python3.9/zoneinfo/_tzpath.py", line 67, in find_tzfile
_validate_tzfile_path(key)
File "/usr/local/lib/python3.9/zoneinfo/_tzpath.py", line 81, in _validate_tzfile_path
raise ValueError(
ValueError: ZoneInfo keys may not be absolute paths, got: /UTC
>>> import babel
>>> babel.__version__
'2.12.1'
Actual Results
Crash.
Expected Results
No crash.
Reproducibility
Crashes for me on Python 3.9 with babel
2.12.1
. Works on Python 3.8.
The problem is that babel.localtime._unix._get_localzone
has naive path handling.
Additional Information
I'm not sure whether babel
is to blame here, but since this is working on Python 3.8 it would be nice to make babel
more robust here. As far as I can tell, double slashes are valid in POSIX and should be treated as single slashes.
miketheman
Metadata
Metadata
Assignees
Labels
No labels