Skip to main content

Safe-eth-py (previously known as Gnosis-py)

Github Actions CI build coveralls Python 3.13 Django 5 Pypi package Documentation Status Black

Safe-eth-py includes a set of libraries to work with Ethereum and relevant Ethereum projects:
  • EthereumClient, a wrapper over Web3.py Web3 client including utilities to deal with ERC20/721 tokens and tracing.

  • Safe classes and utilities.

  • Price oracles for Uniswap, Kyber…

  • Django serializers, models and utils.

Quick start

Just run pip install safe-eth-py or add it to your requirements.txt

If you want django ethereum utils (models, serializers, filters…) you need to run pip install safe-eth-py[django]

If you have issues building coincurve maybe you are missing some libraries

Contributing to safe-eth-py

Clone the repo, then to set it up:

python -m venv venv
source venv/bin/activate
pip install -r requirements-dev.txt
pre-commit install -f

Add new address for new chains

If you want to add Safe Smart Account support for a new chain you must open a new issue.

Once the issue is created or edited, an automatic validation will be executed and a Pull Request will be created if everything is ok. Finally, the Safe team will review and merge the automatic Pull Request generated from the issue.

Ethereum utils

safe_eth.eth

  • class EthereumClient (ethereum_node_url: str): Class to connect and do operations with an ethereum node. Uses web3 and raw rpc calls for things not supported in web3. Only http/https urls are supported for the node url.

EthereumClient has some utils that improve a lot performance using Ethereum nodes, like the possibility of doing batch_calls (a single request making read-only calls to multiple contracts):

from safe_eth.eth import EthereumClient
from safe_eth.eth.contracts import get_erc721_contract
ethereum_client = EthereumClient(ETHEREUM_NODE_URL)
erc721_contract = get_erc721_contract(self.w3, token_address)
name, symbol = ethereum_client.batch_call([
                    erc721_contract.functions.name(),
                    erc721_contract.functions.symbol(),
                ])

If you want to use the underlying web3.py library:

from safe_eth.eth import EthereumClient
ethereum_client = EthereumClient(ETHEREUM_NODE_URL)
ethereum_client.w3.eth.get_block(57)

safe_eth.eth.constants

  • NULL_ADDRESS (0x000...0): Solidity address(0).

  • SENTINEL_ADDRESS (0x000...1): Used for Safe’s linked lists (modules, owners…).

  • Maximum and minimum values for R, S and V in ethereum signatures.

safe_eth.eth.oracles

Price oracles for Uniswap, UniswapV2, Kyber, SushiSwap, Aave, Balancer, Curve, Mooniswap, Yearn… Example:

from safe_eth.eth import EthereumClient
from safe_eth.eth.oracles import UniswapV2Oracle
ethereum_client = EthereumClient(ETHEREUM_NODE_URL)
uniswap_oracle = UniswapV2Oracle(ethereum_client)
gno_token_mainnet_address = '0x6810e776880C02933D47DB1b9fc05908e5386b96'
weth_token_mainnet_address = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'
price = uniswap_oracle.get_price(gno_token_mainnet_address, uniswap_oracle.weth_address)

safe_eth.eth.utils

Contains utils for ethereum operations:

  • mk_contract_address_2(from_: Union[str, bytes], salt: Union[str, bytes], init_code: [str, bytes]) -> str: Calculates the address of a new contract created using the new CREATE2 opcode.

Ethereum django (REST) utils

Django utils are available under safe_eth.eth.django. You can find a set of helpers for working with Ethereum using Django and Django Rest framework.

It includes:

  • safe_eth.eth.django.filters: EthereumAddressFilter.

  • safe_eth.eth.django.models: Model fields (Ethereum address, Ethereum big integer field).

  • safe_eth.eth.django.serializers: Serializer fields (Ethereum address field, hexadecimal field).

  • safe_eth.eth.django.validators: Ethereum related validators.

  • safe_eth.safe.serializers: Serializers for Safe (signature, transaction…).

  • All the tests are written using Django Test suite.

Contributors

See contributors

Metadata

Release files for steven-eth-py 7.1.2

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

Source distribution (sdist)

Source distribution for steven-eth-py 7.1.2
File Size Uploaded Provenance Actions
steven_eth_py-7.1.2.tar.gz 789.4 kB Without provenance Details for steven_eth_py-7.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for steven-eth-py 7.1.2
File Interpreter ABI Platform Actions
steven_eth_py-7.1.2-py3-none-any.whl Python 3 none any Details for steven_eth_py-7.1.2-py3-none-any.whl

Total release size: 1.7 MB

Release files / steven_eth_py-7.1.2.tar.gz

Download URL steven_eth_py-7.1.2.tar.gz
Size 789.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6ccaf72948d873101b80608db2082b238c41c1abbfed26dcee6afb376c19f3e2
BLAKE2b-256 checksum
How to use checksums
1d2af259d35ea7b86d433776bf2d6b61246c24c5272114d655ba402fb9fecb3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.8

Release files / steven_eth_py-7.1.2-py3-none-any.whl

Download URL steven_eth_py-7.1.2-py3-none-any.whl
Size 898.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9bea2fd38a6251433d6169d49bb7a2fa3ac614f3e54a72a7c547e7f71bcb35ea
BLAKE2b-256 checksum
How to use checksums
d5c282eff9f85005ebb887d3af9ed5010e691759f51bd4dca38b98e96f742448
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.8

Security for steven-eth-py 7.1.2

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

7.1.2 This release

2 release files No provenance

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