Skip to main content

Python SPDX Library to parse, validate and create SPDX documents

Linux macOS Windows
Linux build status macOS build status Windows build status

This library implements an SPDX tag/value and RDF parser, validator and handler in Python. This is the result of an initial GSoC contribution by @ah450 (or https://github.com/a-h-i) and is maintained by a community of SPDX adopters and enthusiasts.

Home: https://github.com/spdx/tools-python

Issues: https://github.com/spdx/tools-python/issues

Pypi: https://pypi.python.org/pypi/spdx-tools

License

Apache-2.0

Features

  • API to create and manipulate SPDX documents.
  • Parse and create Tag/Value, RDF, JSON, YAML, XML format SPDX files

TODOs

  • Update to full SPDX v2.1
  • Add to full license expression support

How to use

Example tag/value parsing usage:

    from spdx.parsers.tagvalue import Parser
    from spdx.parsers.tagvaluebuilders import Builder
    from spdx.parsers.loggers import StandardLogger
    p = Parser(Builder(), StandardLogger())
    p.build()
    # data is a string containing the SPDX file.
    document, error = p.parse(data)

The examples directory contains several code samples. Here some of them:

  • parse_tv.py is an example tag/value parsing usage. Try running python parse_tv.py ../data/SPDXSimpleTag.tag

  • write_tv.py provides an example of writing tag/value files. Run python write_tv.py sample.tag to test it.

  • pp_tv.py demonstrates how to pretty-print a tag/value file. To test it run python pp_tv.py ../data/SPDXTagExample.tag pretty.tag.

  • parse_rdf.py demonstrates how to parse an RDF file and print out document information. To test it run python parse_rdf.py ../data/SPDXRdfExample.rdf

  • rdf_to_tv.py demonstrates how to convert an RDF file to a tag/value one. To test it run python rdf_to_tv.py ../data/SPDXRdfExample.rdf converted.tag

  • pp_rdf.py demonstrates how to pretty-print an RDF file, to test it run python pp_rdf.py ../data/SPDXRdfExample.rdf pretty.rdf

Installation

As always you should work in a virtualenv or venv. You can install a local clone of this repo with yourenv/bin/pip install . or install from PyPI with yourenv/bin/pip install spdx-tools. Note that on Windows it would be Scripts instead of bin.

How to run tests

From the project root directory run: python setup.py test. You can use another test runner such as pytest or nose at your preference.

Development process

We use the GitHub flow that is described here: https://guides.github.com/introduction/flow/

So, whenever we have to make some changes to the code, we should follow these steps:

  1. Create a new branch: git checkout -b fix-or-improve-something
  2. Make some changes and the first commit(s) to the branch: git commit -m 'What changes we did'
  3. Push the branch to GitHub: git push origin fix-or-improve-something
  4. Make a pull request on GitHub.
  5. Continue making more changes and commits on the branch, with git commit and git push.
  6. When done, write a comment on the PR asking for a code review.
  7. Some other developer will review your changes and accept your PR. The merge should be done with rebase, if possible, or with squash.
  8. The temporary branch on GitHub should be deleted (there is a button for deleting it).
  9. Delete the local branch as well:
    git checkout master
    git pull -p
    git branch -a
    git branch -d fix-or-improve-something
    

Besides this, another requirement is that every change should be made to fix or close an issue: https://guides.github.com/features/issues/ If there is no issue for the changes that you want to make, create first an issue about it that describes what needs to be done, assign it to yourself, and then start working for closing it.

Dependencies

Support

Metadata

Release files for spdx-tools 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spdx-tools 0.6.0
File Size Uploaded Provenance Actions
spdx-tools-0.6.0.tar.gz 227.6 kB Without provenance Details for spdx-tools-0.6.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for spdx-tools 0.6.0
File Interpreter ABI Platform Actions
spdx_tools-0.6.0-py2.py3-none-any.whl Python 2, Python 3 none any Details for spdx_tools-0.6.0-py2.py3-none-any.whl

Total release size: 434.4 kB

Release files / spdx-tools-0.6.0.tar.gz

Download URL spdx-tools-0.6.0.tar.gz
Size 227.6 kB
Tags Source
SHA-256 checksum
How to use checksums
37ef1be3ea3da9f81a7980f1e06ede10d2f04b1f0bd24e4da4c2f356612ce00e
BLAKE2b-256 checksum
How to use checksums
a54586771982b1a69bd256e2069911b094d5429894ada49cc0383c7660a36515
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.6.8

Release files / spdx_tools-0.6.0-py2.py3-none-any.whl

Download URL spdx_tools-0.6.0-py2.py3-none-any.whl
Size 206.8 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
aec2af65b4f1d9aaa79376133e9f2b8e1cde5530e90b1aa42495ae2945274998
BLAKE2b-256 checksum
How to use checksums
2b896d86482a84e57729cd743ac5a7e93bb4ec2cd569886eead881c47bdd045b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.6.8

Security for spdx-tools 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page