diff options
Diffstat (limited to '.venv/lib/python3.12/site-packages/jsonschema_specifications/_core.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/jsonschema_specifications/_core.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/jsonschema_specifications/_core.py b/.venv/lib/python3.12/site-packages/jsonschema_specifications/_core.py new file mode 100644 index 00000000..e67bd712 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/jsonschema_specifications/_core.py @@ -0,0 +1,38 @@ +""" +Load all the JSON Schema specification's official schemas. +""" + +import json + +try: + from importlib.resources import files +except ImportError: + from importlib_resources import ( # type: ignore[import-not-found, no-redef] + files, + ) + +from referencing import Resource + + +def _schemas(): + """ + All schemas we ship. + """ + # importlib.resources.abc.Traversal doesn't have nice ways to do this that + # I'm aware of... + # + # It can't recurse arbitrarily, e.g. no ``.glob()``. + # + # So this takes some liberties given the real layout of what we ship + # (only 2 levels of nesting, no directories within the second level). + + for version in files(__package__).joinpath("schemas").iterdir(): + if version.name.startswith("."): + continue + for child in version.iterdir(): + children = [child] if child.is_file() else child.iterdir() + for path in children: + if path.name.startswith("."): + continue + contents = json.loads(path.read_text(encoding="utf-8")) + yield Resource.from_contents(contents) |