Skip to main content

Gnosis libraries for Python Projects

Project description

Github Actions CI build Coveralls Python 3.9 Django 2.2 Pypi package Documentation Status

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

  • Gnosis Safe classes and utilities.

  • Price oracles for Uniswap, Kyber

  • Django serializers, models and utils.

Quick start

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

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

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

Ethereum utils

gnosis.eth

  • class EthereumClient (ethereum_node_url: str): Class to connect and do operations with a ethereum node. Uses web3 and raw rpc calls for things not supported in web3. Only http/https urls are suppored 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 gnosis.eth import EthereumClient
from gnosis.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 gnosis.eth import EthereumClient
ethereum_client = EthereumClient(ETHEREUM_NODE_URL)
ethereum_client.w3.eth.get_block(57)

gnosis.eth.constants

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

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

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

gnosis.eth.oracles

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

from gnosis.eth import EthereumClient
from gnosis.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)

gnosis.eth.utils

Contains utils for ethereum operations:

  • get_eth_address_with_key() -> Tuple[str, bytes]: Returns a tuple of a valid public ethereum checksumed address with the private key.

  • generate_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 gnosis.eth.django. You can find a set of helpers for working with Ethereum using Django and Django Rest framework.

It includes:

  • gnosis.eth.django.filters: EthereumAddressFilter.

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

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

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

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

  • All the tests are written using Django Test suite.

Contributors

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

gnosis-yodaplus-py-3.1.19.tar.gz (542.1 kB view details)

Uploaded Source

Built Distribution

gnosis_yodaplus_py-3.1.19-py3-none-any.whl (596.8 kB view details)

Uploaded Python 3

File details

Details for the file gnosis-yodaplus-py-3.1.19.tar.gz.

File metadata

  • Download URL: gnosis-yodaplus-py-3.1.19.tar.gz
  • Upload date:
  • Size: 542.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for gnosis-yodaplus-py-3.1.19.tar.gz
Algorithm Hash digest
SHA256 02b89c2afd8f38b9f1fee72d1d84c96e5d8819d53a72de29f6ed44117ae359c1
MD5 1873be526f7afad2e906208ca3bd8ef0
BLAKE2b-256 b4d0cb23485ab6eef765d4bdbbb458631a21725e99caaff0243233e56455fdd3

See more details on using hashes here.

File details

Details for the file gnosis_yodaplus_py-3.1.19-py3-none-any.whl.

File metadata

  • Download URL: gnosis_yodaplus_py-3.1.19-py3-none-any.whl
  • Upload date:
  • Size: 596.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for gnosis_yodaplus_py-3.1.19-py3-none-any.whl
Algorithm Hash digest
SHA256 cf12ca4af7600705c2ba30bd8fcf6643d8fcfb0d83ab1bd2a311c4484344674e
MD5 b7e6eff5662c03a35e7cd0182ac4fc82
BLAKE2b-256 c6a7250416177a2c68d57d5e775c6242ff9ef27f90811d96f6a6a00d00e809b1

See more details on using hashes here.

Supported by

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