|
2 | 2 |
|
3 | 3 |
|
4 | 4 |
|
| 5 | +## v5.0.0 (2023-10-24) |
| 6 | + |
| 7 | +### Breaking |
| 8 | + |
| 9 | +* feat!: v5.0.0 (#440) |
| 10 | + |
| 11 | +BREAKING CHANGES |
| 12 | +---------------- |
| 13 | +* Dropped support for python<3.8 ([#436] via [#441]; enable [#433]) |
| 14 | +* Reworked license related models, collections, and factories ([#365] via [#466]) |
| 15 | +* Behavior |
| 16 | + * Method `model.bom.Bom.validate()` will throw `exception.LicenseExpressionAlongWithOthersException`, if detecting invalid license constellation ([#453] via [#452]) |
| 17 | + * Fixed tuple comparison when unequal lengths (via [#461]) |
| 18 | +* API |
| 19 | + * Enum `schema.SchemaVersion` is no longer string-like ([#442] via [#447]) |
| 20 | + * Enum `schema.OutputVersion` is no longer string-like ([#442] via [#447]) |
| 21 | + * Abstract class `output.BaseOutput` requires implementation of new method `output_format` ([#446] via [#447]) |
| 22 | + * Abstract method `output.BaseOutput.output_as_string()` got new optional parameter `indent` ([#437] via [#458]) |
| 23 | + * Abstract method `output.BaseOutput.output_as_string()` accepts arbitrary kwargs (via [#458], [#462]) |
| 24 | + * Removed class `factory.license.LicenseChoiceFactory` (via [#466]) |
| 25 | + The old functionality was integrated into `factory.license.LicenseFactory`. |
| 26 | + * Method `factory.license.LicenseFactory.make_from_string()`'s parameter `name_or_spdx` was renamed to `value` (via [#466]) |
| 27 | + * Method `factory.license.LicenseFactory.make_from_string()`'s return value can also be a `LicenseExpression` ([#365] via [#466]) |
| 28 | + The behavior imitates the old `factory.license.LicenseChoiceFactory.make_from_string()` |
| 29 | + * Renamed class `module.License` to `module.license.DisjunctliveLicense` ([#365] via [#466]) |
| 30 | + * Removed class `module.LicenseChoice` ([#365] via [#466]) |
| 31 | + Use dedicated classes `module.license.DisjunctliveLicense` and `module.license.LicenseExpression` instead |
| 32 | + * All occurrences of `models.LicenseChoice` were replaced by `models.licenses.License` ([#365] via [#466]) |
| 33 | + * All occurrences of `SortedSet[LicenseChoice]` were specialized to `models.license.LicenseRepository` ([#365] via [#466]) |
| 34 | + |
| 35 | + |
| 36 | +Fixed |
| 37 | +---------------- |
| 38 | +* Serialization of multy-licenses ([#365] via [#466]) |
| 39 | +* Detect unused "dependent" components in `model.bom.validate()` (via [#464]) |
| 40 | + |
| 41 | + |
| 42 | +Changed |
| 43 | +---------------- |
| 44 | +* Updated latest supported list of supported SPDX license identifiers (via [#433]) |
| 45 | +* Shipped schema files are moved to a protected space (via [#433]) |
| 46 | + These files were never intended for public use. |
| 47 | +* XML output uses a default namespace, which makes results smaller. ([#438] via [#458]) |
| 48 | + |
| 49 | + |
| 50 | +Added |
| 51 | +---------------- |
| 52 | +* Support for Python 3.12 (via [#460]) |
| 53 | +* JSON- & XML-Validators ([#432], [#446] via [#433], [#448]) |
| 54 | + The functionality might require additional dependencies, that can be installed with the extra "validation". |
| 55 | + See the docs in section "Installation" for details. |
| 56 | +* JSON & XML can be generated in a more human-friendly form ([#437], [#438] via [#458]) |
| 57 | +* Type hints, typings & overloads for better integration downstream (via [#463]) |
| 58 | +* API |
| 59 | + * New function `output.make_outputter()` (via [#469]) |
| 60 | + This replaces the deprecated function `output.get_instance()`. |
| 61 | + * New sub-package `validation` ([#432], [#446] via [#433], [#448], [#469], [#468], [#469]) |
| 62 | + * New class `exception.MissingOptionalDependencyException` ([#432] via [#433]) |
| 63 | + * New class `exception.LicenseExpressionAlongWithOthersException` ([#453] via [#452]) |
| 64 | + * New dictionaries `output.{json,xml}.BY_SCHEMA_VERSION` ([#446] via [#447]) |
| 65 | + * Existing implementations of class `output.BaseOutput` now have a new method `output_format` ([#446] via [#447]) |
| 66 | + * Existing implementations of method `output.BaseOutput.output_as_string()` got new optional parameter `indent` ([#437] via [#458]) |
| 67 | + * Existing implementations of method `output.BaseOutput.output_to_file()` got new optional parameter `indent` ([#437] via [#458]) |
| 68 | + * New method `factory.license.LicenseFactory.make_with_expression()` (via [#466]) |
| 69 | + * New class `model.license.DisjunctiveLicense` ([#365] via [#466]) |
| 70 | + * New class `model.license.LicenseExpression` ([#365] via [#466]) |
| 71 | + * New class `model.license.LicenseRepository` ([#365] via [#466]) |
| 72 | + * New class `serialization.LicenseRepositoryHelper` ([#365] via [#466]) |
| 73 | + |
| 74 | + |
| 75 | +Deprecated |
| 76 | +---------------- |
| 77 | +* Function `output.get_instance()` might be removed, use `output.make_outputter()` instead (via [#469]) |
| 78 | + |
| 79 | + |
| 80 | +Tests |
| 81 | +---------------- |
| 82 | +* Added validation tests with official CycloneDX schema test data ([#432] via [#433]) |
| 83 | +* Use proper snapshots, instead of pseudo comparison ([#437] via [#464]) |
| 84 | +* Added regression test for bug [#365] (via [#466], [#467]) |
| 85 | + |
| 86 | + |
| 87 | +Misc |
| 88 | +---------------- |
| 89 | +* Dependencies: bumped `py-serializable@^0.15.0`, was `@^0.11.1` (via [#458], [#463], [#464], [#466]) |
| 90 | +* Style: streamlined quotes and strings (via [#472]) |
| 91 | +* Chore: bumped internal dev- and QA-tools ([#436] via [#441], [#472]) |
| 92 | +* Chore: added more QA tools to prevent common security issues (via [#473]) |
| 93 | + |
| 94 | + |
| 95 | +[#432]: https://github.com/CycloneDX/cyclonedx-python-lib/issues/432 |
| 96 | +[#433]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/433 |
| 97 | +[#436]: https://github.com/CycloneDX/cyclonedx-python-lib/issues/436 |
| 98 | +[#437]: https://github.com/CycloneDX/cyclonedx-python-lib/issues/437 |
| 99 | +[#365]: https://github.com/CycloneDX/cyclonedx-python-lib/issues/365 |
| 100 | +[#438]: https://github.com/CycloneDX/cyclonedx-python-lib/issues/438 |
| 101 | +[#440]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/440 |
| 102 | +[#441]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/441 |
| 103 | +[#442]: https://github.com/CycloneDX/cyclonedx-python-lib/issues/442 |
| 104 | +[#446]: https://github.com/CycloneDX/cyclonedx-python-lib/issues/446 |
| 105 | +[#447]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/447 |
| 106 | +[#448]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/448 |
| 107 | +[#452]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/452 |
| 108 | +[#453]: https://github.com/CycloneDX/cyclonedx-python-lib/issues/453 |
| 109 | +[#458]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/458 |
| 110 | +[#460]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/460 |
| 111 | +[#461]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/461 |
| 112 | +[#462]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/462 |
| 113 | +[#463]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/463 |
| 114 | +[#464]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/464 |
| 115 | +[#466]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/466 |
| 116 | +[#467]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/467 |
| 117 | +[#468]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/468 |
| 118 | +[#469]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/469 |
| 119 | +[#472]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/472 |
| 120 | +[#473]: https://github.com/CycloneDX/cyclonedx-python-lib/pull/473 |
| 121 | + |
| 122 | +--------- |
| 123 | + |
| 124 | +Signed-off-by: Jan Kowalleck <[email protected]> |
| 125 | +Signed-off-by: Jan Kowalleck <[email protected]> |
| 126 | +Signed-off-by: semantic-release <semantic-release> |
| 127 | +Co-authored-by: semantic-release <semantic-release> ([`26b151c`](https://github.com/CycloneDX/cyclonedx-python-lib/commit/26b151cba7d7d484f23ee7888444f09ad6d016b1)) |
| 128 | + |
| 129 | + |
5 | 130 | ## v4.2.3 (2023-10-16)
|
6 | 131 |
|
7 | 132 | ### Chore
|
|
0 commit comments