Linux | macOS | Windows |
---|---|---|
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
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
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
.
From the project root directory run: python setup.py test
.
You can use another test runner such as pytest or nose at your preference.
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:
git checkout -b fix-or-improve-something
git commit --signoff -m 'What changes we did'
git push origin fix-or-improve-something
git commit --signoff
and git push
.rebase
, if possible, or with squash
.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.