from io import StringIO
import pickle
- def reraise(tp, value, tb=None):
- if value.__traceback__ is not tb:
- raise value.with_traceback(tb)
- raise value
-
- implements_to_string = _identity
-
izip = zip
imap = map
from cStringIO import StringIO
import cPickle as pickle
- exec('def reraise(tp, value, tb=None):\n raise tp, value, tb')
+ from itertools import izip, imap
- def implements_to_string(cls):
- cls.__unicode__ = cls.__str__
- cls.__str__ = lambda x: x.__unicode__().encode('utf-8')
- return cls
- from itertools import izip, imap
+number_types = integer_types + (float,)
import os
from babel import localedata
-from babel._compat import pickle
+from babel._compat import pickle, string_types
__all__ = ['UnknownLocaleError', 'Locale', 'default_locale', 'negotiate_locale',
'parse_locale']
requested locale
:see: `parse_locale`
"""
- if isinstance(identifier, basestring):
+ if isinstance(identifier, string_types):
return cls(*parse_locale(identifier, sep=sep))
return identifier
from babel.core import default_locale, get_global, Locale
from babel.util import UTC, LOCALTZ
+from babel._compat import string_types, integer_types, number_types
__all__ = ['format_date', 'format_datetime', 'format_time', 'format_timedelta',
'get_timezone_name', 'parse_date', 'parse_datetime', 'parse_time']
"""
if zone is None:
return LOCALTZ
- if not isinstance(zone, basestring):
+ if not isinstance(zone, string_types):
return zone
try:
return _pytz.timezone(zone)
"""
if datetime is None:
datetime = datetime_.utcnow()
- elif isinstance(datetime, (int, long)):
+ elif isinstance(datetime, integer_types):
datetime = datetime_.utcfromtimestamp(datetime).time()
if datetime.tzinfo is None:
datetime = datetime.replace(tzinfo=UTC)
if dt_or_tzinfo is None:
dt = datetime.now()
tzinfo = LOCALTZ
- elif isinstance(dt_or_tzinfo, basestring):
+ elif isinstance(dt_or_tzinfo, string_types):
dt = None
tzinfo = get_timezone(dt_or_tzinfo)
- elif isinstance(dt_or_tzinfo, (int, long)):
+ elif isinstance(dt_or_tzinfo, integer_types):
dt = None
tzinfo = UTC
elif isinstance(dt_or_tzinfo, (datetime, time)):
if dt_or_tzinfo is None:
dt = datetime.now()
tzinfo = LOCALTZ
- elif isinstance(dt_or_tzinfo, basestring):
+ elif isinstance(dt_or_tzinfo, string_types):
dt = None
tzinfo = get_timezone(dt_or_tzinfo)
- elif isinstance(dt_or_tzinfo, (int, long)):
+ elif isinstance(dt_or_tzinfo, integer_types):
dt = None
tzinfo = UTC
elif isinstance(dt_or_tzinfo, (datetime, time)):
"""
if datetime is None:
datetime = datetime_.utcnow()
- elif isinstance(datetime, (int, long, float)):
+ elif isinstance(datetime, number_types):
datetime = datetime_.utcfromtimestamp(datetime)
elif isinstance(datetime, time):
datetime = datetime_.combine(date.today(), datetime)
"""
if time is None:
time = datetime.utcnow()
- elif isinstance(time, (int, long, float)):
+ elif isinstance(time, number_types):
time = datetime.utcfromtimestamp(time)
if time.tzinfo is None:
time = time.replace(tzinfo=UTC)
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, LOCALTZ, FixedOffsetTimezone
+from babel._compat import string_types, number_types
__all__ = ['Message', 'Catalog', 'TranslationError']
self.flags.discard('python-format')
self.auto_comments = list(distinct(auto_comments))
self.user_comments = list(distinct(user_comments))
- if isinstance(previous_id, basestring):
+ if isinstance(previous_id, string_types):
self.previous_id = [previous_id]
else:
self.previous_id = list(previous_id)
for checker in checkers:
try:
checker(catalog, self)
- except TranslationError, e:
+ except TranslationError as e:
errors.append(e)
return errors
headers.append(('POT-Creation-Date',
format_datetime(self.creation_date, 'yyyy-MM-dd HH:mmZ',
locale='en')))
- if isinstance(self.revision_date, (datetime, time_, int, long, float)):
+ if isinstance(self.revision_date, (datetime, time_) + number_types):
headers.append(('PO-Revision-Date',
format_datetime(self.revision_date,
'yyyy-MM-dd HH:mmZ', locale='en')))
Here's an example of the output for such a catalog template:
+ >>> from babel.dates import UTC
>>> created = datetime(1990, 4, 1, 15, 30, tzinfo=UTC)
>>> catalog = Catalog(project='Foobar', version='1.0',
... creation_date=created)
>>> Catalog(locale='ga').plural_expr
'(n==1 ? 0 : n==2 ? 1 : 2)'
- :type: `basestring`"""
+ :type: `string_types`"""
if self._plural_expr is None:
expr = '(n != 1)'
if self.locale:
fuzzy = True
fuzzy_matches.add(oldkey)
oldmsg = messages.get(oldkey)
- if isinstance(oldmsg.id, basestring):
+ if isinstance(oldmsg.id, string_types):
message.previous_id = [oldmsg.id]
else:
message.previous_id = list(oldmsg.id)
from itertools import izip
from babel.messages.catalog import TranslationError, PYTHON_FORMAT
+from babel._compat import string_types
#: list of format chars that are compatible to each other
_string_format_compatibilities = [
def num_plurals(catalog, message):
"""Verify the number of plurals in the translation."""
if not message.pluralizable:
- if not isinstance(message.string, basestring):
+ if not isinstance(message.string, string_types):
raise TranslationError("Found plural forms for non-pluralizable "
"message")
return
from babel.messages.mofile import write_mo
from babel.messages.pofile import read_po, write_po
from babel.util import odict, LOCALTZ
+from babel._compat import string_types
__all__ = ['CommandLineInterface', 'compile_catalog', 'extract_messages',
'init_catalog', 'check_message_extractors', 'update_catalog']
elif getattr(self.distribution, 'message_extractors', None):
message_extractors = self.distribution.message_extractors
for dirname, mapping in message_extractors.items():
- if isinstance(mapping, basestring):
+ if isinstance(mapping, string_types):
method_map, options_map = parse_mapping(StringIO(mapping))
else:
method_map, options_map = [], {}
"""
def __init__(self, data=None):
dict.__init__(self, data or {})
- self._keys = dict.keys(self)
+ self._keys = list(dict.keys(self))
def __delitem__(self, key):
dict.__delitem__(self, key)
'../foo/bar.txt'
:return: the relative path
- :rtype: `basestring`
"""
start_list = os.path.abspath(start).split(os.sep)
path_list = os.path.abspath(path).split(os.sep)
import copy
import datetime
-import doctest
import unittest
-from babel.dates import format_datetime
+from babel.dates import format_datetime, UTC
from babel.messages import catalog
from babel.util import FixedOffsetTimezone
def test_catalog_mime_headers():
- created = datetime.datetime(1990, 4, 1, 15, 30, tzinfo=catalog.UTC)
+ created = datetime.datetime(1990, 4, 1, 15, 30, tzinfo=UTC)
cat = catalog.Catalog(project='Foobar', version='1.0',
creation_date=created)
assert cat.mime_headers == [
def test_catalog_mime_headers_set_locale():
- created = datetime.datetime(1990, 4, 1, 15, 30, tzinfo=catalog.UTC)
- revised = datetime.datetime(1990, 8, 3, 12, 0, tzinfo=catalog.UTC)
+ created = datetime.datetime(1990, 4, 1, 15, 30, tzinfo=UTC)
+ revised = datetime.datetime(1990, 8, 3, 12, 0, tzinfo=UTC)
cat = catalog.Catalog(locale='de_DE', project='Foobar', version='1.0',
creation_date=created, revision_date=revised,
last_translator='John Doe <jd@example.com>',
assert msg3.locations == [('util.py', 42)]
assert not 'head' in cat
- assert cat.obsolete.values()[0].id == 'head'
+ assert list(cat.obsolete.values())[0].id == 'head'