Coverage for gws-app/gws/base/metadata/inspire_generate.py: 0%
43 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-05 13:35 +0200
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-05 13:35 +0200
1"""Script that regenerates the INSPIRE theme part of ``inspire.py`` from the INSPIRE theme register."""
3import requests
4import json
5import os
7target = os.path.join(os.path.dirname(__file__), 'inspire.py')
8mark = '## generated with inspire_generate.py'
10langs = 'en', 'de'
11es = {}
12tab = ' ' * 4
13qq = '"""'
15for lang in langs:
16 # js = json.load(open(f'/Users/gus/theme.en.json'))
18 js = requests.get(f'http://inspire.ec.europa.eu/theme/theme.{lang}.json').json()
19 for p in js['register']['containeditems']:
20 p = p['theme']
21 uid = p['id'].split('/')[-1]
22 uid = uid.replace('-', '_')
23 es.setdefault(uid, {})
24 w = p['label']
25 es[uid].setdefault('name', {})[w['lang']] = w['text']
26 w = p['definition']
27 es[uid].setdefault('definition', {})[w['lang']] = w['text']
30code = []
31_ = code.append
33_(mark)
34_('')
35_('')
36_('class IM_Theme(Enum):')
37_(tab + qq + 'INSPIRE data themes.' + qq)
38_('')
39for uid, e in es.items():
40 u = uid.replace('-', '_')
41 _(tab + f'{u} = {u!r}')
42 doc = e['name'].get('de') or e['name'].get('en')
43 _(tab + qq + f'{doc}.' + qq)
45_('')
46_('')
47_('# fmt: off')
49_('_THEMES = ' + json.dumps(es, indent=4, ensure_ascii=False))
50_('')
53with open(target, 'r') as fp:
54 text = fp.read()
57text = text.split(mark)[0] + '\n'.join(code)
59with open(os.path.join(os.path.dirname(__file__), 'inspire.py'), 'w') as fp:
60 fp.write(text)