]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
Added authors file
authorArmin Ronacher <armin.ronacher@active-4.com>
Wed, 24 Jul 2013 12:57:03 +0000 (14:57 +0200)
committerArmin Ronacher <armin.ronacher@active-4.com>
Wed, 24 Jul 2013 12:57:03 +0000 (14:57 +0200)
AUTHORS [new file with mode: 0644]
ChangeLog
LICENSE [moved from COPYING with 94% similarity]
babel/localtime/_unix.py

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
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"
index 74f1182c932a4e43f679c3a4c16cddd7049390cb..952f14971793b03e3ba8fad7665e4781abb7787e 100644 (file)
--- 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
similarity index 94%
rename from COPYING
rename to LICENSE
index bddbf629316a80be62bb4b3cd5293252213fb8db..4f94d2fd07c9d0c1cda3d3aeab9d5f9ce7dc8afb 100644 (file)
--- 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
index b002c18e9b1d1ee24d183b81a4c410024c2a15cd..b4a3b599f0cd07aadf31ce421040e2592d637c01 100644 (file)
@@ -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)