python-ort 0.10.2__tar.gz → 0.10.4__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 (120) hide show
  1. {python_ort-0.10.2 → python_ort-0.10.4}/PKG-INFO +2 -2
  2. {python_ort-0.10.2 → python_ort-0.10.4}/pyproject.toml +5 -5
  3. {python_ort-0.10.2 → python_ort-0.10.4}/pyproject.toml.orig +5 -5
  4. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/advisor_result.py +7 -1
  5. python_ort-0.10.4/src/ort/models/health_metrics.py +54 -0
  6. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/package.py +1 -1
  7. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/project.py +1 -1
  8. {python_ort-0.10.2 → python_ort-0.10.4}/LICENSE +0 -0
  9. {python_ort-0.10.2 → python_ort-0.10.4}/README.md +0 -0
  10. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/__init__.py +0 -0
  11. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/__init__.py +0 -0
  12. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/advisor_capability.py +0 -0
  13. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/advisor_details.py +0 -0
  14. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/advisor_run.py +0 -0
  15. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/advisor_summary.py +0 -0
  16. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/analyzer_result.py +0 -0
  17. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/analyzer_run.py +0 -0
  18. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/base_run.py +0 -0
  19. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/__init__.py +0 -0
  20. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/advisor_configuration.py +0 -0
  21. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/analyzer_configuration.py +0 -0
  22. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/curations.py +0 -0
  23. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/excludes.py +0 -0
  24. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/file_archiver_configuration.py +0 -0
  25. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/file_list_storage_configuration.py +0 -0
  26. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/file_storage_configuration.py +0 -0
  27. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/http_file_storage_configuration.py +0 -0
  28. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/includes.py +0 -0
  29. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/issue_resolution.py +0 -0
  30. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/issue_resolution_reason.py +0 -0
  31. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/license_choices.py +0 -0
  32. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/license_finding_curation.py +0 -0
  33. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/license_finding_curation_reason.py +0 -0
  34. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/local_file_storage_configuration.py +0 -0
  35. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/package_configuration.py +0 -0
  36. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/package_manager_configuration.py +0 -0
  37. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/path_exclude.py +0 -0
  38. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/path_exclude_reason.py +0 -0
  39. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/path_include.py +0 -0
  40. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/path_include_reason.py +0 -0
  41. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/postgres_connection.py +0 -0
  42. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/provenance_storage_configuration.py +0 -0
  43. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/repository_analyzer_configuration.py +0 -0
  44. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/repository_configuration.py +0 -0
  45. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/resolutions.py +0 -0
  46. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/rule_violation_reason.py +0 -0
  47. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/rule_violation_resolution.py +0 -0
  48. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/s3_file_storage_configuration.py +0 -0
  49. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/scan_storage_configuration.py +0 -0
  50. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/scanner_configuration.py +0 -0
  51. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/scope_exclude.py +0 -0
  52. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/scope_exclude_reason.py +0 -0
  53. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/snippet/__init__.py +0 -0
  54. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/snippet/snippet_choice.py +0 -0
  55. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/snippet/snippet_choice_reason.py +0 -0
  56. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/snippet/snippet_choices.py +0 -0
  57. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/snippet/snippet_provenance.py +0 -0
  58. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/vcsmatcher.py +0 -0
  59. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/vulnerability_resolution.py +0 -0
  60. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/config/vulnerability_resolution_reason.py +0 -0
  61. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/copyright_finding.py +0 -0
  62. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/defect.py +0 -0
  63. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/dependency_graph.py +0 -0
  64. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/dependency_graph_edge.py +0 -0
  65. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/dependency_graph_node.py +0 -0
  66. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/dependency_reference.py +0 -0
  67. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/evaluator_run.py +0 -0
  68. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/file_list.py +0 -0
  69. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/hash.py +0 -0
  70. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/identifier.py +0 -0
  71. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/issue.py +0 -0
  72. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/license_finding.py +0 -0
  73. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/license_source.py +0 -0
  74. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/licenses/license_categorization.py +0 -0
  75. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/licenses/license_category.py +0 -0
  76. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/licenses/license_classifications.py +0 -0
  77. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/ort_result.py +0 -0
  78. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/package_curation.py +0 -0
  79. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/package_curation_data.py +0 -0
  80. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/package_linkage.py +0 -0
  81. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/package_reference.py +0 -0
  82. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/provenance.py +0 -0
  83. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/provenance_resolution_result.py +0 -0
  84. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/remote_artifact.py +0 -0
  85. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/repository.py +0 -0
  86. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/resolutions.py +0 -0
  87. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/root_dependency_index.py +0 -0
  88. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/rule_violation.py +0 -0
  89. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/scan_result.py +0 -0
  90. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/scan_summary.py +0 -0
  91. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/scanner_details.py +0 -0
  92. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/scanner_run.py +0 -0
  93. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/scope.py +0 -0
  94. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/severity.py +0 -0
  95. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/snippet.py +0 -0
  96. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/snippet_finding.py +0 -0
  97. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/source_code_origin.py +0 -0
  98. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/text_location.py +0 -0
  99. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/vcsinfo.py +0 -0
  100. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/vcsinfo_curation_data.py +0 -0
  101. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/vcstype.py +0 -0
  102. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/vulnerabilities/__init__.py +0 -0
  103. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/vulnerabilities/cvss2_rating.py +0 -0
  104. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/vulnerabilities/cvss3_rating.py +0 -0
  105. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/vulnerabilities/cvss4_rating.py +0 -0
  106. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/vulnerabilities/vulnerability.py +0 -0
  107. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/models/vulnerabilities/vulnerability_reference.py +0 -0
  108. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/severity.py +0 -0
  109. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/types/__init__.py +0 -0
  110. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/types/purl_type.py +0 -0
  111. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/utils/__init__.py +0 -0
  112. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/utils/environment.py +0 -0
  113. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/utils/processed_declared_license.py +0 -0
  114. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/utils/spdx/__init__.py +0 -0
  115. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/utils/spdx/spdx_expression.py +0 -0
  116. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/utils/spdx/spdx_license_choice.py +0 -0
  117. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/utils/validated_enum.py +0 -0
  118. {python_ort-0.10.2 → python_ort-0.10.4}/src/ort/utils/yaml_loader.py +0 -0
  119. {python_ort-0.10.2 → python_ort-0.10.4}/src/tools/__init__.py +0 -0
  120. {python_ort-0.10.2 → python_ort-0.10.4}/src/tools/ort_validate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-ort
