python-ort 0.6.4__tar.gz → 0.6.6__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 (88) hide show
  1. {python_ort-0.6.4 → python_ort-0.6.6}/PKG-INFO +1 -1
  2. {python_ort-0.6.4 → python_ort-0.6.6}/pyproject.toml +1 -7
  3. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/issue_resolution.py +8 -1
  4. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/repository_configuration.py +2 -2
  5. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/snippet/snippet_choice.py +17 -1
  6. python_ort-0.6.4/src/ort/models/config/snippet/Provenance.py → python_ort-0.6.6/src/ort/models/config/snippet/snippet_provenance.py +2 -1
  7. python_ort-0.6.6/src/ort/models/config/snippet_choices.py +25 -0
  8. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/vulnerability_resolution.py +8 -1
  9. python_ort-0.6.6/src/ort/models/provenance.py +85 -0
  10. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/scope.py +8 -0
  11. python_ort-0.6.6/src/ort/types/__init__.py +0 -0
  12. python_ort-0.6.6/src/ort/utils/spdx/__init__.py +0 -0
  13. {python_ort-0.6.4 → python_ort-0.6.6}/LICENSE +0 -0
  14. {python_ort-0.6.4 → python_ort-0.6.6}/README.md +0 -0
  15. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/__init__.py +0 -0
  16. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/__init__.py +0 -0
  17. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/advisor_capability.py +0 -0
  18. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/advisor_details.py +0 -0
  19. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/advisor_result.py +0 -0
  20. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/advisor_run.py +0 -0
  21. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/advisor_summary.py +0 -0
  22. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/analyzer_result.py +0 -0
  23. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/analyzer_run.py +0 -0
  24. {python_ort-0.6.4/src/ort/types → python_ort-0.6.6/src/ort/models/config}/__init__.py +0 -0
  25. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/advisor_configuration.py +0 -0
  26. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/analyzer_configuration.py +0 -0
  27. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/curations.py +0 -0
  28. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/excludes.py +0 -0
  29. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/includes.py +0 -0
  30. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/issue_resolution_reason.py +0 -0
  31. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/license_choice.py +0 -0
  32. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/license_finding_curation.py +0 -0
  33. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/license_finding_curation_reason.py +0 -0
  34. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/package_configuration.py +0 -0
  35. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/package_manager_configuration.py +0 -0
  36. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/path_exclude.py +0 -0
  37. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/path_exclude_reason.py +0 -0
  38. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/path_include.py +0 -0
  39. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/path_include_reason.py +0 -0
  40. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/repository_analyzer_configuration.py +0 -0
  41. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/resolutions.py +0 -0
  42. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/rule_violation_reason.py +0 -0
  43. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/rule_violation_resolution.py +0 -0
  44. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/scope_exclude.py +0 -0
  45. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/scope_exclude_reason.py +0 -0
  46. {python_ort-0.6.4/src/ort/utils/spdx → python_ort-0.6.6/src/ort/models/config/snippet}/__init__.py +0 -0
  47. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/snippet/snippet_choice_reason.py +0 -0
  48. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/vcsmatcher.py +0 -0
  49. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/config/vulnerability_resolution_reason.py +0 -0
  50. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/defect.py +0 -0
  51. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/dependency_graph.py +0 -0
  52. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/dependency_graph_edge.py +0 -0
  53. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/dependency_graph_node.py +0 -0
  54. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/dependency_reference.py +0 -0
  55. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/hash.py +0 -0
  56. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/hash_algorithm.py +0 -0
  57. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/identifier.py +0 -0
  58. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/issue.py +0 -0
  59. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/ort_result.py +0 -0
  60. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/package.py +0 -0
  61. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/package_curation.py +0 -0
  62. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/package_curation_data.py +0 -0
  63. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/package_linkage.py +0 -0
  64. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/package_reference.py +0 -0
  65. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/project.py +0 -0
  66. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/remote_artifact.py +0 -0
  67. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/repository.py +0 -0
  68. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/resolutions.py +0 -0
  69. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/root_dependency_index.py +0 -0
  70. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/source_code_origin.py +0 -0
  71. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/text_location.py +0 -0
  72. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/vcsinfo.py +0 -0
  73. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/vcsinfo_curation_data.py +0 -0
  74. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/vcstype.py +0 -0
  75. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/vulnerabilities/__init__.py +0 -0
  76. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/vulnerabilities/cvss2_rating.py +0 -0
  77. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/vulnerabilities/cvss3_rating.py +0 -0
  78. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/vulnerabilities/cvss4_rating.py +0 -0
  79. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/vulnerabilities/vulnerability.py +0 -0
  80. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/models/vulnerabilities/vulnerability_reference.py +0 -0
  81. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/severity.py +0 -0
  82. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/types/purl_type.py +0 -0
  83. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/utils/__init__.py +0 -0
  84. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/utils/convert_enum.py +0 -0
  85. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/utils/environment.py +0 -0
  86. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/utils/processed_declared_license.py +0 -0
  87. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/utils/spdx/spdx_expression.py +0 -0
  88. {python_ort-0.6.4 → python_ort-0.6.6}/src/ort/utils/spdx/spdx_license_choice.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-ort
