reasoner-validator 3.4.7__tar.gz → 3.4.9__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.
Files changed (34) hide show
  1. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/PKG-INFO +2 -2
  2. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/validation_codes_dictionary.md +18 -6
  3. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/pyproject.toml +2 -2
  4. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/reasoner_validator/biolink/__init__.py +8 -2
  5. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/reasoner_validator/codes.yaml +16 -6
  6. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/tests/test_biolink_compliance_validation.py +8 -8
  7. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/LICENSE +0 -0
  8. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/README.md +0 -0
  9. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/.nojekyll +0 -0
  10. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/Makefile +0 -0
  11. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/conf.py +0 -0
  12. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/index.rst +0 -0
  13. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/make.bat +0 -0
  14. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/reasoner_validator.biolink.rst +0 -0
  15. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/reasoner_validator.report.rst +0 -0
  16. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/reasoner_validator.rst +0 -0
  17. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/reasoner_validator.trapi.mapping.rst +0 -0
  18. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/reasoner_validator.trapi.rst +0 -0
  19. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/reasoner_validator.validation_codes.rst +0 -0
  20. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/docs/reasoner_validator.versioning.rst +0 -0
  21. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/reasoner_validator/__init__.py +0 -0
  22. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/reasoner_validator/report.py +0 -0
  23. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/reasoner_validator/sri/__init__.py +0 -0
  24. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/reasoner_validator/sri/util.py +0 -0
  25. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/reasoner_validator/trapi/__init__.py +0 -0
  26. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/reasoner_validator/trapi/mapping.py +0 -0
  27. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/reasoner_validator/validation_codes.py +0 -0
  28. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/reasoner_validator/versioning.py +0 -0
  29. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/tests/README.md +0 -0
  30. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/tests/__init__.py +0 -0
  31. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/tests/test_response_validator.py +0 -0
  32. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/tests/test_semver.py +0 -0
  33. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/tests/test_validate.py +0 -0
  34. {reasoner_validator-3.4.7 → reasoner_validator-3.4.9}/tests/test_validation_report.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reasoner-validator
3
- Version: 3.4.7
3
+ Version: 3.4.9
4
4
  Summary: Validation tools for Reasoner API
5
5
  Home-page: https://github.com/NCATSTranslator
6
6
  License: MIT
@@ -28,7 +28,7 @@ Requires-Dist: myst-parser[docs] (>=0.18.1,<0.19.0) ; extra == "docs"
28
28
  Requires-Dist: numpy (>=1.23.5,<2.0.0)
29
29
  Requires-Dist: numpydoc[docs] (>=1.5.0,<2.0.0) ; extra == "docs"
30
30
  Requires-Dist: pydantic (>=1.8.0,<2.0.0)
31
- Requires-Dist: pytest (==7.2.0)
31
+ Requires-Dist: pytest (>=7.2.2,<8.0.0)
32
32
  Requires-Dist: requests (>=2.28.1,<3.0.0)
33
33
  Requires-Dist: sphinx[docs] (>=5.3.0,<6.0.0) ; extra == "docs"
34
34
  Requires-Dist: uvicorn (>=0.15,<0.16)
@@ -510,11 +510,17 @@
510
510
 
511
511
  **Description:** Value of a 'qualifier_constraints.qualifier_set' property in a Query Graph must not be non-empty array!
512
512
 
513
- ### error.query_graph.edge.qualifier_constraints.qualifier_set.qualifier.invalid
513
+ ### error.query_graph.edge.qualifier_constraints.qualifier_set.qualifier.type_id.unknown
514
514
 
515
- **Message:** Edge '{identifier}' qualifier entry is invalid!
515
+ **Message:** Edge '{identifier}' qualifier type_id '{qualifier_type_id}' is unknown!
516
516
 
517
- **Description:** A 'qualifier' entry must be a valid JSON object with valid 'qualifier_type_id' and corresponding 'qualifier_value'!
517
+ **Description:** A qualifier qualifier_type_id must be defined in the specified version of Biolink!
518
+
519
+ ### error.query_graph.edge.qualifier_constraints.qualifier_set.qualifier.value.unresolved
520
+
521
+ **Message:** Edge '{identifier}' qualifier_value '{qualifier_value}' for '{qualifier_type_id}' cannot be resolved!
522
+
523
+ **Description:** A 'qualifier_value' for the specified 'qualifier_type_id' of a qualifier likely could not be resolved without knowledge of the edge category!
518
524
 
519
525
  ### error.knowledge_graph.nodes.empty
520
526
 
@@ -750,9 +756,15 @@
750
756
 
751
757
  **Description:** Value of a 'qualifiers' property in a Knowledge Graph must not be non-empty array!
752
758
 
