@@ -57,6 +57,16 @@ class VulnerabilitySeverity:
5757 published_at : Optional [datetime .datetime ] = None
5858 url : Optional [str ] = None
5959
60+ def __post_init__ (self ):
61+ if not self .system :
62+ raise ValueError ("system is required for VulnerabilitySeverity" )
63+
64+ if not isinstance (self .system , ScoringSystem ):
65+ raise TypeError (f"system must be a ScoringSystem, got { type (self .system )!r} " )
66+
67+ if not isinstance (self .value , str ):
68+ self .value = str (self .value )
69+
6070 def to_dict (self ):
6171 data = {
6272 "system" : self .system .identifier ,
@@ -469,6 +479,42 @@ def __post_init__(self):
469479 "an affected version range, introduced commit patches, or fixed commit patches."
470480 )
471481
482+ if self .affected_version_range is not None and not isinstance (
483+ self .affected_version_range , VersionRange
484+ ):
485+ raise TypeError (
486+ f"affected_version_range must be VersionRange or None, got { type (self .affected_version_range )!r} "
487+ )
488+
489+ if self .fixed_version_range is not None and not isinstance (
490+ self .fixed_version_range , VersionRange
491+ ):
492+ raise TypeError (
493+ f"fixed_version_range must be VersionRange or None, got { type (self .fixed_version_range )!r} "
494+ )
495+
496+ if not isinstance (self .introduced_by_commit_patches , list ):
497+ raise TypeError (
498+ f"introduced_by_commit_patches must be a list, got { type (self .introduced_by_commit_patches )!r} "
499+ )
500+
501+ if not isinstance (self .fixed_by_commit_patches , list ):
502+ raise TypeError (
503+ f"fixed_by_commit_patches must be a list, got { type (self .fixed_by_commit_patches )!r} "
504+ )
505+
506+ for item in self .introduced_by_commit_patches :
507+ if not isinstance (item , PackageCommitPatchData ):
508+ raise TypeError (
509+ f"introduced_by_commit_patches items must be PackageCommitPatchData, got { type (item )!r} "
510+ )
511+
512+ for item in self .fixed_by_commit_patches :
513+ if not isinstance (item , PackageCommitPatchData ):
514+ raise TypeError (
515+ f"fixed_by_commit_patches items must be PackageCommitPatchData, got { type (item )!r} "
516+ )
517+
472518 def __lt__ (self , other ):
473519 if not isinstance (other , AffectedPackageV2 ):
474520 return NotImplemented
@@ -648,6 +694,7 @@ def to_dict(self):
648694 def from_dict (cls , advisory_data ):
649695 date_published = advisory_data ["date_published" ]
650696 transformed = {
697+ "advisory_id" : advisory_data ["advisory_id" ],
651698 "aliases" : advisory_data ["aliases" ],
652699 "summary" : advisory_data ["summary" ],
653700 "affected_packages" : [
0 commit comments