summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Ronacher <armin.ronacher@active-4.com>2013-07-24 14:57:03 +0200
committerArmin Ronacher <armin.ronacher@active-4.com>2013-07-24 14:57:03 +0200
commit1f67eab0d5fa54d031aecb1ceff894e8e497bec9 (patch)
tree7bbc90f8f5f0495d17f31dff05aaec78c6d10467
parent507dba513f6ace2ba8dce78df1dc6cda990e12c7 (diff)
downloadbabel-1f67eab0d5fa54d031aecb1ceff894e8e497bec9.tar.gz
Added authors file
-rw-r--r--AUTHORS23
-rw-r--r--ChangeLog2
-rw-r--r--LICENSE (renamed from COPYING)3
-rw-r--r--babel/localtime/_unix.py30
4 files changed, 53 insertions, 5 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..3663977
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,23 @@
+Babel is written and maintained by the Babel team and various contributors:
+
+Maintainer and Current Project Lead:
+
+- Armin Ronacher <armin.ronacher@active-4.com>
+
+Contributors:
+
+- Christopher Lenz <cmlenz@gmail.com>
+- Alex Morega <alex@grep.ro>
+- Felix Schwarz <felix.schwarz@oss.schwarz.eu>
+- Pedro Algarvio <pedro@algarvio.me>
+- Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
+- Philip Jenvey <pjenvey@underboss.org>
+- Tobias Bieniek <Tobias.Bieniek@gmx.de>
+- Jonas Borgström <jonas@edgewall.org>
+- Daniel Neuhäuser <dasdasich@gmail.com>
+- Nick Retallack <nick@bitcasa.com>
+- Thomas Waldmann <tw@waldmann-edv.de>
+
+Babel was previously developed under the Copyright of Edgewall Software. The
+following copyright notice holds true for releases before 2013: "Copyright (c)
+2007 - 2011 by Edgewall Software"
diff --git a/ChangeLog b/ChangeLog
index 74f1182..952f149 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,4 @@
Version 1.0
-http://svn.edgewall.org/repos/babel/tags/1.0.0/
-(? ? 2013 from trunk)
* support python 2.6, 2.7, 3.3+ and pypy - drop all other versions
* use tox for testing on different pythons
diff --git a/COPYING b/LICENSE
index bddbf62..4f94d2f 100644
--- a/COPYING
+++ b/LICENSE
@@ -1,4 +1,5 @@
-Copyright (C) 2007-2011 Edgewall Software
+Copyright (C) 2013 by the Babel Team, see AUTHORS for more information.
+
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/babel/localtime/_unix.py b/babel/localtime/_unix.py
index b002c18..b4a3b59 100644
--- a/babel/localtime/_unix.py
+++ b/babel/localtime/_unix.py
@@ -1,7 +1,11 @@
from __future__ import with_statement
import os
import re
+import sys
import pytz
+import subprocess
+
+_systemconfig_tz = re.compile(r'^Time Zone: (.*)$(?m)')
def _tz_from_env(tzenv):
@@ -30,7 +34,8 @@ def _get_localzone(_root='/'):
name is unknown.
The parameter _root makes the function look for files like /etc/localtime
beneath the _root directory. This is primarily used by the tests.
- In normal usage you call the function without parameters."""
+ In normal usage you call the function without parameters.
+ """
tzenv = os.environ.get('TZ')
if tzenv:
@@ -52,6 +57,26 @@ def _get_localzone(_root='/'):
except pytz.UnknownTimeZoneError:
pass
+ # If we are on OS X now we are pretty sure that the rest of the
+ # code will fail and just fall through until it hits the reading
+ # of /etc/localtime and using it without name. At this point we
+ # can invoke systemconfig which internally invokes ICU. ICU itself
+ # does the same thing we do (readlink + compare file contents) but
+ # since it knows where the zone files are that should be a bit
+ # better than reimplementing the logic here.
+ if sys.platform == 'darwin':
+ c = subprocess.Popen(['systemsetup', '-gettimezone'],
+ stdout=subprocess.PIPE)
+ sys_result = c.communicate()[0]
+ c.wait()
+ tz_match = _systemconfig_tz.search(sys_result)
+ if tz_match is not None:
+ zone_name = tz_match.group(1)
+ try:
+ return pytz.timezone(zone_name)
+ except pytz.UnknownTimeZoneError:
+ pass
+
# Now look for distribution specific configuration files
# that contain the timezone name.
tzpath = os.path.join(_root, 'etc/timezone')
@@ -59,7 +84,7 @@ def _get_localzone(_root='/'):
with open(tzpath, 'rb') as tzfile:
data = tzfile.read()
- # Issue #3 was that /etc/timezone was a zoneinfo file.
+ # Issue #3 in tzlocal was that /etc/timezone was a zoneinfo file.
# That's a misconfiguration, but we need to handle it gracefully:
if data[:5] != 'TZif2':
etctz = data.strip().decode()
@@ -105,6 +130,7 @@ def _get_localzone(_root='/'):
if not os.path.exists(tzpath):
continue
+
with open(tzpath, 'rb') as tzfile:
return pytz.tzfile.build_tzinfo('local', tzfile)