v5.0.0
BREAKING CHANGES
- Dropped support for python<3.8 (#436 via #441; enable #433)
- Reworked license related models, collections, and factories (#365 via #466)
- Behavior
- API
- Enum
schema.SchemaVersionis no longer string-like (#442 via #447) - Enum
schema.OutputVersionis no longer string-like (#442 via #447) - Abstract class
output.BaseOutputrequires implementation of new methodoutput_format(#446 via #447) - Abstract method
output.BaseOutput.output_as_string()got new optional parameterindent(#437 via #458) - Abstract method
output.BaseOutput.output_as_string()accepts arbitrary kwargs (via #458, #462) - Removed class
factory.license.LicenseChoiceFactory(via #466)
The old functionality was integrated intofactory.license.LicenseFactory. - Method
factory.license.LicenseFactory.make_from_string()'s parametername_or_spdxwas renamed tovalue(via #466) - Method
factory.license.LicenseFactory.make_from_string()'s return value can also be aLicenseExpression(#365 via #466)
The behavior imitates the oldfactory.license.LicenseChoiceFactory.make_from_string() - Renamed class
module.Licensetomodule.license.DisjunctliveLicense(#365 via #466) - Removed class
module.LicenseChoice(#365 via #466)
Use dedicated classesmodule.license.DisjunctliveLicenseandmodule.license.LicenseExpressioninstead - All occurrences of
models.LicenseChoicewere replaced bymodels.licenses.License(#365 via #466) - All occurrences of
SortedSet[LicenseChoice]were specialized tomodels.license.LicenseRepository(#365 via #466)
- Enum
Fixed
- Serialization of multy-licenses (#365 via #466)
- Detect unused "dependent" components in
model.bom.validate()(via #464)
Changed
- Updated latest supported list of supported SPDX license identifiers (via #433)
- Shipped schema files are moved to a protected space (via #433)
These files were never intended for public use. - XML output uses a default namespace, which makes results smaller. (#438 via #458)
Added
- Support for Python 3.12 (via #460)
- JSON- & XML-Validators (#432, #446 via #433, #448)
The functionality might require additional dependencies, that can be installed with the extra "validation".
See the docs in section "Installation" for details. - JSON & XML can be generated in a more human-friendly form (#437, #438 via #458)
- Type hints, typings & overloads for better integration downstream (via #463)
- API
- New function
output.make_outputter()(via #469)
This replaces the deprecated functionoutput.get_instance(). - New sub-package
validation(#432, #446 via #433, #448, #469, #468, #469) - New class
exception.MissingOptionalDependencyException(#432 via #433) - New class
exception.LicenseExpressionAlongWithOthersException(#453 via #452) - New dictionaries
output.{json,xml}.BY_SCHEMA_VERSION(#446 via #447) - Existing implementations of class
output.BaseOutputnow have a new methodoutput_format(#446 via #447) - Existing implementations of method
output.BaseOutput.output_as_string()got new optional parameterindent(#437 via #458) - Existing implementations of method
output.BaseOutput.output_to_file()got new optional parameterindent(#437 via #458) - New method
factory.license.LicenseFactory.make_with_expression()(via #466) - New class
model.license.DisjunctiveLicense(#365 via #466) - New class
model.license.LicenseExpression(#365 via #466) - New class
model.license.LicenseRepository(#365 via #466) - New class
serialization.LicenseRepositoryHelper(#365 via #466)
- New function
Deprecated
- Function
output.get_instance()might be removed, useoutput.make_outputter()instead (via #469)
Tests
- Added validation tests with official CycloneDX schema test data (#432 via #433)
- Use proper snapshots, instead of pseudo comparison (#437 via #464)
- Added regression test for bug #365 (via #466, #467)
Misc
- Dependencies: bumped
py-serializable@^0.15.0, was@^0.11.1(via #458, #463, #464, #466) - Style: streamlined quotes and strings (via #472)
- Chore: bumped internal dev- and QA-tools (#436 via #441, #472)
- Chore: added more QA tools to prevent common security issues (via #473)
What's Changed
- feat!: v5.0.0 by @jkowalleck in #440
Full Changelog: v4.2.3...v5.0.0