METADATA 8.03 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326
Metadata-Version: 2.1
Name: tzlocal
Version: 2.1
Summary: tzinfo object for the local timezone
Home-page: https://github.com/regebro/tzlocal
Author: Lennart Regebro
Author-email: regebro@gmail.com
License: MIT
Keywords: timezone pytz
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: Unix
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Dist: pytz

tzlocal
=======

This Python module returns a ``tzinfo`` object with the local timezone information under Unix and Win-32.
It requires ``pytz``, and returns ``pytz`` ``tzinfo`` objects.

This module attempts to fix a glaring hole in ``pytz``, that there is no way to
get the local timezone information, unless you know the zoneinfo name, and
under several Linux distros that's hard or impossible to figure out.

Also, with Windows different timezone system using pytz isn't of much use
unless you separately configure the zoneinfo timezone name.

With ``tzlocal`` you only need to call ``get_localzone()`` and you will get a
``tzinfo`` object with the local time zone info. On some Unices you will still
not get to know what the timezone name is, but you don't need that when you
have the tzinfo file. However, if the timezone name is readily available it
will be used.


Supported systems
-----------------

These are the systems that are in theory supported:

 * Windows 2000 and later

 * Any unix-like system with a ``/etc/localtime`` or ``/usr/local/etc/localtime``

If you have one of the above systems and it does not work, it's a bug.
Please report it.

Please note that if you getting a time zone called ``local``, this is not a bug, it's
actually the main feature of ``tzlocal``, that even if your system does NOT have a configuration file
with the zoneinfo name of your time zone, it will still work.

You can also use ``tzlocal`` to get the name of your local timezone, but only if your system is
configured to make that possible. ``tzlocal`` looks for the timezone name in ``/etc/timezone``, ``/var/db/zoneinfo``,
``/etc/sysconfig/clock`` and ``/etc/conf.d/clock``. If your ``/etc/localtime`` is a symlink it can also extract the
name from that symlink.

If you need the name of your local time zone, then please make sure your system is properly configured to allow that.
If it isn't configured, tzlocal will default to UTC.

Usage
-----

Load the local timezone:

    >>> from tzlocal import get_localzone
    >>> tz = get_localzone()
    >>> tz
    <DstTzInfo 'Europe/Warsaw' WMT+1:24:00 STD>

Create a local datetime:

    >>> from datetime import datetime
    >>> dt = tz.localize(datetime(2015, 4, 10, 7, 22))
    >>> dt
    datetime.datetime(2015, 4, 10, 7, 22, tzinfo=<DstTzInfo 'Europe/Warsaw' CEST+2:00:00 DST>)

Lookup another timezone with `pytz`:

    >>> import pytz
    >>> eastern = pytz.timezone('US/Eastern')

Convert the datetime:

    >>> dt.astimezone(eastern)
    datetime.datetime(2015, 4, 10, 1, 22, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)


Maintainer
----------

* Lennart Regebro, regebro@gmail.com

Contributors
------------

* Marc Van Olmen
* Benjamen Meyer
* Manuel Ebert
* Xiaokun Zhu
* Cameris
* Edward Betts
* McK KIM
* Cris Ewing
* Ayala Shachar
* Lev Maximov
* Jakub Wilk
* John Quarles
* Preston Landers
* Victor Torres
* Jean Jordaan
* Zackary Welch
* Mickaël Schoentgen
* Gabriel Corona

(Sorry if I forgot someone)

License
-------

* MIT https://opensource.org/licenses/MIT


Changes
=======

2.1 (2020-05-08)
----------------

- No changes.


2.1b1 (2020-02-08)
------------------

- The is_dst flag is wrong for Europe/Dublin on some Unix releases.
  I changed to another way of determining if DST is in effect or not.

- Added support for Python 3.7 and 3.8. Dropped 3.5 although it still works.


2.0.0 (2019-07-23)
------------------

- No differences since 2.0.0b3

Major differences since 1.5.1
.............................

