]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
fix Python 2.3 compat: rearrange set/itemgetter/rsplit/sorted/unicode.decode
authorPhilip Jenvey <pjenvey@underboss.org>
Wed, 8 Oct 2008 22:42:55 +0000 (22:42 +0000)
committerPhilip Jenvey <pjenvey@underboss.org>
Wed, 8 Oct 2008 22:42:55 +0000 (22:42 +0000)
usage. still has a few, unimportant failing tests

12 files changed:
ChangeLog
babel/messages/catalog.py
babel/messages/checkers.py
babel/messages/extract.py
babel/messages/frontend.py
babel/messages/jslexer.py
babel/messages/plurals.py
babel/messages/pofile.py
babel/numbers.py
babel/plural.py
babel/support.py
babel/util.py

index 49ad41e3ae008e1bd629a3cb083384679e8e0ba4..99196b07511f3e5be0952069cee1c9bcfe7be92f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,7 @@ http://svn.edgewall.org/repos/babel/tags/1.0.0/
  * Added support for the locale plural rules defined by the CLDR.
  * Added `format_timedelta` function to support localized formatting of
    relative times with strings such as "2 days" or "1 month" (ticket #126).
+ * Fixed Python 2.3 compatibility (ticket #146).
 
 
 Version 0.9.4
index 4569571bc9555c892721b3c064029fd0d0991ccc..51b438c5e58af6b27400e70f8adbb20b1d852184 100644 (file)
@@ -19,17 +19,13 @@ from difflib import get_close_matches
 from email import message_from_string
 from copy import copy
 import re
-try:
-    set
-except NameError:
-    from sets import Set as set
 import time
 
 from babel import __version__ as VERSION
 from babel.core import Locale
 from babel.dates import format_datetime
 from babel.messages.plurals import get_plural
-from babel.util import odict, distinct, LOCALTZ, UTC, FixedOffsetTimezone
+from babel.util import odict, distinct, set, LOCALTZ, UTC, FixedOffsetTimezone
 
 __all__ = ['Message', 'Catalog', 'TranslationError']
 __docformat__ = 'restructuredtext en'
index 128eaddcc186b5cf6619e0d936eef8e12578f698..c07c5386abcd3cae374d2e4f0f1f42e92b9ce764 100644 (file)
@@ -18,6 +18,7 @@
 
 from itertools import izip
 from babel.messages.catalog import TranslationError, PYTHON_FORMAT
+from babel.util import set
 
 #: list of format chars that are compatible to each other
 _string_format_compatibilities = [
index 1f3a6625789d3915ae1056083470e5f6b03d99e6..1fae4d9489ad67eda728e097352460f6e93afb79 100644 (file)
@@ -22,14 +22,10 @@ The main entry points into the extraction functionality are the functions
 """
 
 import os
-try:
-    set
-except NameError:
-    from sets import Set as set
 import sys
 from tokenize import generate_tokens, COMMENT, NAME, OP, STRING
 
-from babel.util import parse_encoding, pathmatch, relpath
+from babel.util import parse_encoding, pathmatch, relpath, set
 from textwrap import dedent
 
 __all__ = ['extract', 'extract_from_dir', 'extract_from_file']
index 421cff197d32ae00bd5465f70a61fac2aca036aa..3296173bb9ddb182f40653187e11d24fea5fc568 100755 (executable)
@@ -1170,8 +1170,9 @@ def parse_mapping(fileobj, filename=None):
 def parse_keywords(strings=[]):
     """Parse keywords specifications from the given list of strings.
 
-    >>> kw = parse_keywords(['_', 'dgettext:2', 'dngettext:2,3'])
-    >>> for keyword, indices in sorted(kw.items()):
+    >>> kw = parse_keywords(['_', 'dgettext:2', 'dngettext:2,3']).items()
+    >>> kw.sort()
+    >>> for keyword, indices in kw:
     ...     print (keyword, indices)
     ('_', None)
     ('dgettext', (2,))
index d063ef09c2f64f2841aca43f9144842121d41956..c794252fcc3ad67a6b7169b2193df06621de1598 100644 (file)
@@ -16,7 +16,8 @@ extractor.
 """
 
 import re
-from operator import itemgetter
+
+from babel.util import itemgetter
 
 
 operators = [
index 7e0b5834aaba4fdda76d97bbc9d853f463eeafbf..4edaf754a085f3b750d58321f15990d22b57e4cf 100644 (file)
@@ -13,9 +13,8 @@
 
 """Plural form definitions."""
 
-
-from operator import itemgetter
 from babel.core import default_locale, Locale
+from babel.util import itemgetter
 
 
 LC_CTYPE = default_locale('LC_CTYPE')
index e7166707aa84465929b138761fa25463cf52d948..98cd3f8db8f257d098999971855161f7aa905dba 100644 (file)
@@ -21,14 +21,10 @@ format.
 from datetime import date, datetime
 import os
 import re
-try:
-    set
-except NameError:
-    from sets import Set as set
 
 from babel import __version__ as VERSION
 from babel.messages.catalog import Catalog, Message
-from babel.util import wraptext, LOCALTZ
+from babel.util import set, wraptext, LOCALTZ
 
 __all__ = ['read_po', 'write_po']
 __docformat__ = 'restructuredtext en'
@@ -207,7 +203,9 @@ def read_po(fileobj, locale=None, domain=None, ignore_obsolete=False):
                 context.append(line.rstrip())
 
     for lineno, line in enumerate(fileobj.readlines()):
-        line = line.strip().decode(catalog.charset)
+        line = line.strip()
+        if not isinstance(line, unicode):
+            line = line.decode(catalog.charset)
         if line.startswith('#'):
             in_msgid[0] = in_msgstr[0] = False
             if messages and translations:
index 1a52074689a5b14a0549fb66f4002de8437630e8..47f96500aad38bbfaf6d2d588d9a25019b18ff0b 100644 (file)
@@ -391,7 +391,10 @@ def parse_pattern(pattern):
             raise ValueError('Significant digit patterns can not contain '
                              '"@" or "0"')
     if '.' in number:
-        integer, fraction = number.rsplit('.', 1)
+        #integer, fraction = number.rsplit('.', 1)
+        # 2.3 compat: this is rsplit
+        parts = number.split('.')
+        integer, fraction = '.'.join(parts[:-1]), parts[-1]
     else:
         integer = number
         fraction = ''
index b52f1a4774864a25d880fa300f1d0b287d90ee76..129b5bafe48237ac3cd72e83b88274fc6bff6a4a 100644 (file)
 """CLDR Plural support.  See UTS #35.  EXPERIMENTAL"""
 
 import re
-try:
-    set
-except NameError:
-    from sets import ImmutableSet as frozenset, Set as set
+
+from babel.util import frozenset, set
 
 __all__ = ['PluralRule', 'RuleError', 'to_gettext', 'to_javascript',
            'to_python']
index b588539996a7c0c64f262018a00563bb5f22e922..ddc0894011522e9b01e62a8f601efca701c71615 100644 (file)
@@ -20,17 +20,12 @@ in applications.
 from datetime import date, datetime, time, timedelta
 import gettext
 
-try:
-    set
-except NameError:
-    from sets import set
-
 from babel.core import Locale
 from babel.dates import format_date, format_datetime, format_time, \
                         format_timedelta, LC_TIME
 from babel.numbers import format_number, format_decimal, format_currency, \
                           format_percent, format_scientific, LC_NUMERIC
-from babel.util import UTC
+from babel.util import set, UTC
 
 __all__ = ['Format', 'LazyProxy', 'Translations']
 __docformat__ = 'restructuredtext en'
index b59918f6f8fee5b9a36a838a24a8dd3b0ae0484d..400c07c0953719ef9b49ba7c2fea6083a4a21c1d 100644 (file)
@@ -17,13 +17,21 @@ import codecs
 from datetime import timedelta, tzinfo
 import os
 import re
-try:
-    set
-except NameError:
-    from sets import Set as set
 import textwrap
 import time
 from itertools import izip, imap
+try:
+    # assigned so they're importable
+    frozenset = frozenset
+    set = set
+except NameError:
+    from sets import ImmutableSet as frozenset, Set as set
+try:
+    from operator import itemgetter
+except ImportError:
+    def itemgetter(item):
+        return lambda obj: obj[item]
+
 missing = object()
 
 __all__ = ['distinct', 'pathmatch', 'relpath', 'wraptext', 'odict', 'UTC',