Coverage for gws-app/gws/base/metadata/inspire_generate.py: 0%
43 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 12:46 +0200
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 12:46 +0200
1import requests
2import json
3import os
5target = os.path.join(os.path.dirname(__file__), 'inspire.py')
6mark = '## generated with inspire_generate.py'
8langs = 'en', 'de'
9es = {}
10tab = ' ' * 4
11qq = '"""'
13for lang in langs:
14 # js = json.load(open(f'/Users/gus/theme.en.json'))
16 js = requests.get(f'http://inspire.ec.europa.eu/theme/theme.{lang}.json').json()
17 for p in js['register']['containeditems']:
18 p = p['theme']
19 uid = p['id'].split('/')[-1]
20 uid = uid.replace('-', '_')
21 es.setdefault(uid, {})
22 w = p['label']
23 es[uid].setdefault('name', {})[w['lang']] = w['text']
24 w = p['definition']
25 es[uid].setdefault('definition', {})[w['lang']] = w['text']
28code = []
29_ = code.append
31_(mark)
32_('')
33_('')
34_('class IM_Theme(Enum):')
35_(tab + qq + 'INSPIRE data themes.' + qq)
36_('')
37for uid, e in es.items():
38 u = uid.replace('-', '_')
39 _(tab + f'{u} = {u!r}')
40 doc = e['name'].get('de') or e['name'].get('en')
41 _(tab + qq + f'{doc}.' + qq)
43_('')
44_('')
45_('# fmt: off')
47_('_THEMES = ' + json.dumps(es, indent=4, ensure_ascii=False))
48_('')
51with open(target, 'r') as fp:
52 text = fp.read()
55text = text.split(mark)[0] + '\n'.join(code)
57with open(os.path.join(os.path.dirname(__file__), 'inspire.py'), 'w') as fp:
58 fp.write(text)