- When no time zone configuration can be find, tzlocal now return UTC.
  This is a major difference from 1.x, where an exception would be raised.
  This change is because Docker images often have no configuration at all,
  and the unix utilities will then default to UTC, so we follow that.

- If tzlocal on Unix finds a timezone name in a /etc config file, then
  tzlocal now verifies that the timezone it fouds has the same offset as
  the local computer is configured with. If it doesn't, something is
  configured incorrectly. (Victor Torres, regebro)

- Get timezone via Termux `getprop` wrapper on Android. It's not officially
  supported because we can't test it, but at least we make an effort.
  (Jean Jordaan)

Minor differences and bug fixes
...............................

- Skip comment lines when parsing /etc/timezone. (Edward Betts)

- Don't load timezone from current directory. (Gabriel Corona)

- Now verifies that the config files actually contain something before
  reading them. (Zackary Welch, regebro)

- Got rid of a BytesWarning (Mickaël Schoentgen)

- Now handles if config file paths exists, but are directories.

- Moved tests out from distributions

- Support wheels


1.5.1 (2017-12-01)
------------------

- 1.5 had a bug that slipped through testing, fixed that,
  increased test coverage.


1.5 (2017-11-30)
----------------

- No longer treats macOS as special, but as a unix.

- get_windows_info.py is renamed to update_windows_mappings.py

- Windows mappings now also contain mappings from deprecated zoneinfo names.
  (Preston-Landers, regebro)


1.4 (2017-04-18)
----------------

- I use MIT on my other projects, so relicensing.


1.4b1 (2017-04-14)
------------------

- Dropping support for Python versions nobody uses (2.5, 3.1, 3.2), adding 3.6
  Python 3.1 and 3.2 still works, 2.5 has been broken for some time.

- Ayalash's OS X fix didn't work on Python 2.7, fixed that.


1.3.2 (2017-04-12)
------------------

- Ensure closing of subprocess on OS X (ayalash)

- Removed unused imports (jwilk)

- Closes stdout and stderr to get rid of ResourceWarnings (johnwquarles)

- Updated Windows timezones (axil)


1.3 (2016-10-15)
----------------

- #34: Added support for /var/db/zoneinfo


1.2.2 (2016-03-02)
------------------

- #30: Fixed a bug on OS X.


1.2.1 (2016-02-28)
------------------

- Tests failed if TZ was set in the environment. (EdwardBetts)

- Replaces os.popen() with subprocess.Popen() for OS X to
  handle when systemsetup doesn't exist. (mckabi, cewing)


1.2 (2015-06-14)
----------------

- Systemd stores no time zone name, forcing us to look at the name of the file
  that localtime symlinks to. (cameris)


1.1.2 (2014-10-18)
------------------

- Timezones that has 3 items did not work on Mac OS X.
  (Marc Van Olmen)

- Now doesn't fail if the TZ environment variable isn't an Olsen time zone.

- Some timezones on Windows can apparently be empty (perhaps the are deleted).
  Now these are ignored.
  (Xiaokun Zhu)


1.1.1 (2014-01-29)
------------------

- I forgot to add Etc/UTC as an alias for Etc/GMT.


1.1 (2014-01-28)
----------------

- Adding better support for OS X.

- Added support to map from tzdata/Olsen names to Windows names.
  (Thanks to Benjamen Meyer).


1.0 (2013-05-29)
----------------

- Fixed some more cases where spaces needs replacing with underscores.

- Better handling of misconfigured /etc/timezone.

- Better error message on Windows if we can't find a timezone at all.


0.3 (2012-09-13)
----------------

- Windows 7 support.

- Python 2.5 supported; because it only needed a __future__ import.

- Python 3.3 tested, it worked.

- Got rid of relative imports, because I don't actually like them,
  so I don't know why I used them in the first place.

- For each Windows zone, use the default zoneinfo zone, not the last one.


0.2 (2012-09-12)
----------------

- Python 3 support.


0.1 (2012-09-11)
----------------

- Initial release.