Hello community,

here is the log from the commit of package python-langtable for 
openSUSE:Leap:15.2 checked in at 2020-04-18 18:41:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-langtable (Old)
 and      /work/SRC/openSUSE:Leap:15.2/.python-langtable.new.2738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-langtable"

Sat Apr 18 18:41:21 2020 rev:2 rq:795338 version:0.0.51

Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/python-langtable/python-langtable.changes      
2020-02-22 17:51:35.473668222 +0100
+++ 
/work/SRC/openSUSE:Leap:15.2/.python-langtable.new.2738/python-langtable.changes
    2020-04-18 18:41:22.369996983 +0200
@@ -1,0 +2,12 @@
+Wed Apr 15 10:32:10 UTC 2020 - Marketa Calabkova <[email protected]>
+
+- update to version 0.0.51
+  * Parse stuff in glibc locale names after @ which is not a script as a 
variant
+  * Add ckb_IQ.UTF-8 locale
+  * Make parse_locale() return something reasonable for
+    C, POSIX, en_US_POSIX, and C.UTF-8
+  * Fix exception in language_name() when called with languageId=''
+  * Add new public function parse_locale()
+  * Let info() print a bit more stuff
+
+-------------------------------------------------------------------

Old:
----
  langtable-0.0.48.tar.gz

New:
----
  langtable-0.0.51.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-langtable.spec ++++++
--- /var/tmp/diff_new_pack.tg8OJR/_old  2020-04-18 18:41:22.713997709 +0200
+++ /var/tmp/diff_new_pack.tg8OJR/_new  2020-04-18 18:41:22.713997709 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-langtable
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,14 +18,14 @@
 
 %define skip_python2 1
 Name:           python-langtable
-Version:        0.0.48
+Version:        0.0.51
 Release:        0
 Summary:        Database to guess defaults for locale settings
 # the translations in languages.xml and territories.xml are (mostly)
 # imported from CLDR and are thus under the Unicode license, the
 # short name for this license is "MIT", see:
 # 
https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29
-License:        GPL-3.0+
+License:        GPL-3.0-or-later
 Group:          System/Localization
 URL:            https://github.com/mike-fabian/langtable
 Source0:        
https://github.com/mike-fabian/langtable/releases/download/%{version}/langtable-%{version}.tar.gz

++++++ langtable-0.0.48.tar.gz -> langtable-0.0.51.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langtable-0.0.48/ChangeLog 
new/langtable-0.0.51/ChangeLog
--- old/langtable-0.0.48/ChangeLog      2019-11-06 06:40:37.000000000 +0100
+++ new/langtable-0.0.51/ChangeLog      2020-01-14 11:12:57.000000000 +0100
@@ -1,3 +1,19 @@
+2020-01-14  Mike FABIAN  <[email protected]>
+
+       * Parse stuff in glibc locale names after @ which is not a script as a 
variant
+       * Add ckb_IQ.UTF-8 locale
+
+2019-12-20  Mike FABIAN  <[email protected]>
+
+       * Make parse_locale() return something reasonable for
+       C, POSIX, en_US_POSIX, and C.UTF-8
+       * Fix exception in language_name() when called with languageId=''
+
+2019-12-12  Mike FABIAN  <[email protected]>
+
+       * Add new public function parse_locale()
+       * Let info() print a bit more stuff
+
 2019-11-05  Mike FABIAN  <[email protected]>
 
        * Fix typo in mo entry
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langtable-0.0.48/PKG-INFO 
new/langtable-0.0.51/PKG-INFO
--- old/langtable-0.0.48/PKG-INFO       2019-11-06 06:41:41.000000000 +0100
+++ new/langtable-0.0.51/PKG-INFO       2020-01-14 11:40:29.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: langtable
-Version: 0.0.48
+Version: 0.0.51
 Summary: guess reasonable defaults for locale, keyboard, territory, ...
 Home-page: https://github.com/mike-fabian/langtable
 Author: Mike FABIAN
Binary files old/langtable-0.0.48/langtable/data/languages.xml.gz and 
new/langtable-0.0.51/langtable/data/languages.xml.gz differ
Binary files old/langtable-0.0.48/langtable/data/territories.xml.gz and 
new/langtable-0.0.51/langtable/data/territories.xml.gz differ
Binary files old/langtable-0.0.48/langtable/data/timezoneidparts.xml.gz and 
new/langtable-0.0.51/langtable/data/timezoneidparts.xml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langtable-0.0.48/langtable/langtable.py 
new/langtable-0.0.51/langtable/langtable.py
--- old/langtable-0.0.48/langtable/langtable.py 2019-11-06 06:41:24.000000000 
+0100
+++ new/langtable-0.0.51/langtable/langtable.py 2020-01-14 11:09:55.000000000 
+0100
@@ -18,6 +18,7 @@
 ######################################################################
 # Public API:
 #
