Gnosis-py includes a set of libraries to work with Ethereum and Gnosis projects

Overview

Gnosis-py

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

See contributors

Comments
  • estimate_tx_gas failing on xDai with AttributeError: 'str' object has no attribute 'keys'

    estimate_tx_gas failing on xDai with AttributeError: 'str' object has no attribute 'keys'

    Describe the bug

    The estimation of gas fees for Safe transactions fails on xDai with the following exception: AttributeError: 'str' object has no attribute 'keys'. This error is also occurring in the relayer breaking all estimates.

    To Reproduce

    Use the following code to reproduce:

    from gnosis.eth import EthereumClient
    from gnosis.safe import Safe
    
    ethereum_client = EthereumClient('https://xdai.poanetwork.dev')
    safe = Safe('0x9a0bbbbd3789f184CA88f2F6A40F42406cb842AC', ethereum_client)
    result = safe.estimate_tx_gas('0x333d72F54CF17BA7A1971e7C7E9acB91C8B709d2', 0, '0xa2e62045', 0)
    print(result)
    

    Executing this code throws the following exception:

    Traceback (most recent call last):
      File "/home/adz/.pyenv/versions/safe-estimate-issue/lib/python3.8/site-packages/gnosis/safe/safe.py", line 436, in estimate_tx_gas_with_safe
        result: HexBytes = self.w3.eth.call(tx, block_identifier=block_identifier)
      File "/home/adz/.pyenv/versions/safe-estimate-issue/lib/python3.8/site-packages/web3/module.py", line 58, in caller
        result = w3.manager.request_blocking(method_str, params, error_formatters)
      File "/home/adz/.pyenv/versions/safe-estimate-issue/lib/python3.8/site-packages/web3/manager.py", line 158, in request_blocking
        raise ValueError(response["error"])
    ValueError: {'code': -32015, 'message': 'VM execution error.', 'data': 'revert: \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00??'}
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "test.py", line 14, in <module>
        result = safe.estimate_tx_gas('0x333d72F54CF17BA7A1971e7C7E9acB91C8B709d2', 0, '0xa2e62045', 0)
      File "/home/adz/.pyenv/versions/safe-estimate-issue/lib/python3.8/site-packages/gnosis/safe/safe.py", line 521, in estimate_tx_gas
        return self.estimate_tx_gas_by_trying(to, value, data, operation) + PROXY_GAS + OLD_CALL_GAS
      File "/home/adz/.pyenv/versions/safe-estimate-issue/lib/python3.8/site-packages/gnosis/safe/safe.py", line 490, in estimate_tx_gas_by_trying
        gas_estimated = self.estimate_tx_gas_with_safe(to, value, data, operation)
      File "/home/adz/.pyenv/versions/safe-estimate-issue/lib/python3.8/site-packages/gnosis/safe/safe.py", line 456, in estimate_tx_gas_with_safe
        key = list(data_dict.keys())[0]
    AttributeError: 'str' object has no attribute 'keys'
    

    Expected behavior

    The revert is happening as expected but seems to be not parseable in the catch phrase. I assume that the revert message looks slightly different on xDai than on mainnet?

    Some more observations

    • The code in gnosis-py checks for an capitalized "Reverted ..." data message, the xdai response is lowercase and "revert: ..."? https://github.com/gnosis/gnosis-py/blob/master/gnosis/safe/safe.py#L451
    • The returned bytecode in data contains invalid values (here it is ??).
    bug 
    opened by adzialocha 18
  • Fix memory leak cache for get_contract

    Fix memory leak cache for get_contract

    closes #322

    • define maxsize to 1024*100 (Would be enough?)
    • add cachetools to requirements
    • replaces @cache with @cached defining that the key to storage the cache is the safe_address
    • add a test to check that currsize have correct values
    • cache maxsize defined in environment var
    opened by moisses89 15
  • setup_service.py is not finding EthereumNetwork.VELAS_MAINNET  on gnosis-py

    setup_service.py is not finding EthereumNetwork.VELAS_MAINNET on gnosis-py

    What is needed?

    I request to add Velas network on gnosys-py on this PR: https://github.com/gnosis/gnosis-py/pull/220

    Background

    I'm using an instance of transaction service here: https://transaction.staging.velasafe.com/ repo: https://github.com/protofire/velas-transaction-service branch: staging

    Related issues

    When I try to setup the transaction service, the service worker is not running ok due this error:

    Traceback (most recent call last): File "/app/manage.py", line 30, in execute_from_command_line(sys.argv) File "/usr/local/lib/python3.10/site-packages/django/core/management/init.py", line 419, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.10/site-packages/django/core/management/init.py", line 413, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python3.10/site-packages/django/core/management/init.py", line 257, in fetch_command klass = load_command_class(app_name, subcommand) File "/usr/local/lib/python3.10/site-packages/django/core/management/init.py", line 39, in load_command_class module = import_module('%s.management.commands.%s' % (app_name, name)) File "/usr/local/lib/python3.10/importlib/init.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1050, in _gcd_import File "", line 1027, in _find_and_load File "", line 1006, in _find_and_load_unlocked File "", line 688, in _load_unlocked File "", line 883, in exec_module File "", line 241, in _call_with_frames_removed File "/app/safe_transaction_service/history/management/commands/setup_service.py", line 217, in EthereumNetwork.VELAS_MAINNET: [ File "/usr/local/lib/python3.10/enum.py", line 437, in getattr raise AttributeError(name) from None AttributeError: VELAS_MAINNET. Did you mean: 'EVMOS_MAINNET'?

    I've the last version of gnosis-py (3.9.2)with the Velas network added there, but it appears that setup_service.py is not finding the correct network, and because of that I can't update the master copies and proxy factory addresses. Do I have to update gnosis-py on other dependency? Thank you.

    CC: @Uxio0

    enhancement 
    opened by datradito 14
  • Fix threshold test in Safe.create()

    Fix threshold test in Safe.create()

    Safe.create() currently asserts that the threshold is equal or greater than the list of owners, which is nonsensical. The Safe threshold can be any number of signers, logically up to the maximum number defined.

    opened by DefiDebauchery 10
  • Feat: Add Superfluid Oracle token adapter

    Feat: Add Superfluid Oracle token adapter

    As a continuation from here: https://github.com/safe-global/safe-transaction-service/issues/772#issuecomment-1087463359

    This work contributes towards adding a price data for Superfluid Super Tokens with the price data of their underlying tokens. This PR adds the Superfluid Oracle token adapter and related test.

    Related Issue: https://github.com/safe-global/safe-transaction-service/issues/772

    Original issue: https://github.com/superfluid-finance/protocol-monorepo/issues/732

    opened by brymut 7
  • Bump web3 from 5.19.0 to 5.23.0

    Bump web3 from 5.19.0 to 5.23.0

    Bumps web3 from 5.19.0 to 5.21.0.

    Changelog

    Sourced from web3's changelog.

    v5.21.0 (2021-07-12)

    Web3 5.21.0 (2021-07-12)

    Features

    
    - Adds support for EIP 1559 transaction keys: `maxFeePerGas` and `maxPriorityFeePerGas` (`[#2060](https://github.com/ethereum/web3.py/issues/2060) <https://github.com/ethereum/web3.py/issues/2060>`__)
    

    Bugfixes

    • Bugfix where an error response got passed to a function expecting a block identifier.

      Split out null result formatters from the error formatters and added some tests. ([#2022](https://github.com/ethereum/web3.py/issues/2022) <https://github.com/ethereum/web3.py/issues/2022>__)

    • Fix broken tests and use the new 1559 params for most of our test transactions. ([#2053](https://github.com/ethereum/web3.py/issues/2053) <https://github.com/ethereum/web3.py/issues/2053>__)

    • Set a default maxFeePerGas value consistent with Geth ([#2055](https://github.com/ethereum/web3.py/issues/2055) <https://github.com/ethereum/web3.py/issues/2055>__)

    • Fix bug in geth PoA middleware where a None response should throw a BlockNotFound error, but was instead throwing an AttributeError ([#2064](https://github.com/ethereum/web3.py/issues/2064) <https://github.com/ethereum/web3.py/issues/2064>__)

    Improved Documentation

    
    - Added general documentation on unit and integration testing and how to contribute to our test suite. (`[#2053](https://github.com/ethereum/web3.py/issues/2053) <https://github.com/ethereum/web3.py/issues/2053>`__)
    

    v5.20.1 (2021-07-01)

    Web3 5.20.1 (2021-07-01)

    Bugfixes

    
    - Have the geth dev IPC auto connection check for the ``WEB3_PROVIDER_URI`` environment variable. (`[#2023](https://github.com/ethereum/web3.py/issues/2023) &lt;https://github.com/ethereum/web3.py/issues/2023&gt;`__)
    

    Improved Documentation </code></pre> <ul> <li>Remove reference to allowing multiple providers in docs (<code>#2018 &lt;https://github.com/ethereum/web3.py/issues/2018&gt;</code>)</li> <li>Update &quot;Contract Deployment Example&quot; docs to use <code>py-solc-x</code> as <code>solc</code> is no longer maintained. (<code>#2020 &lt;https://github.com/ethereum/web3.py/issues/2020&gt;</code>)</li> <li>Detail using unreleased Geth builds in CI (<code>#2037 &lt;https://github.com/ethereum/web3.py/issues/2037&gt;</code>)</li> <li>Clarify that a missing trie node error could occur when using <code>block_identifier</code> with <code>.call()</code> on a node that isn't running in archive mode (<code>#2048 &lt;https://github.com/ethereum/web3.py/issues/2048&gt;</code>)</li> </ul> <p>Misc</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary>

    <ul> <li><a href="https://github.com/ethereum/web3.py/commit/e2cd3a48f945d0d586fdc3ad232446fc40b1f41b"><code>e2cd3a4</code></a> Bump version: 5.20.1 → 5.21.0</li> <li><a href="https://github.com/ethereum/web3.py/commit/54d2097ac011e04ce15410f64f8910dab38f8314"><code>54d2097</code></a> Compile release notes</li> <li><a href="https://github.com/ethereum/web3.py/commit/b963ab201cd3543506c4e309caf3433cf43a9727"><code>b963ab2</code></a> Removed a news fragment that is no longer relevant.</li> <li><a href="https://github.com/ethereum/web3.py/commit/240e5665a052ee46b46137798fa56f4571622c79"><code>240e566</code></a> Split out null result formatters from error formatters, (<a href="https://github-redirect.dependabot.com/ethereum/web3.py/issues/2022">#2022</a>)</li> <li><a href="https://github.com/ethereum/web3.py/commit/2d89615527f820b947924c9e4e554ac4f71acc87"><code>2d89615</code></a> london / EIP-1559 support for modify_transaction and updated docs.</li> <li><a href="https://github.com/ethereum/web3.py/commit/a74245b417392a5bbb0d9d206b336932c1ce6e51"><code>a74245b</code></a> Clean up some older london setup. Turned a test back on.</li> <li><a href="https://github.com/ethereum/web3.py/commit/01c15f4ade2169f1d0cfd9c18305253e9325ab7a"><code>01c15f4</code></a> async support for London changes.</li> <li><a href="https://github.com/ethereum/web3.py/commit/a32cc1540440a975631c19336dedfce2bc1a0ebd"><code>a32cc15</code></a> Fixed some tests and turned some tests back on.</li> <li><a href="https://github.com/ethereum/web3.py/commit/d428d63294f12f6d2182359221f0cb5fe5c7292a"><code>d428d63</code></a> Fix failing tests and use 1559 defaults for test params</li> <li><a href="https://github.com/ethereum/web3.py/commit/7201d18f389c2eb10a930b2dc3022fb98d84f2cc"><code>7201d18</code></a> Added the de-compiled math contract code so that it is available for debuggin...</li> <li>Additional commits viewable in <a href="https://github.com/ethereum/web3.py/compare/v5.19.0...v5.21.0">compare view</a></li> </ul> </details>

    <br />

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 7
  • SafeTx excute: Fail with error 'GS001'

    SafeTx excute: Fail with error 'GS001'

    Describe the bug I built the SafeTx object locally, multi-signed and executed, but I have a problem with the tx. the tx hash is here.

    To Reproduce Steps to reproduce the behavior: execute function "send_multiSig_transaction"

    Expected behavior The query result is a successful hash.

    Additional context python==3.8.5 safe-eth-py==4.1.0

    code:

    
    from eth_typing import URI
    from gnosis.eth import EthereumClient
    from gnosis.safe.safe_tx import SafeTx
    
    def send_multiSig_transaction():
        eth_client = EthereumClient(ethereum_node_url=URI('https://rinkeby.infura.io/v3/60b1533909b84f0e8ac61adbf44f2e38'))
        safe_tx = SafeTx(
            ethereum_client=eth_client,
            safe_address='0xC6bB445360B5122F4ED52F5CF206ff6388201573',
            to='0xf385FFD916ab0fB2DAd83e613d20970515f4844B',
            value=0,  
     data=b'0xa9059cbb0000000000000000000000001ab96c8568c5226efcb95ac5e5437f3ec48ade620000000000000000000000000000000000000000000000000000000000000001',
            operation=0,
            safe_tx_gas=200000,
            base_gas=21000,
            gas_price=1200000000,
            gas_token='0x0000000000000000000000000000000000000000',
            refund_receiver='0x0000000000000000000000000000000000000000',
            # signatures=b'',
            # safe_nonce=0,
            # safe_version='',
            # chain_id=4
    
        )
        # owner1
        safe_tx.sign('owner1 secret')
        # owner2
        safe_tx.sign('owner2 secret')
        data = safe_tx.execute(tx_sender_private_key='owner2 secret',
                               tx_gas_price=2000000000, tx_gas=200000)
        return data
    
    bug 
    opened by zaneran9 6
  • safe retrieval fails on nethermind

    safe retrieval fails on nethermind

    The implementation of retrieve_all_info makes an Eth RPC call to specific functions to get nonce, threshold, owners, etc.

    To do this it provides the safe address as the 'from'. This is not accepted on the Nethermind Eth client.

    To reproduce:

    Here is an example of posting a call to VERSION() on the Rinkeby network:

    nethermind> node.switch('https://rinkeby.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161')                                                                                           
    nethermind>  eth.call({"to": "0xe8b541b0E9a3981E3aC0e324B987940c4eF4069B", "data": "0xffa1ad74", "from": "0xe8b541b0E9a3981E3aC0e324B987940c4eF4069B"}, "latest")                  
    "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005312e332e30000000000000000000000000000000000000000000000000000000"
    

    '312e332e30' is ASCII for "1.3.0", the contract version.

    Trying the same kind of call against a Nethermind client is rejected (see source, line 191) however it works fine when provided any other kind of address, even 0x0.

    nethermind> node.switch('https://rpc.testnet.shyft.network/')
    nethermind> eth.call({"to": "0xc5847FcB4A4270DC77800a1487Ce29cB9922bD41", "data": "0xffa1ad74", "from": "0xc5847FcB4A4270DC77800a1487Ce29cB9922bD41"}, "latest")                   
    VM execution error. | sender has deployed code
    
    nethermind> eth.call({"to": "0xc5847FcB4A4270DC77800a1487Ce29cB9922bD41", "data": "0xffa1ad74", "from": "0x0000000000000000000000000000000000000000"}, "latest")                   
    "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005312e332e30000000000000000000000000000000000000000000000000000000"
    
    bug 
    opened by svanegmond 6
  • add ethereumpow and ethereumfair

    add ethereumpow and ethereumfair

    Network Name: Ethereum Pow New RPC URL: https://mainnet.ethereumpow.org/ Chain ID: 10001 Currency Symbol (Optional): ETHW Block Explorer URL: https://www.oklink.com/en/ethw/

    Network Name: Ethereum Fair New RPC URL: https://rpc.etherfair.org/ Chain ID: 513100 Currency Symbol (Optional): ETF Block Explorer URL: https://explorer.etherfair.org/

    opened by benjamintshi 5
  • Introduce method `SafeTx.api_post_data`

    Introduce method `SafeTx.api_post_data`

    Currently, in order to post Safe transactions to the web interface (with this project as a dependency), we have to manually construct the post_data dictionary out of all the fields already contained in safe_tx. Since a SafeTx already contains the relevant info to build the post_data, it would be nice if there were some exposed method that would return the required format.

    For example, the content of this method (taken from safe-cli) which constructs the post data would be nice to include here in this project:

    https://github.com/5afe/safe-cli/blob/7a70a18c36b163ee91d5c763208ba1b1c9571317/safe_cli/api/transaction_service_api.py#L198-L222

    enhancement 
    opened by bh2smith 5
  • Adding Velas network mainnet&testnet support

    Adding Velas network mainnet&testnet support

    opened by datradito 5
  • Bump django from 4.1.4 to 4.1.5

    Bump django from 4.1.4 to 4.1.5

    Bumps django from 4.1.4 to 4.1.5.

    Commits
    • eba81c8 [4.1.x] Bumped version for 4.1.5 release.
    • 7bcf84d [4.1.x] Added release date for 4.1.5.
    • a9ed890 [4.1.x] Disabled auto-created table of contents entries on Sphinx 5.2+.
    • 46b28bb [4.1.x] Updated translations from Transifex.
    • f92ecd5 [4.1.x] Refs DEP 12 -- Renamed TB to Steering Council wherever mentioned.
    • 78bb8f9 [4.1.x] Fixed typo in docs/topics/async.txt.
    • 54bdc99 [4.1.x] Fixed typo in docs/topics/http/sessions.txt.
    • 2d15678 [4.1.x] Fixed #34213 -- Updated PostgreSQL package names in installing PostGI...
    • 1106c99 [4.1.x] Removed KyngChaos packages from docs.
    • af3cfc8 [4.1.x] Fixed #34205 -- Fixed Meta.constraints validation crash with ArrayFie...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump coverage from 6.5.0 to 7.0.4

    Bump coverage from 6.5.0 to 7.0.4

    Bumps coverage from 6.5.0 to 7.0.4.

    Changelog

    Sourced from coverage's changelog.

    Version 7.0.4 — 2023-01-07

    • Performance: an internal cache of file names was accidentally disabled, resulting in sometimes drastic reductions in performance. This is now fixed, closing issue 1527_. Thanks to Ivan Ciuvalschii for the reproducible test case.

    .. _issue 1527: nedbat/coveragepy#1527

    .. _changes_7-0-3:

    Version 7.0.3 — 2023-01-03

    • Fix: when using pytest-cov or pytest-xdist, or perhaps both, the combining step could fail with assert row is not None using 7.0.2. This was due to a race condition that has always been possible and is still possible. In 7.0.1 and before, the error was silently swallowed by the combining code. Now it will produce a message "Couldn't combine data file" and ignore the data file as it used to do before 7.0.2. Closes issue 1522_.

    .. _issue 1522: nedbat/coveragepy#1522

    .. _changes_7-0-2:

    Version 7.0.2 — 2023-01-02

    • Fix: when using the [run] relative_files = True setting, a relative [paths] pattern was still being made absolute. This is now fixed, closing issue 1519_.

    • Fix: if Python doesn't provide tomllib, then TOML configuration files can only be read if coverage.py is installed with the [toml] extra. Coverage.py will raise an error if TOML support is not installed when it sees your settings are in a .toml file. But it didn't understand that [tools.coverage] was a valid section header, so the error wasn't reported if you used that header, and settings were silently ignored. This is now fixed, closing issue 1516_.

    • Fix: adjusted how decorators are traced on PyPy 7.3.10, fixing issue 1515_.

    • Fix: the coverage lcov report did not properly implement the --fail-under=MIN option. This has been fixed.

    • Refactor: added many type annotations, including a number of refactorings. This should not affect outward behavior, but they were a bit invasive in some

    ... (truncated)

    Commits
    • f4c27c7 docs: sample html report for 7.0.4
    • 2b95dba docs: prep for 7.0.4
    • 61ccfb8 test(benchmark): more reasonable numeric displays
    • 2fa45d6 refactor(benchmark): move benchmark.py to its own directory
    • 4d6ac8b test(perf): randomize the order of benchmark runs
    • 405fae8 build: add .git-blame-ignore-revs
    • 9554e50 style(perf): blacken lab/benchmark.py
    • dc4f0c1 test(perf): more experiments for #1527
    • b3b05bd perf: the file mapping cache was off by mistake. #1527
    • d00f1dd mypy: debug.py
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • eip712_encode_hash encode string bytes and string uint256

    eip712_encode_hash encode string bytes and string uint256

    What is needed?

    String bytes feature

    I would like that eip712_encode_hash encode string bytes also like the following example: "Message": [ {"name": "oneByte", "type": "bytes1"} ] "message": {"oneByte": "0x01"}

    Currently this is not possible because eip712_encode_hash is using eth_abi that expects python bytes.

    String uint256 feature

    I would like that eip712_encode_hash encode string uint also like the following example: "Message": [ {"name": "stringNum", "type": "uint256"} ] "message": {"stringNum": "1234"}

    Possible solution

    Check in _encode_field(name, typ, value) if is bytes type the value is an instance of str and in that case convert to bytes bytes.fromhex(string). Similar solution for uint but converting it from string to python int.

    Related issues

    enhancement 
    opened by moisses89 0
  • DomainSeparator is wrong calculated for version < 1.3.0

    DomainSeparator is wrong calculated for version < 1.3.0

    Describe the bug For versions < v1.3.0 the chainId is not included in the domainseparator. domainSeparator = keccak256(abi.encode(DOMAIN_SEPARATOR_TYPEHASH, this));

    Expected behavior DomainSeparator function should return correct hash for old versions.

    bug 
    opened by moisses89 0
  • Bump py-evm from 0.5.0a3 to 0.6.1a2

    Bump py-evm from 0.5.0a3 to 0.6.1a2

    Bumps py-evm from 0.5.0a3 to 0.6.1a2.

    Changelog

    Sourced from py-evm's changelog.

    Release notes

    .. towncrier release notes start

    py-evm 0.6.1-alpha.2 (2022-12-16)

    Miscellaneous internal changes

    
    - `[#2090](https://github.com/ethereum/py-evm/issues/2090) <https://github.com/ethereum/py-evm/issues/2090>`__
    

    py-evm 0.6.1-alpha.1 (2022-11-14)

    Features

    
    - Support for the ``paris`` fork a.k.a. &quot;the merge&quot;. (`[#2080](https://github.com/ethereum/py-evm/issues/2080) &lt;https://github.com/ethereum/py-evm/issues/2080&gt;`__)
    

    Bugfixes

    • Use the DIFFICULTY_MINIMUM more appropriately as the lower limit in all difficulty calculations. ([#2084](https://github.com/ethereum/py-evm/issues/2084) &lt;https://github.com/ethereum/py-evm/issues/2084&gt;__)

    Internal Changes - for Contributors

    • Update towncrier version to remove double headers. ([#2077](https://github.com/ethereum/py-evm/issues/2077) <https://github.com/ethereum/py-evm/issues/2077>__)
    • Update openssl config on circleci builds to re-introduce ripemd160 function by default. ([#2087](https://github.com/ethereum/py-evm/issues/2087) <https://github.com/ethereum/py-evm/issues/2087>__)

    Miscellaneous internal changes

    
    - `[#2078](https://github.com/ethereum/py-evm/issues/2078) <https://github.com/ethereum/py-evm/issues/2078>`__, `[#2082](https://github.com/ethereum/py-evm/issues/2082) <https://github.com/ethereum/py-evm/issues/2082>`__, `[#2085](https://github.com/ethereum/py-evm/issues/2085) <https://github.com/ethereum/py-evm/issues/2085>`__
    

    py-evm 0.6.0-alpha.1 (2022-08-22)

    Features

    
    - Gray glacier support without ``Merge`` transition since ``Merge`` is not yet supported (`[#2072](https://github.com/ethereum/py-evm/issues/2072) &lt;https://github.com/ethereum/py-evm/issues/2072&gt;`__)
    

    &lt;/tr&gt;&lt;/table&gt; </code></pre> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary>

    <ul> <li><a href="https://github.com/ethereum/py-evm/commit/0e5cae5ae82ea1a960a18db4c26833ec2512fdb2"><code>0e5cae5</code></a> Bump version: 0.6.1-alpha.1 → 0.6.1-alpha.2</li> <li><a href="https://github.com/ethereum/py-evm/commit/6c965954ac6fcc1da3e8c757e8618f1963c7e2cd"><code>6c96595</code></a> Compile release notes</li> <li><a href="https://github.com/ethereum/py-evm/commit/5388f0a17c3042cd039ce6379ff6136195f2dc28"><code>5388f0a</code></a> Remove upper pin on eth-bloom, minor updates to get tox running (<a href="https://github-redirect.dependabot.com/ethereum/py-evm/issues/2090">#2090</a>)</li> <li><a href="https://github.com/ethereum/py-evm/commit/2e44b8a7c71d1ed67cd3a95320f0612dfb76307d"><code>2e44b8a</code></a> Bump version: 0.6.0-alpha.1 → 0.6.1-alpha.1</li> <li><a href="https://github.com/ethereum/py-evm/commit/0d701efabff7562daf067057098269fbcf86ec61"><code>0d701ef</code></a> Compile release notes</li> <li><a href="https://github.com/ethereum/py-evm/commit/40b98811d8cc3f5c8f8f9ddc96dc345b39e2a6b3"><code>40b9881</code></a> Add a <code>max_length</code> of <code>0</code> for uncles in a Paris block</li> <li><a href="https://github.com/ethereum/py-evm/commit/445d1d0de0bb018ec89b63e6926b8562f7f79efc"><code>445d1d0</code></a> Address comments I made on PR <a href="https://github-redirect.dependabot.com/ethereum/py-evm/issues/2080">#2080</a></li> <li><a href="https://github.com/ethereum/py-evm/commit/6feb4333cbf233f44c02831913ec17659094cf3a"><code>6feb433</code></a> Better clarify some EIP-161 nuances.</li> <li><a href="https://github.com/ethereum/py-evm/commit/655719f9d216b6666d33229c27019fc5a00ac484"><code>655719f</code></a> Turn on ArrowGlacier to Merge transition tests</li> <li><a href="https://github.com/ethereum/py-evm/commit/7319a024a497f54c0ec4cb3b3fdea43a33017860"><code>7319a02</code></a> Turn on more tests + use PosConsensus for ParisVM</li> <li>Additional commits viewable in <a href="https://github.com/ethereum/py-evm/compare/v0.5.0-alpha.3...v0.6.1-alpha.2">compare view</a></li> </ul> </details>

    <br />

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
Releases(v4.8.2)
  • v4.8.2(Dec 15, 2022)

    What's Changed

    • Fix gnosis chain tx service url by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/414

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.8.1...v4.8.2

    Source code(tar.gz)
    Source code(zip)
  • v4.8.1(Dec 13, 2022)

    What's Changed

    • Add Arbitrum Goerli and Nova explorers by @gzeoneth in https://github.com/safe-global/safe-eth-py/pull/409
    • Increase web3 gas estimation offset by @JacqueGM in https://github.com/safe-global/safe-eth-py/pull/411
    • Bump web3 from 5.31.1 to 5.31.3 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/412
    • Bump pytest from 7.1.3 to 7.2.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/389
    • Set version 4.8.1 by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/413

    New Contributors

    • @JacqueGM made their first contribution in https://github.com/safe-global/safe-eth-py/pull/411

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.8.0...v4.8.1

    Source code(tar.gz)
    Source code(zip)
  • v4.8.0(Dec 7, 2022)

    What's Changed

    • Bump faker from 15.1.1 to 15.3.2 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/402
    • Bump faker from 15.3.2 to 15.3.3 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/403
    • Bump pytest-sugar from 0.9.5 to 0.9.6 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/393
    • Bump faker from 15.3.3 to 15.3.4 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/405
    • Bump pytest-rerunfailures from 10.2 to 10.3 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/404
    • Bump django from 3.2.16 to 4.1.3 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/392
    • Add Arbitrum Goerli 421613 by @gzeoneth in https://github.com/safe-global/safe-eth-py/pull/406
    • Bump django from 4.1.3 to 4.1.4 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/407
    • Set version 4.8.0 by @moisses89 in https://github.com/safe-global/safe-eth-py/pull/408

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.7.1...v4.8.0

    Source code(tar.gz)
    Source code(zip)
  • v4.7.1(Nov 17, 2022)

    What's Changed

    • Cache precommit on Github actions by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/395
    • Overwrite value to string for keccak256field by @moisses89 in https://github.com/safe-global/safe-eth-py/pull/399
    • Set version 4.7.1 by @moisses89 in https://github.com/safe-global/safe-eth-py/pull/400

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.7.0...v4.7.1

    Source code(tar.gz)
    Source code(zip)
  • v4.7.0(Nov 9, 2022)

    What's Changed

    • Deprecate python 3.7 by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/391
    • Stop using eip712_structs by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/394
    • Capture EIP712 exceptions by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/397
    • Set version 4.7.0 by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/396

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.6.0...v4.7.0

    Source code(tar.gz)
    Source code(zip)
  • v4.6.0(Oct 31, 2022)

    What's Changed

    • Bump faker from 15.0.0 to 15.1.1 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/378
    • Add milkomeda a1 mainnet in list of chains by @pkakelas in https://github.com/safe-global/safe-eth-py/pull/380
    • Add metis goerli testnet by @t0mcr8se in https://github.com/safe-global/safe-eth-py/pull/379
    • Feat: Add Superfluid Oracle token adapter by @brymut in https://github.com/safe-global/safe-eth-py/pull/381
    • Bump Django by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/382
    • Use Goerli instead of Rinkeby for Cowswap tests by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/385
    • Update tx service urls gnosis.io -> safe.global by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/384
    • Fix tests by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/386
    • Add BOBA_AVAX_L2 network by @dirtycajunrice in https://github.com/safe-global/safe-eth-py/pull/368
    • Add PublicMint mainNet and testNet by @rafaeltorres-seegno in https://github.com/safe-global/safe-eth-py/pull/377
    • Bump psycopg2-binary from 2.9.4 to 2.9.5 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/390
    • Fix superfluid oracle by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/388
    • Implement Safe EIP1271 message signing by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/383
    • Set version 4.6.0 by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/387

    New Contributors

    • @t0mcr8se made their first contribution in https://github.com/safe-global/safe-eth-py/pull/379
    • @brymut made their first contribution in https://github.com/safe-global/safe-eth-py/pull/381
    • @dirtycajunrice made their first contribution in https://github.com/safe-global/safe-eth-py/pull/368
    • @rafaeltorres-seegno made their first contribution in https://github.com/safe-global/safe-eth-py/pull/377

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.5.2...v4.6.0

    Source code(tar.gz)
    Source code(zip)
  • v4.5.2(Oct 11, 2022)

    What's Changed

    • Bump faker from 14.2.0 to 15.0.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/364
    • Bump web3 from 5.31.0 to 5.31.1 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/371
    • Bump coverage from 6.4.4 to 6.5.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/363
    • Bump psycopg2-binary from 2.9.3 to 2.9.4 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/373
    • Check liquidity for tokens in UniswapV3 oracle by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/367
    • Add kcc mainnet and testnet by @mhxw in https://github.com/safe-global/safe-eth-py/pull/374
    • Added Rabbit Network by @amankumarp in https://github.com/safe-global/safe-eth-py/pull/375
    • Set version 4.5.2 by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/376

    New Contributors

    • @mhxw made their first contribution in https://github.com/safe-global/safe-eth-py/pull/374
    • @amankumarp made their first contribution in https://github.com/safe-global/safe-eth-py/pull/375

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.5.1...v4.5.2

    Source code(tar.gz)
    Source code(zip)
  • v4.5.1(Sep 28, 2022)

    What's Changed

    • Bump djangorestframework from 3.13.1 to 3.14.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/360
    • Bump web3 from 5.30.0 to 5.31.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/359
    • Add Bobabeam Mainnet by @datradito in https://github.com/safe-global/safe-eth-py/pull/362
    • Check liquidity for Uniswap V3 oracle by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/361

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.5.0...v4.5.1

    Source code(tar.gz)
    Source code(zip)
  • v4.5.0(Sep 23, 2022)

    What's Changed

    • Add Uniswap V3 Oracle by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/342
    • Cache get_decimals for every oracle by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/345
    • feat: register cronos etherscan urls by @the-amazing-ultraton in https://github.com/safe-global/safe-eth-py/pull/349
    • Bump faker from 14.1.0 to 14.2.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/348
    • Support other networks than Mainnet for Sushiswap by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/344
    • Bump pytest from 7.1.2 to 7.1.3 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/347
    • feat: register astar blockscout url by @the-amazing-ultraton in https://github.com/safe-global/safe-eth-py/pull/351
    • Add Cowswap oracle by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/353
    • feat: register acala, karura, and mandala etherscan urls by @the-amazing-ultraton in https://github.com/safe-global/safe-eth-py/pull/352
    • feat: register moonbeam, moonriver, and moonbase etherscan urls by @the-amazing-ultraton in https://github.com/safe-global/safe-eth-py/pull/350
    • feat: register evmos blockscout urls by @the-amazing-ultraton in https://github.com/safe-global/safe-eth-py/pull/355
    • Add method to check if Oracle is available for network by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/356
    • Migrate setup.py to setup.cfg by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/357

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.4.0...v4.5.0

    Source code(tar.gz)
    Source code(zip)
  • v4.4.0(Aug 25, 2022)

    What's Changed

    • Fix validation error for EthereumAddressField serializer by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/316
    • Add support for Multisend call only by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/314
    • Bump coverage from 6.4.2 to 6.4.3 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/321
    • Bump hexbytes from 0.2.2 to 0.2.3 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/326
    • Add Arbitrum Nova 42170 by @gzeoneth in https://github.com/safe-global/safe-eth-py/pull/328
    • Bump faker from 13.15.1 to 14.0.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/327
    • Bump Django from 3.2.14 to 3.2.15 by @moisses89 in https://github.com/safe-global/safe-eth-py/pull/329
    • Bump cla-assistant/github-action from 2.2.0 to 2.2.1 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/319
    • Bump faker from 14.0.0 to 14.1.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/332
    • Add Milkomeda Algorand testnet by @pkakelas in https://github.com/safe-global/safe-eth-py/pull/318
    • Bump coverage from 6.4.3 to 6.4.4 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/330
    • Fix cache memory leaks by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/339
    • Set version 4.4.0 by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/340

    New Contributors

    • @gzeoneth made their first contribution in https://github.com/safe-global/safe-eth-py/pull/328
    • @moisses89 made their first contribution in https://github.com/safe-global/safe-eth-py/pull/329
    • @pkakelas made their first contribution in https://github.com/safe-global/safe-eth-py/pull/318

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.3.2...v4.4.0

    Source code(tar.gz)
    Source code(zip)
  • v4.3.2(Aug 4, 2022)

    What's Changed

    • Set version 4.3.2 by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/315

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.3.1...v4.3.2

    Source code(tar.gz)
    Source code(zip)
  • v4.3.1(Aug 1, 2022)

    What's Changed

    • Bump cla-assistant/github-action from 2.1.3.pre.beta to 2.2.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/311
    • Bump faker from 13.15.0 to 13.15.1 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/312
    • Return tx-hash as part of SafeTx in SafeTxApi by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/309
    • Fix None values for HexField by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/313
    • Add missing EthereumNetworks by @hectorgomezv in https://github.com/safe-global/safe-eth-py/pull/310

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.3.0...v4.3.1

    Source code(tar.gz)
    Source code(zip)
  • v4.3.0(Jul 22, 2022)

    What's Changed

    • Parse SafeTx numeric parameters to int by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/288
    • Add classes to interact with Safe APIs by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/292
    • Bump coverage from 6.4.1 to 6.4.2 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/305
    • Add a Django Form Field for Hexadecimals by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/291
    • Update precommit by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/304
    • add klaytn mainnet cypress and testnet baobab by @toniya-klaytn in https://github.com/safe-global/safe-eth-py/pull/306
    • Set version 4.3.0 by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/307

    New Contributors

    • @toniya-klaytn made their first contribution in https://github.com/safe-global/safe-eth-py/pull/306

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.2.0...v4.3.0

    Source code(tar.gz)
    Source code(zip)
  • v4.2.0(Jul 13, 2022)

    What's Changed

    • Bump pytest-sugar from 0.9.4 to 0.9.5 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/298
    • Bump faker from 13.14.0 to 13.15.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/295
    • Bump web3 from 5.29.2 to 5.30.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/297
    • Fix threshold test in Safe.create() by @DefiDebauchery in https://github.com/safe-global/safe-eth-py/pull/274
    • Use all for exporting modules by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/300
    • Detect MultiSend addresses by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/299
    • add-hectorgomezv-and-moisses89-to-cla by @hectorgomezv in https://github.com/safe-global/safe-eth-py/pull/301
    • Limit batch requests by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/302

    New Contributors

    • @DefiDebauchery made their first contribution in https://github.com/safe-global/safe-eth-py/pull/274
    • @hectorgomezv made their first contribution in https://github.com/safe-global/safe-eth-py/pull/301

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.1.3...v4.2.0

    Source code(tar.gz)
    Source code(zip)
  • v4.1.3(Jul 7, 2022)

    What's Changed

    • Lock py-evm==0.5.0a3 by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/293

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.1.2...v4.1.3

    Source code(tar.gz)
    Source code(zip)
  • v4.1.2(Jul 6, 2022)

    What's Changed

    • feat: add godwoken mainnet by @Kuzirashi in https://github.com/safe-global/safe-eth-py/pull/278
    • Fix gnosis protocol test by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/280
    • Bump requests from 2.28.0 to 2.28.1 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/281
    • Log and raise a better exception for Ethereum RPC errors by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/279
    • Fix some tests for Erigon by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/287
    • Bump django from 3.2.13 to 3.2.14 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/289
    • Set version 4.1.2 by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/290

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.1.1...v4.1.2

    Source code(tar.gz)
    Source code(zip)
  • v4.1.1(Jun 28, 2022)

    What's Changed

    • feat: add support for cronos mainnet and testnet by @the-amazing-ultraton in https://github.com/safe-global/safe-eth-py/pull/272
    • adding venidium testnet and mainnet networks by @itsfridaythen in https://github.com/safe-global/safe-eth-py/pull/271
    • Bump actions/setup-python from 3 to 4 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/266
    • Add caching for missing w3 instance by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/275
    • Fix tests by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/276
    • Bump django-filter from 21.1 to 22.1 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/270
    • Bump faker from 13.13.0 to 13.14.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/277

    New Contributors

    • @the-amazing-ultraton made their first contribution in https://github.com/safe-global/safe-eth-py/pull/272
    • @itsfridaythen made their first contribution in https://github.com/safe-global/safe-eth-py/pull/271

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.1.0...v4.1.1

    Source code(tar.gz)
    Source code(zip)
  • v4.1.0(Jun 16, 2022)

    What's Changed

    • feat: add godwoken v1 testnet by @Kuzirashi in https://github.com/safe-global/safe-eth-py/pull/258
    • feat: adding support for Astar and Shiden chains by @nick8319 in https://github.com/safe-global/safe-eth-py/pull/265
    • Bump faker from 13.11.1 to 13.13.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/268
    • Bump web3 from 5.29.1 to 5.29.2 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/262
    • Bump coverage from 6.4 to 6.4.1 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/263
    • Bump requests from 2.27.1 to 2.28.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/267
    • Make project use pyproject.toml by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/252
    • Optimize to_checksum_address function by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/269

    New Contributors

    • @Kuzirashi made their first contribution in https://github.com/safe-global/safe-eth-py/pull/258
    • @nick8319 made their first contribution in https://github.com/safe-global/safe-eth-py/pull/265

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.0.1...v4.1.0

    Source code(tar.gz)
    Source code(zip)
  • v4.0.1(May 25, 2022)

    What's Changed

    • Bump web3 from 5.29.0 to 5.29.1 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/257
    • Bump coverage from 6.3.3 to 6.4 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/256
    • add meter mainnet and testnet by @philipappiah in https://github.com/safe-global/safe-eth-py/pull/255
    • Exclude ABIs from coverage report by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/251
    • Update CODEOWNERS by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/253
    • Set version v4.0.1 by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/259

    New Contributors

    • @philipappiah made their first contribution in https://github.com/safe-global/safe-eth-py/pull/255

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v4.0.0...v4.0.1

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0(May 16, 2022)

    Notice

    Migrate from gnosis-py to safe-eth-py if you haven't!

    What's Changed

    • Bump pytest from 7.1.1 to 7.1.2 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/237
    • Bump github/codeql-action from 1 to 2 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/240
    • Bump coverage from 6.3.2 to 6.3.3 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/245
    • Test every network for GnosisProtocolAPI by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/243
    • Bump faker from 13.3.4 to 13.11.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/244
    • Bump django from 3.2.12 to 3.2.13 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/246
    • Rename package from gnosis-py to safe-eth-py by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/249

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v3.9.4...v4.0.0

    What's Changed

    • Bump pytest from 7.1.1 to 7.1.2 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/237
    • Bump github/codeql-action from 1 to 2 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/240
    • Bump coverage from 6.3.2 to 6.3.3 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/245
    • Test every network for GnosisProtocolAPI by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/243
    • Bump faker from 13.3.4 to 13.11.0 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/244
    • Bump django from 3.2.12 to 3.2.13 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/246
    • Rename package from gnosis-py to safe-eth-py by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/249
    • Bump faker from 13.11.0 to 13.11.1 by @dependabot in https://github.com/safe-global/safe-eth-py/pull/248
    • Fix README by @Uxio0 in https://github.com/safe-global/safe-eth-py/pull/250

    Full Changelog: https://github.com/safe-global/safe-eth-py/compare/v3.9.4...v4.0.0

    Source code(tar.gz)
    Source code(zip)
  • v3.9.4(May 11, 2022)

    What's Changed

    • Cache some web3 queries that shouldn't change by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/235
    • Fix slow timeout typo by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/242

    Full Changelog: https://github.com/gnosis/gnosis-py/compare/v3.9.3...v3.9.4

    Source code(tar.gz)
    Source code(zip)
  • v3.9.3(Apr 21, 2022)

    What's Changed

    • Adding Velas network mainnet&testnet support by @datradito in https://github.com/gnosis/gnosis-py/pull/220
    • Validate linting on CI on parallel by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/223
    • Remove conflicting EthereumNetwork by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/226
    • Bump faker from 13.3.3 to 13.3.4 by @dependabot in https://github.com/gnosis/gnosis-py/pull/227
    • Added Eurus mainnet and testnet network ID. by @EU99 in https://github.com/gnosis/gnosis-py/pull/229
    • Bump web3 from 5.28.0 to 5.29.0 by @dependabot in https://github.com/gnosis/gnosis-py/pull/232
    • Fix enzyme and sushiswap tests by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/234
    • Always use cached chainId by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/233

    New Contributors

    • @datradito made their first contribution in https://github.com/gnosis/gnosis-py/pull/220
    • @EU99 made their first contribution in https://github.com/gnosis/gnosis-py/pull/229

    Full Changelog: https://github.com/gnosis/gnosis-py/compare/v3.9.2...v3.9.3

    Source code(tar.gz)
    Source code(zip)
  • v3.9.2(Apr 1, 2022)

    What's Changed

    • Update pre-commit by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/222
    • chore: add rei testnet and mainnet by @bijianing97 in https://github.com/gnosis/gnosis-py/pull/221
    • Set version 3.9.2 by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/224

    New Contributors

    • @bijianing97 made their first contribution in https://github.com/gnosis/gnosis-py/pull/221

    Full Changelog: https://github.com/gnosis/gnosis-py/compare/v3.9.1...v3.9.2

    Source code(tar.gz)
    Source code(zip)
  • v3.9.1(Mar 28, 2022)

    What's Changed

    • Ignore invalid padding for Safe tx signatures by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/215
    • Fix default gas for ether sending by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/216
    • Bump actions/cache from 2 to 3 by @dependabot in https://github.com/gnosis/gnosis-py/pull/218
    • Bump faker from 13.3.2 to 13.3.3 by @dependabot in https://github.com/gnosis/gnosis-py/pull/217
    • fix chain id by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/219

    Full Changelog: https://github.com/gnosis/gnosis-py/compare/v3.9.0...v3.9.1

    Source code(tar.gz)
    Source code(zip)
  • v3.9.0(Mar 22, 2022)

    What's Changed

    • Add support for FUSE block explorer by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/210
    • Update ganache to v7 by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/212
    • Bump pytest from 7.0.1 to 7.1.1 by @dependabot in https://github.com/gnosis/gnosis-py/pull/214
    • Bump faker from 13.3.1 to 13.3.2 by @dependabot in https://github.com/gnosis/gnosis-py/pull/213
    • Bump web3 from 5.24.0 to 5.28.0 by @dependabot in https://github.com/gnosis/gnosis-py/pull/194

    Full Changelog: https://github.com/gnosis/gnosis-py/compare/v3.8.3...v3.9.0

    Source code(tar.gz)
    Source code(zip)
  • v3.8.3(Mar 16, 2022)

    What's Changed

    • Make EthereumClient timeouts configurable via envvars by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/209

    Full Changelog: https://github.com/gnosis/gnosis-py/compare/v3.8.2...v3.8.3

    Source code(tar.gz)
    Source code(zip)
  • v3.8.2(Mar 15, 2022)

    What's Changed

    • Update Django to v3.2.12 by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/196
    • Bump faker from 12.3.0 to 13.2.0 by @dependabot in https://github.com/gnosis/gnosis-py/pull/199
    • Bump pytest from 6.2.5 to 7.0.1 by @dependabot in https://github.com/gnosis/gnosis-py/pull/197
    • Fix Gnosis protocol tests by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/207
    • Bump faker from 13.2.0 to 13.3.1 by @dependabot in https://github.com/gnosis/gnosis-py/pull/206
    • Bump actions/setup-python from 2 to 3 by @dependabot in https://github.com/gnosis/gnosis-py/pull/204
    • Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/gnosis/gnosis-py/pull/203
    • Bump coverage from 6.3.1 to 6.3.2 by @dependabot in https://github.com/gnosis/gnosis-py/pull/200
    • Support django admin search for binary fields by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/208

    Full Changelog: https://github.com/gnosis/gnosis-py/compare/v3.8.1...v3.8.2

    Source code(tar.gz)
    Source code(zip)
  • v3.8.1(Feb 16, 2022)

    What's Changed

    • Fix decoding ERC20/721 Transfer events by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/195

    Full Changelog: https://github.com/gnosis/gnosis-py/compare/v3.8.0...v3.8.1

    Source code(tar.gz)
    Source code(zip)
  • v3.8.0(Feb 14, 2022)

    What's Changed

    • Rename NEAR chain -> Aurora by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/178
    • Set safe-services team as CODEOWNERS by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/179
    • refactor: replace deprecated pyethereum library by @banteg in https://github.com/gnosis/gnosis-py/pull/181
    • Bump faker from 11.3.0 to 12.1.0 by @dependabot in https://github.com/gnosis/gnosis-py/pull/187
    • Bump coverage from 6.2 to 6.3.1 by @dependabot in https://github.com/gnosis/gnosis-py/pull/185
    • Fix getting tx signers when no signatures are provided by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/183
    • Update pre-commit config by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/182
    • add Shyft mainnet and testnet ID by @svanegmond in https://github.com/gnosis/gnosis-py/pull/189
    • Fix typing and defaults on SafeTx by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/188
    • Handle exception for get_signing_address to get previous behaviour by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/190
    • Bump faker from 12.1.0 to 12.3.0 by @dependabot in https://github.com/gnosis/gnosis-py/pull/193
    • Bump version 3.8.0 by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/191

    New Contributors

    • @svanegmond made their first contribution in https://github.com/gnosis/gnosis-py/pull/189

    Full Changelog: https://github.com/gnosis/gnosis-py/compare/v3.7.7...v3.8.0

    Source code(tar.gz)
    Source code(zip)
  • v3.7.7(Jan 18, 2022)

    What's Changed

    • Bump psycopg2-binary from 2.9.2 to 2.9.3 by @dependabot in https://github.com/gnosis/gnosis-py/pull/170
    • Add CLA to github actions by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/172
    • Adding the Evmos network information by @Piquinikis in https://github.com/gnosis/gnosis-py/pull/174
    • Bump djangorestframework from 3.12.4 to 3.13.1 by @dependabot in https://github.com/gnosis/gnosis-py/pull/171
    • Bump django from 3.2.10 to 3.2.11 by @dependabot in https://github.com/gnosis/gnosis-py/pull/175
    • Ignore ERC721 token uris and owners on exceptions by @Uxio0 in https://github.com/gnosis/gnosis-py/pull/176

    New Contributors

    • @Piquinikis made their first contribution in https://github.com/gnosis/gnosis-py/pull/174

    Full Changelog: https://github.com/gnosis/gnosis-py/compare/v3.7.6...v3.7.7

    Source code(tar.gz)
    Source code(zip)
Owner
Gnosis
Gnosis builds new market mechanisms for decentralized finance.
Gnosis
gnosis safe tx builder

Ape Safe: Gnosis Safe tx builder Ape Safe allows you to iteratively build complex multi-step Gnosis Safe transactions and safely preview their side ef

null 228 Dec 22, 2022
🚧 finCLI's own News API. No more limited API calls. Unlimited credible and latest information on BTC, Ethereum, Indian and Global Finance.

?? finCLI's own News API. No more limited API calls. Unlimited credible and latest information on BTC, Ethereum, Indian and Global Finance.

finCLI 5 Jun 16, 2022
Ethereum transactions and wallet information for people you follow on Twitter.

ethFollowing Ethereum transactions and wallet information for people you follow on Twitter. Set up Setup python environment (requires python 3.8): vir

Brian Donohue 2 Dec 28, 2021
Ethereum Gas Fee for the MacBook Pro touchbar (using BetterTouchTool)

Gasbar Ethereum Gas Fee for the MacBook Pro touchbar (using BetterTouchTool) Worried about Ethereum gas fees? Me too. I'd like to keep an eye on them

TSS 51 Nov 14, 2022
The most expensive version of Conway's Game of Life - running on the Ethereum Blockchain

GameOfLife The most expensive implementation of Conway's Game of Life ever - over $2,000 per step! (Probably the slowest too!) Conway's Game of Life r

null 75 Nov 26, 2022
buys ethereum based on graphics card moving average price on ebay

ebay_trades buys ethereum based on graphics card moving average price on ebay Built as a meme, this application will scrape the first 3 pages of ebay

ConnorCreate 41 Jan 5, 2023
Bringing Ethereum Virtual Machine to StarkNet at warp speed!

Warp Warp brings EVM compatible languages to StarkNet, making it possible to transpile Ethereum smart contracts to Cairo, and use them on StarkNet. Ta

Nethermind 700 Dec 26, 2022
Bendford analysis of Ethereum transaction

Bendford analysis of Ethereum transaction The python script script.py extract from already downloaded archive file the ethereum transaction. The value

sleepy ramen 2 Dec 18, 2021
A modular dynamical-systems model of Ethereum's validator economics.

CADLabs Ethereum Economic Model A modular dynamical-systems model of Ethereum's validator economics, based on the open-source Python library radCAD, a

CADLabs 104 Jan 3, 2023
EthSema - Binary translator for Ethereum 2.0

EthSema is a novel EVM-to-eWASM bytecode translator that can not only ensure the fidelity of translation but also fix commonly-seen vulnerabilities in smart contracts.

weimin 8 Mar 1, 2022
Powerful Ethereum Smart-Contract Toolkit

Heimdall Heimdall is an advanced and modular smart-contract toolkit which aims to make dealing with smart contracts on EVM based chains easier. Instal

Jonathan Becker 69 Dec 26, 2022
a script to bulk check usernames on multiple site. includes proxy & threading support.

linked-bulk-checker bulk checks username availability on multiple sites info people have been selling these so i just made one to release dm my discor

krul 9 Sep 20, 2021
It is a useful project for developers that includes useful tools for Instagram

InstagramIG It is a useful project for developers that includes useful tools for Instagram Installation : pip install InstagramIG Logan Usage from In

Sidra ELEzz 14 Mar 14, 2022
Python wrappers for INHECO ODTC and SCILA libraries by INHECO GmbH.

Python wrappers for INHECO ODTC and SCILA libraries by INHECO GmbH.

null 1 Feb 9, 2022
🏆 A ranked list of awesome machine learning Python libraries. Updated weekly.

Best-of Machine Learning with Python ?? A ranked list of awesome machine learning Python libraries. Updated weekly. This curated list contains 840 awe

Machine Learning Tooling 12.2k Jan 4, 2023
A Chip-8 emulator written using Python's default libraries

Chippure A Chip-8 emulator written using Python's default libraries. Instructions: Simply launch the .py file and type the name of the Chip8 ROM you w

null 5 Sep 27, 2022
Deep reinforcement learning library built on top of Neural Network Libraries

Deep Reinforcement Learning Library built on top of Neural Network Libraries NNablaRL is a deep reinforcement learning library built on top of Neural

Sony 100 Dec 14, 2022
StudyLion is a Discord bot that tracks members' study and work time while offering members to view their statistics and use productivity tools such as: To-do lists, Pomodoro timers, reminders, and much more.

StudyLion - Discord Productivity Bot StudyLion is a Discord bot that tracks members' study and work time while offering members the ability to view th

null 45 Dec 26, 2022
Framework for creating and running trading strategies. Blatantly stolen copy of qtpylib to make it work for Indian markets.

>_• Kinetick Trade Bot Kinetick is a framework for creating and running trading strategies without worrying about integration with broker and data str

Vinay 41 Dec 31, 2022