3
- Version: 0.10.2
3
+ Version: 0.10.4
4
4
  Summary: A Python Ort model serialization library
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -16,7 +16,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
16
16
  Requires-Dist: click>=8.5.0
17
17
  Requires-Dist: license-expression>=30.4.4
18
18
  Requires-Dist: packageurl-python>=0.17.6
19
- Requires-Dist: pydantic>=2.13.5
19
+ Requires-Dist: pydantic>=2.14.1
20
20
  Requires-Dist: pyyaml>=6.0.3
21
21
  Requires-Python: >=3.10
22
22
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-ort"
3
- version = "0.10.2"
3
+ version = "0.10.4"
4
4
  description = "A Python Ort model serialization library"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -21,7 +21,7 @@ dependencies = [
21
21
  "click>=8.5.0",
22
22
  "license-expression>=30.4.4",
23
23
  "packageurl-python>=0.17.6",
24
- "pydantic>=2.13.5",
24
+ "pydantic>=2.14.1",
25
25
  "pyyaml>=6.0.3",
26
26
  ]
27
27
 
@@ -30,11 +30,11 @@ ort-validate = "tools.ort_validate:main"
30
30
 
31
31
  [dependency-groups]
32
32
  dev = [
33
- "datamodel-code-generator[http]>=0.82.0",
33
+ "datamodel-code-generator[http]>=0.83.0",
34
34
  "pytest>=9.1.1",
35
35
  "rich>=15.0.0",
36
- "ruff>=0.16.8",
37
- "ty>=0.0.83",
36
+ "ruff>=0.17.0",
37
+ "ty>=0.0.87",
38
38
  "types-pyyaml>=6.0.12.20260906",
39
39
  ]
40
40
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-ort"
3
- version = "0.10.2"
3
+ version = "0.10.4"
4
4
  description = "A Python Ort model serialization library"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -21,7 +21,7 @@ dependencies = [
21
21
  "click>=8.5.0",
22
22
  "license-expression>=30.4.4",
23
23
  "packageurl-python>=0.17.6",
24
- "pydantic>=2.13.5",
24
+ "pydantic>=2.14.1",
25
25
  "pyyaml>=6.0.3",
26
26
  ]