+#     parse_locale()
 #     list_locales()
 #     list_keyboards()
 #     list_consolefonts()
@@ -97,10 +98,15 @@
 import re
 import logging
 import gzip
+import collections
 
 import xml.parsers.expat
 from xml.sax.handler import ContentHandler
 
+Locale = collections.namedtuple(
+    'Locale',
+    ['language', 'script', 'territory', 'variant', 'encoding'])
+
 _INFO = {'data_files_read': []}
 
 # will be replaced by “make install”:
@@ -965,7 +971,172 @@
             break
     return ranked_list
 
-def _parse_and_split_languageId(languageId=None, scriptId=None, 
territoryId=None):
+def parse_locale(localeId):
+    '''
+    Parses a locale name in glibc or CLDR format and returns
+    language, script, territory, variant, and encoding
+
+    :param localeId: The name of the locale
+    :type localeId: string
+    :return: The parts of the locale: language, script, territory, variant, 
encoding
+    :rtype: A namedtuple of strings
+            Locale(language=string,
+                   script=string,
+                   territory=string,
+                   variant=string,
+                   encoding=string)
+
+    It replaces glibc names for scripts like “latin”
+    with the iso-15924 script names like “Latn”.
+    I.e. these inputs all give the same result:
+
+        “sr_latin_RS”
+        “sr_Latn_RS”
+        “sr_RS@latin”
+        “sr_RS@Latn”
+
+    Examples:
+
+    >>> parse_locale('de_DE')
+    Locale(language='de', script='', territory='DE', variant='', encoding='')
+
+    >>> parse_locale('de_DE.UTF-8')
+    Locale(language='de', script='', territory='DE', variant='', 
encoding='UTF-8')
+
+    >>> parse_locale('de_DE.utf8')
+    Locale(language='de', script='', territory='DE', variant='', 
encoding='utf8')
+
+    >>> parse_locale('de_DE@euro')
+    Locale(language='de', script='', territory='DE', variant='EURO', 
encoding='')
+
+    >>> parse_locale('de_DE.ISO-8859-15')
+    Locale(language='de', script='', territory='DE', variant='', 
encoding='ISO-8859-15')
+
+    >>> parse_locale('de_DE.ISO-8859-15@euro')
+    Locale(language='de', script='', territory='DE', variant='EURO', 
encoding='ISO-8859-15')
+
+    >>> parse_locale('de_DE.iso885915@euro')
+    Locale(language='de', script='', territory='DE', variant='EURO', 
encoding='iso885915')
+
+    >>> parse_locale('gez_ER.UTF-8@abegede')
+    Locale(language='gez', script='', territory='ER', variant='ABEGEDE', 
encoding='UTF-8')
+
+    >>> parse_locale('ar_ER.UTF-8@saaho')
+    Locale(language='ar', script='', territory='ER', variant='SAAHO', 
encoding='UTF-8')
+
+    >>> parse_locale('zh_Hant_TW')
+    Locale(language='zh', script='Hant', territory='TW', variant='', 
encoding='')
+
+    >>> parse_locale('zh_TW')
+    Locale(language='zh', script='', territory='TW', variant='', encoding='')
+
+    >>> parse_locale('es_419')
+    Locale(language='es', script='', territory='419', variant='', encoding='')
+
+    >>> parse_locale('sr_latin_RS')
+    Locale(language='sr', script='Latn', territory='RS', variant='', 
encoding='')
+
+    >>> parse_locale('sr_Latn_RS')
+    Locale(language='sr', script='Latn', territory='RS', variant='', 
encoding='')
+
+    >>> parse_locale('sr_RS@latin')
+    Locale(language='sr', script='Latn', territory='RS', variant='', 
encoding='')
+
+    >>> parse_locale('sr_RS@Latn')
+    Locale(language='sr', script='Latn', territory='RS', variant='', 
encoding='')
+
+    >>> parse_locale('sr_RS.UTF-8@latin')
+    Locale(language='sr', script='Latn', territory='RS', variant='', 
encoding='UTF-8')
+
+    >>> parse_locale('ca_ES')
+    Locale(language='ca', script='', territory='ES', variant='', encoding='')
+
+    >>> parse_locale('ca_ES.UTF-8')
+    Locale(language='ca', script='', territory='ES', variant='', 
encoding='UTF-8')
+
+    >>> parse_locale('ca_ES_VALENCIA')
+    Locale(language='ca', script='', territory='ES', variant='VALENCIA', 
encoding='')
+
+    >>> parse_locale('ca_Latn_ES_VALENCIA')
+    Locale(language='ca', script='Latn', territory='ES', variant='VALENCIA', 
encoding='')
+
+    >>> parse_locale('ca_ES.UTF-8@valencia')
+    Locale(language='ca', script='', territory='ES', variant='VALENCIA', 
encoding='UTF-8')
+
+    >>> parse_locale('ca_ES@valencia')
+    Locale(language='ca', script='', territory='ES', variant='VALENCIA', 
encoding='')
+
+    >>> parse_locale('en_US_POSIX')
+    Locale(language='en', script='', territory='US', variant='POSIX', 
encoding='')
+
+    >>> parse_locale('POSIX')
+    Locale(language='en', script='', territory='US', variant='POSIX', 
encoding='')
+
+    >>> parse_locale('C')
+    Locale(language='en', script='', territory='US', variant='POSIX', 
encoding='')
+
+    >>> parse_locale('C.UTF-8')
+    Locale(language='en', script='', territory='US', variant='POSIX', 
encoding='UTF-8')
+    '''
+    language = ''
+    script = ''
+    territory = ''
+    variant = ''
+    encoding = ''
+    if localeId:
+        dot_index = localeId.find('.')
+        at_index = localeId.find('@')
+        if dot_index >= 0 and at_index > dot_index:
+            encoding  = localeId[dot_index + 1:at_index]
+            localeId = localeId[:dot_index] + localeId[at_index:]
+        elif dot_index >= 0:
+            encoding = localeId[dot_index + 1:]
+            localeId = localeId[:dot_index]
+    if localeId:
+        valencia_index = localeId.lower().find('@valencia')
+        if valencia_index < 0:
+            valencia_index = localeId.upper().find('_VALENCIA')
+        if valencia_index >= 0:
+            variant = 'VALENCIA'
+            localeId = localeId[:valencia_index]
+    if localeId:
+        if localeId in ('C', 'POSIX', 'en_US_POSIX'):
+            language = 'en'
+            territory = 'US'
+            variant = 'POSIX'
+            localeId = ''
+    if localeId:
+        for key in _glibc_script_ids:
+            localeId = localeId.replace(key, _glibc_script_ids[key])
+            if localeId.endswith('@' + _glibc_script_ids[key]):
+                script = _glibc_script_ids[key]
+                localeId = localeId.replace('@' + _glibc_script_ids[key], '')
+    if localeId:
+        at_index = localeId.find('@')
+        if at_index >= 0:
+            # If there is still an @ followed by something, it is not
+            # a known script, otherwise it would have been parsed as a
+            # script in the previous section. In that case it is a
+            # variant of the locale.
+            variant = localeId[at_index + 1:].upper()
+            localeId = localeId[:at_index]
+    if localeId:
+        match = _cldr_locale_pattern.match(localeId)
+        if match:
+            language = match.group('language')
+            if match.group('script'):
+                script = match.group('script')
+            if match.group('territory'):
+                territory = match.group('territory')
+        else:
+            logging.info("localeId contains invalid locale id=%s" %localeId)
+    return Locale(language=language,
+                  script=script,
+                  territory=territory,
+                  variant=variant,
+                  encoding=encoding)
+
+def _parse_and_split_languageId(languageId='', scriptId='', territoryId=''):
     '''
     Parses languageId and if it contains a valid ICU locale id,
     returns the values for language, script, and territory found
@@ -980,71 +1151,123 @@
     Examples:
 
     >>> _parse_and_split_languageId(languageId='de_DE')
-    ('de', None, 'DE')
+    Locale(language='de', script='', territory='DE', variant='', encoding='')
+
+    >>> _parse_and_split_languageId(languageId='de_DE.UTF-8')
+    Locale(language='de', script='', territory='DE', variant='', 
encoding='UTF-8')
+
+    >>> _parse_and_split_languageId(languageId='de_DE.utf8')
+    Locale(language='de', script='', territory='DE', variant='', 
encoding='utf8')
+
+    >>> _parse_and_split_languageId(languageId='de_DE@euro')
+    Locale(language='de', script='', territory='DE', variant='EURO', 
encoding='')
+
+    >>> _parse_and_split_languageId(languageId='de_DE.ISO-8859-15')
+    Locale(language='de', script='', territory='DE', variant='', 
encoding='ISO-8859-15')
+
+    >>> _parse_and_split_languageId(languageId='de_DE.ISO-8859-15@euro')
+    Locale(language='de', script='', territory='DE', variant='EURO', 
encoding='ISO-8859-15')
+
+    >>> _parse_and_split_languageId(languageId='de_DE.iso885915@euro')
+    Locale(language='de', script='', territory='DE', variant='EURO', 
encoding='iso885915')
+
+    >>> _parse_and_split_languageId(languageId='gez_ER.UTF-8@abegede')
+    Locale(language='gez', script='', territory='ER', variant='ABEGEDE', 
encoding='UTF-8')
+
+    >>> _parse_and_split_languageId(languageId='ar_ER.UTF-8@saaho')
+    Locale(language='ar', script='', territory='ER', variant='SAAHO', 
encoding='UTF-8')
 
     >>> _parse_and_split_languageId(languageId='zh_Hant_TW')
-    ('zh', 'Hant', 'TW')
+    Locale(language='zh', script='Hant', territory='TW', variant='', 
encoding='')
+
+    >>> _parse_and_split_languageId(languageId='zh_TW')
+    Locale(language='zh', script='Hant', territory='TW', variant='', 
encoding='')
+
+    >>> _parse_and_split_languageId(languageId='zh_Hans_CN')
+    Locale(language='zh', script='Hans', territory='CN', variant='', 
encoding='')
+
+    >>> _parse_and_split_languageId(languageId='zh_CN')
+    Locale(language='zh', script='Hans', territory='CN', variant='', 
encoding='')
 
     >>> _parse_and_split_languageId(languageId='es_419')
-    ('es', None, '419')
+    Locale(language='es', script='', territory='419', variant='', encoding='')
 
     >>> _parse_and_split_languageId(languageId='sr_latin_RS')
-    ('sr', 'Latn', 'RS')
+    Locale(language='sr', script='Latn', territory='RS', variant='', 
encoding='')
 
     >>> _parse_and_split_languageId(languageId='sr_Latn_RS')
-    ('sr', 'Latn', 'RS')
+    Locale(language='sr', script='Latn', territory='RS', variant='', 
encoding='')
 
     >>> _parse_and_split_languageId(languageId='ca_ES')
-    ('ca', None, 'ES')
+    Locale(language='ca', script='', territory='ES', variant='', encoding='')
 
     >>> _parse_and_split_languageId(languageId='ca_ES.UTF-8')
-    ('ca', None, 'ES')
+    Locale(language='ca', script='', territory='ES', variant='', 
encoding='UTF-8')
 
     >>> _parse_and_split_languageId(languageId='ca_ES_VALENCIA')
-    ('ca_ES_VALENCIA', None, None)
+    Locale(language='ca_ES_VALENCIA', script='', territory='ES', 
variant='VALENCIA', encoding='')
+
+    >>> _parse_and_split_languageId(languageId='ca_Latn_ES_VALENCIA')
+    Locale(language='ca_ES_VALENCIA', script='Latn', territory='ES', 
variant='VALENCIA', encoding='')
+
+    >>> _parse_and_split_languageId(languageId='ca_Latn_ES_valencia')
+    Locale(language='ca_ES_VALENCIA', script='Latn', territory='ES', 
variant='VALENCIA', encoding='')
 
     >>> _parse_and_split_languageId(languageId='ca_ES.UTF-8@valencia')
-    ('ca_ES_VALENCIA', None, None)
+    Locale(language='ca_ES_VALENCIA', script='', territory='ES', 
variant='VALENCIA', encoding='UTF-8')
 
     >>> _parse_and_split_languageId(languageId='ca_ES@valencia')
-    ('ca_ES_VALENCIA', None, None)
+    Locale(language='ca_ES_VALENCIA', script='', territory='ES', 
variant='VALENCIA', encoding='')
+
+    >>> _parse_and_split_languageId(languageId='ca_Latn_ES@valencia')
+    Locale(language='ca_ES_VALENCIA', script='Latn', territory='ES', 
variant='VALENCIA', encoding='')
+
+    >>> _parse_and_split_languageId(languageId='ca_Latn_ES@VALENCIA')
+    Locale(language='ca_ES_VALENCIA', script='Latn', territory='ES', 
variant='VALENCIA', encoding='')
     '''
