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

1import requests 

2import json 

3import os 

4 

5target = os.path.join(os.path.dirname(__file__), 'inspire.py') 

6mark = '## generated with inspire_generate.py' 

7 

8langs = 'en', 'de' 

9es = {} 

10tab = ' ' * 4 

11qq = '"""' 

12 

13for lang in langs: 

14 # js = json.load(open(f'/Users/gus/theme.en.json')) 

15 

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'] 

26 

27 

28code = [] 

29_ = code.append 

30 

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) 

42 

43_('') 

44_('') 

45_('# fmt: off') 

46 

47_('_THEMES = ' + json.dumps(es, indent=4, ensure_ascii=False)) 

48_('') 

49 

50 

51with open(target, 'r') as fp: 

52 text = fp.read() 

53 

54 

55text = text.split(mark)[0] + '\n'.join(code) 

56 

57with open(os.path.join(os.path.dirname(__file__), 'inspire.py'), 'w') as fp: 

58 fp.write(text) 

59