753
- ### error.knowledge_graph.edge.qualifiers.qualifier.invalid
759
+ ### error.knowledge_graph.edge.qualifiers.qualifier.type_id.unknown
760
+
761
+ **Message:** Edge '{identifier}' qualifier type_id '{qualifier_type_id}' is unknown!
762
+
763
+ **Description:** A qualifier qualifier_type_id must be defined in the specified version of Biolink!
764
+
765
+ ### error.knowledge_graph.edge.qualifiers.qualifier.value.unresolved
754
766
 
755
- **Message:** Edge '{identifier}' qualifier entry is invalid!
767
+ **Message:** Edge '{identifier}' qualifier_value '{qualifier_value}' for '{qualifier_type_id}' cannot be resolved!
756
768
 
757
- **Description:** A 'qualifier' entry must be a valid JSON object with valid 'qualifier_type_id' and corresponding 'qualifier_value'!
769
+ **Description:** A 'qualifier_value' for the specified 'qualifier_type_id' of a qualifier likely could not be resolved without knowledge of the edge category!
758
770
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "reasoner-validator"
3
- version = "3.4.7"
3
+ version = "3.4.9"
4
4
  description = "Validation tools for Reasoner API"
5
5
  authors = [
6
6
  "Richard Bruskiewich <richard.bruskiewich@delphinai.com>",
@@ -42,7 +42,7 @@ include = [
42
42
  python = "^3.9"
43
43
  bmt = "^1.0.3"
44
44
  kgx = "^1.7.0"
45
- pytest = "7.2.0"
45
+ pytest = "^7.2.2"
46
46
  jsonschema = "^4.17.0"
47
47
  PyYAML = "^6.0"
48
48
  requests = "^2.28.1"
@@ -466,13 +466,19 @@ class BiolinkValidator(ValidationReporter):
466
466
  qualifier_type_id: str = qualifier['qualifier_type_id']
467
467
  qualifier_value: str = qualifier['qualifier_value']
468
468
  try:
469
- if not self.bmt.validate_qualifier(
469
+ if not self.bmt.is_qualifier(name=qualifier_type_id):
470
+ self.report(
471
+ code=f"error.{context}.qualifier.type_id.unknown",
472
+ identifier=edge_id,
473
+ qualifier_type_id=qualifier_type_id
474
+ )
475
+ elif not self.bmt.validate_qualifier(
470
476
  # TODO: temporary workaround, parse 'qualifier_type_id' to core name
471
477
  qualifier_type_id=parse_name(qualifier_type_id),
472
478
  qualifier_value=qualifier_value
473
479
  ):
474
480
  self.report(
475
- code=f"error.{context}.qualifier.invalid",
481
+ code=f"error.{context}.qualifier.value.unresolved",
476
482
  identifier=edge_id,
477
483
  qualifier_type_id=qualifier_type_id,
478
484
  qualifier_value=qualifier_value
@@ -334,9 +334,14 @@ error:
334
334
  $message: "Edge '{identifier}' qualifier_set property value is empty!"
335
335
  $description: "Value of a 'qualifier_constraints.qualifier_set' property in a Query Graph must not be non-empty array!"
336
336
  qualifier:
337
- invalid:
338
- $message: "Edge '{identifier}' qualifier entry is invalid!"
339
- $description: "A 'qualifier' entry must be a valid JSON object with valid 'qualifier_type_id' and corresponding 'qualifier_value'!"
337
+ type_id:
338
+ unknown:
339
+ $message: "Edge '{identifier}' qualifier type_id '{qualifier_type_id}' is unknown!"
340
+ $description: "A qualifier qualifier_type_id must be defined in the specified version of Biolink!"
341
+ value:
342
+ unresolved:
343
+ $message: "Edge '{identifier}' qualifier_value '{qualifier_value}' for '{qualifier_type_id}' cannot be resolved!"
344
+ $description: "A 'qualifier_value' for the specified 'qualifier_type_id' of a qualifier likely could not be resolved without knowledge of the edge category!"
340
345
  knowledge_graph:
341
346
  nodes:
342
347
  empty:
@@ -474,6 +479,11 @@ error:
474
479
  $message: "Edge '{identifier}' qualifiers property value is empty!"
475
480
  $description: "Value of a 'qualifiers' property in a Knowledge Graph must not be non-empty array!"
476
481
  qualifier:
477
- invalid:
478
- $message: "Edge '{identifier}' qualifier entry is invalid!"
479
- $description: "A 'qualifier' entry must be a valid JSON object with valid 'qualifier_type_id' and corresponding 'qualifier_value'!"
482
+ type_id:
483
+ unknown:
484
+ $message: "Edge '{identifier}' qualifier type_id '{qualifier_type_id}' is unknown!"
485
+ $description: "A qualifier qualifier_type_id must be defined in the specified version of Biolink!"
486
+ value:
487
+ unresolved:
488
+ $message: "Edge '{identifier}' qualifier_value '{qualifier_value}' for '{qualifier_type_id}' cannot be resolved!"
489
+ $description: "A 'qualifier_value' for the specified 'qualifier_type_id' of a qualifier likely could not be resolved without knowledge of the edge category!"
@@ -1202,7 +1202,7 @@ def qualifier_validator(tested_method, edge_model: str, query: Tuple[Dict, str])
1202
1202
  }
1203
1203
  ]
1204
1204
  },
1205
- "error.query_graph.edge.qualifier_constraints.qualifier_set.qualifier.invalid"
1205
+ "error.query_graph.edge.qualifier_constraints.qualifier_set.qualifier.type_id.unknown"
1206
1206
  ),
