pendulum
pendulum copied to clipboard
Pendulum shouldn't rely on Linux distro-specific timezone configuration
- [x] I have searched the issues of this repo and believe that this is not a duplicate.
- [x] I have searched the documentation and believe that my question is not covered.
Issue
I see in pendulum.tz.local_timezone
that Pendulum tries to get the local timezone from some distro-specific files such as /etc/timezone
and /etc/sysconfig/clock
. It only falls back to /etc/localtime
if these files don't exist. But libc only uses /etc/localtime
to get the system default local timezone. (glibc source is hard to follow, but this is pretty clear in do_tzset()
in musl libc.)
This can lead to weird behavior where most apps (e.g., the date
command) think the system uses one timezone, but Pendulum thinks it uses a different one. For example, one way that people sometimes override the timezone in Docker containers is to bind mount /etc/localtime
from the host system into the container. Which can result in a mismatch between /etc/localtime
and /etc/timezone
but works fine for almost everything because libc only uses /etc/localtime
.
See also https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=822733 where Debian is working on getting rid of /etc/timezone
.
It seems like it would be best to remove handling of the distro-specific configs, and only use os.environ['TZ']
and /etc/localtime
on Linux.