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
Official Python client for the MonkeyLearn API. Build and consume machine learning models for language processing from your Python apps.

MonkeyLearn API for Python Official Python client for the MonkeyLearn API. Build and run machine learning models for language processing from your Pyt

MonkeyLearn 157 Nov 22, 2022
Discord bot to monitor collection of mods on the Steam Workshop and notify on update to selected discord server via Nextcordbot API.

Steam-Workshop-Monitor Discord bot to monitor collection of mods on the Steam Workshop and notify on update to selected Discord channel via Nextcordbo

7 Nov 03, 2022
Telegram bot to check availability of vaccination slots in India.

cowincheckbot Telegram bot to check availability of vaccination slots in India. Setup Install requirements using pip3 install -r requirements.txt Crea

Muhammed Shameem 10 Jun 11, 2022
Minimal Python client for the Iris API, built on top of Authlib and httpx.

🕸️ Iris Python Client Minimal Python client for the Iris API, built on top of Authlib and httpx. Installation pip install dioptra-iris-client Usage f

Dioptra 1 Jan 28, 2022
Name says it all/Instructions are in README file.

Discord-Webhook-Spammer Name says it all/Instructions are in README file. Setup 1. pip install discord-webhook ( In console, terminal or whatever you

Catto 1 Mar 21, 2022
Proxy-Bot - Python proxy bot for telegram

Proxy-Bot 🤖 Proxy bot between the main chat and a newcomer, allows all particip

Anton Shumakov 3 Apr 01, 2022
GitGram Bot. Bot Then Message You Your Repo Starts, Forks, And Many More

Yet Another GitAlertBot Inspired From Dev-v2's GitGram Run Bot: Local Host Git Clone Repo : For Telethon Version : git clone https://github.com/TeamAl

Alina RoBot 2 Nov 24, 2021
Asynchronous Python Wrapper for the GoFile API

Asynchronous Python Wrapper for the GoFile API

Gautam Kumar 22 Aug 04, 2022
An Inline Telegram YouTube Downloader bot with custom, permanent thumbnail support and cancel upload facility. Make your fork now.

Inline-Tube-Mate (YouTube Downloader) An Inline Telegram bot that can download YouTube videos with permanent thumbnail support Bot need to be in Inlin

Renjith Mangal 41 Dec 14, 2022
A Python wrapper for the QQ Channel API

A Python wrapper for the QQ Channel API

Fox_white 55 Dec 07, 2022
Async ready API wrapper for Revolt API written in Python.

Mutiny Async ready API wrapper for Revolt API written in Python. Installation Python 3.9 or higher is required To install the library, you can just ru

16 Mar 29, 2022
Telegram Bot for saving and sharing personal and group notes

EZ Notes Bot (ezNotesBot) Telegram Bot for saving and sharing personal and group notes. Usage Personal notes: reply to any message in PM to save it as

Dash Eclipse 8 Nov 07, 2022
Aqui está disponível GRATUITAMENTE, um bot de discord feito em python, saiba que, terá que criar seu bot como aplicação, e utilizar seu próprio token, e lembrando, é um bot básico, não se utiliza Cogs nem slash commands nele!

BotDiscordPython Aqui está disponível GRATUITAMENTE, um bot de discord feito em python, saiba que, terá que criar seu bot como aplicação, e utilizar s

Matheus Muguet 4 Feb 05, 2022
自用直播源集合,附带检测与分类功能。

myiptv 自用直播源集合,附带检测与分类功能。 为啥搞 TLDR: 太闲了。 自己有收集直播源的爱好,和录制直播源的需求。 一些软件自带的直播源太过难用。 网上现有的直播源太杂,且缺乏检测。 一些大源缺乏持续更新,如 iptv-org。 使用指南与 TODO 每次进行大更新后都会进行一次 rel

abc1763613206 171 Dec 11, 2022
Python wrapper for the Intercom API.

python-intercom Not officially supported Please note that this is NOT an official Intercom SDK. The third party that maintained it reached out to us t

Intercom 215 Dec 22, 2022
Retrieve information from DBLP and update BibTex files automatically

Rebib TLDR: This script retrieves information from DBLP to update your BibTex files. python rebib.py --bibfile xxx.bib It first parses the bib entries

Shangtong Zhang 49 Jan 01, 2023
This Code is Property of Rehyann Saini. Feel Free to use this Project.

Email-Spammer Rehyann Saini in Collabration With Fe13 Productions This is an easy to use Dev Friendly Email spammer... #Important Things to know..! St

Rehyann Saini 1 Jan 14, 2022
This is a discord token generator(requests) which works and makes 200 tokens per minute

Discord Email verified token generator Creates email verified discord accounts (unlocked) Report Bug · Discord server Features Profile pictures and na

131 Dec 10, 2022
Filters to block and remove copycat-websites from DuckDuckGo and Google

uBlock Origin - Shitty Copy-Paste websites filter Filter for uBlock origin to remove spam-website results from DuckDuckGo and Google that just blatant

99 Dec 15, 2022
A simple library for interacting with Amazon SQS.

qoo is a very simple Amazon SQS client, written in Python. It aims to be much more straight-forward to use than boto3, and specializes only in Amazon

Jacobi Petrucciani 2 Oct 30, 2020