diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f9820e4e6..612d3ae62 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,8 +20,23 @@ jobs: include: - os: ubuntu-latest arch: amd64 + python-version: '3.12' - os: ubuntu-latest arch: arm64 + python-version: '3.12' + - os: ubuntu-latest + arch: amd64 + python-version: '3.11' + - os: ubuntu-latest + arch: amd64 + python-version: '3.10' + - os: ubuntu-latest + arch: amd64 + python-version: '3.9' + - os: ubuntu-latest + arch: amd64 + python-version: '3.8' + # FIXME: docker.errors.DockerException: Error while fetching server API version # - os: macos-latest # arch: amd64 @@ -34,14 +49,12 @@ jobs: - name: Install poetry run: pipx install poetry - - name: Configure poetry - run: poetry config installer.modern-installation false - - name: Set up Python uses: actions/setup-python@v4 with: - python-version: '3.11' - cache: 'poetry' + python-version: ${{ matrix.python-version }} + # FIXME: temporary + # cache: 'poetry' - name: Install binary dependencies run: OSTYPE=$OSTYPE make install-deps @@ -51,7 +64,7 @@ jobs: - name: Run lint run: make lint - if: contains(matrix.os, 'ubuntu') && contains(matrix.arch, 'amd64') + if: contains(matrix.python-version, '3.12') - name: Run tests run: OSTYPE=$OSTYPE make test-ci diff --git a/CHANGELOG.md b/CHANGELOG.md index f00ccfdf4..a25d0e71e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [Unreleased] + +### Changed + +* Octez binaries updated to v20.1-1 + +### Fixed + +* Fixed Python 3.8 compatibility + ## [3.12.1](https://github.com/baking-bad/pytezos/compare/3.12.0...3.12.1) (2024-06-11) ### Changed diff --git a/README.md b/README.md index 5edc91e98..7649bc352 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/baking-bad/pytezos/master?filepath=michelson_quickstart.ipynb) - * RPC query engine * Cryptography * Building and parsing operations @@ -16,15 +15,18 @@ * Working with Michelson AST #### PyTezos CLI + * Generating contract parameter/storage schema * Activating and revealing accounts * Deploying contracts (+ GitHub integration) #### Michelson REPL + * Builtin interpreter (reimplemented) * Set of extra helpers (stack visualization, blockchain context mocking) #### Michelson Jupyter kernel + * Custom interpreter with runtime type checker * Syntax highlighting, autocomplete with `Tab` * In-place docstrings with `Shift+Tab` @@ -33,48 +35,54 @@ * Debug helpers #### Michelson integration testing framework + * Writing integration tests using `unittest` package * Simulating contract execution using remote intepreter (via RPC) or builtin one - ## Installation -Make sure you have Python 3.8 to 3.11 installed and set as default in the system. +Make sure you have Python 3.8 to 3.12 installed and set as default in the system. You also need to install cryptographic packages before installing the library/building the project: -#### Linux +### Linux + +#### Ubuntu, Debian and other apt-based distributions -##### Ubuntu, Debian and other apt-based distributions ```shell $ sudo apt install libsodium-dev libsecp256k1-dev libgmp-dev pkg-config ``` -##### Arch Linux +#### Arch Linux + ```shell $ sudo pacman -Syu --needed libsodium libsecp256k1 gmp ``` -#### MacOS + +### MacOS [Homebrew](https://brew.sh/) needs to be installed. + ```shell $ brew tap cuber/homebrew-libsecp256k1 $ brew install libsodium libsecp256k1 gmp pkg-config ``` -##### M1 (ARM) +#### M1 (ARM) In case `secp256k1` or `gmp` cannot find either include or lib paths, try explicitly set environment vars: -``` + +```shell CFLAGS="-I/opt/homebrew/Cellar/gmp/6.2.1_1/include/ -L/opt/homebrew/Cellar/gmp/6.2.1_1/lib/" LIB_DIR="/opt/homebrew/Cellar/libsecp256k1/0.1/lib" INCLUDE_DIR=/opt/homebrew/Cellar/libsecp256k1/0.1/include pip3 install --user pytezos ``` For running tests you might also need to export `LD_LIBRARY_PATH`: -``` + +```shell export LD_LIBRARY_PATH=/opt/homebrew/lib/ ``` -#### Windows +### Windows The recommended way is to use WSL and then follow the instructions for Linux, but if you feel lucky you can try to install natively: @@ -100,7 +108,9 @@ $ pip install pytezos ````` ### Docker container + Verified & minified images for CI/CD https://hub.docker.com/r/bakingbad/pytezos/tags + ```shell $ # 1. Use image from registry $ docker pull bakingbad/pytezos @@ -113,7 +123,8 @@ $ docker-compose up -d notebook ### Building from sources Requirements: -* Python 3.8+ + +* Python 3.8 to 3.12 * libsodium, libsecp256k1, gmp * make @@ -121,19 +132,21 @@ Requirements: $ # prepare environment $ make install # # run full CI with tests -$ make +$ make all ``` ## Quick start + Read [quick start guide](https://pytezos.org/quick_start.html) Learn how to [enable Jupyter with Michelson](./src/michelson_kernel/README.md) ## API reference + Check out a complete [API reference](https://pytezos.org/contents.html) ### Inline documentation -If you are working in Jupyter/Google Colab or any other interactive console, -you can display documentation for a particular class/method: + +If you are working in Jupyter/Google Colab or any other interactive console, you can display documentation for a particular class/method: ```python >>> from pytezos import pytezos @@ -155,10 +168,12 @@ https://medium.com/tezoscommons/preparing-for-the-tezos-hackathon-with-baking-ba https://medium.com/tezoscommons/testing-michelson-contracts-with-pytezos-513718499e93 ### Contact + * Telegram chat: [@baking_bad_chat](https://t.me/baking_bad_chat) * Slack channel: [#baking-bad](https://tezos-dev.slack.com/archives/CV5NX7F2L) ## Credits + * The project was initially started by Arthur Breitman, now it's maintained by Baking Bad team. * Baking Bad is supported by Tezos Foundation * Michelson test set from the Tezos repo is used to ensure the interpreter workability diff --git a/poetry.lock b/poetry.lock index f8b253707..11215ee65 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "alabaster" @@ -549,63 +549,63 @@ test = ["pytest"] [[package]] name = "coverage" -version = "7.5.3" +version = "7.5.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a6519d917abb15e12380406d721e37613e2a67d166f9fb7e5a8ce0375744cd45"}, - {file = "coverage-7.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aea7da970f1feccf48be7335f8b2ca64baf9b589d79e05b9397a06696ce1a1ec"}, - {file = "coverage-7.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:923b7b1c717bd0f0f92d862d1ff51d9b2b55dbbd133e05680204465f454bb286"}, - {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62bda40da1e68898186f274f832ef3e759ce929da9a9fd9fcf265956de269dbc"}, - {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8b7339180d00de83e930358223c617cc343dd08e1aa5ec7b06c3a121aec4e1d"}, - {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:25a5caf742c6195e08002d3b6c2dd6947e50efc5fc2c2205f61ecb47592d2d83"}, - {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:05ac5f60faa0c704c0f7e6a5cbfd6f02101ed05e0aee4d2822637a9e672c998d"}, - {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:239a4e75e09c2b12ea478d28815acf83334d32e722e7433471fbf641c606344c"}, - {file = "coverage-7.5.3-cp310-cp310-win32.whl", hash = "sha256:a5812840d1d00eafae6585aba38021f90a705a25b8216ec7f66aebe5b619fb84"}, - {file = "coverage-7.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:33ca90a0eb29225f195e30684ba4a6db05dbef03c2ccd50b9077714c48153cac"}, - {file = "coverage-7.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f81bc26d609bf0fbc622c7122ba6307993c83c795d2d6f6f6fd8c000a770d974"}, - {file = "coverage-7.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7cec2af81f9e7569280822be68bd57e51b86d42e59ea30d10ebdbb22d2cb7232"}, - {file = "coverage-7.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55f689f846661e3f26efa535071775d0483388a1ccfab899df72924805e9e7cd"}, - {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50084d3516aa263791198913a17354bd1dc627d3c1639209640b9cac3fef5807"}, - {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:341dd8f61c26337c37988345ca5c8ccabeff33093a26953a1ac72e7d0103c4fb"}, - {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ab0b028165eea880af12f66086694768f2c3139b2c31ad5e032c8edbafca6ffc"}, - {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5bc5a8c87714b0c67cfeb4c7caa82b2d71e8864d1a46aa990b5588fa953673b8"}, - {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38a3b98dae8a7c9057bd91fbf3415c05e700a5114c5f1b5b0ea5f8f429ba6614"}, - {file = "coverage-7.5.3-cp311-cp311-win32.whl", hash = "sha256:fcf7d1d6f5da887ca04302db8e0e0cf56ce9a5e05f202720e49b3e8157ddb9a9"}, - {file = "coverage-7.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:8c836309931839cca658a78a888dab9676b5c988d0dd34ca247f5f3e679f4e7a"}, - {file = "coverage-7.5.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:296a7d9bbc598e8744c00f7a6cecf1da9b30ae9ad51c566291ff1314e6cbbed8"}, - {file = "coverage-7.5.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:34d6d21d8795a97b14d503dcaf74226ae51eb1f2bd41015d3ef332a24d0a17b3"}, - {file = "coverage-7.5.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e317953bb4c074c06c798a11dbdd2cf9979dbcaa8ccc0fa4701d80042d4ebf1"}, - {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:705f3d7c2b098c40f5b81790a5fedb274113373d4d1a69e65f8b68b0cc26f6db"}, - {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1196e13c45e327d6cd0b6e471530a1882f1017eb83c6229fc613cd1a11b53cd"}, - {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:015eddc5ccd5364dcb902eaecf9515636806fa1e0d5bef5769d06d0f31b54523"}, - {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fd27d8b49e574e50caa65196d908f80e4dff64d7e592d0c59788b45aad7e8b35"}, - {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:33fc65740267222fc02975c061eb7167185fef4cc8f2770267ee8bf7d6a42f84"}, - {file = "coverage-7.5.3-cp312-cp312-win32.whl", hash = "sha256:7b2a19e13dfb5c8e145c7a6ea959485ee8e2204699903c88c7d25283584bfc08"}, - {file = "coverage-7.5.3-cp312-cp312-win_amd64.whl", hash = "sha256:0bbddc54bbacfc09b3edaec644d4ac90c08ee8ed4844b0f86227dcda2d428fcb"}, - {file = "coverage-7.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f78300789a708ac1f17e134593f577407d52d0417305435b134805c4fb135adb"}, - {file = "coverage-7.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b368e1aee1b9b75757942d44d7598dcd22a9dbb126affcbba82d15917f0cc155"}, - {file = "coverage-7.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f836c174c3a7f639bded48ec913f348c4761cbf49de4a20a956d3431a7c9cb24"}, - {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:244f509f126dc71369393ce5fea17c0592c40ee44e607b6d855e9c4ac57aac98"}, - {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4c2872b3c91f9baa836147ca33650dc5c172e9273c808c3c3199c75490e709d"}, - {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd4b3355b01273a56b20c219e74e7549e14370b31a4ffe42706a8cda91f19f6d"}, - {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f542287b1489c7a860d43a7d8883e27ca62ab84ca53c965d11dac1d3a1fab7ce"}, - {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:75e3f4e86804023e991096b29e147e635f5e2568f77883a1e6eed74512659ab0"}, - {file = "coverage-7.5.3-cp38-cp38-win32.whl", hash = "sha256:c59d2ad092dc0551d9f79d9d44d005c945ba95832a6798f98f9216ede3d5f485"}, - {file = "coverage-7.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:fa21a04112c59ad54f69d80e376f7f9d0f5f9123ab87ecd18fbb9ec3a2beed56"}, - {file = "coverage-7.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5102a92855d518b0996eb197772f5ac2a527c0ec617124ad5242a3af5e25f85"}, - {file = "coverage-7.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d1da0a2e3b37b745a2b2a678a4c796462cf753aebf94edcc87dcc6b8641eae31"}, - {file = "coverage-7.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8383a6c8cefba1b7cecc0149415046b6fc38836295bc4c84e820872eb5478b3d"}, - {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9aad68c3f2566dfae84bf46295a79e79d904e1c21ccfc66de88cd446f8686341"}, - {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e079c9ec772fedbade9d7ebc36202a1d9ef7291bc9b3a024ca395c4d52853d7"}, - {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bde997cac85fcac227b27d4fb2c7608a2c5f6558469b0eb704c5726ae49e1c52"}, - {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:990fb20b32990b2ce2c5f974c3e738c9358b2735bc05075d50a6f36721b8f303"}, - {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3d5a67f0da401e105753d474369ab034c7bae51a4c31c77d94030d59e41df5bd"}, - {file = "coverage-7.5.3-cp39-cp39-win32.whl", hash = "sha256:e08c470c2eb01977d221fd87495b44867a56d4d594f43739a8028f8646a51e0d"}, - {file = "coverage-7.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:1d2a830ade66d3563bb61d1e3c77c8def97b30ed91e166c67d0632c018f380f0"}, - {file = "coverage-7.5.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:3538d8fb1ee9bdd2e2692b3b18c22bb1c19ffbefd06880f5ac496e42d7bb3884"}, - {file = "coverage-7.5.3.tar.gz", hash = "sha256:04aefca5190d1dc7a53a4c1a5a7f8568811306d7a8ee231c42fb69215571944f"}, + {file = "coverage-7.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cfb5a4f556bb51aba274588200a46e4dd6b505fb1a5f8c5ae408222eb416f99"}, + {file = "coverage-7.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2174e7c23e0a454ffe12267a10732c273243b4f2d50d07544a91198f05c48f47"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2214ee920787d85db1b6a0bd9da5f8503ccc8fcd5814d90796c2f2493a2f4d2e"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1137f46adb28e3813dec8c01fefadcb8c614f33576f672962e323b5128d9a68d"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b385d49609f8e9efc885790a5a0e89f2e3ae042cdf12958b6034cc442de428d3"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b4a474f799456e0eb46d78ab07303286a84a3140e9700b9e154cfebc8f527016"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5cd64adedf3be66f8ccee418473c2916492d53cbafbfcff851cbec5a8454b136"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e564c2cf45d2f44a9da56f4e3a26b2236504a496eb4cb0ca7221cd4cc7a9aca9"}, + {file = "coverage-7.5.4-cp310-cp310-win32.whl", hash = "sha256:7076b4b3a5f6d2b5d7f1185fde25b1e54eb66e647a1dfef0e2c2bfaf9b4c88c8"}, + {file = "coverage-7.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:018a12985185038a5b2bcafab04ab833a9a0f2c59995b3cec07e10074c78635f"}, + {file = "coverage-7.5.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db14f552ac38f10758ad14dd7b983dbab424e731588d300c7db25b6f89e335b5"}, + {file = "coverage-7.5.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3257fdd8e574805f27bb5342b77bc65578e98cbc004a92232106344053f319ba"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a6612c99081d8d6134005b1354191e103ec9705d7ba2754e848211ac8cacc6b"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d45d3cbd94159c468b9b8c5a556e3f6b81a8d1af2a92b77320e887c3e7a5d080"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed550e7442f278af76d9d65af48069f1fb84c9f745ae249c1a183c1e9d1b025c"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7a892be37ca35eb5019ec85402c3371b0f7cda5ab5056023a7f13da0961e60da"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8192794d120167e2a64721d88dbd688584675e86e15d0569599257566dec9bf0"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:820bc841faa502e727a48311948e0461132a9c8baa42f6b2b84a29ced24cc078"}, + {file = "coverage-7.5.4-cp311-cp311-win32.whl", hash = "sha256:6aae5cce399a0f065da65c7bb1e8abd5c7a3043da9dceb429ebe1b289bc07806"}, + {file = "coverage-7.5.4-cp311-cp311-win_amd64.whl", hash = "sha256:d2e344d6adc8ef81c5a233d3a57b3c7d5181f40e79e05e1c143da143ccb6377d"}, + {file = "coverage-7.5.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:54317c2b806354cbb2dc7ac27e2b93f97096912cc16b18289c5d4e44fc663233"}, + {file = "coverage-7.5.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:042183de01f8b6d531e10c197f7f0315a61e8d805ab29c5f7b51a01d62782747"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6bb74ed465d5fb204b2ec41d79bcd28afccf817de721e8a807d5141c3426638"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3d45ff86efb129c599a3b287ae2e44c1e281ae0f9a9bad0edc202179bcc3a2e"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5013ed890dc917cef2c9f765c4c6a8ae9df983cd60dbb635df8ed9f4ebc9f555"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1014fbf665fef86cdfd6cb5b7371496ce35e4d2a00cda501cf9f5b9e6fced69f"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3684bc2ff328f935981847082ba4fdc950d58906a40eafa93510d1b54c08a66c"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:581ea96f92bf71a5ec0974001f900db495488434a6928a2ca7f01eee20c23805"}, + {file = "coverage-7.5.4-cp312-cp312-win32.whl", hash = "sha256:73ca8fbc5bc622e54627314c1a6f1dfdd8db69788f3443e752c215f29fa87a0b"}, + {file = "coverage-7.5.4-cp312-cp312-win_amd64.whl", hash = "sha256:cef4649ec906ea7ea5e9e796e68b987f83fa9a718514fe147f538cfeda76d7a7"}, + {file = "coverage-7.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdd31315fc20868c194130de9ee6bfd99755cc9565edff98ecc12585b90be882"}, + {file = "coverage-7.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:02ff6e898197cc1e9fa375581382b72498eb2e6d5fc0b53f03e496cfee3fac6d"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d05c16cf4b4c2fc880cb12ba4c9b526e9e5d5bb1d81313d4d732a5b9fe2b9d53"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5986ee7ea0795a4095ac4d113cbb3448601efca7f158ec7f7087a6c705304e4"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df54843b88901fdc2f598ac06737f03d71168fd1175728054c8f5a2739ac3e4"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ab73b35e8d109bffbda9a3e91c64e29fe26e03e49addf5b43d85fc426dde11f9"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:aea072a941b033813f5e4814541fc265a5c12ed9720daef11ca516aeacd3bd7f"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:16852febd96acd953b0d55fc842ce2dac1710f26729b31c80b940b9afcd9896f"}, + {file = "coverage-7.5.4-cp38-cp38-win32.whl", hash = "sha256:8f894208794b164e6bd4bba61fc98bf6b06be4d390cf2daacfa6eca0a6d2bb4f"}, + {file = "coverage-7.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:e2afe743289273209c992075a5a4913e8d007d569a406ffed0bd080ea02b0633"}, + {file = "coverage-7.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b95c3a8cb0463ba9f77383d0fa8c9194cf91f64445a63fc26fb2327e1e1eb088"}, + {file = "coverage-7.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d7564cc09dd91b5a6001754a5b3c6ecc4aba6323baf33a12bd751036c998be4"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44da56a2589b684813f86d07597fdf8a9c6ce77f58976727329272f5a01f99f7"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e16f3d6b491c48c5ae726308e6ab1e18ee830b4cdd6913f2d7f77354b33f91c8"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbc5958cb471e5a5af41b0ddaea96a37e74ed289535e8deca404811f6cb0bc3d"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a04e990a2a41740b02d6182b498ee9796cf60eefe40cf859b016650147908029"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ddbd2f9713a79e8e7242d7c51f1929611e991d855f414ca9996c20e44a895f7c"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b1ccf5e728ccf83acd313c89f07c22d70d6c375a9c6f339233dcf792094bcbf7"}, + {file = "coverage-7.5.4-cp39-cp39-win32.whl", hash = "sha256:56b4eafa21c6c175b3ede004ca12c653a88b6f922494b023aeb1e836df953ace"}, + {file = "coverage-7.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:65e528e2e921ba8fd67d9055e6b9f9e34b21ebd6768ae1c1723f4ea6ace1234d"}, + {file = "coverage-7.5.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:79b356f3dd5b26f3ad23b35c75dbdaf1f9e2450b6bcefc6d0825ea0aa3f86ca5"}, + {file = "coverage-7.5.4.tar.gz", hash = "sha256:a44963520b069e12789d0faea4e9fdb1e410cdc4aab89d94f7f55cbb7fef0353"}, ] [package.dependencies] @@ -876,24 +876,25 @@ toml = ["tomli (>=1.2.1)"] [[package]] name = "docker" -version = "6.1.3" +version = "7.1.0" description = "A Python library for the Docker Engine API." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "docker-6.1.3-py3-none-any.whl", hash = "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9"}, - {file = "docker-6.1.3.tar.gz", hash = "sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20"}, + {file = "docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0"}, + {file = "docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c"}, ] [package.dependencies] -packaging = ">=14.0" pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""} requests = ">=2.26.0" urllib3 = ">=1.26.0" -websocket-client = ">=0.32.0" [package.extras] +dev = ["coverage (==7.2.7)", "pytest (==7.4.2)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.1.0)", "ruff (==0.1.8)"] +docs = ["myst-parser (==0.18.0)", "sphinx (==5.1.1)"] ssh = ["paramiko (>=2.4.3)"] +websockets = ["websocket-client (>=1.3.0)"] [[package]] name = "docutils" @@ -937,17 +938,17 @@ test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "eth-typing" -version = "4.3.0" +version = "4.3.1" description = "eth-typing: Common type annotations for ethereum python packages" optional = false python-versions = "<4,>=3.8" files = [ - {file = "eth_typing-4.3.0-py3-none-any.whl", hash = "sha256:718f8ef8180ac1a15e476f072e4522e7bd4429bdabc71499e3ca79e2219d775c"}, - {file = "eth_typing-4.3.0.tar.gz", hash = "sha256:3f4eface387eefa68761b23743baab8d413d609b4201c4086c64a006be5dbf53"}, + {file = "eth_typing-4.3.1-py3-none-any.whl", hash = "sha256:b4d7cee912c7779da75da4b42fa61475c1089d35a4df5081a786eaa29d5f6865"}, + {file = "eth_typing-4.3.1.tar.gz", hash = "sha256:4504559c87a9f71f4b99aa5a1e0549adaa7f192cbf8e37a295acfcddb1b5412d"}, ] [package.dependencies] -typing-extensions = ">=4.0.0" +typing-extensions = ">=4.5.0" [package.extras] dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] @@ -1036,13 +1037,13 @@ files = [ [[package]] name = "fastjsonschema" -version = "2.19.1" +version = "2.20.0" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, - {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, + {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, + {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, ] [package.extras] @@ -1083,22 +1084,22 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.1.0" +version = "7.2.1" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, - {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, + {file = "importlib_metadata-7.2.1-py3-none-any.whl", hash = "sha256:ffef94b0b66046dd8ea2d619b701fe978d9264d38f3998bc4c27ec3b146a87c8"}, + {file = "importlib_metadata-7.2.1.tar.gz", hash = "sha256:509ecb2ab77071db5137c655e24ceb3eee66e7bbc6574165d0d114d9fc4bbe68"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "importlib-resources" @@ -1987,27 +1988,28 @@ wcwidth = "*" [[package]] name = "psutil" -version = "5.9.8" +version = "6.0.0" description = "Cross-platform lib for process and system monitoring in Python." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, - {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, - {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, - {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, - {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, - {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, - {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, - {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, - {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, - {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, - {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, - {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, - {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, - {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, - {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, - {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, + {file = "psutil-6.0.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a021da3e881cd935e64a3d0a20983bda0bb4cf80e4f74fa9bfcb1bc5785360c6"}, + {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0"}, + {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a9a3dbfb4de4f18174528d87cc352d1f788b7496991cca33c6996f40c9e3c92c"}, + {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6ec7588fb3ddaec7344a825afe298db83fe01bfaaab39155fa84cf1c0d6b13c3"}, + {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:1e7c870afcb7d91fdea2b37c24aeb08f98b6d67257a5cb0a8bc3ac68d0f1a68c"}, + {file = "psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35"}, + {file = "psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1"}, + {file = "psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132"}, + {file = "psutil-6.0.0-cp36-cp36m-win32.whl", hash = "sha256:fc8c9510cde0146432bbdb433322861ee8c3efbf8589865c8bf8d21cb30c4d14"}, + {file = "psutil-6.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:34859b8d8f423b86e4385ff3665d3f4d94be3cdf48221fbe476e883514fdb71c"}, + {file = "psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d"}, + {file = "psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3"}, + {file = "psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0"}, + {file = "psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2"}, ] [package.extras] @@ -2405,13 +2407,13 @@ rpds-py = ">=0.7.0" [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -2559,28 +2561,28 @@ files = [ [[package]] name = "ruff" -version = "0.4.8" +version = "0.4.10" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.4.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7663a6d78f6adb0eab270fa9cf1ff2d28618ca3a652b60f2a234d92b9ec89066"}, - {file = "ruff-0.4.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eeceb78da8afb6de0ddada93112869852d04f1cd0f6b80fe464fd4e35c330913"}, - {file = "ruff-0.4.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aad360893e92486662ef3be0a339c5ca3c1b109e0134fcd37d534d4be9fb8de3"}, - {file = "ruff-0.4.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:284c2e3f3396fb05f5f803c9fffb53ebbe09a3ebe7dda2929ed8d73ded736deb"}, - {file = "ruff-0.4.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7354f921e3fbe04d2a62d46707e569f9315e1a613307f7311a935743c51a764"}, - {file = "ruff-0.4.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:72584676164e15a68a15778fd1b17c28a519e7a0622161eb2debdcdabdc71883"}, - {file = "ruff-0.4.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9678d5c9b43315f323af2233a04d747409d1e3aa6789620083a82d1066a35199"}, - {file = "ruff-0.4.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704977a658131651a22b5ebeb28b717ef42ac6ee3b11e91dc87b633b5d83142b"}, - {file = "ruff-0.4.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d05f8d6f0c3cce5026cecd83b7a143dcad503045857bc49662f736437380ad45"}, - {file = "ruff-0.4.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6ea874950daca5697309d976c9afba830d3bf0ed66887481d6bca1673fc5b66a"}, - {file = "ruff-0.4.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:fc95aac2943ddf360376be9aa3107c8cf9640083940a8c5bd824be692d2216dc"}, - {file = "ruff-0.4.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:384154a1c3f4bf537bac69f33720957ee49ac8d484bfc91720cc94172026ceed"}, - {file = "ruff-0.4.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e9d5ce97cacc99878aa0d084c626a15cd21e6b3d53fd6f9112b7fc485918e1fa"}, - {file = "ruff-0.4.8-py3-none-win32.whl", hash = "sha256:6d795d7639212c2dfd01991259460101c22aabf420d9b943f153ab9d9706e6a9"}, - {file = "ruff-0.4.8-py3-none-win_amd64.whl", hash = "sha256:e14a3a095d07560a9d6769a72f781d73259655919d9b396c650fc98a8157555d"}, - {file = "ruff-0.4.8-py3-none-win_arm64.whl", hash = "sha256:14019a06dbe29b608f6b7cbcec300e3170a8d86efaddb7b23405cb7f7dcaf780"}, - {file = "ruff-0.4.8.tar.gz", hash = "sha256:16d717b1d57b2e2fd68bd0bf80fb43931b79d05a7131aa477d66fc40fbd86268"}, + {file = "ruff-0.4.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5c2c4d0859305ac5a16310eec40e4e9a9dec5dcdfbe92697acd99624e8638dac"}, + {file = "ruff-0.4.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a79489607d1495685cdd911a323a35871abfb7a95d4f98fc6f85e799227ac46e"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1dd1681dfa90a41b8376a61af05cc4dc5ff32c8f14f5fe20dba9ff5deb80cd6"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c75c53bb79d71310dc79fb69eb4902fba804a81f374bc86a9b117a8d077a1784"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18238c80ee3d9100d3535d8eb15a59c4a0753b45cc55f8bf38f38d6a597b9739"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d8f71885bce242da344989cae08e263de29752f094233f932d4f5cfb4ef36a81"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:330421543bd3222cdfec481e8ff3460e8702ed1e58b494cf9d9e4bf90db52b9d"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e9b6fb3a37b772628415b00c4fc892f97954275394ed611056a4b8a2631365e"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f54c481b39a762d48f64d97351048e842861c6662d63ec599f67d515cb417f6"}, + {file = "ruff-0.4.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:67fe086b433b965c22de0b4259ddfe6fa541c95bf418499bedb9ad5fb8d1c631"}, + {file = "ruff-0.4.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:acfaaab59543382085f9eb51f8e87bac26bf96b164839955f244d07125a982ef"}, + {file = "ruff-0.4.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3cea07079962b2941244191569cf3a05541477286f5cafea638cd3aa94b56815"}, + {file = "ruff-0.4.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:338a64ef0748f8c3a80d7f05785930f7965d71ca260904a9321d13be24b79695"}, + {file = "ruff-0.4.10-py3-none-win32.whl", hash = "sha256:ffe3cd2f89cb54561c62e5fa20e8f182c0a444934bf430515a4b422f1ab7b7ca"}, + {file = "ruff-0.4.10-py3-none-win_amd64.whl", hash = "sha256:67f67cef43c55ffc8cc59e8e0b97e9e60b4837c8f21e8ab5ffd5d66e196e25f7"}, + {file = "ruff-0.4.10-py3-none-win_arm64.whl", hash = "sha256:dd1fcee327c20addac7916ca4e2653fbbf2e8388d8a6477ce5b4e986b68ae6c0"}, + {file = "ruff-0.4.10.tar.gz", hash = "sha256:3aa4f2bc388a30d346c56524f7cacca85945ba124945fe489952aadb6b5cd804"}, ] [[package]] @@ -2636,19 +2638,18 @@ win32 = ["pywin32"] [[package]] name = "setuptools" -version = "69.5.1" +version = "70.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, - {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, + {file = "setuptools-70.1.0-py3-none-any.whl", hash = "sha256:d9b8b771455a97c8a9f3ab3448ebe0b29b5e105f1228bba41028be116985a267"}, + {file = "setuptools-70.1.0.tar.gz", hash = "sha256:01a1e793faa5bd89abc851fa15d0a0db26f160890c7102cd8dce643e886b47f5"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "simple-bson" @@ -3232,13 +3233,13 @@ files = [ [[package]] name = "types-requests" -version = "2.32.0.20240602" +version = "2.32.0.20240622" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.32.0.20240602.tar.gz", hash = "sha256:3f98d7bbd0dd94ebd10ff43a7fbe20c3b8528acace6d8efafef0b6a184793f06"}, - {file = "types_requests-2.32.0.20240602-py3-none-any.whl", hash = "sha256:ed3946063ea9fbc6b5fc0c44fa279188bae42d582cb63760be6cb4b9d06c3de8"}, + {file = "types-requests-2.32.0.20240622.tar.gz", hash = "sha256:ed5e8a412fcc39159d6319385c009d642845f250c63902718f605cd90faade31"}, + {file = "types_requests-2.32.0.20240622-py3-none-any.whl", hash = "sha256:97bac6b54b5bd4cf91d407e62f0932a74821bc2211f22116d9ee1dd643826caf"}, ] [package.dependencies] @@ -3304,13 +3305,13 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake [[package]] name = "urllib3" -version = "2.2.1" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] @@ -3469,4 +3470,4 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", [metadata] lock-version = "2.0" python-versions = ">=3.8.1,<3.13" -content-hash = "e07cc33343a5ba905c1596d7440d54c7fa7961698b44bc5c28ffcd1af5c85fd0" +content-hash = "fc385b9dd21fb36686143c7391b4107aafb72a1200ccc5faae055ae4e8cee45d" diff --git a/pyproject.toml b/pyproject.toml index 9c91f5767..47f7033c5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,31 +42,30 @@ packages = [ [tool.poetry.dependencies] python = ">=3.8.1,<3.13" attrs = ">=21.4.0" -base58 = "^2.1.1" +base58 = ">=2.1.1" cattrs = ">=22.1.0" -click = "^8.1.3" +click = ">=8.1.3" cryptography = ">=42.0.4" -deprecation = "^2.1.0" -docker = "^6.0.0" -fastecdsa = "^2.2.3" -jsonschema = "^4.3.2" -mnemonic = "^0.21" -netstruct = "^1.1.2" +deprecation = ">=2.1.0" +docker = ">=6.0.0" +fastecdsa = ">=2.2.3" +jsonschema = ">=4.3.2" +mnemonic = ">=0.21" +netstruct = ">=1.1.2" notebook = "^6.5.6" -ply = "^3.11" -py-ecc = "^7.0.0" -pysodium = "^0.7.10" -python-dateutil = "^2.8.2" -# NOTE: https://github.com/docker/docker-py/issues/3256 -requests = ">=2.28.2,<2.32.0" -secp256k1 = "^0.14.0" -simplejson = "^3.17.6" -strict-rfc3339 = "^0.7" -tabulate = "^0.9.0" -testcontainers = "^3.7.0" -tqdm = "^4.62.3" -setuptools = "^69.0.0" -simple-bson = "^0.0.3" +ply = ">=3.11" +py-ecc = ">=7.0.0" +pysodium = ">=0.7.10" +python-dateutil = ">=2.8.2" +requests = ">=2.28.2" +secp256k1 = ">=0.14.0" +simplejson = ">=3.17.6" +strict-rfc3339 = ">=0.7" +tabulate = ">=0.9.0" +testcontainers = ">=3.7.0" +tqdm = ">=4.62.3" +setuptools = ">=70.1.0" +simple-bson = ">=0.0.3" [tool.poetry.dev-dependencies] black = "*" @@ -129,9 +128,12 @@ lint.ignore = [ "SIM108", "SIM114", ] -target-version = "py312" +target-version = "py38" lint.extend-select = ["B", "C", "RET", "SIM"] +[tool.mypy] +python_version = "3.8" + [build-system] requires = ["poetry_core>=1.0.0"] build-backend = "poetry.core.masonry.api" diff --git a/requirements.dev.txt b/requirements.dev.txt index 22caa2e80..cd7565f4f 100644 --- a/requirements.dev.txt +++ b/requirements.dev.txt @@ -21,7 +21,7 @@ charset-normalizer==3.3.2 ; python_full_version >= "3.8.1" and python_version < click==8.1.7 ; python_full_version >= "3.8.1" and python_version < "3.13" colorama==0.4.6 ; python_full_version >= "3.8.1" and python_version < "3.13" and (platform_system == "Windows" or sys_platform == "win32") comm==0.2.2 ; python_full_version >= "3.8.1" and python_version < "3.13" -coverage[toml]==7.5.3 ; python_full_version >= "3.8.1" and python_version < "3.13" +coverage[toml]==7.5.4 ; python_full_version >= "3.8.1" and python_version < "3.13" cryptography==42.0.8 ; python_full_version >= "3.8.1" and python_version < "3.13" cytoolz==0.12.3 ; python_full_version >= "3.8.1" and python_version < "3.13" and implementation_name == "cpython" debugpy==1.8.1 ; python_full_version >= "3.8.1" and python_version < "3.13" @@ -29,21 +29,21 @@ decorator==5.1.1 ; python_full_version >= "3.8.1" and python_version < "3.13" defusedxml==0.7.1 ; python_full_version >= "3.8.1" and python_version < "3.13" deprecation==2.1.0 ; python_full_version >= "3.8.1" and python_version < "3.13" diff-cover==7.7.0 ; python_full_version >= "3.8.1" and python_version < "3.13" -docker==6.1.3 ; python_full_version >= "3.8.1" and python_version < "3.13" +docker==7.1.0 ; python_full_version >= "3.8.1" and python_version < "3.13" docutils==0.20.1 ; python_full_version >= "3.8.1" and python_version < "3.13" entrypoints==0.4 ; python_full_version >= "3.8.1" and python_version < "3.13" eth-hash==0.7.0 ; python_full_version >= "3.8.1" and python_version < "3.13" -eth-typing==4.3.0 ; python_full_version >= "3.8.1" and python_version < "3.13" +eth-typing==4.3.1 ; python_full_version >= "3.8.1" and python_version < "3.13" eth-utils==4.1.1 ; python_full_version >= "3.8.1" and python_version < "3.13" exceptiongroup==1.2.1 ; python_full_version >= "3.8.1" and python_version < "3.11" execnet==2.1.1 ; python_full_version >= "3.8.1" and python_version < "3.13" executing==2.0.1 ; python_full_version >= "3.8.1" and python_version < "3.13" fastecdsa==2.3.2 ; python_full_version >= "3.8.1" and python_version < "3.13" -fastjsonschema==2.19.1 ; python_full_version >= "3.8.1" and python_version < "3.13" +fastjsonschema==2.20.0 ; python_full_version >= "3.8.1" and python_version < "3.13" fqdn==1.5.1 ; python_full_version >= "3.8.1" and python_version < "3.13" idna==3.7 ; python_full_version >= "3.8.1" and python_version < "3.13" imagesize==1.4.1 ; python_full_version >= "3.8.1" and python_version < "3.13" -importlib-metadata==7.1.0 ; python_full_version >= "3.8.1" and python_version < "3.10" +importlib-metadata==7.2.1 ; python_full_version >= "3.8.1" and python_version < "3.10" importlib-resources==6.4.0 ; python_full_version >= "3.8.1" and python_version < "3.9" iniconfig==2.0.0 ; python_full_version >= "3.8.1" and python_version < "3.13" ipykernel==6.29.4 ; python_full_version >= "3.8.1" and python_version < "3.13" @@ -91,7 +91,7 @@ pluggy==1.5.0 ; python_full_version >= "3.8.1" and python_version < "3.13" ply==3.11 ; python_full_version >= "3.8.1" and python_version < "3.13" prometheus-client==0.20.0 ; python_full_version >= "3.8.1" and python_version < "3.13" prompt-toolkit==3.0.47 ; python_full_version >= "3.8.1" and python_version < "3.13" -psutil==5.9.8 ; python_full_version >= "3.8.1" and python_version < "3.13" +psutil==6.0.0 ; python_full_version >= "3.8.1" and python_version < "3.13" ptyprocess==0.7.0 ; python_full_version >= "3.8.1" and python_version < "3.13" and (os_name != "nt" or sys_platform != "win32") pure-eval==0.2.2 ; python_full_version >= "3.8.1" and python_version < "3.13" py-ecc==7.0.1 ; python_full_version >= "3.8.1" and python_version < "3.13" @@ -109,14 +109,14 @@ pywinpty==2.0.13 ; python_full_version >= "3.8.1" and python_version < "3.13" an pyyaml==6.0.1 ; python_full_version >= "3.8.1" and python_version < "3.13" pyzmq==26.0.3 ; python_full_version >= "3.8.1" and python_version < "3.13" referencing==0.35.1 ; python_full_version >= "3.8.1" and python_version < "3.13" -requests==2.31.0 ; python_full_version >= "3.8.1" and python_version < "3.13" +requests==2.32.3 ; python_full_version >= "3.8.1" and python_version < "3.13" rfc3339-validator==0.1.4 ; python_full_version >= "3.8.1" and python_version < "3.13" rfc3986-validator==0.1.1 ; python_full_version >= "3.8.1" and python_version < "3.13" rpds-py==0.18.1 ; python_full_version >= "3.8.1" and python_version < "3.13" -ruff==0.4.8 ; python_full_version >= "3.8.1" and python_version < "3.13" +ruff==0.4.10 ; python_full_version >= "3.8.1" and python_version < "3.13" secp256k1==0.14.0 ; python_full_version >= "3.8.1" and python_version < "3.13" send2trash==1.8.3 ; python_full_version >= "3.8.1" and python_version < "3.13" -setuptools==69.5.1 ; python_full_version >= "3.8.1" and python_version < "3.13" +setuptools==70.1.0 ; python_full_version >= "3.8.1" and python_version < "3.13" simple-bson==0.0.3 ; python_full_version >= "3.8.1" and python_version < "3.13" simplejson==3.19.2 ; python_full_version >= "3.8.1" and python_version < "3.13" six==1.16.0 ; python_full_version >= "3.8.1" and python_version < "3.13" @@ -148,13 +148,13 @@ tqdm==4.66.4 ; python_full_version >= "3.8.1" and python_version < "3.13" traitlets==5.14.3 ; python_full_version >= "3.8.1" and python_version < "3.13" types-python-dateutil==2.9.0.20240316 ; python_full_version >= "3.8.1" and python_version < "3.13" types-pyyaml==6.0.12.20240311 ; python_full_version >= "3.8.1" and python_version < "3.13" -types-requests==2.32.0.20240602 ; python_full_version >= "3.8.1" and python_version < "3.13" +types-requests==2.32.0.20240622 ; python_full_version >= "3.8.1" and python_version < "3.13" types-setuptools==70.0.0.20240524 ; python_full_version >= "3.8.1" and python_version < "3.13" types-simplejson==3.19.0.20240310 ; python_full_version >= "3.8.1" and python_version < "3.13" types-tabulate==0.9.0.20240106 ; python_full_version >= "3.8.1" and python_version < "3.13" typing-extensions==4.12.2 ; python_full_version >= "3.8.1" and python_version < "3.13" uri-template==1.3.0 ; python_full_version >= "3.8.1" and python_version < "3.13" -urllib3==2.2.1 ; python_full_version >= "3.8.1" and python_version < "3.13" +urllib3==2.2.2 ; python_full_version >= "3.8.1" and python_version < "3.13" wcwidth==0.2.13 ; python_full_version >= "3.8.1" and python_version < "3.13" webcolors==24.6.0 ; python_full_version >= "3.8.1" and python_version < "3.13" webencodings==0.5.1 ; python_full_version >= "3.8.1" and python_version < "3.13" diff --git a/requirements.slim.txt b/requirements.slim.txt index 87f0efb62..b26eeb288 100644 --- a/requirements.slim.txt +++ b/requirements.slim.txt @@ -10,9 +10,9 @@ colorama==0.4.6 ; python_full_version >= "3.8.1" and python_version < "3.13" and cryptography==42.0.8 ; python_full_version >= "3.8.1" and python_version < "3.13" cytoolz==0.12.3 ; python_full_version >= "3.8.1" and python_version < "3.13" and implementation_name == "cpython" deprecation==2.1.0 ; python_full_version >= "3.8.1" and python_version < "3.13" -docker==6.1.3 ; python_full_version >= "3.8.1" and python_version < "3.13" +docker==7.1.0 ; python_full_version >= "3.8.1" and python_version < "3.13" eth-hash==0.7.0 ; python_full_version >= "3.8.1" and python_version < "3.13" -eth-typing==4.3.0 ; python_full_version >= "3.8.1" and python_version < "3.13" +eth-typing==4.3.1 ; python_full_version >= "3.8.1" and python_version < "3.13" eth-utils==4.1.1 ; python_full_version >= "3.8.1" and python_version < "3.13" exceptiongroup==1.2.1 ; python_full_version >= "3.8.1" and python_version < "3.11" fastecdsa==2.3.2 ; python_full_version >= "3.8.1" and python_version < "3.13" @@ -31,10 +31,10 @@ pysodium==0.7.17 ; python_full_version >= "3.8.1" and python_version < "3.13" python-dateutil==2.9.0.post0 ; python_full_version >= "3.8.1" and python_version < "3.13" pywin32==306 ; python_full_version >= "3.8.1" and python_version < "3.13" and sys_platform == "win32" referencing==0.35.1 ; python_full_version >= "3.8.1" and python_version < "3.13" -requests==2.31.0 ; python_full_version >= "3.8.1" and python_version < "3.13" +requests==2.32.3 ; python_full_version >= "3.8.1" and python_version < "3.13" rpds-py==0.18.1 ; python_full_version >= "3.8.1" and python_version < "3.13" secp256k1==0.14.0 ; python_full_version >= "3.8.1" and python_version < "3.13" -setuptools==69.5.1 ; python_full_version >= "3.8.1" and python_version < "3.13" +setuptools==70.1.0 ; python_full_version >= "3.8.1" and python_version < "3.13" simple-bson==0.0.3 ; python_full_version >= "3.8.1" and python_version < "3.13" simplejson==3.19.2 ; python_full_version >= "3.8.1" and python_version < "3.13" six==1.16.0 ; python_full_version >= "3.8.1" and python_version < "3.13" @@ -44,7 +44,6 @@ testcontainers==3.7.1 ; python_full_version >= "3.8.1" and python_version < "3.1 toolz==0.12.1 ; python_full_version >= "3.8.1" and python_version < "3.13" and (implementation_name == "pypy" or implementation_name == "cpython") tqdm==4.66.4 ; python_full_version >= "3.8.1" and python_version < "3.13" typing-extensions==4.12.2 ; python_full_version >= "3.8.1" and python_version < "3.13" -urllib3==2.2.1 ; python_full_version >= "3.8.1" and python_version < "3.13" -websocket-client==1.8.0 ; python_full_version >= "3.8.1" and python_version < "3.13" +urllib3==2.2.2 ; python_full_version >= "3.8.1" and python_version < "3.13" wrapt==1.16.0 ; python_full_version >= "3.8.1" and python_version < "3.13" zipp==3.19.2 ; python_full_version >= "3.8.1" and python_version < "3.9" diff --git a/requirements.txt b/requirements.txt index f3fa2a700..27ec4fcbf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,18 +23,18 @@ debugpy==1.8.1 ; python_full_version >= "3.8.1" and python_version < "3.13" decorator==5.1.1 ; python_full_version >= "3.8.1" and python_version < "3.13" defusedxml==0.7.1 ; python_full_version >= "3.8.1" and python_version < "3.13" deprecation==2.1.0 ; python_full_version >= "3.8.1" and python_version < "3.13" -docker==6.1.3 ; python_full_version >= "3.8.1" and python_version < "3.13" +docker==7.1.0 ; python_full_version >= "3.8.1" and python_version < "3.13" entrypoints==0.4 ; python_full_version >= "3.8.1" and python_version < "3.13" eth-hash==0.7.0 ; python_full_version >= "3.8.1" and python_version < "3.13" -eth-typing==4.3.0 ; python_full_version >= "3.8.1" and python_version < "3.13" +eth-typing==4.3.1 ; python_full_version >= "3.8.1" and python_version < "3.13" eth-utils==4.1.1 ; python_full_version >= "3.8.1" and python_version < "3.13" exceptiongroup==1.2.1 ; python_full_version >= "3.8.1" and python_version < "3.11" executing==2.0.1 ; python_full_version >= "3.8.1" and python_version < "3.13" fastecdsa==2.3.2 ; python_full_version >= "3.8.1" and python_version < "3.13" -fastjsonschema==2.19.1 ; python_full_version >= "3.8.1" and python_version < "3.13" +fastjsonschema==2.20.0 ; python_full_version >= "3.8.1" and python_version < "3.13" fqdn==1.5.1 ; python_full_version >= "3.8.1" and python_version < "3.13" idna==3.7 ; python_full_version >= "3.8.1" and python_version < "3.13" -importlib-metadata==7.1.0 ; python_full_version >= "3.8.1" and python_version < "3.10" +importlib-metadata==7.2.1 ; python_full_version >= "3.8.1" and python_version < "3.10" importlib-resources==6.4.0 ; python_full_version >= "3.8.1" and python_version < "3.9" ipykernel==6.29.4 ; python_full_version >= "3.8.1" and python_version < "3.13" ipython-genutils==0.2.0 ; python_full_version >= "3.8.1" and python_version < "3.13" @@ -75,7 +75,7 @@ platformdirs==4.2.2 ; python_full_version >= "3.8.1" and python_version < "3.13" ply==3.11 ; python_full_version >= "3.8.1" and python_version < "3.13" prometheus-client==0.20.0 ; python_full_version >= "3.8.1" and python_version < "3.13" prompt-toolkit==3.0.47 ; python_full_version >= "3.8.1" and python_version < "3.13" -psutil==5.9.8 ; python_full_version >= "3.8.1" and python_version < "3.13" +psutil==6.0.0 ; python_full_version >= "3.8.1" and python_version < "3.13" ptyprocess==0.7.0 ; python_full_version >= "3.8.1" and python_version < "3.13" and (os_name != "nt" or sys_platform != "win32") pure-eval==0.2.2 ; python_full_version >= "3.8.1" and python_version < "3.13" py-ecc==7.0.1 ; python_full_version >= "3.8.1" and python_version < "3.13" @@ -89,13 +89,13 @@ pywinpty==2.0.13 ; python_full_version >= "3.8.1" and python_version < "3.13" an pyyaml==6.0.1 ; python_full_version >= "3.8.1" and python_version < "3.13" pyzmq==26.0.3 ; python_full_version >= "3.8.1" and python_version < "3.13" referencing==0.35.1 ; python_full_version >= "3.8.1" and python_version < "3.13" -requests==2.31.0 ; python_full_version >= "3.8.1" and python_version < "3.13" +requests==2.32.3 ; python_full_version >= "3.8.1" and python_version < "3.13" rfc3339-validator==0.1.4 ; python_full_version >= "3.8.1" and python_version < "3.13" rfc3986-validator==0.1.1 ; python_full_version >= "3.8.1" and python_version < "3.13" rpds-py==0.18.1 ; python_full_version >= "3.8.1" and python_version < "3.13" secp256k1==0.14.0 ; python_full_version >= "3.8.1" and python_version < "3.13" send2trash==1.8.3 ; python_full_version >= "3.8.1" and python_version < "3.13" -setuptools==69.5.1 ; python_full_version >= "3.8.1" and python_version < "3.13" +setuptools==70.1.0 ; python_full_version >= "3.8.1" and python_version < "3.13" simple-bson==0.0.3 ; python_full_version >= "3.8.1" and python_version < "3.13" simplejson==3.19.2 ; python_full_version >= "3.8.1" and python_version < "3.13" six==1.16.0 ; python_full_version >= "3.8.1" and python_version < "3.13" @@ -114,7 +114,7 @@ traitlets==5.14.3 ; python_full_version >= "3.8.1" and python_version < "3.13" types-python-dateutil==2.9.0.20240316 ; python_full_version >= "3.8.1" and python_version < "3.13" typing-extensions==4.12.2 ; python_full_version >= "3.8.1" and python_version < "3.13" uri-template==1.3.0 ; python_full_version >= "3.8.1" and python_version < "3.13" -urllib3==2.2.1 ; python_full_version >= "3.8.1" and python_version < "3.13" +urllib3==2.2.2 ; python_full_version >= "3.8.1" and python_version < "3.13" wcwidth==0.2.13 ; python_full_version >= "3.8.1" and python_version < "3.13" webcolors==24.6.0 ; python_full_version >= "3.8.1" and python_version < "3.13" webencodings==0.5.1 ; python_full_version >= "3.8.1" and python_version < "3.13" diff --git a/scripts/fetch_contract_data.py b/scripts/fetch_contract_data.py index dc760eb4f..66700149c 100644 --- a/scripts/fetch_contract_data.py +++ b/scripts/fetch_contract_data.py @@ -26,7 +26,7 @@ def _get(url: str, params: Optional[Dict[str, Any]] = None): logger.info(f'GET {url}?{"&".join(f"{k}={v}" for k, v in (params or {}).items())}') - return requests.get(url, params=params) + return requests.get(url, params=params, timeout=60) def write_test_data(path: str, name: str, data: Dict[str, Any]) -> None: diff --git a/scripts/generate_kernel_docs.py b/scripts/generate_kernel_docs.py index ae0319de1..ba2071a83 100644 --- a/scripts/generate_kernel_docs.py +++ b/scripts/generate_kernel_docs.py @@ -24,9 +24,9 @@ def format_entry(title, concl, descr): def generate(): - meta_src = requests.get(meta_url).text + meta_src = requests.get(meta_url, timeout=10).text meta = yaml.load(meta_src, Loader=yaml.SafeLoader) - sema = requests.get(sema_url).json() + sema = requests.get(sema_url, timeout=60).json() docs = extra.copy() for section in ['instructions', 'types']: diff --git a/src/pytezos/cli/github.py b/src/pytezos/cli/github.py index 321e3a5fa..916618e44 100644 --- a/src/pytezos/cli/github.py +++ b/src/pytezos/cli/github.py @@ -15,6 +15,7 @@ def create_deployment(repo_slug, oauth_token, environment, ref='master'): 'environment': environment, 'required_contexts': [], }, # bypass checking + timeout=60, ).json() @@ -31,4 +32,5 @@ def create_deployment_status(repo_slug, oauth_token, deployment_id, state, envir 'environment': environment, 'environment_url': environment_url, }, + timeout=60, ).json() diff --git a/src/pytezos/contract/interface.py b/src/pytezos/contract/interface.py index 011670612..e57b3aea4 100644 --- a/src/pytezos/contract/interface.py +++ b/src/pytezos/contract/interface.py @@ -108,7 +108,7 @@ def from_url(url: str, context: Optional[ExecutionContext] = None) -> 'ContractI :param context: optional execution context :rtype: ContractInterface """ - res = requests.get(url) + res = requests.get(url, timeout=60) if res.status_code != 200: raise ValueError(f'cannot fetch `{url} {res.status_code}`', res.text) return ContractInterface.from_michelson(res.text, context) diff --git a/src/pytezos/contract/metadata.py b/src/pytezos/contract/metadata.py index 8a731fea4..8a34ed768 100644 --- a/src/pytezos/contract/metadata.py +++ b/src/pytezos/contract/metadata.py @@ -179,13 +179,13 @@ def from_json(cls, metadata_json: Dict[str, Any], context: Optional[ExecutionCon def from_ipfs(cls, multihash: str, context: Optional[ExecutionContext] = None) -> 'ContractMetadata': """Fetch metadata from IPFS network by multihash""" context = context or ExecutionContext() - metadata_json = requests.get(f'{context.ipfs_gateway}/{multihash}').json() + metadata_json = requests.get(f'{context.ipfs_gateway}/{multihash}', timeout=60).json() return cls.from_json(metadata_json, context) @classmethod def from_url(cls, url: str, context: Optional[ExecutionContext] = None) -> 'ContractMetadata': """Fetch metadata from HTTP(S) URL""" - metadata_json = requests.get(url).json() + metadata_json = requests.get(url, timeout=60).json() return cls.from_json(metadata_json, context) @classmethod diff --git a/src/pytezos/contract/token_metadata.py b/src/pytezos/contract/token_metadata.py index 476df44f8..5c350675d 100644 --- a/src/pytezos/contract/token_metadata.py +++ b/src/pytezos/contract/token_metadata.py @@ -130,13 +130,13 @@ def from_json( def from_ipfs(cls, multihash: str, context: Optional[ExecutionContext] = None) -> 'ContractTokenMetadata': """Fetch token metadata from IPFS network by multihash""" context = context or ExecutionContext() - token_metadata_json = requests.get(f'{context.ipfs_gateway}/{multihash}').json() + token_metadata_json = requests.get(f'{context.ipfs_gateway}/{multihash}', timeout=60).json() return cls.from_json(token_metadata_json, context) @classmethod def from_url(cls, url: str, context: Optional[ExecutionContext] = None) -> 'ContractTokenMetadata': """Fetch token metadata from HTTP(S) URL""" - token_metadata_json = requests.get(url).json() + token_metadata_json = requests.get(url, timeout=60).json() return cls.from_json(token_metadata_json, context) @classmethod diff --git a/src/pytezos/michelson/format.py b/src/pytezos/michelson/format.py index 287ed8b0f..ed9180440 100644 --- a/src/pytezos/michelson/format.py +++ b/src/pytezos/michelson/format.py @@ -1,6 +1,6 @@ import json -from datetime import UTC from datetime import datetime +from datetime import timezone from pytezos.logging import logger @@ -12,7 +12,7 @@ def format_timestamp(timestamp: int) -> str: :param timestamp: Unix timestamp (seconds) """ - dt = datetime.fromtimestamp(timestamp, UTC) + dt = datetime.fromtimestamp(timestamp, timezone.utc) return dt.strftime('%Y-%m-%dT%H:%M:%SZ') diff --git a/src/pytezos/protocol/protocol.py b/src/pytezos/protocol/protocol.py index b9c4f9b86..385a44c83 100644 --- a/src/pytezos/protocol/protocol.py +++ b/src/pytezos/protocol/protocol.py @@ -54,7 +54,7 @@ def tar_to_files(path=None, raw=None) -> List[Tuple[str, str]]: def url_to_files(url) -> List[Tuple[str, str]]: - res = requests.get(url, stream=True) + res = requests.get(url, stream=True, timeout=60) raw = b'' for data in tqdm(res.iter_content()): diff --git a/src/pytezos/rpc/node.py b/src/pytezos/rpc/node.py index c211031a4..506279598 100644 --- a/src/pytezos/rpc/node.py +++ b/src/pytezos/rpc/node.py @@ -104,6 +104,7 @@ def request(self, method: str, path: str, **kwargs) -> requests.Response: method=method, url=_urljoin(self.uri[0], path), headers={'content-type': 'application/json', 'user-agent': 'PyTezos', **self.headers}, + timeout=kwargs.pop('timeout', None) or 60, **kwargs, ) if res.status_code == 401: @@ -125,20 +126,57 @@ def get( params: Optional[Dict[str, Any]] = None, timeout: Optional[int] = None, ) -> requests.Response: - return self.request('GET', path, params=params, timeout=timeout).json() - - def post(self, path: str, params: Optional[Dict[str, Any]] = None, json=None) -> Union[requests.Response, str]: - response = self.request('POST', path, params=params, json=json) + return self.request( + 'GET', + path, + params=params, + timeout=timeout, + ).json() + + def post( + self, + path: str, + params: Optional[Dict[str, Any]] = None, + json=None, + timeout: Optional[int] = None, + ) -> Union[requests.Response, str]: + response = self.request( + 'POST', + path, + params=params, + json=json, + timeout=timeout, + ) try: return response.json() except JSONDecodeError: return response.text - def delete(self, path: str, params: Optional[Dict[str, Any]] = None) -> requests.Response: - return self.request('DELETE', path, params=params).json() - - def put(self, path: str, params: Optional[Dict[str, Any]] = None) -> requests.Response: - return self.request('PUT', path, params=params).json() + def delete( + self, + path: str, + params: Optional[Dict[str, Any]] = None, + timeout: Optional[int] = None, + ) -> requests.Response: + return self.request( + 'DELETE', + path, + params=params, + timeout=timeout, + ).json() + + def put( + self, + path: str, + params: Optional[Dict[str, Any]] = None, + timeout: Optional[int] = None, + ) -> requests.Response: + return self.request( + 'PUT', + path, + params=params, + timeout=timeout, + ).json() class RpcMultiNode(RpcNode): diff --git a/src/pytezos/rpc/shell.py b/src/pytezos/rpc/shell.py index dd9df1e46..d43d30d1b 100644 --- a/src/pytezos/rpc/shell.py +++ b/src/pytezos/rpc/shell.py @@ -1,6 +1,6 @@ from binascii import hexlify -from datetime import UTC from datetime import datetime +from datetime import timezone from functools import cached_property from functools import lru_cache from time import sleep @@ -109,8 +109,10 @@ def wait_blocks( while current_header['level'] < max_level: logger.info('Current level: %d (max %d)', current_header['level'], max_level) - prev_block_dt = datetime.strptime(current_header['timestamp'], '%Y-%m-%dT%H:%M:%SZ').replace(tzinfo=UTC) - elapsed_sec = (datetime.now(UTC) - prev_block_dt).seconds + prev_block_dt = datetime.strptime(current_header['timestamp'], '%Y-%m-%dT%H:%M:%SZ').replace( + tzinfo=timezone.utc + ) + elapsed_sec = (datetime.now(timezone.utc) - prev_block_dt).seconds sleep_sec = 1 if elapsed_sec > time_between_blocks else (time_between_blocks - elapsed_sec + 1) logger.info('Sleep %d seconds until block %s is superseded', sleep_sec, current_block_hash) diff --git a/src/pytezos/sandbox/node.py b/src/pytezos/sandbox/node.py index 167162baf..3a009428e 100644 --- a/src/pytezos/sandbox/node.py +++ b/src/pytezos/sandbox/node.py @@ -22,7 +22,7 @@ from pytezos.sandbox.parameters import LATEST from pytezos.sandbox.parameters import sandbox_addresses -DOCKER_IMAGE = 'bakingbad/sandboxed-node:v20.0-3' +DOCKER_IMAGE = 'bakingbad/sandboxed-node:v20.1-2' MAX_ATTEMPTS = 60 ATTEMPT_DELAY = 0.5 TEZOS_NODE_PORT = 8732 diff --git a/src/pytezos/sandbox/parameters.py b/src/pytezos/sandbox/parameters.py index 1cfe84477..18a2136f3 100644 --- a/src/pytezos/sandbox/parameters.py +++ b/src/pytezos/sandbox/parameters.py @@ -15,7 +15,8 @@ NAIROBI = 'PtNairobiyssHuh87hEhfVBGCVrK3WnS8Z2FT4ymB5tAa4r1nQf' OXFORD = 'ProxfordYmVfjWnRcgjWH36fW6PArwqykTFzotUxRs6gmTcZDuH' PARIS = 'PtParisBxoLz5gzMmn3d9WBQNoPSZakgnkMC2VNuQ3KXfUtUQeZ' -LATEST = PARIS +PARISC = 'PsParisCZo7KAh1Z1smVd9ZMZ1HHn5gkzbM94V3PLCpknFWhUAi' +LATEST = PARISC protocol_hashes = { 'edo': EDO, @@ -30,6 +31,7 @@ 'nairobi': NAIROBI, 'oxford': OXFORD, 'paris': PARIS, + 'parisc': PARISC, } protocol_version = { @@ -45,6 +47,7 @@ NAIROBI: 17, OXFORD: 18, PARIS: 19, + PARISC: 20, } sandbox_commitment = { @@ -98,7 +101,7 @@ ], ], # NOTE: Shorter cycles, voting periods and other parameters - # NOTE: From https://gitlab.com/tezos/tezos/-/blob/master/src/proto_019_PtParisB/lib_parameters/default_parameters.ml#L317 + # NOTE: From https://gitlab.com/tezos/tezos/-/blob/master/src/proto_020_PsParisC/lib_parameters/default_parameters.ml#L317 'blocks_preservation_cycles': 1, 'consensus_rights_delay': 2, 'delegate_parameters_activation_delay': 2, @@ -117,23 +120,24 @@ } # NOTE: https://rpc.tzkt.io/parisnet/chains/main/blocks/head/context/constants/parametric +# NOTE: https://rpc.pariscnet.teztnets.com/chains/main/blocks/head/context/constants/parametric protocol_params = { "consensus_rights_delay": 2, "blocks_preservation_cycles": 1, - "delegate_parameters_activation_delay": 5, - "blocks_per_cycle": 12288, - "blocks_per_commitment": 96, - "nonce_revelation_threshold": 768, + "delegate_parameters_activation_delay": 3, + "blocks_per_cycle": 128, + "blocks_per_commitment": 16, + "nonce_revelation_threshold": 32, "cycles_per_voting_period": 1, "hard_gas_limit_per_operation": "1040000", - "hard_gas_limit_per_block": "1733333", + "hard_gas_limit_per_block": "5200000", "proof_of_work_threshold": "-1", "minimal_stake": "6000000000", "minimal_frozen_stake": "600000000", - "vdf_difficulty": "10000000000", + "vdf_difficulty": "10000000", "origination_size": 257, "issuance_weights": { - "base_total_issued_per_minute": "80007812", + "base_total_issued_per_minute": "85007812", "baking_reward_fixed_portion_weight": 5120, "baking_reward_bonus_weight": 5120, "attesting_reward_weight": 10240, @@ -146,19 +150,18 @@ "quorum_max": 7000, "min_proposal_quorum": 500, "liquidity_baking_subsidy": "5000000", - "liquidity_baking_toggle_ema_threshold": 1000000000, - "max_operations_time_to_live": 360, - "minimal_block_delay": "5", - "delay_increment_per_round": "2", + "liquidity_baking_toggle_ema_threshold": 100000, + "max_operations_time_to_live": 120, + "minimal_block_delay": "7", + "delay_increment_per_round": "7", "consensus_committee_size": 7000, "consensus_threshold": 4667, "minimal_participation_ratio": {"numerator": 2, "denominator": 3}, "limit_of_delegation_over_baking": 9, - "percentage_of_frozen_deposits_slashed_per_double_baking": 500, + "percentage_of_frozen_deposits_slashed_per_double_baking": 700, "percentage_of_frozen_deposits_slashed_per_double_attestation": 5000, "max_slashing_per_block": 10000, "max_slashing_threshold": 2334, - "testnet_dictator": "tz1Xf8zdT3DbAX9cHw3c3CXh79rc4nK4gCe8", "cache_script_size": 100000000, "cache_stake_distribution_cycles": 8, "cache_sampler_state_cycles": 8, @@ -173,28 +176,28 @@ "slot_size": 126944, "number_of_shards": 512, }, - "smart_rollup_arith_pvm_enable": False, + "smart_rollup_arith_pvm_enable": True, "smart_rollup_origination_size": 6314, - "smart_rollup_challenge_window_in_blocks": 241920, - "smart_rollup_stake_amount": "10000000000", - "smart_rollup_commitment_period_in_blocks": 180, - "smart_rollup_max_lookahead_in_blocks": 518400, - "smart_rollup_max_active_outbox_levels": 241920, + "smart_rollup_challenge_window_in_blocks": 40, + "smart_rollup_stake_amount": "32000000", + "smart_rollup_commitment_period_in_blocks": 20, + "smart_rollup_max_lookahead_in_blocks": 30000, + "smart_rollup_max_active_outbox_levels": 20160, "smart_rollup_max_outbox_messages_per_level": 100, "smart_rollup_number_of_sections_in_dissection": 32, - "smart_rollup_timeout_period_in_blocks": 120960, + "smart_rollup_timeout_period_in_blocks": 500, "smart_rollup_max_number_of_cemented_commitments": 5, "smart_rollup_max_number_of_parallel_games": 32, "smart_rollup_reveal_activation_level": { "raw_data": {"Blake2B": 0}, "metadata": 0, - "dal_page": 8193, - "dal_parameters": 8193, + "dal_page": 1, + "dal_parameters": 1, "dal_attested_slots_validity_lag": 241920, }, "smart_rollup_private_enable": True, - "smart_rollup_riscv_pvm_enable": False, - "zk_rollup_enable": False, + "smart_rollup_riscv_pvm_enable": True, + "zk_rollup_enable": True, "zk_rollup_origination_size": 4000, "zk_rollup_min_pending_to_process": 10, "zk_rollup_max_ticket_payload_size": 2048, @@ -209,22 +212,20 @@ "initial_period": 10, "transition_period": 50, "max_bonus": "50000000000000", - "growth_rate": {"numerator": "1", "denominator": "25"}, + "growth_rate": {"numerator": "1", "denominator": "100"}, "center_dz": {"numerator": "1", "denominator": "2"}, "radius_dz": {"numerator": "1", "denominator": "50"}, }, "adaptive_issuance_activation_vote_enable": True, "autostaking_enable": True, - "adaptive_issuance_force_activation": False, + "adaptive_issuance_force_activation": True, "ns_enable": True, "direct_ticket_spending_enable": False, } def get_protocol_parameters(protocol_hash: str) -> Dict[str, Any]: - # https://gitlab.com/tezos/tezos/-/blob/master/src/proto_018_Proxford/lib_parameters/default_parameters.ml return { **protocol_params, - # **old_params, **sandbox_params, } diff --git a/tests/sandbox_tests/test_sandbox.py b/tests/sandbox_tests/test_sandbox.py index 17fa9df52..c165e8b2d 100644 --- a/tests/sandbox_tests/test_sandbox.py +++ b/tests/sandbox_tests/test_sandbox.py @@ -29,7 +29,7 @@ def test_3_create_transaction(self) -> None: def test_4_bake_block(self) -> None: self.bake_block() bootstrap3 = self.client.shell.contracts[sandbox_addresses['bootstrap3']]() - self.assertEqual(3800000316708, int(bootstrap3['balance'])) + self.assertEqual(3800000336497, int(bootstrap3['balance'])) def test_5_activate_account(self) -> None: client = self.get_client(key=sandbox_commitment)