1207
1207
  ( # Query 13 - 'qualifier_type_id' property value is unknown
1208
1208
  {
@@ -1217,7 +1217,7 @@ def qualifier_validator(tested_method, edge_model: str, query: Tuple[Dict, str])
1217
1217
  }
1218
1218
  ]
1219
1219
  },
1220
- "error.query_graph.edge.qualifier_constraints.qualifier_set.qualifier.invalid"
1220
+ "error.query_graph.edge.qualifier_constraints.qualifier_set.qualifier.type_id.unknown"
1221
1221
  ),
1222
1222
  ( # Query 14 - 'qualifier_type_id' property value is valid but abstract
1223
1223
  {
@@ -1233,7 +1233,7 @@ def qualifier_validator(tested_method, edge_model: str, query: Tuple[Dict, str])
1233
1233
  ]
1234
1234
  },
1235
1235
  # "info.query_graph.edge.qualifier.abstract"
1236
- "error.query_graph.edge.qualifier_constraints.qualifier_set.qualifier.invalid"
1236
+ "error.query_graph.edge.qualifier_constraints.qualifier_set.qualifier.value.unresolved"
1237
1237
  ),
1238
1238
  ( # Query 15 - 'qualifier_type_id' property value is not a Biolink qualifier term
1239
1239
  {
@@ -1248,7 +1248,7 @@ def qualifier_validator(tested_method, edge_model: str, query: Tuple[Dict, str])
1248
1248
  }
1249
1249
  ]
1250
1250
  },
1251
- "error.query_graph.edge.qualifier_constraints.qualifier_set.qualifier.invalid"
1251
+ "error.query_graph.edge.qualifier_constraints.qualifier_set.qualifier.type_id.unknown"
1252
1252
  ),
1253
1253
  ( # Query 16 - 'qualifier' entry is missing its 'qualifier_value' property - invalidated by TRAPI schema
1254
1254
  {
@@ -1380,7 +1380,7 @@ def test_validate_qualifier_constraints(query: Tuple[Dict, str]):
1380
1380
  }
1381
1381
  ]
1382
1382
  },
1383
- "error.knowledge_graph.edge.qualifiers.qualifier.invalid"
1383
+ "error.knowledge_graph.edge.qualifiers.qualifier.type_id.unknown"
1384
1384
  ),
1385
1385
  ( # Query 8 - 'qualifier_type_id' property value is unknown
1386
1386
  {
@@ -1391,7 +1391,7 @@ def test_validate_qualifier_constraints(query: Tuple[Dict, str]):
1391
1391
  }
1392
1392
  ]
1393
1393
  },
1394
- "error.knowledge_graph.edge.qualifiers.qualifier.invalid"
1394
+ "error.knowledge_graph.edge.qualifiers.qualifier.type_id.unknown"
1395
1395
  ),
1396
1396
  ( # Query 9 - 'qualifier_type_id' property value is valid but abstract
1397
1397
  {
@@ -1403,7 +1403,7 @@ def test_validate_qualifier_constraints(query: Tuple[Dict, str]):
1403
1403
  ]
1404
1404
  },
1405
1405
  # "info.query_graph.edge.qualifier.abstract"
1406
- "error.knowledge_graph.edge.qualifiers.qualifier.invalid"
1406
+ "error.knowledge_graph.edge.qualifiers.qualifier.value.unresolved"
1407
1407
  ),
1408
1408
  ( # Query 10 - 'qualifier_type_id' property value is not a Biolink qualifier term
1409
1409
  {
@@ -1414,7 +1414,7 @@ def test_validate_qualifier_constraints(query: Tuple[Dict, str]):
1414
1414
  }
1415
1415
  ]
1416
1416
  },
1417
- "error.knowledge_graph.edge.qualifiers.qualifier.invalid"
1417
+ "error.knowledge_graph.edge.qualifiers.qualifier.type_id.unknown"
1418
1418
  ),
1419
1419
  ( # Query 11 - 'qualifier' entry is missing its 'qualifier_value' property - invalidated by TRAPI schema
1420
1420
  {