Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/jsonschema_specifications/_core.py: 88%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

17 statements  

1""" 

2Load all the JSON Schema specification's official schemas. 

3""" 

4 

5import json 

6 

7try: 

8 from importlib.resources import files 

9except ImportError: 

10 from importlib_resources import ( # type: ignore[import-not-found, no-redef] 

11 files, 

12 ) 

13 

14from referencing import Resource 

15 

16 

17def _schemas(): 

18 """ 

19 All schemas we ship. 

20 """ 

21 # importlib.resources.abc.Traversal doesn't have nice ways to do this that 

22 # I'm aware of... 

23 # 

24 # It can't recurse arbitrarily, e.g. no ``.glob()``. 

25 # 

26 # So this takes some liberties given the real layout of what we ship 

27 # (only 2 levels of nesting, no directories within the second level). 

28 

29 for version in files(__package__).joinpath("schemas").iterdir(): 

30 if version.name.startswith("."): 

31 continue 

32 for child in version.iterdir(): 

33 children = [child] if child.is_file() else child.iterdir() 

34 for path in children: 

35 if path.name.startswith("."): 

36 continue 

37 contents = json.loads(path.read_text(encoding="utf-8")) 

38 yield Resource.from_contents(contents)