Babel versions.
>>> Locale('en', 'US').time_formats['short']
- <DateTimePattern u'h:mm a'>
+ <DateTimePattern u'h:mm\u202fa'>
>>> Locale('fr', 'FR').time_formats['long']
<DateTimePattern u'HH:mm:ss z'>
"""
Babel versions.
>>> Locale('en').datetime_formats['full']
- u"{1} 'at' {0}"
+ u'{1}, {0}'
>>> Locale('th').datetime_formats['medium']
u'{1} {0}'
"""
format.
>>> get_time_format(locale='en_US')
- <DateTimePattern u'h:mm:ss a'>
+ <DateTimePattern u'h:mm:ss\u202fa'>
>>> get_time_format('full', locale='de_DE')
<DateTimePattern u'HH:mm:ss zzzz'>
>>> tz = get_timezone('America/St_Johns')
>>> print(get_timezone_location(tz, locale='de_DE'))
- Kanada (St. John’s) Zeit
+ Kanada (St. John’s) (Ortszeit)
>>> print(get_timezone_location(tz, locale='en'))
Canada (St. John’s) Time
>>> print(get_timezone_location(tz, locale='en', return_city=True))
St. John’s
>>> tz = get_timezone('America/Mexico_City')
>>> get_timezone_location(tz, locale='de_DE')
- u'Mexiko (Mexiko-Stadt) Zeit'
+ u'Mexiko (Mexiko-Stadt) (Ortszeit)'
If the timezone is associated with a country that uses only a single
timezone, just the localized country name is returned:
>>> from datetime import datetime
>>> dt = datetime(2007, 4, 1, 15, 30)
>>> format_datetime(dt, locale='en_US')
- u'Apr 1, 2007, 3:30:00 PM'
+ u'Apr 1, 2007, 3:30:00\u202fPM'
For any pattern requiring the display of the timezone:
>>> format_datetime(dt, 'full', tzinfo=get_timezone('Europe/Paris'),
... locale='fr_FR')
- 'dimanche 1 avril 2007 à 17:30:00 heure d’été d’Europe centrale'
+ 'dimanche 1 avril 2007, 17:30:00 heure d’été d’Europe centrale'
>>> format_datetime(dt, "yyyy.MM.dd G 'at' HH:mm:ss zzz",
... tzinfo=get_timezone('US/Eastern'), locale='en')
u'2007.04.01 AD at 11:30:00 EDT'
>>> from datetime import datetime, time
>>> t = time(15, 30)
>>> format_time(t, locale='en_US')
- u'3:30:00 PM'
+ u'3:30:00\u202fPM'
>>> format_time(t, format='short', locale='de_DE')
u'15:30'
u'15:30:00 heure normale d\u2019Europe centrale'
>>> format_time(t, format='full', tzinfo=get_timezone('US/Eastern'),
... locale='en_US')
- u'3:30:00 PM Eastern Standard Time'
+ u'3:30:00\u202fPM Eastern Standard Time'
:param time: the ``time`` or ``datetime`` object; if `None`, the current
time in UTC is used
'12:12\u201316:16'
>>> format_interval(time(5, 12), time(16, 16), "hm", locale="en_US")
- '5:12 AM \u2013 4:16 PM'
+ '5:12\u202fAM\u2009–\u20094:16\u202fPM'
>>> format_interval(time(16, 18), time(16, 24), "Hm", locale="it")
'16:18\u201316:24'
'16:18:00\uff5e16:24:00'
>>> format_interval(date(2016, 1, 15), date(2016, 1, 17), "xxx", locale="de")
- '15.01.2016 \u2013 17.01.2016'
+ '15.01.2016\u2009–\u200917.01.2016'
:param start: First instant (datetime/date/time)
:param end: Second instant (datetime/date/time)
"""Return formatted currency value.
>>> format_currency(1099.98, 'USD', locale='en_US')
- u'$1,099.98'
+ '$1,099.98'
>>> format_currency(1099.98, 'USD', locale='es_CO')
- u'US$\\xa01.099,98'
+ u'US$1.099,98'
>>> format_currency(1099.98, 'EUR', locale='de_DE')
u'1.099,98\\xa0\\u20ac'
>>> from babel.dates import get_timezone
>>> fmt = Format('en_US', tzinfo=get_timezone('US/Eastern'))
>>> fmt.datetime(datetime(2007, 4, 1, 15, 30))
- u'Apr 1, 2007, 11:30:00 AM'
+ u'Apr 1, 2007, 11:30:00\u202fAM'
"""
return format_datetime(datetime, format, tzinfo=self.tzinfo, locale=self.locale)
>>> from babel.dates import get_timezone
>>> fmt = Format('en_US', tzinfo=get_timezone('US/Eastern'))
>>> fmt.time(datetime(2007, 4, 1, 15, 30))
- u'11:30:00 AM'
+ u'11:30:00\u202fAM'
"""
return format_time(time, format, tzinfo=self.tzinfo, locale=self.locale)
assert Locale('fr', 'FR').date_formats['long'].pattern == 'd MMMM y'
def test_time_formats_property(self):
- assert Locale('en', 'US').time_formats['short'].pattern == 'h:mm a'
+ assert Locale('en', 'US').time_formats['short'].pattern == 'h:mm\u202fa'
assert Locale('fr', 'FR').time_formats['long'].pattern == 'HH:mm:ss z'
def test_datetime_formats_property(self):
- assert Locale('en').datetime_formats['full'] == "{1} 'at' {0}"
+ assert Locale('en').datetime_formats['full'] == "{1}, {0}"
assert Locale('th').datetime_formats['medium'] == '{1} {0}'
def test_datetime_skeleton_property(self):
def test_format_interval_same_instant_2():
- assert dates.format_interval(TEST_DT, TEST_DT, "xxx", fuzzy=False, locale="fi") == "8.1.2016 klo 11.46.15"
+ assert dates.format_interval(TEST_DT, TEST_DT, "xxx", fuzzy=False, locale="fi") == "8.1.2016 11.46.15"
def test_format_interval_same_instant_3():
def test_format_interval_12_hour():
t2 = TEST_DT
t1 = t2 - datetime.timedelta(hours=1)
- assert dates.format_interval(t1, t2, "hm", locale="en") == "10:46 \u2013 11:46 AM"
+ assert dates.format_interval(t1, t2, "hm", locale="en") == "10:46\u2009\u2013\u200911:46\u202fAM"
def test_format_interval_invalid_skeleton():
def test_get_time_format():
- assert dates.get_time_format(locale='en_US').pattern == 'h:mm:ss a'
+ assert dates.get_time_format(locale='en_US').pattern == 'h:mm:ss\u202fa'
assert (dates.get_time_format('full', locale='de_DE').pattern ==
'HH:mm:ss zzzz')
def test_get_timezone_location(timezone_getter):
tz = timezone_getter('America/St_Johns')
assert (dates.get_timezone_location(tz, locale='de_DE') ==
- "Kanada (St. John\u2019s) Zeit")
+ "Kanada (St. John\u2019s) (Ortszeit)")
assert (dates.get_timezone_location(tz, locale='en') ==
'Canada (St. John’s) Time')
assert (dates.get_timezone_location(tz, locale='en', return_city=True) ==
tz = timezone_getter('America/Mexico_City')
assert (dates.get_timezone_location(tz, locale='de_DE') ==
- 'Mexiko (Mexiko-Stadt) Zeit')
+ 'Mexiko (Mexiko-Stadt) (Ortszeit)')
tz = timezone_getter('Europe/Berlin')
assert (dates.get_timezone_location(tz, locale='de_DE') ==
- 'Deutschland (Berlin) Zeit')
+ 'Deutschland (Berlin) (Ortszeit)')
@pytest.mark.parametrize(
def test_format_datetime(timezone_getter):
dt = datetime(2007, 4, 1, 15, 30)
assert (dates.format_datetime(dt, locale='en_US') ==
- 'Apr 1, 2007, 3:30:00 PM')
+ 'Apr 1, 2007, 3:30:00\u202fPM')
full = dates.format_datetime(
dt, 'full',
locale='fr_FR'
)
assert full == (
- 'dimanche 1 avril 2007 à 17:30:00 heure '
- 'd\u2019\xe9t\xe9 d\u2019Europe centrale'
+ 'dimanche 1 avril 2007, 17:30:00 heure '
+ 'd’été d’Europe centrale'
)
custom = dates.format_datetime(
dt, "yyyy.MM.dd G 'at' HH:mm:ss zzz",
def test_format_time(timezone_getter):
t = time(15, 30)
- assert dates.format_time(t, locale='en_US') == '3:30:00 PM'
+ assert dates.format_time(t, locale='en_US') == '3:30:00\u202fPM'
assert dates.format_time(t, format='short', locale='de_DE') == '15:30'
assert (dates.format_time(t, "hh 'o''clock' a", locale='en') ==
assert paris == '15:30:00 heure normale d’Europe centrale'
us_east = dates.format_time(t, format='full', tzinfo=eastern, locale='en_US')
- assert us_east == '3:30:00 PM Eastern Standard Time'
+ assert us_east == '3:30:00\u202fPM Eastern Standard Time'
def test_format_skeleton(timezone_getter):
# See: https://github.com/python-babel/babel/issues/428
tz = timezone_getter('America/Los_Angeles')
t = _localize(tz, datetime(2016, 1, 6, 7))
- assert dates.format_time(t, format='long', locale='en_US') == "7:00:00 AM PST"
+ assert dates.format_time(t, format='long', locale='en_US') == "7:00:00\u202fAM PST"
assert dates.format_time(t, format='long', locale='en_GB') == "07:00:00 Pacific Standard Time"
assert dates.get_timezone_name(t, width='short', locale='en_US') == "PST"
assert dates.get_timezone_name(t, width='short', locale='en_GB') == "Pacific Standard Time"
assert (numbers.format_currency(0, 'USD', locale='en_US')
== '$0.00')
assert (numbers.format_currency(1099.98, 'USD', locale='es_CO')
- == 'US$\xa01.099,98')
+ == 'US$1.099,98')
assert (numbers.format_currency(1099.98, 'EUR', locale='de_DE')
== '1.099,98\xa0\u20ac')
assert (numbers.format_currency(1099.98, 'EUR', '\xa4\xa4 #,##0.00',
locale='en_US')
== '$1,099.98')
assert (numbers.format_currency(1, 'USD', locale='es_AR')
- == 'US$\xa01,00') # one
+ == 'US$1,00') # one
assert (numbers.format_currency(1000000, 'USD', locale='es_AR')
- == 'US$\xa01.000.000,00') # many
+ == 'US$1.000.000,00') # many
assert (numbers.format_currency(0, 'USD', locale='es_AR')
- == 'US$\xa00,00') # other
+ == 'US$0,00') # other
def test_format_currency_format_type():
assert numbers.format_compact_currency(1234, 'JPY', locale='ja_JP', format_type="short") == '¥1234'
assert numbers.format_compact_currency(123456, 'JPY', locale='ja_JP', format_type="short") == '¥12万'
assert numbers.format_compact_currency(123456, 'JPY', locale='ja_JP', format_type="short", fraction_digits=2) == '¥12.35万'
- assert numbers.format_compact_currency(123, 'EUR', locale='yav', format_type="short") == '123\xa0€'
- assert numbers.format_compact_currency(12345, 'EUR', locale='yav', format_type="short") == '12K\xa0€'
+ assert numbers.format_compact_currency(123, 'EUR', locale='yav', format_type="short") == '€\xa0123'
+ assert numbers.format_compact_currency(12345, 'EUR', locale='yav', format_type="short") == '€\xa012K'
assert numbers.format_compact_currency(123456789, 'EUR', locale='de_DE', fraction_digits=1) == '123,5\xa0Mio.\xa0€'
def test_format_currency_precision(input_value, expected_value):
# Test precision conservation.
assert numbers.format_currency(
- decimal.Decimal(input_value), 'USD', locale='en_US', decimal_quantization=False) == expected_value
+ decimal.Decimal(input_value),
+ currency='USD',
+ locale='en_US',
+ decimal_quantization=False,
+ ) == expected_value
def test_format_currency_quantization():
def test_format_datetime(timezone_getter):
fmt = support.Format('en_US', tzinfo=timezone_getter('US/Eastern'))
when = datetime(2007, 4, 1, 15, 30)
- assert fmt.datetime(when) == 'Apr 1, 2007, 11:30:00 AM'
+ assert fmt.datetime(when) == 'Apr 1, 2007, 11:30:00\u202fAM'
def test_format_time(timezone_getter):
fmt = support.Format('en_US', tzinfo=timezone_getter('US/Eastern'))
- assert fmt.time(datetime(2007, 4, 1, 15, 30)) == '11:30:00 AM'
+ assert fmt.time(datetime(2007, 4, 1, 15, 30)) == '11:30:00\u202fAM'
def test_format_timedelta():