def test_register_converter(self): class TestConverter(LanguageReverseConverter): def __init__(self): self.to_test = {'fra': 'test1', 'eng': 'test2'} self.from_test = {'test1': 'fra', 'test2': 'eng'} def convert(self, alpha3, country=None, script=None): if alpha3 not in self.to_test: raise LanguageConvertError(alpha3, country, script) return self.to_test[alpha3] def reverse(self, test): if test not in self.from_test: raise LanguageReverseError(test) return (self.from_test[test], None) language = Language('fra') self.assertFalse(hasattr(language, 'test')) register_language_converter('test', TestConverter) self.assertTrue(hasattr(language, 'test')) self.assertIn('test', LANGUAGE_CONVERTERS) self.assertEqual(Language('fra').test, 'test1') self.assertEqual(Language.fromtest('test2').alpha3, 'eng') unregister_language_converter('test') self.assertNotIn('test', LANGUAGE_CONVERTERS) with self.assertRaises(KeyError): Language.fromtest('test1') with self.assertRaises(AttributeError): Language('fra').test clear_language_converters() load_language_converters()
babelfish.Language.fromalpha3b, babelfish.Language.fromalpha2, babelfish.Language.fromname, babelfish.Language.fromopensubtitles]: try: c = conv(name) return c.alpha3, c.country, c.script except (ValueError, babelfish.LanguageReverseError): pass raise babelfish.LanguageReverseError(name) ALL_NAMES = frozenset(c.lower() for c in GuessitConverter().codes) babelfish.register_language_converter('guessit', GuessitConverter) COUNTRIES_SYN = {'ES': ['españa'], 'GB': ['UK'], 'BR': ['brazilian', 'bra'], # FIXME: this one is a bit of a stretch, not sure how to do # it properly, though... 'MX': ['Latinoamérica', 'latin america'] } class GuessitCountryConverter(babelfish.CountryReverseConverter): def __init__(self): self.codes = set() self.guessit_exceptions = {}