pytest-jsonschema-snapshot 0.2.5__tar.gz → 0.2.7__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.
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/PKG-INFO +1 -1
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/pytest_jsonschema_snapshot/__init__.py +1 -1
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/pytest_jsonschema_snapshot/core.py +51 -27
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/some_schema.schema.json +34 -2
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.flake8 +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.github/ISSUE_TEMPLATE/documentation_issue.yml +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.github/PULL_REQUEST_TEMPLATE/general.md +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.github/actions/build-docs/action.yml +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.github/workflows/release.yml +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.github/workflows/reusable-test.yml +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.github/workflows/test.yml +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.gitignore +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/LICENSE +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/Makefile +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/README.md +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/assets/logo.png +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/docs/source/_static/logo_day.png +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/docs/source/_static/logo_night.png +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/docs/source/basic/quick_start.rst +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/docs/source/conf.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/docs/source/index.rst +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/pyproject.toml +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/pytest_jsonschema_snapshot/plugin.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/pytest_jsonschema_snapshot/py.typed +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/pytest_jsonschema_snapshot/stats.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/pytest_jsonschema_snapshot/tools/__init__.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/pytest_jsonschema_snapshot/tools/name_maker.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/reinstall_plugin.sh +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/requirements.txt +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/test_stats.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/tools/test_name_maker.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/TestDataClass.get_data.first.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/TestDataClass.get_data.first.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/TestDataClass.get_data.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/TestDataClass.get_data.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/array_formats_test.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/array_formats_test.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/date_test.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/date_test.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/datetime_test.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/datetime_test.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/email_test.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/email_test.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/get_data.first.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/get_data.first.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/get_data.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/get_data.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/ipv4_test.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/ipv4_test.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/mixed_formats_test.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/mixed_formats_test.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/multi_schema_one.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/multi_schema_three.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/multi_schema_two.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/regular_strings_test.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/regular_strings_test.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/some_schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/strict_email_validation_test.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/strict_email_validation_test.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/uri_test.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/uri_test.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/uuid_test.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/__snapshots__/uuid_test.schema.json +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/test_base.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/test_base_name_callable.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/test_format_detection.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/test_format_validation.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/test_multiple_schema_creation.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tt.py +0 -0
- {pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/yy.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pytest-jsonschema-snapshot
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.7
|
|
4
4
|
Summary: Pytest plugin for automatic JSON Schema generation and validation from examples
|
|
5
5
|
Project-URL: Homepage, https://miskler.github.io/pytest-jsonschema-snapshot/basic/quick_start.html
|
|
6
6
|
Project-URL: Repository, https://github.com/Miskler/pytest-jsonschema-snapshot
|
|
@@ -5,7 +5,7 @@ Core logic of the plugin.
|
|
|
5
5
|
import json
|
|
6
6
|
import logging
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import TYPE_CHECKING, Any, Callable,
|
|
8
|
+
from typing import TYPE_CHECKING, Any, Callable, Literal, Optional
|
|
9
9
|
|
|
10
10
|
import pathvalidate
|
|
11
11
|
|
|
@@ -35,7 +35,7 @@ class SchemaShot:
|
|
|
35
35
|
format_mode: str = "on",
|
|
36
36
|
update_mode: bool = False,
|
|
37
37
|
reset_mode: bool = False,
|
|
38
|
-
update_actions: dict[str, bool] = {},
|
|
38
|
+
update_actions: Optional[dict[str, bool]] = {},
|
|
39
39
|
save_original: bool = False,
|
|
40
40
|
debug_mode: bool = False,
|
|
41
41
|
snapshot_dir_name: str = "__snapshots__",
|
|
@@ -55,11 +55,11 @@ class SchemaShot:
|
|
|
55
55
|
# self.examples_limit: int = examples_limit
|
|
56
56
|
self.update_mode: bool = update_mode
|
|
57
57
|
self.reset_mode: bool = reset_mode
|
|
58
|
-
self.update_actions: dict[str, bool] = update_actions
|
|
58
|
+
self.update_actions: dict[str, bool] = dict(update_actions or {})
|
|
59
59
|
self.save_original: bool = save_original
|
|
60
60
|
self.debug_mode: bool = debug_mode
|
|
61
61
|
self.snapshot_dir: Path = root_dir / snapshot_dir_name
|
|
62
|
-
self.used_schemas:
|
|
62
|
+
self.used_schemas: set[str] = set()
|
|
63
63
|
|
|
64
64
|
self.conv = Converter(
|
|
65
65
|
pseudo_handler=PseudoArrayHandler(),
|
|
@@ -116,7 +116,7 @@ class SchemaShot:
|
|
|
116
116
|
pathvalidate.validate_filename(
|
|
117
117
|
name, platform="auto"
|
|
118
118
|
) # allow_reserved=False по умолчанию
|
|
119
|
-
except ValidationError as e:
|
|
119
|
+
except pathvalidate.ValidationError as e:
|
|
120
120
|
raise ValueError(f"Invalid schema name: {e}") from None
|
|
121
121
|
|
|
122
122
|
return name
|
|
@@ -162,11 +162,7 @@ class SchemaShot:
|
|
|
162
162
|
|
|
163
163
|
real_name = self._process_name(name)
|
|
164
164
|
|
|
165
|
-
self.
|
|
166
|
-
self.conv.add_schema(data)
|
|
167
|
-
current_schema = self.conv.run()
|
|
168
|
-
|
|
169
|
-
real_name, status = self._base_match(data, current_schema, real_name)
|
|
165
|
+
real_name, status = self._base_match(data, data, "json", real_name)
|
|
170
166
|
|
|
171
167
|
if self.update_mode or self.reset_mode:
|
|
172
168
|
self._save_process_original(real_name=real_name, status=status, data=data)
|
|
@@ -191,7 +187,7 @@ class SchemaShot:
|
|
|
191
187
|
|
|
192
188
|
real_name = self._process_name(name)
|
|
193
189
|
|
|
194
|
-
real_name, status = self._base_match(data, schema, real_name)
|
|
190
|
+
real_name, status = self._base_match(data, schema, "schema", real_name)
|
|
195
191
|
|
|
196
192
|
if self.update_mode and data is not None:
|
|
197
193
|
self._save_process_original(real_name=real_name, status=status, data=data)
|
|
@@ -201,7 +197,8 @@ class SchemaShot:
|
|
|
201
197
|
def _base_match(
|
|
202
198
|
self,
|
|
203
199
|
data: Optional[dict],
|
|
204
|
-
|
|
200
|
+
current_data: dict,
|
|
201
|
+
type_data: Literal["json", "schema"],
|
|
205
202
|
name: str,
|
|
206
203
|
) -> tuple[str, Optional[bool]]:
|
|
207
204
|
"""
|
|
@@ -224,6 +221,16 @@ class SchemaShot:
|
|
|
224
221
|
# --- состояние ДО проверки ---
|
|
225
222
|
schema_exists_before = schema_path.exists()
|
|
226
223
|
|
|
224
|
+
def make_schema(current_data: dict | list, type_data: Literal["json", "schema"]) -> dict:
|
|
225
|
+
if type_data == "schema":
|
|
226
|
+
return dict(current_data)
|
|
227
|
+
elif type_data == "json":
|
|
228
|
+
self.conv.clear_data()
|
|
229
|
+
self.conv.add_json(current_data)
|
|
230
|
+
return self.conv.run()
|
|
231
|
+
else:
|
|
232
|
+
raise ValueError("Not correct type argument")
|
|
233
|
+
|
|
227
234
|
# --- когда схемы ещё нет ---
|
|
228
235
|
if not schema_exists_before:
|
|
229
236
|
if not self.update_mode and not self.reset_mode:
|
|
@@ -236,6 +243,8 @@ class SchemaShot:
|
|
|
236
243
|
f"Schema `{name}` not found and adding new schemas is disabled."
|
|
237
244
|
)
|
|
238
245
|
|
|
246
|
+
current_schema = make_schema(current_data, type_data)
|
|
247
|
+
|
|
239
248
|
with open(schema_path, "w", encoding="utf-8") as f:
|
|
240
249
|
json.dump(current_schema, f, indent=2, ensure_ascii=False)
|
|
241
250
|
|
|
@@ -249,44 +258,59 @@ class SchemaShot:
|
|
|
249
258
|
# --- схема уже была: сравнение и валидация --------------------------------
|
|
250
259
|
schema_updated = False
|
|
251
260
|
|
|
252
|
-
def merge_schemas(
|
|
261
|
+
def merge_schemas(
|
|
262
|
+
old: dict, new: dict | list, type_data: Literal["json", "schema"]
|
|
263
|
+
) -> dict:
|
|
253
264
|
self.conv.clear_data()
|
|
254
265
|
self.conv.add_schema(old)
|
|
255
|
-
|
|
266
|
+
if type_data == "schema":
|
|
267
|
+
self.conv.add_schema(dict(new))
|
|
268
|
+
elif type_data == "json":
|
|
269
|
+
self.conv.add_json(new)
|
|
270
|
+
else:
|
|
271
|
+
raise ValueError("Not correct type argument")
|
|
256
272
|
result = self.conv.run()
|
|
257
273
|
return result
|
|
258
274
|
|
|
259
|
-
if
|
|
275
|
+
if (
|
|
276
|
+
type_data == "json" or existing_schema != current_data
|
|
277
|
+
): # есть отличия или могут быть
|
|
260
278
|
if (self.update_mode or self.reset_mode) and self.update_actions.get("update"):
|
|
261
279
|
# обновляем файл
|
|
262
280
|
if self.reset_mode and not self.update_mode:
|
|
281
|
+
current_schema = make_schema(current_data, type_data)
|
|
282
|
+
|
|
263
283
|
differences = self.differ.compare(
|
|
264
284
|
dict(existing_schema), current_schema
|
|
265
285
|
).render()
|
|
266
|
-
|
|
286
|
+
diff_count = self.differ.property.calc_diff()
|
|
287
|
+
if any(diff_count[key] > 0 for key in diff_count if key != "UNKNOWN"):
|
|
288
|
+
GLOBAL_STATS.add_updated(schema_path.name, differences)
|
|
267
289
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
290
|
+
with open(schema_path, "w", encoding="utf-8") as f:
|
|
291
|
+
json.dump(current_schema, f, indent=2, ensure_ascii=False)
|
|
292
|
+
self.logger.warning(f"Schema `{name}` reseted.\n\n{differences}")
|
|
271
293
|
elif self.update_mode and not self.reset_mode:
|
|
272
|
-
merged_schema = merge_schemas(existing_schema,
|
|
294
|
+
merged_schema = merge_schemas(existing_schema, current_data, type_data)
|
|
273
295
|
|
|
274
296
|
differences = self.differ.compare(
|
|
275
297
|
dict(existing_schema), merged_schema
|
|
276
298
|
).render()
|
|
277
|
-
|
|
299
|
+
diff_count = self.differ.property.calc_diff()
|
|
300
|
+
if any(diff_count[key] > 0 for key in diff_count if key != "UNKNOWN"):
|
|
301
|
+
GLOBAL_STATS.add_updated(schema_path.name, differences)
|
|
278
302
|
|
|
279
|
-
|
|
280
|
-
|
|
303
|
+
with open(schema_path, "w", encoding="utf-8") as f:
|
|
304
|
+
json.dump(merged_schema, f, indent=2, ensure_ascii=False)
|
|
281
305
|
|
|
282
|
-
|
|
306
|
+
self.logger.warning(f"Schema `{name}` updated.\n\n{differences}")
|
|
283
307
|
else: # both update_mode and reset_mode are True
|
|
284
308
|
raise ValueError(
|
|
285
309
|
"Both update_mode and reset_mode cannot be True at the same time."
|
|
286
310
|
)
|
|
287
311
|
schema_updated = True
|
|
288
312
|
elif data is not None:
|
|
289
|
-
merged_schema = merge_schemas(existing_schema,
|
|
313
|
+
merged_schema = merge_schemas(existing_schema, current_data, type_data)
|
|
290
314
|
|
|
291
315
|
differences = self.differ.compare(dict(existing_schema), merged_schema).render()
|
|
292
316
|
GLOBAL_STATS.add_uncommitted(schema_path.name, differences)
|
|
@@ -302,7 +326,7 @@ class SchemaShot:
|
|
|
302
326
|
pytest.fail(
|
|
303
327
|
f"\n\n{differences}\n\nValidation error in `{name}`: {e.message}"
|
|
304
328
|
)
|
|
305
|
-
elif data is not None:
|
|
329
|
+
elif data is not None and type_data == "schema":
|
|
306
330
|
# схемы совпали – всё равно валидируем на случай формальных ошибок
|
|
307
331
|
try:
|
|
308
332
|
validate(
|
|
@@ -311,7 +335,7 @@ class SchemaShot:
|
|
|
311
335
|
format_checker=FormatChecker(),
|
|
312
336
|
)
|
|
313
337
|
except ValidationError as e:
|
|
314
|
-
merged_schema = merge_schemas(existing_schema,
|
|
338
|
+
merged_schema = merge_schemas(existing_schema, current_data, type_data)
|
|
315
339
|
|
|
316
340
|
differences = self.differ.compare(dict(existing_schema), merged_schema).render()
|
|
317
341
|
pytest.fail(f"\n\n{differences}\n\nValidation error in `{name}`: {e.message}")
|
|
@@ -17,7 +17,27 @@
|
|
|
17
17
|
},
|
|
18
18
|
"разнотипный_массив": {
|
|
19
19
|
"type": "array",
|
|
20
|
-
"items": {
|
|
20
|
+
"items": {
|
|
21
|
+
"anyOf": [
|
|
22
|
+
{
|
|
23
|
+
"type": "null"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "string"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "object",
|
|
30
|
+
"required": [
|
|
31
|
+
"ключ"
|
|
32
|
+
],
|
|
33
|
+
"properties": {
|
|
34
|
+
"ключ": {
|
|
35
|
+
"type": "string"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
21
41
|
},
|
|
22
42
|
"словарь": {
|
|
23
43
|
"type": "object",
|
|
@@ -113,7 +133,19 @@
|
|
|
113
133
|
"type": "string",
|
|
114
134
|
"format": "date-time"
|
|
115
135
|
},
|
|
116
|
-
"имя": {
|
|
136
|
+
"имя": {
|
|
137
|
+
"anyOf": [
|
|
138
|
+
{
|
|
139
|
+
"type": "string"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"type": "array",
|
|
143
|
+
"items": {
|
|
144
|
+
"type": "string"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
},
|
|
117
149
|
"почта": {
|
|
118
150
|
"type": "string",
|
|
119
151
|
"format": "email"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.github/workflows/release.yml
RENAMED
|
File without changes
|
|
File without changes
|
{pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/.github/workflows/test.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/tools/test_name_maker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytest_jsonschema_snapshot-0.2.5 → pytest_jsonschema_snapshot-0.2.7}/tests/usage/test_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|