Metadata-Version: 2.4
Name: pycfdp
Version: 0.2.3
Summary: Python implementation of CCSDS File Delivery Protocol (Modernized Fork)
Author-email: Alex Pope <alexpopester@gmail.com>, "LibreCube (Original Codebase)" <info@librecube.org>
License: MIT License
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Provides-Extra: zmq
Requires-Dist: pyzmq; extra == "zmq"
Provides-Extra: spacepacket
Requires-Dist: spacepacket; extra == "spacepacket"
Provides-Extra: all
Requires-Dist: pyzmq; extra == "all"
Requires-Dist: spacepacket; extra == "all"
Dynamic: license-file

# Python CFDP, Version 0.2

The CCSDS File Delivery Protocol (CFDP) was developed by the
[Consultative Committee for Space Data Systems (CCSDS)](https://public.ccsds.org).
The CFDP protocol provides reliable transfer of files from one endpoint to
another and has been designed to work well over space links that suffer
from outtakes and long delays. The basic operation of CFDP is to transfer a
file from a sender to a receiver (both referred to as CFDP entities). The
sender and receiver must be configured and running at the same time to perform
a file transfer. It can be used to perform  space to ground, ground to space,
space to space, and ground to ground file transfers. For example it can be used
to transfer science data from satellite over mission control to the science
center in an automated fashion with minimal to no human intervention.

This Python module is an implementation of the CCSDS File Delivery Protocol.
It implements the core services of the latest version of the
[CFDP Blue Book](docs/727x0b5.pdf), including:

- Class 1 (unacknowledged) file transfer
- Class 2 (acknowledged) file transfer, with deferred-NAK retransmission
- Large-file (>4 GiB) transfers
- Filestore requests
- Proxy operations
- Directory listing request
- Suspend / resume / cancel and remote suspend/resume operations
- Multiple file-checksum types (modular, CRC-32C, IEEE CRC-32, null) and
  optional per-PDU CRC
- Native filestore implementation
- UDP (default), ZMQ, and Space Packet transport layers

## Installation

Install from PyPI (the import name is `cfdp`):

```
pip install pycfdp
```

Some transport layers need extra dependencies, installed via extras:

```
pip install pycfdp[zmq]          # ZMQ transport
pip install pycfdp[spacepacket]  # Space Packet transport
pip install pycfdp[all]          # all optional transports
```

For development, this project uses [uv](https://docs.astral.sh/uv/):

```
uv sync --dev    # install the package and dev dependencies
uv run pytest    # run the test suite
```

## Documentation

Find the detailed documentation [here](docs/README.md).

## Tests

The protocol is tested for cross-support as outlined in CCSDS CFDP Yellow Book.
See [tests/README.md](tests/README.md) for details.

## Contribute

To learn more on how to successfully contribute please read the contributing
information in the [LibreCube documentation](https://librecube.gitlab.io/).

## Support

If you are having issues, please let us know. Reach us at
[Matrix](https://app.element.io/#/room/#librecube.org:matrix.org)
or via [Email](mailto:info@librecube.org).

## License

The project is licensed under the MIT license. See the [LICENSE](./LICENSE.txt) file for details.
