From 1c80ec9834555a413e031b404a9e0777a0692b6d Mon Sep 17 00:00:00 2001 From: Alan Hamlett Date: Tue, 5 Sep 2017 09:47:50 -0700 Subject: [PATCH] upgrade tzlocal to v1.4 --- wakatime/packages/tzlocal/darwin.py | 32 ++++++-- wakatime/packages/tzlocal/test_data/Harare | Bin 0 -> 157 bytes .../tzlocal/test_data/localtime/etc/localtime | Bin 0 -> 157 bytes .../test_data/symlink_localtime/etc/localtime | Bin 0 -> 157 bytes .../usr/share/zoneinfo/Africa/Harare | Bin 0 -> 157 bytes .../tzlocal/test_data/timezone/etc/timezone | 1 + .../timezone_setting/etc/conf.d/clock | 1 + .../zone_setting/etc/sysconfig/clock | 1 + wakatime/packages/tzlocal/unix.py | 31 ++++---- wakatime/packages/tzlocal/windows_tz.py | 74 ++++++++++++++---- 10 files changed, 106 insertions(+), 34 deletions(-) create mode 100644 wakatime/packages/tzlocal/test_data/Harare create mode 100644 wakatime/packages/tzlocal/test_data/localtime/etc/localtime create mode 100644 wakatime/packages/tzlocal/test_data/symlink_localtime/etc/localtime create mode 100644 wakatime/packages/tzlocal/test_data/symlink_localtime/usr/share/zoneinfo/Africa/Harare create mode 100644 wakatime/packages/tzlocal/test_data/timezone/etc/timezone create mode 100644 wakatime/packages/tzlocal/test_data/timezone_setting/etc/conf.d/clock create mode 100644 wakatime/packages/tzlocal/test_data/zone_setting/etc/sysconfig/clock diff --git a/wakatime/packages/tzlocal/darwin.py b/wakatime/packages/tzlocal/darwin.py index bedbbd1..4e8540b 100644 --- a/wakatime/packages/tzlocal/darwin.py +++ b/wakatime/packages/tzlocal/darwin.py @@ -2,23 +2,45 @@ from __future__ import with_statement import os import pytz import subprocess +import sys _cache_tz = None +if sys.version_info[0] == 2: -def _get_localzone(): - pipe = subprocess.Popen( + class Popen(subprocess.Popen): + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + if self.stdout: + self.stdout.close() + if self.stderr: + self.stderr.close() + if self.stdin: + self.stdin.close() + # Wait for the process to terminate, to avoid zombies. + self.wait() + +else: + from subprocess import Popen + + +def _get_localzone(_root='/'): + with Popen( "systemsetup -gettimezone", shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE - ) - tzname = pipe.stdout.read().replace(b'Time Zone: ', b'').strip() + ) as pipe: + tzname = pipe.stdout.read().replace(b'Time Zone: ', b'').strip() if not tzname or tzname not in pytz.all_timezones_set: # link will be something like /usr/share/zoneinfo/America/Los_Angeles. - link = os.readlink("/etc/localtime") + link = os.readlink(os.path.join(_root, "etc/localtime")) tzname = link[link.rfind("zoneinfo/") + 9:] + return pytz.timezone(tzname) diff --git a/wakatime/packages/tzlocal/test_data/Harare b/wakatime/packages/tzlocal/test_data/Harare new file mode 100644 index 0000000000000000000000000000000000000000..258b393637294912a6d6c78973c09424136ed50e GIT binary patch literal 157 zcmWHE%1kq2zyM4@5fBCeMj!^UIhx##rvN#!G9XbI1qK!$-w+08#}E*gA%p~j{sRGC M!?=K^>KbtY08KbtY08KbtY08KbtY08