pytest-jsonschema-snapshot 0.2.2__py3-none-any.whl → 0.2.3__py3-none-any.whl

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.
@@ -8,5 +8,5 @@ pytest-typed-schema-shot
8
8
 
9
9
  from .core import SchemaShot
10
10
 
11
- __version__ = "0.2.2"
11
+ __version__ = "0.2.3"
12
12
  __all__ = ["SchemaShot"]
@@ -233,6 +233,14 @@ class SchemaShot:
233
233
  # --- схема уже была: сравнение и валидация --------------------------------
234
234
  schema_updated = False
235
235
 
236
+ def merge_schemas(old: dict, new: dict) -> dict:
237
+ builder = JsonToSchemaConverter(
238
+ format_mode=self.format_mode # type: ignore[arg-type]
239
+ ) # , examples=self.examples_limit)
240
+ builder.add_schema(old)
241
+ builder.add_schema(new)
242
+ return builder.to_schema()
243
+
236
244
  if existing_schema != current_schema: # есть отличия
237
245
  if (self.update_mode or self.reset_mode) and self.update_actions.get("update"):
238
246
  # обновляем файл
@@ -246,12 +254,7 @@ class SchemaShot:
246
254
  json.dump(current_schema, f, indent=2, ensure_ascii=False)
247
255
  self.logger.warning(f"Schema `{name}` updated (reset).\n\n{differences}")
248
256
  elif self.update_mode and not self.reset_mode:
249
- builder = JsonToSchemaConverter(
250
- format_mode=self.format_mode # type: ignore[arg-type]
251
- ) # , examples=self.examples_limit)
252
- builder.add_schema(existing_schema)
253
- builder.add_schema(current_schema)
254
- merged_schema = builder.to_schema()
257
+ merged_schema = merge_schemas(existing_schema, current_schema)
255
258
 
256
259
  differences = self.differ.compare(
257
260
  dict(existing_schema), merged_schema
@@ -268,9 +271,9 @@ class SchemaShot:
268
271
  )
269
272
  schema_updated = True
270
273
  elif data is not None:
271
- differences = self.differ.compare(
272
- dict(existing_schema), current_schema
273
- ).render()
274
+ merged_schema = merge_schemas(existing_schema, current_schema)
275
+
276
+ differences = self.differ.compare(dict(existing_schema), merged_schema).render()
274
277
  GLOBAL_STATS.add_uncommitted(schema_path.name, differences)
275
278
 
276
279
  # только валидируем по старой схеме
@@ -293,9 +296,9 @@ class SchemaShot:
293
296
  format_checker=FormatChecker(),
294
297
  )
295
298
  except ValidationError as e:
296
- differences = self.differ.compare(
297
- dict(existing_schema), current_schema
298
- ).render()
299
+ merged_schema = merge_schemas(existing_schema, current_schema)
300
+
301
+ differences = self.differ.compare(dict(existing_schema), merged_schema).render()
299
302
  pytest.fail(f"\n\n{differences}\n\nValidation error in `{name}`: {e.message}")
300
303
 
301
304
  return name, schema_updated
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytest-jsonschema-snapshot
3
- Version: 0.2.2
3
+ Version: 0.2.3
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
@@ -58,6 +58,7 @@ Description-Content-Type: text/markdown
58
58
  [![PyPI - Package Version](https://img.shields.io/pypi/v/pytest-jsonschema-snapshot?color=blue)](https://pypi.org/project/pytest-jsonschema-snapshot/)
59
59
  [![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
60
60
  [![BlackCode](https://img.shields.io/badge/code%20style-black-black)](https://github.com/psf/black)
61
+ [![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/)
61
62
  [![mypy](https://img.shields.io/badge/type--checked-mypy-blue?logo=python)](https://mypy.readthedocs.io/en/stable/index.html)
62
63
  [![Discord](https://img.shields.io/discord/792572437292253224?label=Discord&labelColor=%232c2f33&color=%237289da)](https://discord.gg/UnJnGHNbBp)
63
64
  [![Telegram](https://img.shields.io/badge/Telegram-24A1DE)](https://t.me/miskler_dev)
@@ -1,5 +1,5 @@
1
- pytest_jsonschema_snapshot/__init__.py,sha256=5TgaOzEtd_zql5fMk737SJ342QjH3l3atIBWuko_20g,385
2
- pytest_jsonschema_snapshot/core.py,sha256=vkS_aD8L2iqCQF9pGMlE63EuUFRC9sZSsrLQ2waLuEI,11852
1
+ pytest_jsonschema_snapshot/__init__.py,sha256=v-YeeYwLr0JgBV0W2iNt8SEfBDFnP0TivliTh8btZYc,385
2
+ pytest_jsonschema_snapshot/core.py,sha256=CoL_W-u6o3N7XDwv-MbePJiZaGX0LtGS6BLbj9MHROU,11995
3
3
  pytest_jsonschema_snapshot/plugin.py,sha256=nvAfxtLSX_B5FzaWu7DfsiWRxFjxDvnQNNOhkRrRnbw,8677
4
4
  pytest_jsonschema_snapshot/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  pytest_jsonschema_snapshot/stats.py,sha256=XGGzHY0ytMFOkFpnqNAK1DpV9iI0_fZPWrVvHFNFL3g,7943
@@ -8,8 +8,8 @@ pytest_jsonschema_snapshot/tools/name_maker.py,sha256=tqss8NCGSo2aQX_-RkCJzy3NJx
8
8
  pytest_jsonschema_snapshot/tools/genson_addon/__init__.py,sha256=nANkqHTaWTZPwBDztsnQvObHUZLSeHenJS--oWfep8c,92
9
9
  pytest_jsonschema_snapshot/tools/genson_addon/format_detector.py,sha256=Wc5pB_xstyr4OtjwJ2qqmV62xET63cN7Nb0gxkrYyW0,1636
10
10
  pytest_jsonschema_snapshot/tools/genson_addon/to_schema_converter.py,sha256=UdQIkZhMrTJNHwI1B1dv3aEwx41B1B_lLyr4KWiUpNY,4168
11
- pytest_jsonschema_snapshot-0.2.2.dist-info/METADATA,sha256=81-o1vJwGBWxE_neIz7kT6LS-Dw8PRxZSWURWzUHW9E,7657
12
- pytest_jsonschema_snapshot-0.2.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
13
- pytest_jsonschema_snapshot-0.2.2.dist-info/entry_points.txt,sha256=eJ1x4TMmhcc8YtM7IoCsUJO4-rLeTrGy8tPgkrojjKs,58
14
- pytest_jsonschema_snapshot-0.2.2.dist-info/licenses/LICENSE,sha256=1HRFdSzlJ4BtHv6U7tZun3iCArjbCnm5NUowE9hZpNs,1071
15
- pytest_jsonschema_snapshot-0.2.2.dist-info/RECORD,,
11
+ pytest_jsonschema_snapshot-0.2.3.dist-info/METADATA,sha256=cMTeW3ydl2gg8dQHUqmsiLSa9l9ndSoQP5yUlzktOn4,7795
12
+ pytest_jsonschema_snapshot-0.2.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
13
+ pytest_jsonschema_snapshot-0.2.3.dist-info/entry_points.txt,sha256=eJ1x4TMmhcc8YtM7IoCsUJO4-rLeTrGy8tPgkrojjKs,58
14
+ pytest_jsonschema_snapshot-0.2.3.dist-info/licenses/LICENSE,sha256=1HRFdSzlJ4BtHv6U7tZun3iCArjbCnm5NUowE9hZpNs,1071
15
+ pytest_jsonschema_snapshot-0.2.3.dist-info/RECORD,,