SpaC-Kit is a collection of Python tools for working with CCSDS Space Packets. It can generically:
- Parses data files into Pandas DataFrames or Excel spreadsheets
- (Scheduled Feb 2026) – Generates documentation in multiple formats (HTML, Markdown, reStructuredText, PDF)
- (Scheduled Apr 2026) – Generates simulated packets
SpaC-Kit supports mission or instrument-specific CCSDS packet structures via plugin packages built on the CCSDSPy library.
Important
This library is currently in active development.
Some functions are placeholders and may not yet have full implementations. Expect ongoing updates and new features as the library evolves.
- Europa Clipper CCSDS packet definitions
- Want to define your own CCSDS packets? Open a ticket to start the discussion.
Tested with python 3.12.
Optionally, but recommended, create a virtual environment:
python3 -m venv my_virtual_env
source my_virtual_env/bin/activate
Install your plugin library first, for example Europa-Clipper CCSDS packets definitions:
git clone https://github.com/joshgarde/europa-cliper-ccsds-plugin.git
cd europa-cliper-ccsds-plugin
pip install .
Install the SPaC-Kit package:
pip install spac-kit
spac-parse --file {your ccsds file}
See more options with:
spac-parse --help
For example in command line:
python3 -m venv venv
source venv/bin/activate
To install the latest version of CCSDSPy:
pip install git+https://github.com/CCSDSPy/ccsdspy.git
Clone the repository
Install the package
pip install -e '.[dev]'
pre-commit install && pre-commit install -t pre-push
Run an example:
python src/spa_kit/parse/downlink_to_excel.py
or
spac-parse --help
or
spac-parse --file ./data/ecm_mag_testcase6_cmds_split_out.log --bdsem --header
Update the version number in file pyproject.toml
Create a tag in the repository and push the changes.
git tag vX.Y.Z
git push origin main --tags
TO BE DONE: the CI automation is going to mke the release on PyPI
Locally, you can do the following steps to build and publish the package.
python3 -m pip install --upgrade build
rm -rf dist/
python3 -m build
Publish the project:
pip install twine
twine upload dist/*
- The package is released following Semantic Versioning.
- We follow the trunk-based branching strategy since the development team is current reduced and we want to favor efficient of the releases. That mean we don't have a 'develop' branch.
- TO BE DONE: Continuous integration using GitHub Actions. It runs linting, unit test and code coverage on each Pull Request.
- The code follows the PEP-8 style guide using black for formatting and flake8 for linting.
The work being done here heavily relies on the CCSDSpy library. It has been started as part of the NASA Europa Clipper mission Science Data System development and it is being now funded by a NASA ROSES grant.