JSONSchemata 0.0.0.dev28__tar.gz → 0.0.0.dev29__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jsonschemata-0.0.0.dev28/src/JSONSchemata.egg-info → jsonschemata-0.0.0.dev29}/PKG-INFO +3 -3
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/pyproject.toml +3 -3
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29/src/JSONSchemata.egg-info}/PKG-INFO +3 -3
- jsonschemata-0.0.0.dev29/src/JSONSchemata.egg-info/requires.txt +4 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/edit.py +31 -10
- jsonschemata-0.0.0.dev28/src/JSONSchemata.egg-info/requires.txt +0 -4
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/LICENSE +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/MANIFEST.in +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/README.md +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/setup.cfg +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/JSONSchemata.egg-info/SOURCES.txt +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/JSONSchemata.egg-info/dependency_links.txt +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/JSONSchemata.egg-info/not-zip-safe +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/JSONSchemata.egg-info/top_level.txt +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/__init__.py +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/array/unique-strings.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/css-name.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/css.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/hex-string.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/hsl-array.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/hsl-string.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/hsla-array.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/rgb-array.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/rgb-string.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/rgba-array.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/config/github/form/body.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/config/github/label/description.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/date/yyyy-mm-dd.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/doi.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/email.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/github/node.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/github/rest.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/github/user.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/linkedin.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/orcid.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/researchgate.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/spdx-license.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/twitter.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/integer/non-negative.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/number/non-negative.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/path/dir-name.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/path/posix/absolute-from-cwd.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/string/nonempty.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/string/oneline.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/uri/mailto.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/README.md +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/ftp.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/github/user.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/http-explicit.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/http-ftp-sftp.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/http-implicit.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/https.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/linkedin/company.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/linkedin/person.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/linkedin/user.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/orcid/user.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/researchgate/institution.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/researchgate/lab.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/researchgate/person.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/researchgate/user.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/sftp.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/twitter/user.yaml +0 -0
- {jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/registry.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: JSONSchemata
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev29
|
|
4
4
|
Requires-Python: >=3.10
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Requires-Dist: referencing>=0.35.1
|
|
7
7
|
Requires-Dist: PkgData==0.0.0.dev5
|
|
8
|
-
Requires-Dist: PySerials==0.0.0.
|
|
9
|
-
Requires-Dist: PyLinks==0.0.0.
|
|
8
|
+
Requires-Dist: PySerials==0.0.0.dev33
|
|
9
|
+
Requires-Dist: PyLinks==0.0.0.dev43
|
|
@@ -17,12 +17,12 @@ namespaces = true
|
|
|
17
17
|
# ----------------------------------------- Project Metadata -------------------------------------
|
|
18
18
|
#
|
|
19
19
|
[project]
|
|
20
|
-
version = "0.0.0.
|
|
20
|
+
version = "0.0.0.dev29"
|
|
21
21
|
name = "JSONSchemata"
|
|
22
22
|
dependencies = [
|
|
23
23
|
"referencing >= 0.35.1",
|
|
24
24
|
"PkgData == 0.0.0.dev5",
|
|
25
|
-
"PySerials == 0.0.0.
|
|
26
|
-
"PyLinks == 0.0.0.
|
|
25
|
+
"PySerials == 0.0.0.dev33",
|
|
26
|
+
"PyLinks == 0.0.0.dev43",
|
|
27
27
|
]
|
|
28
28
|
requires-python = ">=3.10"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: JSONSchemata
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev29
|
|
4
4
|
Requires-Python: >=3.10
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Requires-Dist: referencing>=0.35.1
|
|
7
7
|
Requires-Dist: PkgData==0.0.0.dev5
|
|
8
|
-
Requires-Dist: PySerials==0.0.0.
|
|
9
|
-
Requires-Dist: PyLinks==0.0.0.
|
|
8
|
+
Requires-Dist: PySerials==0.0.0.dev33
|
|
9
|
+
Requires-Dist: PyLinks==0.0.0.dev43
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
from __future__ import annotations as _annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING as _TYPE_CHECKING
|
|
4
|
+
|
|
5
|
+
if _TYPE_CHECKING:
|
|
6
|
+
from typing import Callable
|
|
7
|
+
|
|
8
|
+
|
|
1
9
|
def required_last(schema: dict) -> dict:
|
|
2
10
|
"""Modify JSON schema to recursively put all 'required' fields at the end of the schema.
|
|
3
11
|
|
|
@@ -27,7 +35,13 @@ def required_last(schema: dict) -> dict:
|
|
|
27
35
|
return schema
|
|
28
36
|
|
|
29
37
|
|
|
30
|
-
def add_property(
|
|
38
|
+
def add_property(
|
|
39
|
+
schema: dict,
|
|
40
|
+
prop: str,
|
|
41
|
+
value: dict,
|
|
42
|
+
conditioner: Callable[[dict, list], bool] | None = None,
|
|
43
|
+
current_path: list[str] | None = None,
|
|
44
|
+
) -> dict:
|
|
31
45
|
"""Recursively add a property to a JSON schema.
|
|
32
46
|
|
|
33
47
|
Parameters
|
|
@@ -38,21 +52,28 @@ def add_property(schema: dict, prop: str, value: dict) -> dict:
|
|
|
38
52
|
The name of the property to add.
|
|
39
53
|
value : Any
|
|
40
54
|
The value of the property to add.
|
|
41
|
-
|
|
55
|
+
conditioner : Callable[[dict, list], bool], optional
|
|
56
|
+
A function that takes a schema and the path to the current schema as arguments
|
|
57
|
+
and returns a boolean indicating whether to add the property to the schema.
|
|
58
|
+
current_path : list[str], optional
|
|
59
|
+
The path to the current schema in the JSON schema hierarchy.
|
|
42
60
|
Returns
|
|
43
61
|
-------
|
|
44
62
|
dict
|
|
45
63
|
The modified schema.
|
|
46
64
|
"""
|
|
47
|
-
if
|
|
48
|
-
|
|
49
|
-
for subschema in schema["properties"].values():
|
|
50
|
-
add_property(subschema, prop, value)
|
|
65
|
+
if current_path is None:
|
|
66
|
+
current_path = []
|
|
51
67
|
for key in ["anyOf", "allOf", "oneOf", "prefixItems"]:
|
|
52
68
|
if key in schema:
|
|
53
|
-
for subschema in schema[key]:
|
|
54
|
-
add_property(subschema, prop, value)
|
|
69
|
+
for idx, subschema in enumerate(schema[key]):
|
|
70
|
+
add_property(subschema, prop, value, conditioner, current_path + [f"{key}[{idx}]"])
|
|
55
71
|
for key in ["if", "then", "else", "not", "items", "unevaluatedItems", "contains", "additionalProperties", "patternProperties", "unevaluatedProperties"]:
|
|
56
72
|
if key in schema and isinstance(schema[key], dict):
|
|
57
|
-
add_property(schema[key], prop, value)
|
|
58
|
-
|
|
73
|
+
add_property(schema[key], prop, value, conditioner, current_path + [key])
|
|
74
|
+
if "properties" in schema:
|
|
75
|
+
for property_name, subschema in schema["properties"].items():
|
|
76
|
+
add_property(subschema, prop, value, conditioner, current_path + [f"properties[{property_name}]"])
|
|
77
|
+
if not conditioner or conditioner(schema, current_path):
|
|
78
|
+
schema["properties"][prop] = value
|
|
79
|
+
return schema
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/JSONSchemata.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/JSONSchemata.egg-info/not-zip-safe
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/JSONSchemata.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/css-name.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/hex-string.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/hsl-array.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/hsl-string.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/hsla-array.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/rgb-array.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/rgb-string.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/color/rgba-array.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/date/yyyy-mm-dd.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/github/node.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/github/rest.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/github/user.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/linkedin.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/researchgate.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/spdx-license.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/id/twitter.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/path/dir-name.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/string/nonempty.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/string/oneline.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/uri/mailto.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/github/user.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/http-explicit.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/http-ftp-sftp.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/http-implicit.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/linkedin/user.yaml
RENAMED
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/orcid/user.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jsonschemata-0.0.0.dev28 → jsonschemata-0.0.0.dev29}/src/jsonschemata/_data/url/twitter/user.yaml
RENAMED
|
File without changes
|
|
File without changes
|