1212 Any ,
1313)
1414
15- from pydantic import BaseModel
15+ from pydantic import (
16+ BaseModel ,
17+ ConfigDict ,
18+ )
1619
1720from exasol .toolbox .util .dependencies .shared_models import (
1821 Package ,
@@ -62,7 +65,10 @@ def get_link(self, package: str, vuln_id: str) -> str:
6265 return map_link [self ].format (package = package , vuln_id = vuln_id )
6366
6467
65- class Vulnerability (Package ):
68+ class Vulnerability (BaseModel ):
69+ model_config = ConfigDict (frozen = True , arbitrary_types_allowed = True )
70+
71+ package : Package
6672 id : str
6773 aliases : list [str ]
6874 fix_versions : list [str ]
@@ -76,8 +82,7 @@ def from_audit_entry(
7682 Create a Vulnerability from a pip-audit vulnerability entry
7783 """
7884 return cls (
79- name = package_name ,
80- version = version ,
85+ package = Package (name = package_name , version = version ),
8186 id = vuln_entry ["id" ],
8287 aliases = vuln_entry ["aliases" ],
8388 fix_versions = vuln_entry ["fix_versions" ],
@@ -91,19 +96,19 @@ def references(self) -> list[str]:
9196 @property
9297 def reference_links (self ) -> tuple [str , ...]:
9398 return tuple (
94- source .get_link (package = self .name , vuln_id = reference )
99+ source .get_link (package = self .package . name , vuln_id = reference )
95100 for reference in self .references
96101 if (source := VulnerabilitySource .from_prefix (reference .upper ()))
97102 )
98103
99104 @property
100105 def security_issue_entry (self ) -> dict [str , str | list [str ]]:
101106 return {
102- "name" : self .name ,
103- "version" : str (self .version ),
107+ "name" : self .package . name ,
108+ "version" : str (self .package . version ),
104109 "refs" : self .references ,
105110 "description" : self .description ,
106- "coordinates" : self .coordinates ,
111+ "coordinates" : self .package . coordinates ,
107112 "references" : self .reference_links ,
108113 }
109114
@@ -129,7 +134,7 @@ def subsection_for_changelog_summary(self) -> str:
129134 """
130135 links_join = "\n * " .join (sorted (self .reference_links ))
131136 references_subsection = f"\n #### References:\n \n * { links_join } \n \n "
132- subsection = f"### { self .vulnerability_id } in { self .coordinates } \n \n { self .description } \n { references_subsection } "
137+ subsection = f"### { self .vulnerability_id } in { self .package . coordinates } \n \n { self .description } \n { references_subsection } "
133138 return cleandoc (subsection .strip ())
134139
135140
0 commit comments