3
- Version: 0.6.4
3
+ Version: 0.6.6
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.6.4"
7
+ version = "0.6.6"
8
8
  description = "A Python Ort model serialization library"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -159,9 +159,3 @@ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
159
159
  quote-style = "double"
160
160
  indent-style = "space"
161
161
  skip-magic-trailing-comma = false
162
-
163
- [tool.pyrefly]
164
- project_includes = [
165
- "src/ort/**",
166
- "tests/**",
167
- ]
@@ -2,7 +2,9 @@
2
2
  # SPDX-License-Identifier: MIT
3
3
 
4
4
 
5
- from pydantic import BaseModel, ConfigDict, Field
5
+ from pydantic import BaseModel, ConfigDict, Field, field_validator
6
+
7
+ from ort.utils import convert_enum
6
8
 
7
9
  from .issue_resolution_reason import IssueResolutionReason
8
10
 
@@ -30,3 +32,8 @@ class IssueResolution(BaseModel):
30
32
  comment: str = Field(
31
33
  description="A comment to further explain why the [reason] is applicable here.",
32
34
  )
35
+
36
+ @field_validator("reason", mode="before")
37
+ @classmethod
38
+ def validate_reason(cls, value):
39
+ return convert_enum(IssueResolutionReason, value)
@@ -11,7 +11,7 @@ from .license_choice import LicenseChoice
11
11
  from .package_configuration import PackageConfiguration
12
12
  from .repository_analyzer_configuration import RepositoryAnalyzerConfiguration
13
13
  from .resolutions import Resolutions
14
- from .snippet.snippet_choice import SnippetChoice
14
+ from .snippet_choices import SnippetChoices
15
15
 
16
16
 
17
17
  class RepositoryConfiguration(BaseModel):
@@ -60,7 +60,7 @@ class RepositoryConfiguration(BaseModel):
60
60
  None,
61
61
  description="A configuration to select a license from a multi-licensed package.",
62
62
  )
63
- snippet_choices: list[SnippetChoice] = Field(
63
+ snippet_choices: list[SnippetChoices] = Field(
64
64
  default_factory=list,
65
65
  description="A configuration to select a snippet from a package with multiple snippet findings.",
66
66
  )
@@ -1,7 +1,9 @@
1
1
  # SPDX-FileCopyrightText: 2026 Helio Chissini de Castro <heliocastro@gmail.com>
2
2
  # SPDX-License-Identifier: MIT
3
3
 
4
- from pydantic import BaseModel, ConfigDict, Field
4
+ from pydantic import BaseModel, ConfigDict, Field, field_validator
5
+
6
+ from ort.utils import convert_enum
5
7
 
6
8
  from ....types.purl_type import PurlType
7
9
  from ...text_location import TextLocation
@@ -44,6 +46,11 @@ class Choice(BaseModel):
44
46
  description="An optional comment describing the snippet choice.",
45
47
  )
46
48
 
49
+ @field_validator("reason", mode="before")
50
+ @classmethod
51
+ def validate_reason(cls, value):
52
+ return convert_enum(SnippetChoiceReason, value)
53
+
47
54
 
48
55
  class SnippetChoice(BaseModel):
49
56
  """
@@ -61,3 +68,12 @@ class SnippetChoice(BaseModel):
61
68
  ...,
62
69
  description="The snippet criteria to make the snippet choice.",
63
70
  )
71
+
72
+ # @model_validator(mode="before")
73
+ # @classmethod
74
+ # def validate_snippet_choice(cls, v):
75
+ # print(v)
76
+ # breakpoint()
77
+ # if not isinstance(v, dict):
78
+ # raise ValueError("SnippetChoice must be a dictionary.")
79
+ # return v
@@ -1,9 +1,10 @@
1
1
  # SPDX-FileCopyrightText: 2026 Helio Chissini de Castro <heliocastro@gmail.com>
2
2
  # SPDX-License-Identifier: MIT
3
+ #
3
4
  from pydantic import AnyUrl, BaseModel, ConfigDict, Field
4
5
 
5
6
 
6
- class Provenance(BaseModel):
7
+ class SnippetProvenance(BaseModel):
7
8
  """
8
9
  The URL of the [RepositoryProvenance] the snippet choice applies to.