-    if languageId and languageId.lower().find('valencia') >= 0:
-        languageId = 'ca_ES_VALENCIA'
-        scriptId = None
-        territoryId = None
-    if languageId:
-        dot_index = languageId.find('.')
-        at_index = languageId.find('@')
-        if dot_index >= 0 and at_index > dot_index:
-            languageId = languageId[:dot_index] + languageId[at_index:]
-        elif dot_index >= 0:
-            languageId = languageId[:dot_index]
-    for key in _glibc_script_ids:
-        if scriptId:
-            scriptId = scriptId.replace(key, _glibc_script_ids[key])
-        if languageId:
-            if languageId.endswith('@'+key):
-                scriptId = _glibc_script_ids[key]
-            languageId = languageId.replace(key, _glibc_script_ids[key])
-    if (languageId):
-        match = _cldr_locale_pattern.match(languageId)
-        if match:
-            languageId = match.group('language')
-            if match.group('script'):
-                scriptId = match.group('script')
-            if match.group('territory'):
-                territoryId = match.group('territory')
-        else:
-            logging.info("languageId contains invalid locale id=%s" 
%languageId)
+    locale = parse_locale(languageId)
+    if locale.variant == 'POSIX': # ignore the posix variant
+        locale = Locale(language=locale.language,
+                        script=locale.script,
+                        territory=locale.territory,
+                        variant='',
+                        encoding=locale.encoding)
+    if locale.variant == 'VALENCIA':
+        locale = Locale(language='ca_ES_VALENCIA',
+                        script=locale.script,
+                        territory=locale.territory,
+                        variant=locale.variant,
+                        encoding=locale.encoding)
+    if not locale.script and scriptId:
+        if scriptId in _glibc_script_ids:
+            scriptId = _glibc_script_ids[scriptId]
+        locale = Locale(language=locale.language,
+                        script=scriptId,
+                        territory=locale.territory,
+                        variant=locale.variant,
+                        encoding=locale.encoding)
+    if not locale.territory and territoryId:
+        locale = Locale(language=locale.language,
+                        script=locale.script,
+                        territory=territoryId,
+                        variant=locale.variant,
+                        encoding=locale.encoding)
     # if the language is Chinese and only the territory is given
     # but not the script, add the default script for the territory:
