Linux | macOS | Windows |
---|---|---|
This library implements SPDX parsers, convertors, validators and handlers in Python.
- Home: https://github.com/spdx/tools-python
- Issues: https://github.com/spdx/tools-python/issues
- PyPI: https://pypi.python.org/pypi/spdx-tools
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.
- API to create and manipulate SPDX v2.3 documents.
- Parse, convert, create and validate Tag/Value, RDF, JSON, YAML, XML format SPDX files
- No full 2.3 support for RDF format #295
- No full license expression support #10
- Output of the CLI parser is incomplete #268
- Include specialized validation for SPDX v2.2.1(ISO 5962:2021)
- PARSER (for parsing any format):
-
Use
pyspdxtools_parser --file <filename>
where<filename>
is the location of the file.
If you are using a source distribution, try running:pyspdxtools_parser --file tests/data/formats/SPDXRdfExample.rdf
. -
Or you can use
pyspdxtools_parser
only, and it will automatically prompt/ask forfilename
. -
For help use
pyspdxtools_parser --help
- CONVERTOR (for converting one format to another):
-
If I/O formats are known:
- Use
pyspdxtools_convertor --infile/-i <input_file> --outfile/-o <output_file>
where<input_file>
is the location of the file to be converted and<output_file>
is the location of the output file.
If you are using a source distribution, try running :pyspdxtools_convertor --infile tests/data/formats/SPDXRdfExample.rdf --outfile output.json
- Use
-
If I/O formats are not known:
- Use
pyspdxtools_convertor --from/-f <input_format> <input_file> --to/-t <output_format> <output_file>
where<input_format>
is the manually entered format of the input file and<out_format>
is the manually entered format of the output file. If you are using a source distribution, try running :pyspdxtools_convertor --from tag tests/data/formats/SPDXTagExample.in --to yaml output.out
- Use
-
If one of the formats is known and the other is not, you can use a mixture of the above two points.
Example (if you are using a source distribution):pyspdxtools_convertor -f rdf tests/data/formats/SPDXRdfExample.xyz -o output.xml
-
For help use
pyspdxtools_convertor --help
As always you should work in a virtualenv (venv). You can install a local clone
of this repo with yourenv/bin/pip install .
or install it from PyPI with
yourenv/bin/pip install spdx-tools
. Note that on Windows it would be Scripts
instead of bin
.
- PLY: https://pypi.python.org/pypi/ply/ used for parsing.
- rdflib: https://pypi.python.org/pypi/rdflib/ for handling RDF.
- PyYAML: https://pypi.org/project/PyYAML/ for handling YAML.
- xmltodict: https://pypi.org/project/xmltodict/ for handling XML.
- click: https://pypi.org/project/click/ for creating the CLI interface.
- Submit issues, questions or feedback at https://github.com/spdx/tools-python/issues
- Join the chat at https://gitter.im/spdx-org/Lobby
- Join the discussion on https://lists.spdx.org/g/spdx-tech and https://spdx.dev/participate/tech/
Contributions are very welcome! See CONTRIBUTING.md for instructions on how to contribute to the codebase.