Releases: spdx/tools-python
Releases · spdx/tools-python
v0.8.4
Main change: added support for Python 3.14, dropped support for 3.7, 3.8 and 3.9
What's Changed
- [issue-839] Drop Python 3.7 support and fix CI pipeline issues by @armintaenzertng in #841
- [issue-854] Remove some control characters from JSON SPDX by @zbleness in #855
- downloadLocation URIs not case sensitive by @clabbenius in #826
- README.md: State that the experimental SPDX3 support is write-only. by @oli-ben in #861
- update GitHub Actions to Python 3.14, drop support for 3.8 and 3.9 by @armintaenzertng in #867
- Add return type Document for parse_file() by @bact in #836
- Use import.resources instead of file by @bact in #851
- README + process.md: Update directory name and parameters to current + fix Markdown warnings by @bact & @armintaenzertng in #869
New Contributors
- @zbleness made their first contribution in #855
- @clabbenius made their first contribution in #826
- @oli-ben made their first contribution in #861
- @bact made their first contribution in #836
Full Changelog: v0.8.3...v0.8.4
v0.8.3
What's Changed
- [issue-771] fix license expression error handling in tag-value parser by @armintaenzertng in #772
- spdx3: software_purpose: add REQUIREMENT type by @stanislaw in #787
- [issue-798] fix tag-value parser: parse Tool or Organization as annotator by @meretp in #799
- [issue-773] shorten output of FileNotFoundError when called via the CLI by @armintaenzertng in #777
- [issue-774] fix tag-value output when related_spdx_element_id is "NONE" or "NOASSERTION" by @armintaenzertng in #778
- [issue-775] catch decoding errors while parsing using the cli tool by @armintaenzertng in #779
- [issue-806] replace Licensing() with spdx_licensing by @armintaenzertng in #814
- spdx3: element_writer: switch from tab characters to two spaces by @stanislaw in #785
- [issue-788] fix tag-value parser to allow NONE and NOASSERTION for pa… by @meretp in #816
- update changelog for 0.8.3 release by @armintaenzertng in #824
New Contributors
- @stanislaw made their first contribution in #787
Full Changelog: v0.8.2...v0.8.3
v0.8.2
What's Changed
- add
encodingparameter for parsing files by @chrisdecker1201 in #756 - [issue-754] output FilesAnalyzed boolean in lowercase in tag-value by @armintaenzertng in #757
- [issue-753] only allow lowercase values for FilesAnalyzed in tag-value by @armintaenzertng in #758
- fix(validation): also allow URLs in download locations by @maxhbr in #763
- implement recommended UTF-8 encoding for reading and writing SPDX files by @chrisdecker1201 in #759
- fix(validation): fix error generation in expression validator by @maxhbr in #765
- add documentation on the code architecture by @armintaenzertng in #752
- Handle timezone-aware datetime objects when writing SPDX. by @licquia in #768
- update changelog for 0.8.2 release by @armintaenzertng in #769
Full Changelog: v0.8.1...v0.8.2
v0.8.1
What's Changed
- add SPDX tech mailing list link to README by @armintaenzertng in #737
- make relationship parsing to be more efficient through precomputation by @lumjjb in #743
- expand url regex to allow for userinfo by @bdehamer in #746
- only instantiate
get_spdx_licensing()once in the project by @armintaenzertng in #749 - [issue-744] implement validation of external license references by @armintaenzertng in #750
- update changelog for 0.8.1 by @armintaenzertng in #751
New Contributors
Full Changelog: v0.8.0...v0.8.1
v0.8.0
What's Changed
- [fix] remove leftover legacy files. Add
NOASSERTIONas possible value… by @armintaenzertng in #370 - [Issue 305] add new json parser by @meretp in #366
- [issue-389] allow NONE and NOASSERTION in related_spdx_element_id by @armintaenzertng in #390
- [format] delete unused imports by @meretp in #393
- [issue-381] Add tag-value writer by @armintaenzertng in #396
- convert related_spdx_element_id to str in tv writer by @armintaenzertng in #399
- [issue-388] Update CLI tools for the new parsers/writers by @armintaenzertng in #401
- [issue-397] make fixtures valid and replace valid_defaults.py by @armintaenzertng in #409
- [issue-403] change spdx version handling during validation by @armintaenzertng in #404
- [issue-267] Add GitHub Actions workflow by @armintaenzertng in #410
- GitHub Actions fix by @armintaenzertng in #414
- Minor parsing/writing fixes by @armintaenzertng in #412
- Introduce src-layout by @meretp in #416
- add dummy config.yml to pass pipeline by @meretp in #418
- [issue-397] use fixtures in writer tests by @meretp in #417
- [issue-420] fix order of mocks to match input arguments by @meretp in #421
- [issue-392] make usage of license_concluded consistent by @meretp in #422
- [issue-400] ignore duplicated relationships while parsing by @meretp in #423
- also use the src-layout for tests by @meretp in #419
- move typing to common module to prepare for the prototype of spdx 3.0 by @meretp in #430
- Validate ExternalPackageRef by @armintaenzertng in #439
- [issue-443] change file name validation logic by @armintaenzertng in #445
- [issue-442] change CLI to read version from document by @armintaenzertng in #446
- [issue-10] use license_expression library for LicenseExpression by @armintaenzertng in #447
- [issue-457] add "no #" requirement to validation messages by @armintaenzertng in #458
- [issue-407] add rdf writer by @meretp in #448
- [issue-378] implement invalidation of duplicated SPDX Ids by @armintaenzertng in #459
- [issue-376] add tests for spdx_id_validators by @armintaenzertng in #460
- [issue-386] Finish Package validation by @armintaenzertng in #461
- [issue-375] test "document describes at least one element" by @armintaenzertng in #462
- [issue-466] bug fix and add test by @meretp in #467
- [issue-407] write comments for relationships by @meretp in #470
- fix helper method by @meretp in #484
- Clean up examples by @meretp in #482
- [issue-407] add document namespace to unknown types in external packa… by @meretp in #474
- Issue 456 add rdf parser by @meretp in #469
- SPDX-2.2 validation by @armintaenzertng in #490
- [issue-374] implement license expression validation by @armintaenzertng in #493
- [issue-391] update readme to reflect the new usage after refactoring by @armintaenzertng in #495
- [issue-441] replace print() with logging by @armintaenzertng in #494
- [fix] use correct value for LicenseListVersion by @meretp in #501
- fix creation info writer test by @meretp in #510
- Issue 382 tag value parser by @meretp in #502
- [issue-228] make type hints in code readable for downstream packages by @meretp in #515
- [fix] move "py.typed" to package root directory by @meretp in #516
- Fix tag value writer by @meretp in #517
- [issue-518] rename file_type to file_types by @armintaenzertng in #519
- Issue 503 allow list with noassertion by @meretp in #505
- fix the version of typeguard by @armintaenzertng in #524
- Change error messages related to ISO 8601 by @jspeed-meyers in #530
- Enable dependabot version checking by @goneall in #526
- Added convenience function to extract SPDX elements by their Id by @HarshvMahawar in #531
- [issue-402] add validation option to tag-value writer by @meretp in #536
- Add python 3.11 to GitHub Action by @meretp in #537
- Cherrypick old commits and delete unused files by @armintaenzertng in #538
- small changes to tag-value lexer/parser by @armintaenzertng in #534
- update README for when the refactor branch is merged to main by @armintaenzertng in #539
- [issue-487] add tests for the
document_utils.pymodule by @armintaenzertng in #533 - Merged the refactoring branch into main by @maxhbr in #541
- [issue-532] Add linter action by @meretp in #544
- Fix code style by @meretp in #546
- [issue-511] replace license text with SPDX license identifier by @armintaenzertng in #548
- [issue-547] fix rdf parser by @meretp in #549
- update the readme to point at the correct branch for v0.7 by @armintaenzertng in #551
- shorten line lengths in README by @armintaenzertng in #552
- add missing license identifiers by @armintaenzertng in #557
- [issue-561] fix rdf parser by @meretp in #563
- [issue-564] add constant for "SPDXRef-DOCUMENT" by @meretp in #565
- [issue-558] add visualization feature by @meretp in #562
- [issue-394] add tests for tag_value writer by @meretp in #567
- [issue-570] change fixture dates by @armintaenzertng in #571
- [issue-558] add test for optional feature to GitHub Action by @meretp in #568
- [issue-402] change
write_document()towrite_document_to_file()by @armintaenzertng in #576 - [issue-573] unify
parse_from_filetests for all formats by @armintaenzertng in #574 - [issue-540] change DESCRIBES validation by @armintaenzertng in #577
- Remove
documentDescribesandhasFilesfrom json output by @armintaenzertng in #579 - [issue-580] RDF: don't output relationship comment if there is none by @armintaenzertng in #581
- [issue_583] fix type hint by @meretp in #584
- [issue-375] add validation test for SPDX Lite by @armintaenzertng in #587
- [issue-586] fix CLI by @meretp in #588
- [issue_589] fix json parser: process fields that can be "NOASSERTION"… by @meretp in #590
- [issue_508] add methods to remove duplicated items from list properties by @meretp in #591
- [issue-593] add imports to README example by @armintaenzertng in #594
- [issue_592] add top-level package by @meretp in #595
- [issue-593] expose model classes in model package init by @armintaenzertng in #597
- [issue-593] add spdx2_document_from_scratch example by @armintaenzertng in #598
- make flake8 ignore all init.py by @armintaenzertng in #599
- make example files valid by @meretp in #607
- Issue 611 fix xml parser by @meretp in #612
- [issue-511] add license header by @meretp...
v0.8.0rc3
What's Changed
- remove unused CircleCI workflow and directory by @armintaenzertng in #729
- make "Package CONTAINS Package" valid even when
files_analyzed == Falseby @armintaenzertng in #733 - set
validate=Trueas default value in the rdf writer by @armintaenzertng in #734
Full Changelog: v0.8.0rc2...v0.8.0rc3
v0.8.0rc2
What's Changed
- Generate API docs with pdoc by @fholger in #710
- [issue-713] add link to API doc in the README by @armintaenzertng in #725
- [issue-721] update Actor regex and parsing by @armintaenzertng in #724
- [issue-722] add
calculate_package_verification_code()by @armintaenzertng in #723 - SPDX3: rename ProfileIdentifier to ProfileIdentifierType by @fholger in #727
- change return type of calculate_package_verification_code() to PackageVerificationCode by @armintaenzertng in #728
Full Changelog: v0.8.0rc1...v0.8.0rc2
v0.8.0rc1
What's Changed
- [fix] remove leftover legacy files. Add
NOASSERTIONas possible value… by @armintaenzertng in #370 - [Issue 305] add new json parser by @meretp in #366
- [issue-389] allow NONE and NOASSERTION in related_spdx_element_id by @armintaenzertng in #390
- [format] delete unused imports by @meretp in #393
- [issue-381] Add tag-value writer by @armintaenzertng in #396
- convert related_spdx_element_id to str in tv writer by @armintaenzertng in #399
- [issue-388] Update CLI tools for the new parsers/writers by @armintaenzertng in #401
- [issue-397] make fixtures valid and replace valid_defaults.py by @armintaenzertng in #409
- [issue-403] change spdx version handling during validation by @armintaenzertng in #404
- [issue-267] Add GitHub Actions workflow by @armintaenzertng in #410
- GitHub Actions fix by @armintaenzertng in #414
- Minor parsing/writing fixes by @armintaenzertng in #412
- Introduce src-layout by @meretp in #416
- add dummy config.yml to pass pipeline by @meretp in #418
- [issue-397] use fixtures in writer tests by @meretp in #417
- [issue-420] fix order of mocks to match input arguments by @meretp in #421
- [issue-392] make usage of license_concluded consistent by @meretp in #422
- [issue-400] ignore duplicated relationships while parsing by @meretp in #423
- also use the src-layout for tests by @meretp in #419
- move typing to common module to prepare for the prototype of spdx 3.0 by @meretp in #430
- Validate ExternalPackageRef by @armintaenzertng in #439
- [issue-443] change file name validation logic by @armintaenzertng in #445
- [issue-442] change CLI to read version from document by @armintaenzertng in #446
- [issue-10] use license_expression library for LicenseExpression by @armintaenzertng in #447
- [issue-457] add "no #" requirement to validation messages by @armintaenzertng in #458
- [issue-407] add rdf writer by @meretp in #448
- [issue-378] implement invalidation of duplicated SPDX Ids by @armintaenzertng in #459
- [issue-376] add tests for spdx_id_validators by @armintaenzertng in #460
- [issue-386] Finish Package validation by @armintaenzertng in #461
- [issue-375] test "document describes at least one element" by @armintaenzertng in #462
- [issue-466] bug fix and add test by @meretp in #467
- [issue-407] write comments for relationships by @meretp in #470
- fix helper method by @meretp in #484
- Clean up examples by @meretp in #482
- [issue-407] add document namespace to unknown types in external packa… by @meretp in #474
- Issue 456 add rdf parser by @meretp in #469
- SPDX-2.2 validation by @armintaenzertng in #490
- [issue-374] implement license expression validation by @armintaenzertng in #493
- [issue-391] update readme to reflect the new usage after refactoring by @armintaenzertng in #495
- [issue-441] replace print() with logging by @armintaenzertng in #494
- [fix] use correct value for LicenseListVersion by @meretp in #501
- fix creation info writer test by @meretp in #510
- Issue 382 tag value parser by @meretp in #502
- [issue-228] make type hints in code readable for downstream packages by @meretp in #515
- [fix] move "py.typed" to package root directory by @meretp in #516
- Fix tag value writer by @meretp in #517
- [issue-518] rename file_type to file_types by @armintaenzertng in #519
- Issue 503 allow list with noassertion by @meretp in #505
- fix the version of typeguard by @armintaenzertng in #524
- Change error messages related to ISO 8601 by @jspeed-meyers in #530
- Enable dependabot version checking by @goneall in #526
- Added convenience function to extract SPDX elements by their Id by @HarshvMahawar in #531
- [issue-402] add validation option to tag-value writer by @meretp in #536
- Add python 3.11 to GitHub Action by @meretp in #537
- Cherrypick old commits and delete unused files by @armintaenzertng in #538
- small changes to tag-value lexer/parser by @armintaenzertng in #534
- update README for when the refactor branch is merged to main by @armintaenzertng in #539
- [issue-487] add tests for the
document_utils.pymodule by @armintaenzertng in #533 - Merged the refactoring branch into main by @maxhbr in #541
- [issue-532] Add linter action by @meretp in #544
- Fix code style by @meretp in #546
- [issue-511] replace license text with SPDX license identifier by @armintaenzertng in #548
- [issue-547] fix rdf parser by @meretp in #549
- update the readme to point at the correct branch for v0.7 by @armintaenzertng in #551
- shorten line lengths in README by @armintaenzertng in #552
- add missing license identifiers by @armintaenzertng in #557
- [issue-561] fix rdf parser by @meretp in #563
- [issue-564] add constant for "SPDXRef-DOCUMENT" by @meretp in #565
- [issue-558] add visualization feature by @meretp in #562
- [issue-394] add tests for tag_value writer by @meretp in #567
- [issue-570] change fixture dates by @armintaenzertng in #571
- [issue-558] add test for optional feature to GitHub Action by @meretp in #568
- [issue-402] change
write_document()towrite_document_to_file()by @armintaenzertng in #576 - [issue-573] unify
parse_from_filetests for all formats by @armintaenzertng in #574 - [issue-540] change DESCRIBES validation by @armintaenzertng in #577
- Remove
documentDescribesandhasFilesfrom json output by @armintaenzertng in #579 - [issue-580] RDF: don't output relationship comment if there is none by @armintaenzertng in #581
- [issue_583] fix type hint by @meretp in #584
- [issue-375] add validation test for SPDX Lite by @armintaenzertng in #587
- [issue-586] fix CLI by @meretp in #588
- [issue_589] fix json parser: process fields that can be "NOASSERTION"… by @meretp in #590
- [issue_508] add methods to remove duplicated items from list properties by @meretp in #591
- [issue-593] add imports to README example by @armintaenzertng in #594
- [issue_592] add top-level package by @meretp in #595
- [issue-593] expose model classes in model package init by @armintaenzertng in #597
- [issue-593] add spdx2_document_from_scratch example by @armintaenzertng in #598
- make flake8 ignore all init.py by @armintaenzertng in #599
- make example files valid by @meretp in #607
- Issue 611 fix xml parser by @meretp in #612
- [issue-511] add license header by @meretp...
v0.8.0a3
What's Changed
- [fix] remove leftover legacy files. Add
NOASSERTIONas possible value… by @armintaenzertng in #370 - [Issue 305] add new json parser by @meretp in #366
- [issue-389] allow NONE and NOASSERTION in related_spdx_element_id by @armintaenzertng in #390
- [format] delete unused imports by @meretp in #393
- [issue-381] Add tag-value writer by @armintaenzertng in #396
- convert related_spdx_element_id to str in tv writer by @armintaenzertng in #399
- [issue-388] Update CLI tools for the new parsers/writers by @armintaenzertng in #401
- [issue-397] make fixtures valid and replace valid_defaults.py by @armintaenzertng in #409
- [issue-403] change spdx version handling during validation by @armintaenzertng in #404
- [issue-267] Add GitHub Actions workflow by @armintaenzertng in #410
- GitHub Actions fix by @armintaenzertng in #414
- Minor parsing/writing fixes by @armintaenzertng in #412
- Introduce src-layout by @meretp in #416
- add dummy config.yml to pass pipeline by @meretp in #418
- [issue-397] use fixtures in writer tests by @meretp in #417
- [issue-420] fix order of mocks to match input arguments by @meretp in #421
- [issue-392] make usage of license_concluded consistent by @meretp in #422
- [issue-400] ignore duplicated relationships while parsing by @meretp in #423
- also use the src-layout for tests by @meretp in #419
- move typing to common module to prepare for the prototype of spdx 3.0 by @meretp in #430
- Validate ExternalPackageRef by @armintaenzertng in #439
- [issue-443] change file name validation logic by @armintaenzertng in #445
- [issue-442] change CLI to read version from document by @armintaenzertng in #446
- [issue-10] use license_expression library for LicenseExpression by @armintaenzertng in #447
- [issue-457] add "no #" requirement to validation messages by @armintaenzertng in #458
- [issue-407] add rdf writer by @meretp in #448
- [issue-378] implement invalidation of duplicated SPDX Ids by @armintaenzertng in #459
- [issue-376] add tests for spdx_id_validators by @armintaenzertng in #460
- [issue-386] Finish Package validation by @armintaenzertng in #461
- [issue-375] test "document describes at least one element" by @armintaenzertng in #462
- [issue-466] bug fix and add test by @meretp in #467
- [issue-407] write comments for relationships by @meretp in #470
- fix helper method by @meretp in #484
- Clean up examples by @meretp in #482
- [issue-407] add document namespace to unknown types in external packa… by @meretp in #474
- Issue 456 add rdf parser by @meretp in #469
- SPDX-2.2 validation by @armintaenzertng in #490
- [issue-374] implement license expression validation by @armintaenzertng in #493
- [issue-391] update readme to reflect the new usage after refactoring by @armintaenzertng in #495
- [issue-441] replace print() with logging by @armintaenzertng in #494
- [fix] use correct value for LicenseListVersion by @meretp in #501
- fix creation info writer test by @meretp in #510
- Issue 382 tag value parser by @meretp in #502
- [issue-228] make type hints in code readable for downstream packages by @meretp in #515
- [fix] move "py.typed" to package root directory by @meretp in #516
- Fix tag value writer by @meretp in #517
- [issue-518] rename file_type to file_types by @armintaenzertng in #519
- Issue 503 allow list with noassertion by @meretp in #505
- fix the version of typeguard by @armintaenzertng in #524
- Change error messages related to ISO 8601 by @jspeed-meyers in #530
- Enable dependabot version checking by @goneall in #526
- Added convenience function to extract SPDX elements by their Id by @HarshvMahawar in #531
- [issue-402] add validation option to tag-value writer by @meretp in #536
- Add python 3.11 to GitHub Action by @meretp in #537
- Cherrypick old commits and delete unused files by @armintaenzertng in #538
- small changes to tag-value lexer/parser by @armintaenzertng in #534
- update README for when the refactor branch is merged to main by @armintaenzertng in #539
- [issue-487] add tests for the
document_utils.pymodule by @armintaenzertng in #533 - Merged the refactoring branch into main by @maxhbr in #541
- [issue-532] Add linter action by @meretp in #544
- Fix code style by @meretp in #546
- [issue-511] replace license text with SPDX license identifier by @armintaenzertng in #548
- [issue-547] fix rdf parser by @meretp in #549
- update the readme to point at the correct branch for v0.7 by @armintaenzertng in #551
- shorten line lengths in README by @armintaenzertng in #552
- add missing license identifiers by @armintaenzertng in #557
- [issue-561] fix rdf parser by @meretp in #563
- [issue-564] add constant for "SPDXRef-DOCUMENT" by @meretp in #565
- [issue-558] add visualization feature by @meretp in #562
- [issue-394] add tests for tag_value writer by @meretp in #567
- [issue-570] change fixture dates by @armintaenzertng in #571
- [issue-558] add test for optional feature to GitHub Action by @meretp in #568
- [issue-402] change
write_document()towrite_document_to_file()by @armintaenzertng in #576 - [issue-573] unify
parse_from_filetests for all formats by @armintaenzertng in #574 - [issue-540] change DESCRIBES validation by @armintaenzertng in #577
- Remove
documentDescribesandhasFilesfrom json output by @armintaenzertng in #579 - [issue-580] RDF: don't output relationship comment if there is none by @armintaenzertng in #581
- [issue_583] fix type hint by @meretp in #584
- [issue-375] add validation test for SPDX Lite by @armintaenzertng in #587
- [issue-586] fix CLI by @meretp in #588
- [issue_589] fix json parser: process fields that can be "NOASSERTION"… by @meretp in #590
- [issue_508] add methods to remove duplicated items from list properties by @meretp in #591
- [issue-593] add imports to README example by @armintaenzertng in #594
- [issue_592] add top-level package by @meretp in #595
- [issue-593] expose model classes in model package init by @armintaenzertng in #597
- [issue-593] add spdx2_document_from_scratch example by @armintaenzertng in #598
- make flake8 ignore all init.py by @armintaenzertng in #599
- make example files valid by @meretp in #607
- Issue 611 fix xml parser by @meretp in #612
- [issue-511] add license header by @meretp...
v0.7.1
New features and changes
- added GitHub Actions workflow
- added requirements.txt
- added uritools for URI validation
- Python >= 3.7 is now required
- json/yaml/xml: added support for empty arrays for hasFiles and licenseInfoFromFiles
- rdf: fixed writing of multiple packages
- tag-value: enhanced parsing of snippet ranges to not mix it up with package version
- tag-value: fixed parsing of whitespaces
- tag-value: duplicates in LicenseInfoInFile are now removed during writing
- account for supplier and originator to be NOASSERTION
- checksum validation now requires lowercase values
- during writing of a file, the encoding can be set (default is utf-8)
- license list updated to version 3.20
New Contributors
- @chrisdecker1201 made their first contribution in #471
- @vargenau made their first contribution in #492
Full Changelog: v0.7.0...v0.7.1