Skip to main content

Python implementation of the Safe Protocol Kit

Project description

Safe Kit (Python)

PyPI version Python versions License CI codecov

A Python implementation of the Safe Protocol Kit, designed to mirror the developer experience of the official Node.js SDK.

Features

  • DX First: Intuitive API for interacting with Safe smart accounts.
  • Type Safe: Built with Pydantic and fully typed for robust development.
  • Modern Stack: Uses Web3.py, Eth-account, and Python 3.10+.
  • Full Protocol Support: Supports Safe deployment, transaction creation, signing (EIP-712 & eth_sign), and execution.
  • Advanced Features: MultiSend (batching), Safe Transaction Service integration, and more.

Installation

You can install safe-kit via pip:

pip install safe-kit

Or with Poetry:

poetry add safe-kit

Usage

Initialization

from web3 import Web3
from eth_account import Account
from safe_kit.safe import Safe
from safe_kit.adapter import Web3Adapter

# Setup Web3 and Signer
w3 = Web3(Web3.HTTPProvider("RPC_URL"))
owner = Account.from_key("PRIVATE_KEY")
adapter = Web3Adapter(web3=w3, signer=owner)

# Initialize Safe
safe = Safe(eth_adapter=adapter, safe_address="0xSafeAddress")

Creating and Signing Transactions

from safe_kit.types import SafeTransactionData

# Create a transaction (e.g., send ETH)
tx_data = SafeTransactionData(
    to="0xRecipient",
    value=1000000000000000000, # 1 ETH
    data="0x"
)

safe_tx = safe.create_transaction(tx_data)

# Sign the transaction
# Supports "eth_sign_typed_data" (default, EIP-712) or "eth_sign" (legacy)
signed_tx = safe.sign_transaction(safe_tx)

Executing Transactions

# Execute the transaction on-chain
tx_hash = safe.execute_transaction(signed_tx)
print(f"Transaction executed: {tx_hash}")

For more advanced usage (Batching, Transaction Service, Deployment), please refer to the User Guide.

Development

Setup

# Install dependencies
poetry install

Running Tests

poetry run pytest

Linting

poetry run ruff check .
poetry run mypy .

Roadmap

See docs/roadmap.md for the current implementation status.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

safe_kit-0.0.8.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

safe_kit-0.0.8-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file safe_kit-0.0.8.tar.gz.

File metadata

  • Download URL: safe_kit-0.0.8.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for safe_kit-0.0.8.tar.gz
Algorithm Hash digest
SHA256 20bda7f2a70f87757de16aa596b9ea22a8b222a06591a32a47e2e79c7d556039
MD5 3f646d9f8e9ec09ee35dfac1d96b3900
BLAKE2b-256 fe4a1b212abc25592fbd8dd089f9de20721b8a16208eb9ab00d9c768d69684eb

See more details on using hashes here.

File details

Details for the file safe_kit-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: safe_kit-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for safe_kit-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 89baadf7b01e4a41eccc8b1e0c4ffbe71005a21a12cc9a174c70965575ac90af
MD5 dc62503aa7d0ad24d9c5968ce355ac6b
BLAKE2b-256 12669a49f97f587073f5abb844c3dbb6e33ada2b27c4ded48cced5dd3dfe5b64

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page