diff --git a/.cargo/config.toml b/.cargo/config.toml index 39a35e3..a67bbc9 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -2,9 +2,4 @@ rustflags = ["-C", "target-cpu=native"] [target.x86_64-unknown-linux-gnu] -rustflags = [ - "-C", - "target-cpu=native", - # (Nightly) Make the current crate share its generic instantiations - "-Zshare-generics=y", -] +rustflags = ["-C", "target-cpu=native"] diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000..bb55b5e --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,56 @@ +rust: + - changed-files: + - any-glob-to-any-file: + - crates/** + - packages/sdk-rs/** + - Cargo.toml + - Cargo.lock + - rust-toolchain.toml + - rustfmt.toml + +typescript: + - changed-files: + - any-glob-to-any-file: + - packages/sdk-ts/** + - packages/contract-types/** + - apps/** + - package.json + - pnpm-lock.yaml + - pnpm-workspace.yaml + - tsconfig.json + - eslint.config.js + - .prettierrc.toml + +python: + - changed-files: + - any-glob-to-any-file: + - packages/sdk-py/** + +contracts: + - changed-files: + - any-glob-to-any-file: + - contracts/** + - contract-tests/** + - foundry.toml + - remappings.txt + +docs: + - changed-files: + - any-glob-to-any-file: + - apps/docs/** + - book/** + - "*.md" + +ci: + - changed-files: + - any-glob-to-any-file: + - .github/** + +dependencies: + - changed-files: + - any-glob-to-any-file: + - Cargo.lock + - pnpm-lock.yaml + - package.json + - "**/Cargo.toml" + - "**/package.json" diff --git a/.github/workflows/ci-contracts.yml b/.github/workflows/ci-contracts.yml new file mode 100644 index 0000000..afd2ef4 --- /dev/null +++ b/.github/workflows/ci-contracts.yml @@ -0,0 +1,38 @@ +name: Contracts CI + +on: + pull_request: + paths: + - contracts/** + - contract-tests/** + - contract-scripts/** + - foundry.toml + - remappings.txt + - .github/workflows/ci-contracts.yml + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + check: + name: Build & Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - uses: foundry-rs/foundry-toolchain@v1 + + - name: Check Solidity formatting + run: forge fmt --check + + - name: Build + run: forge build + + - name: Test + run: forge test diff --git a/.github/workflows/ci-docs.yml b/.github/workflows/ci-docs.yml new file mode 100644 index 0000000..ca7bd5b --- /dev/null +++ b/.github/workflows/ci-docs.yml @@ -0,0 +1,54 @@ +name: Docs CI + +on: + pull_request: + paths: + - apps/docs/** + - book/** + - .github/workflows/ci-docs.yml + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + vitepress: + name: Vitepress Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 10 + + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + + - run: pnpm install + + - name: Build docs + run: pnpm --filter docs run build + + mdbook: + name: mdBook Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: peaceiris/actions-mdbook@v2 + with: + mdbook-version: latest + + - name: Install mdbook-mermaid + run: | + curl -OL https://github.com/badboy/mdbook-mermaid/releases/download/v0.17.0/mdbook-mermaid-v0.17.0-x86_64-unknown-linux-gnu.tar.gz + tar -xzf mdbook-mermaid-v0.17.0-x86_64-unknown-linux-gnu.tar.gz -C /usr/local/bin + + - name: Build book + run: mdbook build book diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml new file mode 100644 index 0000000..89620c7 --- /dev/null +++ b/.github/workflows/ci-python.yml @@ -0,0 +1,52 @@ +name: Python CI + +on: + pull_request: + paths: + - packages/sdk-py/** + - .github/workflows/ci-python.yml + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + check: + name: Lint, Format & Test + runs-on: ubuntu-latest + defaults: + run: + working-directory: packages/sdk-py + steps: + - uses: actions/checkout@v4 + + - name: Install poetry + run: pipx install poetry + + - uses: actions/setup-python@v5 + with: + python-version: "3.10" + cache: poetry + + - name: Install dependencies + working-directory: packages/sdk-py + run: poetry install + + - name: Check formatting + working-directory: packages/sdk-py + run: poetry run black --check . + + - name: Lint + working-directory: packages/sdk-py + run: poetry run ruff check . + + - name: Type check + working-directory: packages/sdk-py + run: poetry run mypy src + + - name: Test + working-directory: packages/sdk-py + run: poetry run pytest diff --git a/.github/workflows/ci-rust.yml b/.github/workflows/ci-rust.yml new file mode 100644 index 0000000..aec39f2 --- /dev/null +++ b/.github/workflows/ci-rust.yml @@ -0,0 +1,81 @@ +name: Rust CI + +on: + pull_request: + paths: + - crates/** + - packages/sdk-rs/** + - Cargo.toml + - Cargo.lock + - rust-toolchain.toml + - rustfmt.toml + - .github/workflows/ci-rust.yml + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +env: + CARGO_TERM_COLOR: always + RUST_TOOLCHAIN: "1.94.0" + +jobs: + fmt: + name: Formatting + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + components: rustfmt + + - name: Install taplo + uses: taiki-e/install-action@v2 + with: + tool: taplo-cli + + - name: Check Rust formatting + run: cargo fmt --all --check + + - name: Check TOML formatting + run: taplo fmt --check + + clippy: + name: Clippy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + components: clippy + + - uses: Swatinem/rust-cache@v2 + + - name: Install system dependencies + run: sudo apt-get update && sudo apt-get install -y libclang-dev + + - run: cargo clippy --workspace --all-targets -- -D warnings + + test: + name: Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + + - uses: Swatinem/rust-cache@v2 + + - name: Install system dependencies + run: sudo apt-get update && sudo apt-get install -y libclang-dev + + - run: cargo test --workspace diff --git a/.github/workflows/ci-typescript.yml b/.github/workflows/ci-typescript.yml new file mode 100644 index 0000000..299efe7 --- /dev/null +++ b/.github/workflows/ci-typescript.yml @@ -0,0 +1,55 @@ +name: TypeScript CI + +on: + pull_request: + paths: + - packages/sdk-ts/** + - packages/contract-types/** + - apps/** + - package.json + - pnpm-lock.yaml + - pnpm-workspace.yaml + - tsconfig.json + - eslint.config.js + - .prettierrc.toml + - .github/workflows/ci-typescript.yml + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + check: + name: Lint, Typecheck & Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 10 + + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + + - run: pnpm install + + - name: Lint + run: pnpm exec eslint packages apps --cache + + - name: Format check + run: pnpm run format:check + + - name: Typecheck + run: pnpm run typecheck + + - name: Build + run: pnpm run build + + - name: Test + run: pnpm run test diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 0000000..4f02193 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,18 @@ +name: Label PR + +on: + pull_request_target: + types: [opened, synchronize, reopened] + +permissions: + contents: read + pull-requests: write + +jobs: + label: + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v5 + with: + configuration-path: .github/labeler.yml + sync-labels: true diff --git a/packages/sdk-py/poetry.lock b/packages/sdk-py/poetry.lock index a15cd9d..812f71c 100644 --- a/packages/sdk-py/poetry.lock +++ b/packages/sdk-py/poetry.lock @@ -234,12 +234,12 @@ version = "1.2.0" description = "Backport of asyncio.Runner, a context manager that controls event loop life cycle." optional = false python-versions = "<3.11,>=3.8" -groups = ["main", "dev"] +groups = ["dev"] +markers = "python_version == \"3.10\"" files = [ {file = "backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5"}, {file = "backports_asyncio_runner-1.2.0.tar.gz", hash = "sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162"}, ] -markers = {main = "extra == \"dev\" and python_version == \"3.10\"", dev = "python_version == \"3.10\""} [[package]] name = "bitarray" @@ -359,10 +359,9 @@ files = [ name = "black" version = "26.3.0" description = "The uncompromising code formatter." -optional = true +optional = false python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "black-26.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:135bf8a352e35b3bfba4999c256063d8d86514654599eca7635e914a55d60ec3"}, {file = "black-26.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6024a2959b6c62c311c564ce23ce0eaa977a50ed52a53f7abc83d2c9eb62b8d8"}, @@ -623,10 +622,9 @@ files = [ name = "click" version = "8.3.1" description = "Composable command line interface toolkit" -optional = true +optional = false python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6"}, {file = "click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a"}, @@ -641,12 +639,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main", "dev"] +groups = ["dev"] +markers = "sys_platform == \"win32\" or platform_system == \"Windows\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "extra == \"dev\" and (sys_platform == \"win32\" or platform_system == \"Windows\")", dev = "sys_platform == \"win32\""} [[package]] name = "coverage" @@ -654,7 +652,7 @@ version = "7.13.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.10" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "coverage-7.13.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fc31c787a84f8cd6027eba44010517020e0d18487064cd3d8968941856d1415"}, {file = "coverage-7.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a32ebc02a1805adf637fc8dec324b5cdacd2e493515424f70ee33799573d661b"}, @@ -763,7 +761,6 @@ files = [ {file = "coverage-7.13.4-py3-none-any.whl", hash = "sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0"}, {file = "coverage-7.13.4.tar.gz", hash = "sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91"}, ] -markers = {main = "extra == \"dev\""} [package.dependencies] tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} @@ -1403,21 +1400,20 @@ version = "2.3.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.10" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, ] -markers = {main = "extra == \"dev\""} [[package]] name = "librt" version = "0.8.1" description = "Mypyc runtime library" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\" and platform_python_implementation != \"PyPy\"" +groups = ["dev"] +markers = "platform_python_implementation != \"PyPy\"" files = [ {file = "librt-0.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81fd938344fecb9373ba1b155968c8a329491d2ce38e7ddb76f30ffb938f12dc"}, {file = "librt-0.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5db05697c82b3a2ec53f6e72b2ed373132b0c2e05135f0696784e97d7f5d48e7"}, @@ -1674,10 +1670,9 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} name = "mypy" version = "1.19.1" description = "Optional static typing for Python" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec"}, {file = "mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b"}, @@ -1737,10 +1732,9 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, @@ -1752,12 +1746,11 @@ version = "26.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"}, {file = "packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"}, ] -markers = {main = "extra == \"dev\""} [[package]] name = "parsimonious" @@ -1778,10 +1771,9 @@ regex = ">=2022.3.15" name = "pathspec" version = "1.0.4" description = "Utility library for gitignore style pattern matching of file paths." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723"}, {file = "pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645"}, @@ -1797,10 +1789,9 @@ tests = ["pytest (>=9)", "typing-extensions (>=4.15)"] name = "platformdirs" version = "4.9.4" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = true +optional = false python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "platformdirs-4.9.4-py3-none-any.whl", hash = "sha256:68a9a4619a666ea6439f2ff250c12a853cd1cbd5158d258bd824a7df6be2f868"}, {file = "platformdirs-4.9.4.tar.gz", hash = "sha256:1ec356301b7dc906d83f371c8f487070e99d3ccf9e501686456394622a01a934"}, @@ -1812,12 +1803,11 @@ version = "1.6.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.9" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] -markers = {main = "extra == \"dev\""} [package.extras] dev = ["pre-commit", "tox"] @@ -2168,12 +2158,11 @@ version = "2.19.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, ] -markers = {main = "extra == \"dev\""} [package.extras] windows-terminal = ["colorama (>=0.4.6)"] @@ -2184,12 +2173,11 @@ version = "9.0.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.10" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b"}, {file = "pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11"}, ] -markers = {main = "extra == \"dev\""} [package.dependencies] colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} @@ -2209,12 +2197,11 @@ version = "1.3.0" description = "Pytest support for asyncio" optional = false python-versions = ">=3.10" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5"}, {file = "pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5"}, ] -markers = {main = "extra == \"dev\""} [package.dependencies] backports-asyncio-runner = {version = ">=1.1,<2", markers = "python_version < \"3.11\""} @@ -2231,12 +2218,11 @@ version = "7.0.0" description = "Pytest plugin for measuring coverage." optional = false python-versions = ">=3.9" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861"}, {file = "pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1"}, ] -markers = {main = "extra == \"dev\""} [package.dependencies] coverage = {version = ">=7.10.6", extras = ["toml"]} @@ -2250,10 +2236,9 @@ testing = ["process-tests", "pytest-xdist", "virtualenv"] name = "pytokens" version = "0.4.1" description = "A Fast, spec compliant Python 3.14+ tokenizer that runs on older Pythons." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "pytokens-0.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a44ed93ea23415c54f3face3b65ef2b844d96aeb3455b8a69b3df6beab6acc5"}, {file = "pytokens-0.4.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:add8bf86b71a5d9fb5b89f023a80b791e04fba57960aa790cc6125f7f1d39dfe"}, @@ -2533,10 +2518,9 @@ test = ["hypothesis (>=6.22.0,<6.108.7)", "pytest (>=7.0.0)", "pytest-xdist (>=2 name = "ruff" version = "0.15.5" description = "An extremely fast Python linter and code formatter, written in Rust." -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "ruff-0.15.5-py3-none-linux_armv6l.whl", hash = "sha256:4ae44c42281f42e3b06b988e442d344a5b9b72450ff3c892e30d11b29a96a57c"}, {file = "ruff-0.15.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6edd3792d408ebcf61adabc01822da687579a1a023f297618ac27a5b51ef0080"}, @@ -2558,13 +2542,26 @@ files = [ {file = "ruff-0.15.5.tar.gz", hash = "sha256:7c3601d3b6d76dce18c5c824fc8d06f4eef33d6df0c21ec7799510cde0f159a2"}, ] +[[package]] +name = "socksio" +version = "1.0.0" +description = "Sans-I/O implementation of SOCKS4, SOCKS4A, and SOCKS5." +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "socksio-1.0.0-py3-none-any.whl", hash = "sha256:95dc1f15f9b34e8d7b16f06d74b8ccf48f609af32ab33c608d08761c5dcbb1f3"}, + {file = "socksio-1.0.0.tar.gz", hash = "sha256:f88beb3da5b5c38b9890469de67d0cb0f9d494b78b106ca1845f96c10b91c4ac"}, +] + [[package]] name = "tomli" version = "2.4.0" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] +markers = "python_full_version <= \"3.11.0a6\"" files = [ {file = "tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867"}, {file = "tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9"}, @@ -2614,7 +2611,6 @@ files = [ {file = "tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a"}, {file = "tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c"}, ] -markers = {main = "extra == \"dev\" and python_full_version <= \"3.11.0a6\"", dev = "python_full_version <= \"3.11.0a6\""} [[package]] name = "toolz" @@ -2655,7 +2651,6 @@ files = [ {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] -markers = {dev = "python_version < \"3.13\""} [[package]] name = "typing-inspection" @@ -2946,10 +2941,7 @@ idna = ">=2.0" multidict = ">=4.0" propcache = ">=0.2.1" -[extras] -dev = ["black", "mypy", "pytest", "pytest-asyncio", "pytest-cov", "ruff"] - [metadata] lock-version = "2.1" python-versions = ">=3.10,<4" -content-hash = "071ce505b9bc8db385d1d16a43c464cb1913ccc42ce6bdda247d2cae829792e3" +content-hash = "04a6cd14d36aa22596c43bbf957e95aebfce2143b21f69f00e03062a843dcc90" diff --git a/packages/sdk-py/pyproject.toml b/packages/sdk-py/pyproject.toml index 5e9137f..454bbfb 100644 --- a/packages/sdk-py/pyproject.toml +++ b/packages/sdk-py/pyproject.toml @@ -17,16 +17,6 @@ readme = "README.md" requires-python = ">=3.10,<4" version = "0.1.0" -[project.optional-dependencies] -dev = [ - "pytest>=9.0.0", - "pytest-asyncio>=1.3.0", - "pytest-cov>=7.0.0", - "black>=26.0.0", - "ruff>=0.15.0", - "mypy>=1.19.0", -] - [build-system] build-backend = "poetry.core.masonry.api" requires = ["poetry-core>=2.0.0,<3.0.0"] @@ -55,6 +45,13 @@ testpaths = ["tests"] [dependency-groups] dev = [ + "pytest>=9.0.0", + "pytest-asyncio>=1.3.0", + "pytest-cov>=7.0.0", + "black>=26.0.0", + "ruff>=0.15.0", + "mypy>=1.19.0", "pytest-cov (>=7.0.0,<8.0.0)", "pytest-asyncio (>=1.3.0,<2.0.0)", + "socksio (>=1.0.0,<2.0.0)", ]