python-ort 0.8.8__tar.gz → 0.8.10__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 (113) hide show
  1. {python_ort-0.8.8 → python_ort-0.8.10}/PKG-INFO +1 -1
  2. {python_ort-0.8.8 → python_ort-0.8.10}/pyproject.toml +3 -3
  3. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/license_finding_curation.py +10 -6
  4. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/package_reference.py +10 -0
  5. {python_ort-0.8.8 → python_ort-0.8.10}/LICENSE +0 -0
  6. {python_ort-0.8.8 → python_ort-0.8.10}/README.md +0 -0
  7. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/__init__.py +0 -0
  8. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/__init__.py +0 -0
  9. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/advisor_capability.py +0 -0
  10. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/advisor_details.py +0 -0
  11. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/advisor_result.py +0 -0
  12. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/advisor_run.py +0 -0
  13. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/advisor_summary.py +0 -0
  14. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/analyzer_result.py +0 -0
  15. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/analyzer_run.py +0 -0
  16. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/base_run.py +0 -0
  17. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/__init__.py +0 -0
  18. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/advisor_configuration.py +0 -0
  19. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/analyzer_configuration.py +0 -0
  20. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/curations.py +0 -0
  21. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/excludes.py +0 -0
  22. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/file_archiver_configuration.py +0 -0
  23. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/file_list_storage_configuration.py +0 -0
  24. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/file_storage_configuration.py +0 -0
  25. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/http_file_storage_configuration.py +0 -0
  26. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/includes.py +0 -0
  27. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/issue_resolution.py +0 -0
  28. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/issue_resolution_reason.py +0 -0
  29. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/license_choices.py +0 -0
  30. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/license_finding_curation_reason.py +0 -0
  31. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/local_file_storage_configuration.py +0 -0
  32. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/package_configuration.py +0 -0
  33. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/package_manager_configuration.py +0 -0
  34. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/path_exclude.py +0 -0
  35. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/path_exclude_reason.py +0 -0
  36. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/path_include.py +0 -0
  37. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/path_include_reason.py +0 -0
  38. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/postgres_connection.py +0 -0
  39. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/provenance_storage_configuration.py +0 -0
  40. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/repository_analyzer_configuration.py +0 -0
  41. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/repository_configuration.py +0 -0
  42. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/resolutions.py +0 -0
  43. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/rule_violation_reason.py +0 -0
  44. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/rule_violation_resolution.py +0 -0
  45. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/s3_file_storage_configuration.py +0 -0
  46. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/scan_storage_configuration.py +0 -0
  47. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/scanner_configuration.py +0 -0
  48. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/scope_exclude.py +0 -0
  49. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/scope_exclude_reason.py +0 -0
  50. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/snippet/__init__.py +0 -0
  51. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/snippet/snippet_choice.py +0 -0
  52. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/snippet/snippet_choice_reason.py +0 -0
  53. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/snippet/snippet_choices.py +0 -0
  54. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/snippet/snippet_provenance.py +0 -0
  55. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/vcsmatcher.py +0 -0
  56. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/vulnerability_resolution.py +0 -0
  57. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/config/vulnerability_resolution_reason.py +0 -0
  58. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/copyright_finding.py +0 -0
  59. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/defect.py +0 -0
  60. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/dependency_graph.py +0 -0
  61. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/dependency_graph_edge.py +0 -0
  62. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/dependency_graph_node.py +0 -0
  63. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/dependency_reference.py +0 -0
  64. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/evaluator_run.py +0 -0
  65. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/file_list.py +0 -0
  66. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/hash.py +0 -0
  67. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/identifier.py +0 -0
  68. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/issue.py +0 -0
  69. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/license_finding.py +0 -0
  70. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/license_source.py +0 -0
  71. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/ort_result.py +0 -0
  72. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/package.py +0 -0
  73. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/package_curation.py +0 -0
  74. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/package_curation_data.py +0 -0
  75. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/package_linkage.py +0 -0
  76. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/project.py +0 -0
  77. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/provenance.py +0 -0
  78. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/provenance_resolution_result.py +0 -0
  79. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/remote_artifact.py +0 -0
  80. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/repository.py +0 -0
  81. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/resolutions.py +0 -0
  82. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/root_dependency_index.py +0 -0
  83. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/rule_violation.py +0 -0
  84. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/scan_result.py +0 -0
  85. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/scan_summary.py +0 -0
  86. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/scanner_details.py +0 -0
  87. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/scanner_run.py +0 -0
  88. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/scope.py +0 -0
  89. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/severity.py +0 -0
  90. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/snippet.py +0 -0
  91. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/snippet_finding.py +0 -0
  92. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/source_code_origin.py +0 -0
  93. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/text_location.py +0 -0
  94. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/vcsinfo.py +0 -0
  95. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/vcsinfo_curation_data.py +0 -0
  96. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/vcstype.py +0 -0
  97. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/vulnerabilities/__init__.py +0 -0
  98. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/vulnerabilities/cvss2_rating.py +0 -0
  99. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/vulnerabilities/cvss3_rating.py +0 -0
  100. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/vulnerabilities/cvss4_rating.py +0 -0
  101. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/vulnerabilities/vulnerability.py +0 -0
  102. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/models/vulnerabilities/vulnerability_reference.py +0 -0
  103. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/severity.py +0 -0
  104. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/types/__init__.py +0 -0
  105. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/types/purl_type.py +0 -0
  106. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/utils/__init__.py +0 -0
  107. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/utils/environment.py +0 -0
  108. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/utils/processed_declared_license.py +0 -0
  109. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/utils/spdx/__init__.py +0 -0
  110. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/utils/spdx/spdx_expression.py +0 -0
  111. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/utils/spdx/spdx_license_choice.py +0 -0
  112. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/utils/validated_enum.py +0 -0
  113. {python_ort-0.8.8 → python_ort-0.8.10}/src/ort/utils/yaml_loader.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-ort
