No aliasing or normalizing takes place.
"""
- language, encoding = localetuple
- if language is None:
- language = 'C'
- if encoding is None:
- return language
- else:
- return language + '.' + encoding
+ try:
+ language, encoding = localetuple
+
+ if language is None:
+ language = 'C'
+ if encoding is None:
+ return language
+ else:
+ return language + '.' + encoding
+ except (TypeError, ValueError):
+ raise TypeError('Locale must be None, a string, or an iterable of two strings -- language code, encoding.')
def getdefaultlocale(envvars=('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE')):
locale.setlocale(locale.LC_CTYPE, loc)
self.assertEqual(loc, locale.getlocale(locale.LC_CTYPE))
+ def test_invalid_locale_format_in_localetuple(self):
+ with self.assertRaises(TypeError):
+ locale.setlocale(locale.LC_ALL, b'fi_FI')
+
+ def test_invalid_iterable_in_localetuple(self):
+ with self.assertRaises(TypeError):
+ locale.setlocale(locale.LC_ALL, (b'not', b'valid'))
+
def test_main():
tests = [
Amrit Prem
Paul Prescod
Donovan Preston
+Jyrki Pulliainen
Steve Purcell
Fernando Pérez
Eduardo Pérez
Library
-------
+- Issue #3067: locale.setlocale() now raises TypeError if the second
+ argument is an invalid iterable. Initial patch by Jyrki Pulliainen.
+
- Issue #13140: Fix the daemon_threads attribute of ThreadingMixIn.
- Issue #13339: Fix compile error in posixmodule.c due to missing semicolon.