-    if languageId in ('zh', 'cmn') and territoryId and not scriptId:
-        if territoryId in ['CN', 'SG']:
-            scriptId = 'Hans'
-        elif territoryId in ['HK', 'MO', 'TW']:
-            scriptId = 'Hant'
-    return (languageId, scriptId, territoryId)
+    if locale.language in ('zh', 'cmn') and locale.territory and not 
locale.script:
+        if locale.territory in ['CN', 'SG']:
+            locale = Locale(language=locale.language,
+                            script='Hans',
+                            territory=locale.territory,
+                            variant=locale.variant,
+                            encoding=locale.encoding)
+        elif locale.territory in ['HK', 'MO', 'TW']:
+            locale = Locale(language=locale.language,
+                            script='Hant',
+                            territory=locale.territory,
+                            variant=locale.variant,
+                            encoding=locale.encoding)
+    return locale
 
 def territory_name(territoryId = None, languageIdQuery = None, scriptIdQuery = 
None, territoryIdQuery = None, fallback=True):
     u'''Query translations of territory names
@@ -1079,10 +1302,12 @@
     >>> print(territory_name(territoryId="CH", languageIdQuery="ja"))
     スイス
     '''
-    languageIdQuery, scriptIdQuery, territoryIdQuery = 
_parse_and_split_languageId(
-        languageId=languageIdQuery,
-        scriptId=scriptIdQuery,
-        territoryId=territoryIdQuery)
+    locale = _parse_and_split_languageId(languageId=languageIdQuery,
+                                         scriptId=scriptIdQuery,
+                                         territoryId=territoryIdQuery)
+    languageIdQuery = locale.language
+    scriptIdQuery = locale.script
+    territoryIdQuery = locale.territory
     if territoryId in _territories_db:
         if languageIdQuery and scriptIdQuery and territoryIdQuery:
             icuLocaleIdQuery = 