3
- Version: 0.8.8
3
+ Version: 0.8.10
4
4
  Summary: A Python Ort model serialization library
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "python-ort"
7
- version = "0.8.8"
7
+ version = "0.8.10"
8
8
  description = "A Python Ort model serialization library"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -39,8 +39,8 @@ dev = [
39
39
  "datamodel-code-generator[http]>=0.55.0",
40
40
  "pytest>=9.0.2",
41
41
  "rich>=14.3.3",
42
- "ruff>=0.15.6",
43
- "ty>=0.0.23",
42
+ "ruff>=0.15.7",
43
+ "ty>=0.0.24",
44
44
  "types-pyyaml>=6.0.12.20250915",
45
45
  ]
46
46
 
@@ -34,7 +34,7 @@ class LicenseFindingCuration(BaseModel):
34
34
  path: str = Field(
35
35
  description="A glob to match the file path of a license finding.",
36
36
  )
37
- start_lines: list[int] | None = Field(
37
+ start_lines: str | None = Field(
38
38
  default=None,
39
39
  description="A matcher for the start line of a license finding, matches if the start line matches any of"
40
40
  "[startLines] or if [startLines] is empty.",
@@ -64,14 +64,18 @@ class LicenseFindingCuration(BaseModel):
64
64
 
65
65
  @field_validator("start_lines", mode="before")
66
66
  @classmethod
67
- def parse_start_lines(cls, value: Any) -> list[int] | None:
67
+ def parse_start_lines(cls, value: Any) -> str | None:
68
68
  if value is None or value == "":
69
69
  return None
70
70
  if isinstance(value, str):
71
71
  # CSV style split
72
- return [int(x.strip()) for x in value.split(",") if x.strip()]
73
- if isinstance(value, list):
74
- return [int(x) for x in value]
72
+ parts = value.split(",")
73
+ for part in parts:
74
+ if not part.strip().isdigit():
75
+ raise ValueError(
76
+ f"start_lines contains non-numeric value: '{part.strip()}'",
77
+ )
78
+ return value
75
79
  if isinstance(value, int):
76
- return [value]
80
+ return str(value)
77
81
  raise ValueError("start_lines must be a comma-separated string or a list of integers")
@@ -25,9 +25,19 @@ class PackageReference(BaseModel):
25
25
  "also use that as the default value here to not blow up ORT result files.",
26
26
  )
27
27
  dependencies: set["PackageReference"] = Field(
28
+ default_factory=set,
28
29
  description="The set of references to packages this package depends on. Note that this list depends on the "
29
30
  "scope in which this package is referenced.",
30
31
  )
31
32
  issues: list[Issue] = Field(
33
+ default_factory=list,
32
34
  description="A list of issues that occurred handling this PackageReference.",
33
35
  )
36
+
37
+ def __hash__(self) -> int:
38
+ return hash(self.id)
39
+
40
+ def __eq__(self, other) -> bool:
41
+ if not isinstance(other, PackageReference):
42
+ return NotImplemented
43
+ return self.id == other.id
File without changes
File without changes