27
27
 
@@ -30,11 +30,11 @@ ort-validate = "tools.ort_validate:main"
30
30
 
31
31
  [dependency-groups]
32
32
  dev = [
33
- "datamodel-code-generator[http]>=0.82.0",
33
+ "datamodel-code-generator[http]>=0.83.0",
34
34
  "pytest>=9.1.1",
35
35
  "rich>=15.0.0",
36
- "ruff>=0.16.8",
37
- "ty>=0.0.83",
36
+ "ruff>=0.17.0",
37
+ "ty>=0.0.87",
38
38
  "types-pyyaml>=6.0.12.20260906",
39
39
  ]
40
40
 
@@ -9,6 +9,7 @@ from ort.models.vulnerabilities import Vulnerability
9
9
  from .advisor_details import AdvisorDetails
10
10
  from .advisor_summary import AdvisorSummary
11
11
  from .defect import Defect
12
+ from .health_metrics import HealthMetric
12
13
 
13
14
 
14
15
  class AdvisorResult(BaseModel):
@@ -21,7 +22,7 @@ class AdvisorResult(BaseModel):
21
22
  """
22
23
 
23
24
  model_config = ConfigDict(
24
- extra="forbid",
25
+ extra="allow",
25
26
  )
26
27
 
27
28
  advisor: AdvisorDetails = Field(
@@ -37,6 +38,11 @@ class AdvisorResult(BaseModel):
37
38
  description="The vulnerabilities.",
38
39
  )
39
40
 
41
+ health_metrics: list[HealthMetric] = Field(
42
+ default_factory=list,
43
+ description="The vulnerabilities.",
44
+ )
45
+
40
46
  defects: list[Defect] = Field(
41
47
  default_factory=list,
42
48
  repr=False,
@@ -0,0 +1,54 @@
1
+ # SPDX-FileCopyrightText: 2025 Helio Chissini de Castro <heliocastro@gmail.com>
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ from pydantic import AnyUrl, BaseModel, ConfigDict, Field
5
+
6
+ from ..utils.validated_enum import ValidatedIntEnum
7
+
8
+
9
+ class Criticality(ValidatedIntEnum):
10
+ """
11
+ A rating of how critical a health metric value is, sorted from least to most critical.
12
+ """
13
+
14
+ LOW = 1
15
+ MEDIUM = 2
16
+ HIGH = 3
17
+ CRITICAL = 4
18
+
19
+
20
+ class HealthMetric(BaseModel):
21
+ """
22
+ A data model for a health metric of a package, as returned by an advisor provider.
23
+ """
24
+
25
+ model_config = ConfigDict(
26
+ extra="forbid",
27
+ )
28
+
29
+ name: str = Field(
30
+ description="The unique, human-readable name of the health metric.",
31
+ )
32
+ value: float = Field(
33
+ description="The raw metric score as returned by the provider.",
34
+ )
35
+ criticality: Criticality | None = Field(
36
+ default=None,
37
+ description="A rating how critical the value is.",
38
+ )
39
+ reason: str | None = Field(
40
+ default=None,
41
+ description="The reason for the score.",
42
+ )
43
+ details: list[str] = Field(
44
+ default_factory=list,
45
+ description="Details about the findings.",
46
+ )
47
+ documentation: str | None = Field(
48
+ default=None,
49
+ description="Summary of documentation about the metric.",
50
+ )
51
+ documentation_link: AnyUrl | None = Field(
52
+ default=None,
53
+ description="Link to the documentation about the metric.",
54
+ )
@@ -24,7 +24,7 @@ class Package(BaseModel):
24
24
  """
25
25
 
26
26
  model_config = ConfigDict(
27
- extra="allow",
27
+ extra="forbid",
28
28
  )
29
29
 
30
30
  id: Identifier = Field(
@@ -19,7 +19,7 @@ class Project(BaseModel):
19
19
  """
20
20
 
21
21
  model_config = ConfigDict(
22
- extra="forbid",
22
+ extra="allow",
23
23
  )
24
24
 
25
25
  id: Identifier = Field(
File without changes
File without changes