# HG changeset patch # User jruigrok # Date 1270973445 0 # Node ID 40735021c9085a0f6695357f9329f068221b5b4b # Parent 550dcd80937403fd9a3d8c12a2966be6ee2be6f8 Merged revisions 518-519 via svnmerge from http://svn.edgewall.org/repos/babel/trunk ........ r518 | jruigrok | 2010-04-08 11:16:53 +0200 (do, 08 apr 2010) | 2 lines Fix the ElementTree find()/findall() syntax to be compatible with Python 2.7. ........ r519 | jruigrok | 2010-04-08 11:17:34 +0200 (do, 08 apr 2010) | 2 lines Document the Python 2.7 ElementTree fix. ........ diff --git a/0.9.x/ChangeLog b/0.9.x/ChangeLog --- a/0.9.x/ChangeLog +++ b/0.9.x/ChangeLog @@ -3,6 +3,7 @@ (? ? 2010, from branches/stable/0.9.x) * Backport r493-494: documentation typo fixes. + * Make the CLDR import script work with Python 2.7. Version 0.9.5 diff --git a/0.9.x/scripts/import_cldr.py b/0.9.x/scripts/import_cldr.py --- a/0.9.x/scripts/import_cldr.py +++ b/0.9.x/scripts/import_cldr.py @@ -93,7 +93,7 @@ territory_zones = global_data.setdefault('territory_zones', {}) zone_aliases = global_data.setdefault('zone_aliases', {}) zone_territories = global_data.setdefault('zone_territories', {}) - for elem in sup.findall('//timezoneData/zoneFormatting/zoneItem'): + for elem in sup.findall('.//timezoneData/zoneFormatting/zoneItem'): tzid = elem.attrib['type'] territory_zones.setdefault(elem.attrib['territory'], []).append(tzid) zone_territories[tzid] = elem.attrib['territory'] @@ -104,7 +104,7 @@ # Import Metazone mapping meta_zones = global_data.setdefault('meta_zones', {}) tzsup = parse(os.path.join(srcdir, 'supplemental', 'metazoneInfo.xml')) - for elem in tzsup.findall('//timezone'): + for elem in tzsup.findall('.//timezone'): for child in elem.findall('usesMetazone'): if 'to' not in child.attrib: # FIXME: support old mappings meta_zones[elem.attrib['type']] = child.attrib['mzone'] @@ -117,7 +117,7 @@ # build a territory containment mapping for inheritance regions = {} - for elem in sup.findall('//territoryContainment/group'): + for elem in sup.findall('.//territoryContainment/group'): regions[elem.attrib['type']] = elem.attrib['contains'].split() # Resolve territory containment @@ -146,13 +146,13 @@ data = {} language = None - elem = tree.find('//identity/language') + elem = tree.find('.//identity/language') if elem is not None: language = elem.attrib['type'] print>>sys.stderr, ' Language: %r' % language territory = None - elem = tree.find('//identity/territory') + elem = tree.find('.//identity/territory') if elem is not None: territory = elem.attrib['type'] else: @@ -164,28 +164,28 @@ # territories = data.setdefault('territories', {}) - for elem in tree.findall('//territories/territory'): + for elem in tree.findall('.//territories/territory'): if ('draft' in elem.attrib or 'alt' in elem.attrib) \ and elem.attrib['type'] in territories: continue territories[elem.attrib['type']] = _text(elem) languages = data.setdefault('languages', {}) - for elem in tree.findall('//languages/language'): + for elem in tree.findall('.//languages/language'): if ('draft' in elem.attrib or 'alt' in elem.attrib) \ and elem.attrib['type'] in languages: continue languages[elem.attrib['type']] = _text(elem) variants = data.setdefault('variants', {}) - for elem in tree.findall('//variants/variant'): + for elem in tree.findall('.//variants/variant'): if ('draft' in elem.attrib or 'alt' in elem.attrib) \ and elem.attrib['type'] in variants: continue variants[elem.attrib['type']] = _text(elem) scripts = data.setdefault('scripts', {}) - for elem in tree.findall('//scripts/script'): + for elem in tree.findall('.//scripts/script'): if ('draft' in elem.attrib or 'alt' in elem.attrib) \ and elem.attrib['type'] in scripts: continue @@ -194,7 +194,7 @@ # week_data = data.setdefault('week_data', {}) - supelem = sup.find('//weekData') + supelem = sup.find('.//weekData') for elem in supelem.findall('minDays'): territories = elem.attrib['territories'].split() @@ -217,22 +217,22 @@ week_data['weekend_end'] = weekdays[elem.attrib['day']] zone_formats = data.setdefault('zone_formats', {}) - for elem in tree.findall('//timeZoneNames/gmtFormat'): + for elem in tree.findall('.//timeZoneNames/gmtFormat'): if 'draft' not in elem.attrib and 'alt' not in elem.attrib: zone_formats['gmt'] = unicode(elem.text).replace('{0}', '%s') break - for elem in tree.findall('//timeZoneNames/regionFormat'): + for elem in tree.findall('.//timeZoneNames/regionFormat'): if 'draft' not in elem.attrib and 'alt' not in elem.attrib: zone_formats['region'] = unicode(elem.text).replace('{0}', '%s') break - for elem in tree.findall('//timeZoneNames/fallbackFormat'): + for elem in tree.findall('.//timeZoneNames/fallbackFormat'): if 'draft' not in elem.attrib and 'alt' not in elem.attrib: zone_formats['fallback'] = unicode(elem.text) \ .replace('{0}', '%(0)s').replace('{1}', '%(1)s') break time_zones = data.setdefault('time_zones', {}) - for elem in tree.findall('//timeZoneNames/zone'): + for elem in tree.findall('.//timeZoneNames/zone'): info = {} city = elem.findtext('exemplarCity') if city: @@ -244,7 +244,7 @@ time_zones[elem.attrib['type']] = info meta_zones = data.setdefault('meta_zones', {}) - for elem in tree.findall('//timeZoneNames/metazone'): + for elem in tree.findall('.//timeZoneNames/metazone'): info = {} city = elem.findtext('exemplarCity') if city: @@ -256,7 +256,7 @@ info['common'] = elem.findtext('commonlyUsed') == 'true' meta_zones[elem.attrib['type']] = info - for calendar in tree.findall('//calendars/calendar'): + for calendar in tree.findall('.//calendars/calendar'): if calendar.attrib['type'] != 'gregorian': # TODO: support other calendar types continue @@ -402,11 +402,11 @@ # number_symbols = data.setdefault('number_symbols', {}) - for elem in tree.findall('//numbers/symbols/*'): + for elem in tree.findall('.//numbers/symbols/*'): number_symbols[elem.tag] = unicode(elem.text) decimal_formats = data.setdefault('decimal_formats', {}) - for elem in tree.findall('//decimalFormats/decimalFormatLength'): + for elem in tree.findall('.//decimalFormats/decimalFormatLength'): if ('draft' in elem.attrib or 'alt' in elem.attrib) \ and elem.attrib.get('type') in decimal_formats: continue @@ -414,7 +414,7 @@ decimal_formats[elem.attrib.get('type')] = numbers.parse_pattern(pattern) scientific_formats = data.setdefault('scientific_formats', {}) - for elem in tree.findall('//scientificFormats/scientificFormatLength'): + for elem in tree.findall('.//scientificFormats/scientificFormatLength'): if ('draft' in elem.attrib or 'alt' in elem.attrib) \ and elem.attrib.get('type') in scientific_formats: continue @@ -422,7 +422,7 @@ scientific_formats[elem.attrib.get('type')] = numbers.parse_pattern(pattern) currency_formats = data.setdefault('currency_formats', {}) - for elem in tree.findall('//currencyFormats/currencyFormatLength'): + for elem in tree.findall('.//currencyFormats/currencyFormatLength'): if ('draft' in elem.attrib or 'alt' in elem.attrib) \ and elem.attrib.get('type') in currency_formats: continue @@ -430,7 +430,7 @@ currency_formats[elem.attrib.get('type')] = numbers.parse_pattern(pattern) percent_formats = data.setdefault('percent_formats', {}) - for elem in tree.findall('//percentFormats/percentFormatLength'): + for elem in tree.findall('.//percentFormats/percentFormatLength'): if ('draft' in elem.attrib or 'alt' in elem.attrib) \ and elem.attrib.get('type') in percent_formats: continue @@ -439,7 +439,7 @@ currency_names = data.setdefault('currency_names', {}) currency_symbols = data.setdefault('currency_symbols', {}) - for elem in tree.findall('//currencies/currency'): + for elem in tree.findall('.//currencies/currency'): code = elem.attrib['type'] # TODO: support plural rules for currency name selection for name in elem.findall('displayName'):