Skip to main content

OpenTDF Python SDK

Unofficial OpenTDF SDK for Python

Features

  • TDF Encryption/Decryption: Create and decrypt TDF files with policy-based access control
  • Flexible Configuration: Support for various authentication methods and platform endpoints
  • Comprehensive Testing: Full test suite with unit and integration tests

Legacy Version

A legacy version (0.2.x) of this project is available for users who need the previous implementation. For more information, see LEGACY_VERSION.md or visit the legacy branch on GitHub.

Installation

Install from PyPI:

pip install otdf-python

Quick Start

Basic Configuration

from otdf_python.sdk_builder import SDKBuilder

# Create and configure SDK using builder pattern
builder = SDKBuilder()
builder.set_platform_endpoint("https://platform.example.com")
builder.client_secret("your-client-id", "your-client-secret")

# Build the SDK instance
sdk = builder.build()

Advanced Configuration

from otdf_python.sdk_builder import SDKBuilder

# Create SDK with additional configuration options
builder = SDKBuilder()
builder.set_platform_endpoint("https://platform.example.com")
builder.set_issuer_endpoint("https://auth.example.com")
builder.client_secret("your-client-id", "your-client-secret")

# Examples, for local development

# Use HTTP instead of HTTPS
builder.use_insecure_plaintext_connection(True)

# Or
# Skip TLS verification
builder.use_insecure_skip_verify(True)

# Build the SDK instance
sdk = builder.build()

Encrypt Data

from io import BytesIO

# Create TDF configuration with attributes
config = sdk.new_tdf_config(attributes=["https://example.net/attr/attr1/value/value1"])

# Encrypt data to TDF format
input_data = b"Hello, World!"
output_stream = BytesIO()
manifest, size, _ = sdk.create_tdf(BytesIO(input_data), config, output_stream)
encrypted_data = output_stream.getvalue()

# Save encrypted data to file
with open("encrypted.tdf", "wb") as f:
    f.write(encrypted_data)

Decrypt Data

# Read encrypted TDF file
with open("encrypted.tdf", "rb") as f:
    encrypted_data = f.read()

# Decrypt TDF
tdf_reader = sdk.load_tdf(encrypted_data)
decrypted_data = tdf_reader.payload

# Save decrypted data
with open("decrypted.txt", "wb") as f:
    f.write(decrypted_data)

Project Structure

packages/otdf-python/src/otdf_python/
├── sdk.py                  # Main SDK interface
├── config.py               # Configuration management
├── tdf.py                  # TDF format handling
├── nanotdf.py              # NanoTDF format handling
├── crypto_utils.py         # Cryptographic utilities
├── kas_client.py           # Key Access Service client
└── ...                     # Additional modules
tests/
└── ...                     # Various tests

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes
  4. Run tests: uv run pytest tests/
  5. Commit your changes: git commit -am 'feat: add feature'
  6. Push to the branch: git push origin feature-name
  7. Submit a pull request

Release Process

For maintainers and contributors working on releases:

  • See RELEASES.md for comprehensive release documentation
  • Feature branch alpha releases available for testing changes before merge
  • Automated releases via Release Please on the main branch

License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for otdf-python 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for otdf-python 0.10.0
File Size Uploaded
otdf_python-0.10.0.tar.gz 180.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for otdf-python 0.10.0
File Interpreter ABI Platform
otdf_python-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 353.9 kB

Release files / otdf_python-0.10.0.tar.gz

Download URL otdf_python-0.10.0.tar.gz
Size 180.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b406a4a9fd86908e0c297c40cc6b8f87bfea5b5dbf36db9e02bd1044f1350e3b
BLAKE2b-256 checksum
How to use checksums
39e27e540c98bc87a1127d4f05b0b38fb997344e57fda0df1b543d88afe0b1c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 15, 2026.

Transparency log

Release files / otdf_python-0.10.0-py3-none-any.whl

Download URL otdf_python-0.10.0-py3-none-any.whl
Size 173.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ef72fda49d72e278649dab4ca8153190e5b0815d588cd58ee57b4b46782d5bb4
BLAKE2b-256 checksum
How to use checksums
f9c1bd69f40be2195730d9f67f84b6c7650703e96fc16f462c8bad80ef2021de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 15, 2026.

Transparency log

Release history Release notifications | RSS feed

0.11.0

2 release files

0.10.2

2 release files

0.10.1

2 release files

This release

0.10.0 This release

2 release files

0.9.1

2 release files

0.9.0

1 release file

0.8.0

1 release file

0.7.3

1 release file

0.6.0

2 release files

0.5.0

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.9

10 release files

0.2.4

10 release files

0.1.13

6 release files

0.1.12

6 release files

0.1.10

7 release files

0.1.9

1 release file

0.1.8

1 release file

0.1.1

6 release files

0.1.0

6 release files

0.0.12

7 release files

0.0.11

7 release files

0.0.10

7 release files

0.0.9

7 release files

0.0.8

7 release files

0.0.7

7 release files

0.0.6

7 release files

0.0.4

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page