Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/commands/edit-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

## Validation

Run `uvx tox -e static` before committing — this runs `actionlint` to validate YAML syntax and structure.
Run `just lint-actions` before committing to validate YAML syntax and structure.
13 changes: 6 additions & 7 deletions .claude/commands/lint.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,30 @@ Run the full static analysis suite and fix issues. This matches the CI check on
## Step 1: Run the Full Check

```bash
uvx tox -e static
just static
```

This runs ruff, mypy, codespell, ethereum-spec-lint, and actionlint in one pass. If everything passes, you're done.

## Step 2: Auto-Fix Formatting and Lint Issues

If tox reports ruff errors, run these first — they resolve most issues automatically:
If static checks report ruff errors, run the fix recipe first — it resolves most issues automatically:

```bash
uv run ruff format
uv run ruff check --fix
just fix
```

## Step 3: Resolve Remaining Issues Manually

After auto-fix, re-run to see what's left:

```bash
uvx tox -e static
just static
```

- **Remaining ruff issues**: fix manually (auto-fix can't handle all rules)
- **mypy errors**: fix type annotations, add missing types, correct signatures
- **codespell errors**: fix typos, or add intentional words to `whitelist.txt`
- **codespell errors**: fix typos, or add intentional words via `just whitelist <word>`
- **ethereum-spec-lint errors**: fix import isolation violations (see `/implement-eip` for import rules)
- **actionlint errors**: fix workflow YAML issues (see `/edit-workflow`)

Expand All @@ -38,5 +37,5 @@ uvx tox -e static
Re-run until clean:

```bash
uvx tox -e static
just static
```
4 changes: 2 additions & 2 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ N/A.
## ✅ Checklist
<!-- Please check off all required items. For those that don't apply remove them accordingly. -->

- [ ] All: Ran fast `tox` checks to avoid unnecessary CI fails, see also [Code Standards](https://eest.ethereum.org/main/getting_started/code_standards/) and [Enabling Pre-commit Checks](https://eest.ethereum.org/main/dev/precommit/):
- [ ] All: Ran fast static checks to avoid unnecessary CI fails, see also [Code Standards](https://eest.ethereum.org/main/getting_started/code_standards/) and [Enabling Pre-commit Checks](https://eest.ethereum.org/main/dev/precommit/):
```console
uvx tox -e static
just static
```
- [ ] All: PR title adheres to the [repo standard](https://eest.ethereum.org/main/getting_started/contributing/?h=contri#commit-messages-issue-and-pr-titles) - it will be used as the squash commit message and should start `type(scope):`.
- [ ] All: Considered updating the online docs in the [./docs/](/ethereum/execution-specs/blob/HEAD/docs/) directory.
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/merge-eip-branches/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ runs:
done

echo "Running static checks on merged branch"
uvx --with=tox-uv tox -e static
just static

echo "All EIP branches merged successfully"

Expand Down
2 changes: 1 addition & 1 deletion .github/actions/rebase-eip-branch/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ runs:
echo "Rebase of ${EIP_BRANCH} successful"

echo "Running static checks on ${EIP_BRANCH}"
uvx --with=tox-uv tox -e static
just static
done

- name: Push rebased branches
Expand Down
13 changes: 7 additions & 6 deletions .github/actions/setup-uv/action.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Setup uv and tox
description: Install uv, Python, and tox for CI jobs
name: Setup uv and just
description: Install uv, Python, and just for CI jobs
inputs:
python-version:
description: Python version to install (e.g. "3.14", "pypy3.11")
Expand All @@ -14,7 +14,7 @@ runs:
using: "composite"
steps:
- name: Install uv and python ${{ inputs.python-version }}
uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82 # v7.5.0
uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82 # v7.5.0
with:
enable-cache: ${{ inputs.enable-cache }}
cache-dependency-glob: ${{ inputs.cache-dependency-glob }}
Expand All @@ -23,6 +23,7 @@ runs:
- name: Prefer uv-managed Python over system Python
shell: bash
run: echo "UV_PYTHON_PREFERENCE=only-managed" >> "$GITHUB_ENV"
- name: Install tox
shell: bash
run: uv tool install tox
- name: Install just
uses: taiki-e/install-action@e24b8b7a939c6a537188f34a4163cb153dd85cf6 # v2.69.1
with:
tool: just@1.46
10 changes: 5 additions & 5 deletions .github/workflows/benchmark.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
type: benchmark

- name: Run benchmark unit tests
run: tox -e tests_benchmark_pytest_py3
run: just test-tests-bench
env:
EVM_BIN: ${{ steps.evm-builder.outputs.evm-bin }}

Expand All @@ -57,11 +57,11 @@ jobs:
matrix:
include:
- name: Benchmark Gas Values
tox-env: benchmark-gas-values
recipe: bench-gas
- name: Fixed Opcode Count CLI
tox-env: benchmark-fixed-opcode-cli
recipe: bench-opcode
- name: Fixed Opcode Count Config
tox-env: benchmark-fixed-opcode-config
recipe: bench-opcode-config
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
Expand All @@ -77,7 +77,7 @@ jobs:
type: benchmark

- name: Run ${{ matrix.name }}
run: tox -e ${{ matrix.tox-env }}
run: just ${{ matrix.recipe }}
env:
EVM_BIN: ${{ steps.evm-builder.outputs.evm-bin }}

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/gh-pages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,16 @@ jobs:

- name: Build Documentation
run: |
tox -e spec-docs
touch .tox/docs/.nojekyll
just docs-spec
touch .just/docs-spec/.nojekyll
env:
DOCC_SKIP_DIFFS: ${{ case(github.event_name == 'push' && github.ref_name == github.event.repository.default_branch, '', '1') }}

- name: Upload Pages Artifact
id: artifact
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0
with:
path: .tox/docs
path: .just/docs-spec

deploy:
needs: build
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-checklist.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ jobs:
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/setup-uv
- name: Run checklist consistency test
run: tox -e tests_pytest_py3 -- -k test_checklist_template_consistency
run: just test-tests -k test_checklist_template_consistency
10 changes: 5 additions & 5 deletions .github/workflows/test-docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ jobs:
- name: Checkout ethereum/execution-specs
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/setup-uv
- name: Build html documentation with mkdocs via tox
run: tox -e mkdocs
- name: Build html documentation with mkdocs
run: just docs

changelog:
name: Validate changelog entries
Expand All @@ -40,10 +40,10 @@ jobs:
- name: Checkout ethereum/execution-specs
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/setup-uv
- name: Run changelog validation via tox
run: tox -e changelog
- name: Run changelog validation
run: just changelog

markdownlint:
lint-md:
name: Lint markdown files with markdownlint
runs-on: ubuntu-latest
steps:
Expand Down
44 changes: 22 additions & 22 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:
- ".gitignore"
- ".vscode/**"
- "whitelist.txt"
- "docs/**"
- "docs/**"
- "mkdocs.yml"
workflow_dispatch:
pull_request:
Expand All @@ -22,7 +22,7 @@ on:
- ".gitignore"
- ".vscode/**"
- "whitelist.txt"
- "docs/**"
- "docs/**"
- "mkdocs.yml"

concurrency:
Expand All @@ -47,18 +47,18 @@ jobs:
shell: bash
run: echo "version=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')" >> "$GITHUB_OUTPUT"
- name: Restore mypy cache
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
path: .mypy_cache
key: mypy-${{ runner.os }}-py${{ steps.python.outputs.version }}-${{ hashFiles('uv.lock') }}-${{ github.sha }}
restore-keys: |
mypy-${{ runner.os }}-py${{ steps.python.outputs.version }}-${{ hashFiles('uv.lock') }}-
mypy-${{ runner.os }}-py${{ steps.python.outputs.version }}-
- name: Run static checks
run: tox -e static
run: just static
- name: Save mypy cache
if: always()
uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
path: .mypy_cache
key: mypy-${{ runner.os }}-py${{ steps.python.outputs.version }}-${{ hashFiles('uv.lock') }}-${{ github.sha }}
Expand All @@ -73,8 +73,8 @@ jobs:
EOF
uvx --from actionlint-py actionlint

py3:
name: py3 (${{ matrix.label }})
fill:
name: fill (${{ matrix.label }})
runs-on: [self-hosted-ghr, size-xl-x64]
needs: static
strategy:
Expand Down Expand Up @@ -104,18 +104,18 @@ jobs:
with:
python-version: "3.14"
- uses: ./.github/actions/setup-env
- name: Run py3 tests (${{ matrix.label }})
run: tox -e py3 -- --from ${{ matrix.from_fork }} --until ${{ matrix.until_fork }}
- name: Run fill (${{ matrix.label }})
run: just fill --from ${{ matrix.from_fork }} --until ${{ matrix.until_fork }}
env:
PYTEST_XDIST_AUTO_NUM_WORKERS: auto
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
with:
files: .tox/coverage.xml
files: .just/fill/coverage.xml
flags: unittests
token: ${{ secrets.CODECOV_TOKEN }}

pypy3:
fill-pypy:
runs-on: [self-hosted-ghr, size-xl-x64]
needs: static
steps:
Expand All @@ -126,13 +126,13 @@ jobs:
with:
python-version: "pypy3.11"
- uses: ./.github/actions/setup-env
- name: Run pypy3 tests
run: tox -e pypy3
- name: Run fill-pypy tests
run: just fill-pypy
env:
PYPY_GC_MAX: "2G"
PYPY_GC_MIN: "1G"

json_loader:
json-loader:
runs-on: [self-hosted-ghr, size-xl-x64]
needs: static
steps:
Expand All @@ -141,12 +141,12 @@ jobs:
submodules: recursive
- uses: ./.github/actions/setup-uv
- uses: ./.github/actions/setup-env
- name: Fill and run json_loader tests
run: tox -e json_loader
- name: Fill and run json-loader tests
run: just json-loader
env:
PYTEST_XDIST_AUTO_NUM_WORKERS: auto

tests_pytest_py3:
test-tests:
runs-on: [self-hosted-ghr, size-xl-x64]
needs: static
steps:
Expand All @@ -156,12 +156,12 @@ jobs:
- uses: ./.github/actions/setup-uv
- uses: ./.github/actions/setup-env
- uses: ./.github/actions/build-evmone
- name: Run py3 tests
run: tox -e tests_pytest_py3
- name: Run test-tests
run: just test-tests
env:
PYTEST_XDIST_AUTO_NUM_WORKERS: auto

tests_pytest_pypy3:
test-tests-pypy:
runs-on: [self-hosted-ghr, size-xl-x64]
needs: static
steps:
Expand All @@ -173,8 +173,8 @@ jobs:
python-version: "pypy3.11"
- uses: ./.github/actions/setup-env
- uses: ./.github/actions/build-evmone
- name: Run pypy3 tests
run: tox -e tests_pytest_pypy3
- name: Run test-tests-pypy
run: just test-tests-pypy
env:
PYPY_GC_MAX: "2G"
PYPY_GC_MIN: "1G"
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ pip-log.txt
pip-delete-this-directory.txt

.tox/
.just/

/doc/_autosummary

Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Ethereum Execution Layer Specification written in Python. This is a **specificat

## Tooling

- **uv** is the package manager. **tox** orchestrates test environments (`uvx tox -al`).
- **uv** is the package manager. **just** is the command runner (`just --list`).
- The `execution_testing` package under `packages/testing/` is a UV workspace member.

## Linting
Expand Down
Loading
Loading