# HG changeset patch # User fschwarz # Date 1299244443 0 # Node ID cd2dec0823c955c708fd2dba36f5582dbc451dad # Parent 56ea1ec02e162465c75c958d8c257a9f23ea5920 Python 2.3 compatibility: backporting r456 and r457 to 0.9 branch (see #233) diff --git a/0.9.x/ChangeLog b/0.9.x/ChangeLog --- a/0.9.x/ChangeLog +++ b/0.9.x/ChangeLog @@ -5,6 +5,7 @@ * Backport r493-494: documentation typo fixes. * Make the CLDR import script work with Python 2.7. * Fix various typos. + * Fixed Python 2.3 compatibility (ticket #146). * Sort output of list-locales. * Make the POT-Creation-Date of the catalog being updated equal to POT-Creation-Date of the template used to update (ticket #148). diff --git a/0.9.x/babel/messages/catalog.py b/0.9.x/babel/messages/catalog.py --- a/0.9.x/babel/messages/catalog.py +++ b/0.9.x/babel/messages/catalog.py @@ -19,17 +19,13 @@ 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' diff --git a/0.9.x/babel/messages/checkers.py b/0.9.x/babel/messages/checkers.py --- a/0.9.x/babel/messages/checkers.py +++ b/0.9.x/babel/messages/checkers.py @@ -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 = [ diff --git a/0.9.x/babel/messages/frontend.py b/0.9.x/babel/messages/frontend.py --- a/0.9.x/babel/messages/frontend.py +++ b/0.9.x/babel/messages/frontend.py @@ -1176,8 +1176,9 @@ 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,)) diff --git a/0.9.x/babel/messages/jslexer.py b/0.9.x/babel/messages/jslexer.py --- a/0.9.x/babel/messages/jslexer.py +++ b/0.9.x/babel/messages/jslexer.py @@ -16,7 +16,8 @@ """ import re -from operator import itemgetter + +from babel.util import itemgetter operators = [ diff --git a/0.9.x/babel/messages/plurals.py b/0.9.x/babel/messages/plurals.py --- a/0.9.x/babel/messages/plurals.py +++ b/0.9.x/babel/messages/plurals.py @@ -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') diff --git a/0.9.x/babel/messages/pofile.py b/0.9.x/babel/messages/pofile.py --- a/0.9.x/babel/messages/pofile.py +++ b/0.9.x/babel/messages/pofile.py @@ -21,14 +21,10 @@ 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' @@ -195,7 +191,9 @@ translations[-1][1] += u'\n' + 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: diff --git a/0.9.x/babel/util.py b/0.9.x/babel/util.py --- a/0.9.x/babel/util.py +++ b/0.9.x/babel/util.py @@ -18,7 +18,7 @@ import os import re try: - set + set = set except NameError: from sets import Set as set import textwrap