languageIdQuery+'_'+scriptIdQuery+'_'+territoryIdQuery
@@ -1161,15 +1386,43 @@
 
     >>> print(language_name(languageId="es_419", languageIdQuery="en"))
     Spanish (Latin America)
+
+    >>> print(language_name(languageId="ca_ES"))
+    català (Espanya)
+
+    >>> print(language_name(languageId="ca_ES.UTF-8"))
+    català (Espanya)
+
+    >>> print(language_name(languageId="ca_ES@valencia"))
+    valencià (Espanya)
+
+    >>> print(language_name(languageId="ca_ES.utf8@valencia"))
+    valencià (Espanya)
+
+    >>> print(language_name(languageId="ca_ES.utf8@valencia"))
+    valencià (Espanya)
+
+    >>> print(language_name(languageId="ca_ES.utf8@valencia", 
languageIdQuery='de'))
+    Valencianisch (Spanien)
+
+    >>> print(language_name(languageId="ca_ES.utf8@valencia", 
languageIdQuery='en'))
+    Valencian (Spain)
     '''
-    languageId, scriptId, territoryId = _parse_and_split_languageId(
-        languageId=languageId,
-        scriptId=scriptId,
-        territoryId=territoryId)
-    languageIdQuery, scriptIdQuery, territoryIdQuery = 
_parse_and_split_languageId(
-        languageId=languageIdQuery,
-        scriptId=scriptIdQuery,
-        territoryId=territoryIdQuery)
+    if not languageId:
+        return ''
+    icuLocaleId = ''
+    locale = _parse_and_split_languageId(languageId=languageId,
+                                         scriptId=scriptId,
+                                         territoryId=territoryId)
+    languageId = locale.language
+    scriptId = locale.script
+    territoryId = locale.territory
+    localeQuery = _parse_and_split_languageId(languageId=languageIdQuery,
+                                              scriptId=scriptIdQuery,
+                                              territoryId=territoryIdQuery)
+    languageIdQuery = localeQuery.language
+    scriptIdQuery = localeQuery.script
+    territoryIdQuery = localeQuery.territory
     if not languageIdQuery:
         # get the endonym
         languageIdQuery = languageId
@@ -1248,35 +1501,37 @@
                 icuLocaleIdQuery = languageIdQuery
                 if icuLocaleIdQuery in _languages_db[icuLocaleId].names:
                     return _languages_db[icuLocaleId].names[icuLocaleIdQuery]
-        lname = language_name(languageId=languageId,
-                              languageIdQuery=languageIdQuery,
-                              scriptIdQuery=scriptIdQuery,
-                              territoryIdQuery=territoryIdQuery)
-        cname = territory_name(territoryId=territoryId,
-                             languageIdQuery=languageIdQuery,
-                             scriptIdQuery=scriptIdQuery,
-                             territoryIdQuery=territoryIdQuery)
-        if lname and cname:
-            return lname + ' ('+cname+')'
-    if languageId:
-        icuLocaleId = languageId
-        if icuLocaleId in _languages_db:
-            if languageIdQuery and  scriptIdQuery and territoryIdQuery:
-                icuLocaleIdQuery = 
languageIdQuery+'_'+scriptIdQuery+'_'+territoryIdQuery
-                if icuLocaleIdQuery in _languages_db[icuLocaleId].names:
-                    return _languages_db[icuLocaleId].names[icuLocaleIdQuery]
-            if languageIdQuery and  scriptIdQuery:
-                icuLocaleIdQuery = languageIdQuery+'_'+scriptIdQuery
-                if icuLocaleIdQuery in _languages_db[icuLocaleId].names:
-                    return _languages_db[icuLocaleId].names[icuLocaleIdQuery]
-            if  languageIdQuery and  territoryIdQuery:
-                icuLocaleIdQuery = languageIdQuery+'_'+territoryIdQuery
-                if icuLocaleIdQuery in _languages_db[icuLocaleId].names:
-                    return _languages_db[icuLocaleId].names[icuLocaleIdQuery]
-            if languageIdQuery:
-                icuLocaleIdQuery = languageIdQuery
-                if icuLocaleIdQuery in _languages_db[icuLocaleId].names:
-                    return _languages_db[icuLocaleId].names[icuLocaleIdQuery]
+        if not locale.variant in ('VALENCIA',):
+            # Don’t do this if locale variant is VALENCIA
+            # because then this will run into endless recursion:
+            lname = language_name(languageId=languageId,
+                                  languageIdQuery=languageIdQuery,
+                                  scriptIdQuery=scriptIdQuery,
+                                  territoryIdQuery=territoryIdQuery)
+            cname = territory_name(territoryId=territoryId,
+                                 languageIdQuery=languageIdQuery,
+                                 scriptIdQuery=scriptIdQuery,
+                                 territoryIdQuery=territoryIdQuery)
+            if lname and cname:
+                return lname + ' ('+cname+')'
+    icuLocaleId = languageId
+    if icuLocaleId in _languages_db:
+        if languageIdQuery and  scriptIdQuery and territoryIdQuery:
+            icuLocaleIdQuery = 
languageIdQuery+'_'+scriptIdQuery+'_'+territoryIdQuery
+            if icuLocaleIdQuery in _languages_db[icuLocaleId].names:
+                return _languages_db[icuLocaleId].names[icuLocaleIdQuery]
+        if languageIdQuery and  scriptIdQuery:
+            icuLocaleIdQuery = languageIdQuery+'_'+scriptIdQuery
+            if icuLocaleIdQuery in _languages_db[icuLocaleId].names:
+                return _languages_db[icuLocaleId].names[icuLocaleIdQuery]
+        if  languageIdQuery and  territoryIdQuery:
+            icuLocaleIdQuery = languageIdQuery+'_'+territoryIdQuery
+            if icuLocaleIdQuery in _languages_db[icuLocaleId].names:
+                return _languages_db[icuLocaleId].names[icuLocaleIdQuery]
+        if languageIdQuery:
+            icuLocaleIdQuery = languageIdQuery
+            if icuLocaleIdQuery in _languages_db[icuLocaleId].names:
+                return _languages_db[icuLocaleId].names[icuLocaleIdQuery]
     if (fallback
         and icuLocaleId
         and icuLocaleId in _languages_db
@@ -1346,10 +1601,12 @@
     >>> print(timezone_name(timezoneId='Pacific/Pago_Pago', 
languageIdQuery='xxx'))
     Pacific/Pago_Pago
     '''
