Skip to main content

SPDX parser and tools.

Project description

Python library to to parse, validate and create SPDX documents

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

Information

This library implements SPDX tag/value and RDF parsers, validators and handlers in Python.

History

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.

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

Command-line usage:

  1. PARSER (for parsing any format):
  • Use parser --file <filename> where <filename> is the location of the file.
    Try running : parser --file data/SPDXRdfExample.rdf.

  • Or you can use parser only and then it will automatically prompt/ask for filename.

  • for help - use parser --help

  1. CONVERTOR (for converting one format to another):
  • If I/O formats are known:

    • Use convertor --infile/-i <input_file> --outfile/-o <output_file> where <input_file> is the location of the file to be converted (Note: only RDF and Tag formated supported) and <output_file> is the location of the output file.
      Try running : convertor --infile data/SPDXRdfExample.rdf --outfile output.json
  • If I/O formats are not known:

    • Use convertor --from/-f <input_format> <input_file> --to/-t <output_format> <output_file> where <input_format> is the manually enterred format of the input file (can be either rdf or tag) and <out_format> (can be tag, rdf, json, yaml, xml) is the manually enterred format of the output file. Try running : convertor --from tag data/SPDXTagExample.in --to yaml output.out
  • If anyone format is known and other is not, you can use the mixture of the above two points.
    Ex. : convertor -f rdf data/SPDXRdfExample.xyz -o output.xml

  • for help - use convertor --help

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

Tests framework is using pytest

pip install pytest
pytest -vvs

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 --signoff -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 --signoff 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spdx-tools-0.7.0a2.tar.gz (256.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spdx_tools-0.7.0a2-py2.py3-none-any.whl (227.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file spdx-tools-0.7.0a2.tar.gz.

File metadata

  • Download URL: spdx-tools-0.7.0a2.tar.gz
  • Upload date:
  • Size: 256.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.6.10

File hashes

Hashes for spdx-tools-0.7.0a2.tar.gz
Algorithm Hash digest
SHA256 50afaae1ebb6877e0628b7267c5ceabfb800af855d68c926dc77153331e93851
MD5 dbcc55b5a14fdb65a72a3008a3b1bcdf
BLAKE2b-256 262ad8c8b26b345334a9f958cd5ac505fdf806b36445f0bbb84abb512af95ff9

See more details on using hashes here.

File details

Details for the file spdx_tools-0.7.0a2-py2.py3-none-any.whl.

File metadata

  • Download URL: spdx_tools-0.7.0a2-py2.py3-none-any.whl
  • Upload date:
  • Size: 227.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.6.10

File hashes

Hashes for spdx_tools-0.7.0a2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c08e581fa947265e22c59698ee1985fbe525a2583093ba91f015ef30b58108f2
MD5 8fe09d42de66a605a39a8bde9bc866d4
BLAKE2b-256 f761182d354aa9fca5cfefb7f1ebac586f469365e0323f4f1a5e7e5abce42208

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page