jentic-openapi-validator 1.0.0a32__tar.gz → 1.0.0a34__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 (17) hide show
  1. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/PKG-INFO +4 -4
  2. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/pyproject.toml +4 -4
  3. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/backends/openapi_spec.py +18 -1
  4. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/core/diagnostics.py +4 -4
  5. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/LICENSE +0 -0
  6. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/NOTICE +0 -0
  7. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/README.md +0 -0
  8. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/backends/base.py +0 -0
  9. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/backends/default/__init__.py +0 -0
  10. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/backends/default/rules/__init__.py +0 -0
  11. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/backends/default/rules/security.py +0 -0
  12. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/backends/default/rules/server.py +0 -0
  13. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/backends/default/rules/structural.py +0 -0
  14. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/backends/py.typed +0 -0
  15. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/core/__init__.py +0 -0
  16. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/core/openapi_validator.py +0 -0
  17. {jentic_openapi_validator-1.0.0a32 → jentic_openapi_validator-1.0.0a34}/src/jentic/apitools/openapi/validator/core/py.typed +0 -0
@@ -1,17 +1,17 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jentic-openapi-validator
3
- Version: 1.0.0a32
3
+ Version: 1.0.0a34
4
4
  Summary: Jentic OpenAPI Validator
5
5
  Author: Jentic
6
6
  Author-email: Jentic <hello@jentic.com>
7
7
  License-Expression: Apache-2.0
8
8
  License-File: LICENSE
9
9
  License-File: NOTICE
10
- Requires-Dist: jentic-openapi-parser~=1.0.0a32
10
+ Requires-Dist: jentic-openapi-parser~=1.0.0a34
11
11
  Requires-Dist: openapi-spec-validator~=0.7.2
12
12
  Requires-Dist: lsprotocol~=2025.0.0
13
- Requires-Dist: jentic-openapi-validator-redocly~=1.0.0a32 ; extra == 'redocly'
14
- Requires-Dist: jentic-openapi-validator-spectral~=1.0.0a32 ; extra == 'spectral'
13
+ Requires-Dist: jentic-openapi-validator-redocly~=1.0.0a34 ; extra == 'redocly'
14
+ Requires-Dist: jentic-openapi-validator-spectral~=1.0.0a34 ; extra == 'spectral'
15
15
  Requires-Python: >=3.11
16
16
  Project-URL: Homepage, https://github.com/jentic/jentic-openapi-tools
17
17
  Provides-Extra: redocly
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "jentic-openapi-validator"
3
- version = "1.0.0-alpha.32"
3
+ version = "1.0.0-alpha.34"
4
4
  description = "Jentic OpenAPI Validator"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "Jentic", email = "hello@jentic.com" }]
@@ -8,14 +8,14 @@ license = "Apache-2.0"
8
8
  license-files = ["LICENSE", "NOTICE"]
9
9
  requires-python = ">=3.11"
10
10
  dependencies = [
11
- "jentic-openapi-parser~=1.0.0-alpha.32",
11
+ "jentic-openapi-parser~=1.0.0-alpha.34",
12
12
  "openapi-spec-validator~=0.7.2",
13
13
  "lsprotocol~=2025.0.0"
14
14
  ]
15
15
 
16
16
  [project.optional-dependencies]
17
- spectral = ["jentic-openapi-validator-spectral~=1.0.0-alpha.32"]
18
- redocly = ["jentic-openapi-validator-redocly~=1.0.0-alpha.32"]
17
+ spectral = ["jentic-openapi-validator-spectral~=1.0.0-alpha.34"]
18
+ redocly = ["jentic-openapi-validator-redocly~=1.0.0-alpha.34"]
19
19
 
20
20
  [project.urls]
21
21
  Homepage = "https://github.com/jentic/jentic-openapi-tools"
@@ -52,13 +52,30 @@ class OpenAPISpecValidatorBackend(BaseValidatorBackend):
52
52
  diagnostics: list[JenticDiagnostic] = []
53
53
  try:
54
54
  for error in validator.iter_errors():
55
+ # Determine a meaningful code for the diagnostic.
56
+ # Note: error.validator and error.validator_value can be <unset> sentinel
57
+ # objects that are truthy but stringify to '<unset>'. We must check the
58
+ # string representation to detect this.
59
+ code: str
60
+ validator_str = str(error.validator) if error.validator is not None else ""
61
+ validator_value_str = (
62
+ str(error.validator_value) if error.validator_value is not None else ""
63
+ )
64
+
65
+ if validator_str and validator_str != "<unset>":
66
+ code = validator_str
67
+ elif validator_value_str and validator_value_str != "<unset>":
68
+ code = validator_value_str
69
+ else:
70
+ code = "osv-validation-error"
71
+
55
72
  diagnostic = JenticDiagnostic(
56
73
  range=lsp.Range(
57
74
  start=lsp.Position(line=0, character=0),
58
75
  end=lsp.Position(line=0, character=0),
59
76
  ),
60
77
  severity=lsp.DiagnosticSeverity.Error,
61
- code=f"{error.validator or str(error.validator_value)}",
78
+ code=code,
62
79
  source="openapi-spec-validator",
63
80
  message=error.message,
64
81
  )
@@ -1,7 +1,7 @@
1
1
  from dataclasses import dataclass, field
2
2
  from typing import TypeAlias
3
3
 
4
- from lsprotocol.types import Diagnostic
4
+ from lsprotocol.types import Diagnostic, DiagnosticSeverity
5
5
 
6
6
 
7
7
  __all__ = ["JenticDiagnostic", "ValidationResult", "DataFieldValue"]
@@ -61,7 +61,7 @@ class ValidationResult:
61
61
 
62
62
  Attributes:
63
63
  diagnostics: List of all diagnostics from validation
64
- valid: True if no diagnostics were found, False otherwise (computed automatically)
64
+ valid: True if no Error-severity diagnostics were found, False otherwise (computed automatically)
65
65
  """
66
66
 
67
67
  diagnostics: list[JenticDiagnostic] = field(default_factory=list)
@@ -69,14 +69,14 @@ class ValidationResult:
69
69
 
70
70
  def __post_init__(self):
71
71
  """Compute the valid attribute after initialization."""
72
- self.valid = len(self.diagnostics) == 0
72
+ self.valid = not any(d.severity == DiagnosticSeverity.Error for d in self.diagnostics)
73
73
 
74
74
  def __bool__(self) -> bool:
75
75
  """
76
76
  Allow ValidationResult to be used in boolean context.
77
77
 
78
78
  Returns:
79
- True if validation passed (no diagnostics), False otherwise
79
+ True if validation passed (no Error-severity diagnostics), False otherwise
80
80
 
81
81
  Example:
82
82
  >>> result = validator.validate(document)