-    languageIdQuery, scriptIdQuery, territoryIdQuery = 
_parse_and_split_languageId(
-        languageId=languageIdQuery,
-        scriptId=scriptIdQuery,
-        territoryId=territoryIdQuery)
+    locale = _parse_and_split_languageId(languageId=languageIdQuery,
+                                         scriptId=scriptIdQuery,
+                                         territoryId=territoryIdQuery)
+    languageIdQuery = locale.language
+    scriptIdQuery = locale.script
+    territoryIdQuery = locale.territory
     if languageIdQuery and scriptIdQuery and territoryIdQuery:
         name = _timezone_name(
             timezoneId=timezoneId,
@@ -1510,10 +1767,12 @@
     '''
     ranked_locales = {}
     skipTerritory = False
-    languageId, scriptId, territoryId = _parse_and_split_languageId(
-        languageId=languageId,
-        scriptId=scriptId,
-        territoryId=territoryId)
+    locale = _parse_and_split_languageId(languageId=languageId,
+                                         scriptId=scriptId,
+                                         territoryId=territoryId)
+    languageId = locale.language
+    scriptId = locale.script
+    territoryId = locale.territory
     if languageId and scriptId and territoryId and 
languageId+'_'+scriptId+'_'+territoryId in _languages_db:
         languageId = languageId+'_'+scriptId+'_'+territoryId
         skipTerritory = True
@@ -1608,10 +1867,12 @@
     '''
     ranked_scripts = {}
     skipTerritory = False
-    languageId, scriptId, territoryId = _parse_and_split_languageId(
-        languageId=languageId,
-        scriptId=scriptId,
-        territoryId=territoryId)
+    locale = _parse_and_split_languageId(languageId=languageId,
+                                         scriptId=scriptId,
+                                         territoryId=territoryId)
+    languageId = locale.language
+    scriptId = locale.script
+    territoryId = locale.territory
     if scriptId:
         # scriptId is already given in the input, just return it:
         return [scriptId]
@@ -1679,10 +1940,12 @@
     '''
     ranked_inputmethods = {}
     skipTerritory = False
-    languageId, scriptId, territoryId = _parse_and_split_languageId(
-        languageId=languageId,
-        scriptId=scriptId,
-        territoryId=territoryId)
+    locale = _parse_and_split_languageId(languageId=languageId,
+                                         scriptId=scriptId,
+                                         territoryId=territoryId)
+    languageId = locale.language
+    scriptId = locale.script
+    territoryId = locale.territory
     if languageId and scriptId and territoryId and 
languageId+'_'+scriptId+'_'+territoryId in _languages_db:
         languageId = languageId+'_'+scriptId+'_'+territoryId
         skipTerritory = True
@@ -1755,10 +2018,12 @@
     '''
     ranked_keyboards = {}
     skipTerritory = False
-    languageId, scriptId, territoryId = _parse_and_split_languageId(
-        languageId=languageId,
-        scriptId=scriptId,
-        territoryId=territoryId)
+    locale = _parse_and_split_languageId(languageId=languageId,
+                                         scriptId=scriptId,
+                                         territoryId=territoryId)
+    languageId = locale.language
+    scriptId = locale.script
+    territoryId = locale.territory
     if languageId and scriptId and territoryId and 
languageId+'_'+scriptId+'_'+territoryId in _languages_db:
         languageId = languageId+'_'+scriptId+'_'+territoryId
         skipTerritory = True
@@ -1852,10 +2117,12 @@
     '''
     ranked_consolefonts = {}
     skipTerritory = False
-    languageId, scriptId, territoryId = _parse_and_split_languageId(
-        languageId=languageId,
-        scriptId=scriptId,
-        territoryId=territoryId)
+    locale = _parse_and_split_languageId(languageId=languageId,
+                                         scriptId=scriptId,
+                                         territoryId=territoryId)
+    languageId = locale.language
+    scriptId = locale.script
+    territoryId = locale.territory
     if languageId and scriptId and territoryId and 
languageId+'_'+scriptId+'_'+territoryId in _languages_db:
         languageId = languageId+'_'+scriptId+'_'+territoryId
         skipTerritory = True
@@ -1931,10 +2198,12 @@
     '''
     ranked_timezones = {}
     skipTerritory = False
-    languageId, scriptId, territoryId = _parse_and_split_languageId(
-        languageId=languageId,
-        scriptId=scriptId,
-        territoryId=territoryId)
+    locale = _parse_and_split_languageId(languageId=languageId,
+                                         scriptId=scriptId,
+                                         territoryId=territoryId)
+    languageId = locale.language
+    scriptId = locale.script
+    territoryId = locale.territory
     if languageId and scriptId and territoryId and 
languageId+'_'+scriptId+'_'+territoryId in _languages_db:
         languageId = languageId+'_'+scriptId+'_'+territoryId
         skipTerritory = True
@@ -2006,8 +2275,12 @@
     Print some info about langtable
     '''
     import pkg_resources  # part of setuptools
+    project_name = pkg_resources.require("langtable")[0].project_name
     version = pkg_resources.require("langtable")[0].version
+    module_path = pkg_resources.require("langtable")[0].module_path
+    print('Project name: = %s' %project_name)
     print('Version: = %s' %version)
+    print('Module path: = %s' %module_path)
     print('Loaded from: %s' %os.path.realpath(__file__))
     print('Data files read: %s' %_INFO['data_files_read'])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langtable-0.0.48/langtable.egg-info/PKG-INFO 
new/langtable-0.0.51/langtable.egg-info/PKG-INFO
--- old/langtable-0.0.48/langtable.egg-info/PKG-INFO    2019-11-06 
06:41:40.000000000 +0100
+++ new/langtable-0.0.51/langtable.egg-info/PKG-INFO    2020-01-14 
11:40:29.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: langtable
-Version: 0.0.48
+Version: 0.0.51
 Summary: guess reasonable defaults for locale, keyboard, territory, ...
 Home-page: https://github.com/mike-fabian/langtable
 Author: Mike FABIAN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langtable-0.0.48/setup.py 
new/langtable-0.0.51/setup.py
--- old/langtable-0.0.48/setup.py       2019-11-06 06:40:37.000000000 +0100
+++ new/langtable-0.0.51/setup.py       2020-01-14 11:12:15.000000000 +0100
@@ -8,7 +8,7 @@
     # within the egg directory easily:
     zip_safe=False,
     name='langtable',
-    version='0.0.48',
+    version='0.0.51',
     packages=setuptools.find_packages(),
     description='guess reasonable defaults for locale, keyboard, territory, 
...',
     long_description=codecs.open('README', encoding='UTF-8').read(),


Reply via email to