9
10
  """
@@ -0,0 +1,25 @@
1
+ # SPDX-FileCopyrightText: 2026 Helio Chissini de Castro <heliocastro@gmail.com>
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ from pydantic import BaseModel, ConfigDict, Field
5
+
6
+ from .snippet.snippet_choice import SnippetChoice
7
+ from .snippet.snippet_provenance import SnippetProvenance
8
+
9
+
10
+ class SnippetChoices(BaseModel):
11
+ """
12
+ A collection of snippet choices for a given provenance.
13
+ """
14
+
15
+ model_config = ConfigDict(
16
+ extra="forbid",
17
+ )
18
+ provenance: SnippetProvenance = Field(
19
+ ...,
20
+ description="The source file for which the snippet choice is made.",
21
+ )
22
+ choices: list[SnippetChoice] = Field(
23
+ ...,
24
+ description="The snippet choice for the given source file.",
25
+ )
@@ -2,7 +2,9 @@
2
2
  # SPDX-License-Identifier: MIT
3
3
 
4
4
 
5
- from pydantic import BaseModel, ConfigDict, Field
5
+ from pydantic import BaseModel, ConfigDict, Field, field_validator
6
+
7
+ from ort.utils import convert_enum
6
8
 
7
9
  from .vulnerability_resolution_reason import VulnerabilityResolutionReason
8
10
 
@@ -29,3 +31,8 @@ class VulnerabilityResolution(BaseModel):
29
31
  comment: str = Field(
30
32
  description="A comment to further explain why the [reason] is applicable here.",
31
33
  )
34
+
35
+ @field_validator("reason", mode="before")
36
+ @classmethod
37
+ def validate_reason(cls, value):
38
+ return convert_enum(VulnerabilityResolutionReason, value)
@@ -0,0 +1,85 @@
1
+ # SPDX-FileCopyrightText: 2026 Helio Chissini de Castro <heliocastro@gmail.com>
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ from pydantic import BaseModel, ConfigDict, Field, model_validator
5
+
6
+ from .remote_artifact import RemoteArtifact
7
+ from .vcsinfo import VcsInfo
8
+
9
+
10
+ class SnippetProvenance(BaseModel):
11
+ """
12
+ Provenance information about the origin of source code.
13
+
14
+ This is a union type that can be one of the following:
15
+ - UnknownProvenance: No provenance information is available.
16
+ - ArtifactProvenance: Provenance information for a source artifact.
17
+ - RepositoryProvenance: Provenance information for a Version Control System location.
18
+ """
19
+
20
+ model_config = ConfigDict(extra="allow")
21
+
22
+ @model_validator(mode="before")
23
+ @classmethod
24
+ def validate_provenance(cls, v):
25
+ print(v)
26
+ breakpoint()
27
+ if not isinstance(v, dict):
28
+ raise ValueError("Provenance must be a dictionary.")
29
+ if "source_artifact" in v:
30
+ return ArtifactProvenance(**v)
31
+ elif "vcs_info" in v and "resolved_revision" in v:
32
+ return RepositoryProvenance(**v)
33
+ else:
34
+ return UnknownProvenance()
35
+
36
+
37
+ class UnknownProvenance(BaseModel):
38
+ """
39
+ Provenance information about the origin of source code.
40
+ """
41
+
42
+ model_config = ConfigDict(extra="forbid")
43
+
44
+
45
+ class KnownProvenance(BaseModel):
46
+ """
47
+ Provenance information about the origin of source code.
48
+ """
49
+
50
+ model_config = ConfigDict(extra="forbid")
51
+
52
+
53
+ class RemoteProvenance(KnownProvenance):
54
+ """
55
+ Provenance information about the origin of source code.
56
+ """
57
+
58
+ model_config = ConfigDict(extra="forbid")
59
+
60
+
61
+ class ArtifactProvenance(RemoteProvenance):
62
+ """
63
+ Provenance information for a source artifact.
64
+ """
65
+
66
+ model_config = ConfigDict(extra="forbid")
67
+
68
+ source_artifact: RemoteArtifact = Field(
69
+ description="The source artifact that was downloaded.",
70
+ )
71
+
72
+
73
+ class RepositoryProvenance(BaseModel):
74
+ """
75
+ Provenance information for a Version Control System location.
76
+ """
77
+
78
+ model_config = ConfigDict(extra="forbid")
79
+
80
+ vcs_info: VcsInfo = Field(
81
+ description="VCS info used to resolve the revision. May still contain a moving revision like a branch.",
82
+ )
83
+ resolved_revision: str = Field(
84
+ description="Resolved fixed VCS revision, not blank and not moving (e.g. Git commit SHA1)."
85
+ )
@@ -28,3 +28,11 @@ class Scope(BaseModel):
28
28
  "testing the product. But transitive dependencies would not be test dependencies of the test "
29
29
  "dependencies, but compile dependencies of test dependencies.",
30
30
  )
31
+
32
+ def __hash__(self) -> int:
33
+ return hash(self.name)
34
+
35
+ def __eq__(self, other) -> bool:
36
+ if not isinstance(other, Scope):
37
+ return NotImplemented
38
+ return self.name == other.name
File without changes
File without changes
File without changes
File without changes