0f501705efe13ae4cfae0da818a033c5ba5a3319
[python-collate.git] / collate / __init__.py
1 import collate.errors
2 import collate._locale
3
4 try:
5 import collate.codepoint as default
6 except ImportError:
7 pass
8 try:
9 import collate.syslocale as default
10 except ImportError:
11 pass
12 try:
13 import collate.uca as default
14 except ImportError:
15 pass
16 try:
17 import collate.icu as default
18 except ImportError:
19 pass
20
21 collator = None
22
23 def set_default(backend=None, locale=None, encoding=None):
24 global collator
25 global default
26
27 if backend is None:
28 backend = default
29 locales = collate._locale.localelist(locale)
30 c = None
31 for locale in locales:
32 locale, encoding_ = collate._locale.getpair(locale, encoding)
33 try:
34 c = backend.Collator(locale, encoding_)
35 except collate.errors.InvalidLocaleError:
36 pass
37 if c is not None:
38 collator = c
39 default = backend
40
41 def key(string):
42 return collator.key(string)
43
44 def cmp(a, b):
45 return collator.cmp(a, b)
46
47 set_default()