diff --git a/cyclonedx/model/__init__.py b/cyclonedx/model/__init__.py index 3677ebf2..19e2de36 100644 --- a/cyclonedx/model/__init__.py +++ b/cyclonedx/model/__init__.py @@ -822,7 +822,7 @@ def __init__( self.url = url self.comment = comment self.type = type - self.hashes = hashes or [] # type:ignore[assignment] + self.hashes = hashes or [] @property @serializable.xml_sequence(1) diff --git a/cyclonedx/model/bom.py b/cyclonedx/model/bom.py index 7ed2dab7..4152f83c 100644 --- a/cyclonedx/model/bom.py +++ b/cyclonedx/model/bom.py @@ -79,14 +79,14 @@ def __init__( manufacture: Optional[OrganizationalEntity] = None, ) -> None: self.timestamp = timestamp or _get_now_utc() - self.tools = tools or [] # type:ignore[assignment] - self.authors = authors or [] # type:ignore[assignment] + self.tools = tools or [] + self.authors = authors or [] self.component = component self.supplier = supplier - self.licenses = licenses or [] # type:ignore[assignment] - self.properties = properties or [] # type:ignore[assignment] + self.licenses = licenses or [] + self.properties = properties or [] self.manufacturer = manufacturer - self.lifecycles = lifecycles or [] # type:ignore[assignment] + self.lifecycles = lifecycles or [] self.manufacture = manufacture if manufacture: @@ -179,7 +179,7 @@ def component(self) -> Optional[Component]: return self._component @component.setter - def component(self, component: Component) -> None: + def component(self, component: Optional[Component]) -> None: """ The (optional) component that the BOM describes. @@ -345,12 +345,12 @@ def __init__( self.serial_number = serial_number or uuid4() self.version = version self.metadata = metadata or BomMetaData() - self.components = components or [] # type:ignore[assignment] - self.services = services or [] # type:ignore[assignment] - self.external_references = external_references or [] # type:ignore[assignment] - self.vulnerabilities = vulnerabilities or [] # type:ignore[assignment] - self.dependencies = dependencies or [] # type:ignore[assignment] - self.properties = properties or [] # type:ignore[assignment] + self.components = components or [] + self.services = services or [] + self.external_references = external_references or [] + self.vulnerabilities = vulnerabilities or [] + self.dependencies = dependencies or [] + self.properties = properties or [] self.definitions = definitions or Definitions() @property diff --git a/cyclonedx/model/component.py b/cyclonedx/model/component.py index 6e26947e..88d5a292 100644 --- a/cyclonedx/model/component.py +++ b/cyclonedx/model/component.py @@ -207,8 +207,8 @@ def __init__( licenses: Optional[Iterable[License]] = None, copyright: Optional[Iterable[Copyright]] = None, ) -> None: - self.licenses = licenses or [] # type:ignore[assignment] - self.copyright = copyright or [] # type:ignore[assignment] + self.licenses = licenses or [] + self.copyright = copyright or [] # @property # ... @@ -527,7 +527,7 @@ def __init__( ) -> None: self.type = type self.diff = diff - self.resolves = resolves or [] # type:ignore[assignment] + self.resolves = resolves or [] @property @serializable.xml_attribute() @@ -623,11 +623,11 @@ def __init__( patches: Optional[Iterable[Patch]] = None, notes: Optional[str] = None, ) -> None: - self.ancestors = ancestors or [] # type:ignore[assignment] - self.descendants = descendants or [] # type:ignore[assignment] - self.variants = variants or [] # type:ignore[assignment] - self.commits = commits or [] # type:ignore[assignment] - self.patches = patches or [] # type:ignore[assignment] + self.ancestors = ancestors or [] + self.descendants = descendants or [] + self.variants = variants or [] + self.commits = commits or [] + self.patches = patches or [] self.notes = notes @property @@ -1111,7 +1111,7 @@ def __init__( self._bom_ref = _bom_ref_from_str(bom_ref) self.supplier = supplier self.manufacturer = manufacturer - self.authors = authors or [] # type:ignore[assignment] + self.authors = authors or [] self.author = author self.publisher = publisher self.group = group @@ -1119,23 +1119,23 @@ def __init__( self.version = version self.description = description self.scope = scope - self.hashes = hashes or [] # type:ignore[assignment] - self.licenses = licenses or [] # type:ignore[assignment] + self.hashes = hashes or [] + self.licenses = licenses or [] self.copyright = copyright self.cpe = cpe self.purl = purl - self.omnibor_ids = omnibor_ids or [] # type:ignore[assignment] - self.swhids = swhids or [] # type:ignore[assignment] + self.omnibor_ids = omnibor_ids or [] + self.swhids = swhids or [] self.swid = swid self.modified = modified self.pedigree = pedigree - self.external_references = external_references or [] # type:ignore[assignment] - self.properties = properties or [] # type:ignore[assignment] - self.components = components or [] # type:ignore[assignment] + self.external_references = external_references or [] + self.properties = properties or [] + self.components = components or [] self.evidence = evidence self.release_notes = release_notes self.crypto_properties = crypto_properties - self.tags = tags or [] # type:ignore[assignment] + self.tags = tags or [] if modified: warn('`.component.modified` is deprecated from CycloneDX v1.3 onwards. ' diff --git a/cyclonedx/model/contact.py b/cyclonedx/model/contact.py index 3a4704b4..8bc19114 100644 --- a/cyclonedx/model/contact.py +++ b/cyclonedx/model/contact.py @@ -296,8 +296,8 @@ def __init__( ) -> None: self.name = name self.address = address - self.urls = urls or [] # type:ignore[assignment] - self.contacts = contacts or [] # type:ignore[assignment] + self.urls = urls or [] + self.contacts = contacts or [] @property @serializable.xml_sequence(10) diff --git a/cyclonedx/model/crypto.py b/cyclonedx/model/crypto.py index b7557c77..6bed0283 100644 --- a/cyclonedx/model/crypto.py +++ b/cyclonedx/model/crypto.py @@ -295,10 +295,10 @@ def __init__( self.curve = curve self.execution_environment = execution_environment self.implementation_platform = implementation_platform - self.certification_levels = certification_levels or [] # type:ignore[assignment] + self.certification_levels = certification_levels or [] self.mode = mode self.padding = padding - self.crypto_functions = crypto_functions or [] # type:ignore[assignment] + self.crypto_functions = crypto_functions or [] self.classical_security_level = classical_security_level self.nist_quantum_security_level = nist_quantum_security_level @@ -1107,8 +1107,8 @@ def __init__( identifiers: Optional[Iterable[str]] = None, ) -> None: self.name = name - self.algorithms = algorithms or [] # type:ignore[assignment] - self.identifiers = identifiers or [] # type:ignore[assignment] + self.algorithms = algorithms or [] + self.identifiers = identifiers or [] @property @serializable.xml_sequence(10) @@ -1202,12 +1202,12 @@ def __init__( esn: Optional[bool] = None, auth: Optional[Iterable[BomRef]] = None, ) -> None: - self.encr = encr or [] # type:ignore[assignment] - self.prf = prf or [] # type:ignore[assignment] - self.integ = integ or [] # type:ignore[assignment] - self.ke = ke or [] # type:ignore[assignment] + self.encr = encr or [] + self.prf = prf or [] + self.integ = integ or [] + self.ke = ke or [] self.esn = esn - self.auth = auth or [] # type:ignore[assignment] + self.auth = auth or [] @property @serializable.xml_sequence(10) @@ -1345,9 +1345,9 @@ def __init__( ) -> None: self.type = type self.version = version - self.cipher_suites = cipher_suites or [] # type:ignore[assignment] + self.cipher_suites = cipher_suites or [] self.ikev2_transform_types = ikev2_transform_types - self.crypto_refs = crypto_refs or [] # type:ignore[assignment] + self.crypto_refs = crypto_refs or [] @property @serializable.xml_sequence(10) diff --git a/cyclonedx/model/definition.py b/cyclonedx/model/definition.py index 7ec28bda..a6555697 100644 --- a/cyclonedx/model/definition.py +++ b/cyclonedx/model/definition.py @@ -111,11 +111,11 @@ def __init__( self.identifier = identifier self.title = title self.text = text - self.descriptions = descriptions or () # type:ignore[assignment] - self.open_cre = open_cre or () # type:ignore[assignment] - self.parent = parent # type:ignore[assignment] - self.properties = properties or () # type:ignore[assignment] - self.external_references = external_references or () # type:ignore[assignment] + self.descriptions = descriptions or () + self.open_cre = open_cre or () + self.parent = parent + self.properties = properties or () + self.external_references = external_references or () @property @serializable.type_mapping(BomRef) @@ -300,7 +300,7 @@ def __init__( self.identifier = identifier self.title = title self.description = description - self.requirements = requirements or () # type:ignore[assignment] + self.requirements = requirements or () @property @serializable.type_mapping(BomRef) @@ -421,9 +421,9 @@ def __init__( self.version = version self.description = description self.owner = owner - self.requirements = requirements or () # type:ignore[assignment] - self.levels = levels or () # type:ignore[assignment] - self.external_references = external_references or () # type:ignore[assignment] + self.requirements = requirements or () + self.levels = levels or () + self.external_references = external_references or () # TODO: signature @property @@ -584,7 +584,7 @@ def __init__( self, *, standards: Optional[Iterable[Standard]] = None ) -> None: - self.standards = standards or () # type:ignore[assignment] + self.standards = standards or () @property @serializable.xml_array(serializable.XmlArraySerializationType.NESTED, 'standard') diff --git a/cyclonedx/model/dependency.py b/cyclonedx/model/dependency.py index 49b51428..eea79955 100644 --- a/cyclonedx/model/dependency.py +++ b/cyclonedx/model/dependency.py @@ -58,7 +58,7 @@ class Dependency: def __init__(self, ref: BomRef, dependencies: Optional[Iterable['Dependency']] = None) -> None: self.ref = ref - self.dependencies = dependencies or [] # type:ignore[assignment] + self.dependencies = dependencies or [] @property @serializable.type_mapping(BomRef) diff --git a/cyclonedx/model/issue.py b/cyclonedx/model/issue.py index 1369a88c..3d9f30de 100644 --- a/cyclonedx/model/issue.py +++ b/cyclonedx/model/issue.py @@ -132,7 +132,7 @@ def __init__( self.name = name self.description = description self.source = source - self.references = references or [] # type:ignore[assignment] + self.references = references or [] @property @serializable.xml_attribute() diff --git a/cyclonedx/model/release_note.py b/cyclonedx/model/release_note.py index 970d7c6e..51b704d6 100644 --- a/cyclonedx/model/release_note.py +++ b/cyclonedx/model/release_note.py @@ -55,11 +55,11 @@ def __init__( self.social_image = social_image self.description = description self.timestamp = timestamp - self.aliases = aliases or [] # type:ignore[assignment] - self.tags = tags or [] # type:ignore[assignment] - self.resolves = resolves or [] # type:ignore[assignment] - self.notes = notes or [] # type:ignore[assignment] - self.properties = properties or [] # type:ignore[assignment] + self.aliases = aliases or [] + self.tags = tags or [] + self.resolves = resolves or [] + self.notes = notes or [] + self.properties = properties or [] @property @serializable.xml_sequence(1) diff --git a/cyclonedx/model/service.py b/cyclonedx/model/service.py index 332456cc..c50bcb25 100644 --- a/cyclonedx/model/service.py +++ b/cyclonedx/model/service.py @@ -74,15 +74,15 @@ def __init__( self.name = name self.version = version self.description = description - self.endpoints = endpoints or [] # type:ignore[assignment] + self.endpoints = endpoints or [] self.authenticated = authenticated self.x_trust_boundary = x_trust_boundary - self.data = data or [] # type:ignore[assignment] - self.licenses = licenses or [] # type:ignore[assignment] - self.external_references = external_references or [] # type:ignore[assignment] - self.services = services or [] # type:ignore[assignment] + self.data = data or [] + self.licenses = licenses or [] + self.external_references = external_references or [] + self.services = services or [] self.release_notes = release_notes - self.properties = properties or [] # type:ignore[assignment] + self.properties = properties or [] @property @serializable.json_name('bom-ref') diff --git a/cyclonedx/model/tool.py b/cyclonedx/model/tool.py index afe31441..6b56057f 100644 --- a/cyclonedx/model/tool.py +++ b/cyclonedx/model/tool.py @@ -62,8 +62,8 @@ def __init__( self.vendor = vendor self.name = name self.version = version - self.hashes = hashes or () # type:ignore[assignment] - self.external_references = external_references or () # type:ignore[assignment] + self.hashes = hashes or () + self.external_references = external_references or () @property @serializable.xml_sequence(1) @@ -207,9 +207,9 @@ def __init__( warn('`@.tools` is deprecated from CycloneDX v1.5 onwards. ' 'Please use `@.components` and `@.services` instead.', DeprecationWarning) - self.components = components or () # type:ignore[assignment] - self.services = services or () # type:ignore[assignment] - self.tools = tools or () # type:ignore[assignment] + self.components = components or () + self.services = services or () + self.tools = tools or () @property def components(self) -> 'SortedSet[Component]': diff --git a/cyclonedx/model/vulnerability.py b/cyclonedx/model/vulnerability.py index 9893ef32..cd6809b9 100644 --- a/cyclonedx/model/vulnerability.py +++ b/cyclonedx/model/vulnerability.py @@ -168,7 +168,7 @@ def __init__( versions: Optional[Iterable[BomTargetVersionRange]] = None, ) -> None: self.ref = ref - self.versions = versions or [] # type:ignore[assignment] + self.versions = versions or [] @property @serializable.xml_sequence(1) @@ -241,7 +241,7 @@ def __init__( ) -> None: self.state = state self.justification = justification - self.responses = responses or [] # type:ignore[assignment] + self.responses = responses or [] self.detail = detail self.first_issued = first_issued self.last_updated = last_updated @@ -904,8 +904,8 @@ def __init__( organizations: Optional[Iterable[OrganizationalEntity]] = None, individuals: Optional[Iterable[OrganizationalContact]] = None, ) -> None: - self.organizations = organizations or [] # type:ignore[assignment] - self.individuals = individuals or [] # type:ignore[assignment] + self.organizations = organizations or [] + self.individuals = individuals or [] @property @serializable.xml_array(serializable.XmlArraySerializationType.NESTED, 'organization') @@ -999,22 +999,22 @@ def __init__( self._bom_ref = _bom_ref_from_str(bom_ref) self.id = id self.source = source - self.references = references or [] # type:ignore[assignment] - self.ratings = ratings or [] # type:ignore[assignment] - self.cwes = cwes or [] # type:ignore[assignment] + self.references = references or [] + self.ratings = ratings or [] + self.cwes = cwes or [] self.description = description self.detail = detail self.recommendation = recommendation self.workaround = workaround - self.advisories = advisories or [] # type:ignore[assignment] + self.advisories = advisories or [] self.created = created self.published = published self.updated = updated self.credits = credits - self.tools = tools or [] # type:ignore[assignment] + self.tools = tools or [] self.analysis = analysis - self.affects = affects or [] # type:ignore[assignment] - self.properties = properties or [] # type:ignore[assignment] + self.affects = affects or [] + self.properties = properties or [] @property @serializable.json_name('bom-ref') diff --git a/cyclonedx/output/xml.py b/cyclonedx/output/xml.py index 7121999f..3e5799fa 100644 --- a/cyclonedx/output/xml.py +++ b/cyclonedx/output/xml.py @@ -60,7 +60,7 @@ def generate(self, force_regeneration: bool = False) -> None: bom.validate() xmlns = self.get_target_namespace() with BomRefDiscriminator.from_bom(bom): - self._bom_xml = '\n' + xml_dumps( + self._bom_xml = '\n' + xml_dumps( # type:ignore[call-overload] bom.as_xml( # type:ignore[attr-defined] _view, as_string=False, xmlns=xmlns), method='xml', default_namespace=xmlns, encoding='unicode', diff --git a/pyproject.toml b/pyproject.toml index 70eef125..c4b9c25d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,7 +93,7 @@ flake8-use-fstring = "1.4" pep8-naming = "0.15.1" isort = "6.0.1" autopep8 = "2.3.2" -mypy = "1.15.0" +mypy = "1.16.0" tomli = { version = "2.2.1", python = "<3.11" } tox = "4.26.0" xmldiff = "2.7.0"