|
|
@ -7,6 +7,7 @@ from collections.abc import Mapping |
|
|
|
from functools import lru_cache |
|
|
|
from typing import OrderedDict |
|
|
|
from pathlib import Path |
|
|
|
from copy import deepcopy |
|
|
|
|
|
|
|
from milc import cli |
|
|
|
|
|
|
@ -22,7 +23,8 @@ def _dict_raise_on_duplicates(ordered_pairs): |
|
|
|
return d |
|
|
|
|
|
|
|
|
|
|
|
def json_load(json_file, strict=True): |
|
|
|
@lru_cache(maxsize=20) |
|
|
|
def _json_load_impl(json_file, strict=True): |
|
|
|
"""Load a json file from disk. |
|
|
|
|
|
|
|
Note: file must be a Path object. |
|
|
@ -42,7 +44,11 @@ def json_load(json_file, strict=True): |
|
|
|
exit(1) |
|
|
|
|
|
|
|
|
|
|
|
@lru_cache(maxsize=0) |
|
|
|
def json_load(json_file, strict=True): |
|
|
|
return deepcopy(_json_load_impl(json_file=json_file, strict=strict)) |
|
|
|
|
|
|
|
|
|
|
|
@lru_cache(maxsize=20) |
|
|
|
def load_jsonschema(schema_name): |
|
|
|
"""Read a jsonschema file from disk. |
|
|
|
""" |
|
|
@ -57,7 +63,7 @@ def load_jsonschema(schema_name): |
|
|
|
return json_load(schema_path) |
|
|
|
|
|
|
|
|
|
|
|
@lru_cache(maxsize=0) |
|
|
|
@lru_cache(maxsize=1) |
|
|
|
def compile_schema_store(): |
|
|
|
"""Compile all our schemas into a schema store. |
|
|
|
""" |
|
|
@ -73,7 +79,7 @@ def compile_schema_store(): |
|
|
|
return schema_store |
|
|
|
|
|
|
|
|
|
|
|
@lru_cache(maxsize=0) |
|
|
|
@lru_cache(maxsize=20) |
|
|
|
def create_validator(schema): |
|
|
|
"""Creates a validator for the given schema id. |
|
|
|
""" |
|
|
|