|
| 1 | +[build-system] |
| 2 | +requires = [ |
| 3 | + "setuptools==78.0.2", |
| 4 | + "wheel==0.45.1", |
| 5 | +] # the setuptools version here should match that of setuptools below in docs in optional-dependencies |
| 6 | +build-backend = "setuptools.build_meta" |
| 7 | + |
| 8 | +[project] |
| 9 | +name = "ethereum-execution-tests" |
| 10 | +version = "1.0.0" |
| 11 | +description = "Ethereum execution client test authoring framework" |
| 12 | +readme = "README.md" |
| 13 | +requires-python = ">=3.11" |
| 14 | +license = "MIT" |
| 15 | +license-files = [ "LICENSE" ] |
| 16 | +keywords = ["ethereum", "testing", "blockchain"] |
| 17 | +classifiers = [ |
| 18 | + "Programming Language :: Python :: 3.11", |
| 19 | + "Programming Language :: Python :: 3.12", |
| 20 | +] |
| 21 | +dependencies = [ |
| 22 | + "click>=8.1.0,<9", |
| 23 | + "ethereum-hive>=0.1.0a1,<1.0.0", |
| 24 | + "ethereum-execution", |
| 25 | + "gitpython>=3.1.31,<4", |
| 26 | + "PyJWT>=2.3.0,<3", |
| 27 | + "requests>=2.31.0,<3", |
| 28 | + "requests_unixsocket2>=0.4.0", |
| 29 | + "colorlog>=6.7.0,<7", |
| 30 | + "pytest>=8,<9", |
| 31 | + "pytest-custom-report>=1.0.1,<2", |
| 32 | + "pytest-html>=4.1.0,<5", |
| 33 | + "pytest-metadata>=3,<4", |
| 34 | + "pytest-xdist>=3.3.1,<4", |
| 35 | + "coincurve>=20.0.0,<21", |
| 36 | + "trie>=3.1.0,<4", |
| 37 | + "semver>=3.0.1,<4", |
| 38 | + "pydantic>=2.11.0,<3", |
| 39 | + "rich>=13.7.0,<14", |
| 40 | + "filelock>=3.15.1,<4", |
| 41 | + "ethereum-types>=0.2.1,<0.3", |
| 42 | + "pyyaml>=6.0.2,<7", |
| 43 | + "types-pyyaml>=6.0.12.20240917,<7", |
| 44 | + "pytest-json-report>=1.5.0,<2", |
| 45 | + "typing-extensions>=4.12.2,<5", |
| 46 | + "questionary>=2.1.0,<3", |
| 47 | + "ethereum-rlp>=0.1.3,<0.2", |
| 48 | + "pytest-regex>=0.2.0,<0.3", |
| 49 | + "eth-abi>=5.2.0", |
| 50 | + "joblib>=1.4.2", |
| 51 | + "ckzg>=2.1.3,<3", |
| 52 | + "tenacity>=9.0.0,<10", |
| 53 | +] |
| 54 | + |
| 55 | +[project.urls] |
| 56 | +Homepage = "https://github.com/ethereum/execution-specs" |
| 57 | +Documentation = "https://eest.ethereum.org" |
| 58 | +Repository = "https://github.com/ethereum/execution-specs" |
| 59 | +Issues = "https://github.com/ethereum/execution-specs/issues" |
| 60 | +Changelog = "https://eest.ethereum.org/main/CHANGELOG/" |
| 61 | + |
| 62 | +[project.optional-dependencies] |
| 63 | +test = ["pytest-cov>=4.1.0,<5"] |
| 64 | +lint = [ |
| 65 | + "ruff==0.13.2", |
| 66 | + "mypy==1.17.0", |
| 67 | + "types-requests>=2.31,<2.33", |
| 68 | +] |
| 69 | +docs = [ |
| 70 | + "cairosvg>=2.7.0,<3", |
| 71 | + "codespell>=2.4.1,<3", |
| 72 | + "markdown==3.8", |
| 73 | + "mike>=1.1.2,<2", |
| 74 | + "mkdocs>=1.4.3,<2", |
| 75 | + "mkdocs-click>=0.8,<1", |
| 76 | + "mkdocs-gen-files>=0.5.0,<1", |
| 77 | + "mkdocs-git-authors-plugin>=0.7.1,<1", |
| 78 | + "mkdocs-glightbox>=0.3.4,<1", |
| 79 | + "mkdocs-literate-nav>=0.6.0,<1", |
| 80 | + "mkdocs-material>=9.1.14,<10", |
| 81 | + "mkdocs-material-extensions>=1.1.1,<2", |
| 82 | + "mkdocstrings>=0.21.2,<1", |
| 83 | + "mkdocstrings-python>=1.0.0,<2", |
| 84 | + "pillow>=10.0.1,<11", |
| 85 | + "pyspelling>=2.8.2,<3", |
| 86 | + "lxml>=6.0.0,<7", # needs to be >= 6.0 for pypy |
| 87 | + "setuptools==78.0.2", |
| 88 | +] |
| 89 | + |
| 90 | +[project.scripts] |
| 91 | +fill = "cli.pytest_commands.fill:fill" |
| 92 | +phil = "cli.pytest_commands.fill:phil" |
| 93 | +execute = "cli.pytest_commands.execute:execute" |
| 94 | +attac = "cli.pytest_commands.execute:execute" |
| 95 | +checkfixtures = "cli.check_fixtures:check_fixtures" |
| 96 | +check_eip_versions = "cli.pytest_commands.check_eip_versions:check_eip_versions" |
| 97 | +consume = "cli.pytest_commands.consume:consume" |
| 98 | +protec = "cli.pytest_commands.consume:consume" |
| 99 | +checklist = "cli.pytest_commands.checklist:checklist" |
| 100 | +generate_checklist_stubs = "cli.generate_checklist_stubs:generate_checklist_stubs" |
| 101 | +genindex = "cli.gen_index:generate_fixtures_index_cli" |
| 102 | +gentest = "cli.gentest:generate" |
| 103 | +eofwrap = "cli.eofwrap:eof_wrap" |
| 104 | +pyspelling_soft_fail = "cli.tox_helpers:pyspelling" |
| 105 | +markdownlintcli2_soft_fail = "cli.tox_helpers:markdownlint" |
| 106 | +order_fixtures = "cli.order_fixtures:order_fixtures" |
| 107 | +evm_bytes = "cli.evm_bytes:evm_bytes" |
| 108 | +hasher = "cli.hasher:main" |
| 109 | +eest = "cli.eest.cli:eest" |
| 110 | +fillerconvert = "cli.fillerconvert.fillerconvert:main" |
| 111 | +groupstats = "cli.show_pre_alloc_group_stats:main" |
| 112 | +extract_config = "cli.extract_config:extract_config" |
| 113 | +compare_fixtures = "cli.compare_fixtures:main" |
| 114 | +modify_static_test_gas_limits = "cli.modify_static_test_gas_limits:main" |
| 115 | + |
| 116 | +[tool.setuptools.packages.find] |
| 117 | +where = ["src"] |
| 118 | +exclude = ["*tests*"] |
| 119 | + |
| 120 | +[tool.pyright] |
| 121 | +exclude = ["tests/static/**"] |
| 122 | + |
| 123 | +[tool.setuptools.package-data] |
| 124 | +ethereum_test_forks = ["forks/contracts/*.bin"] |
| 125 | +"pytest_plugins.execute" = ["eth_config/networks.yml"] |
| 126 | +"pytest_plugins" = ["eels_resolutions.json"] |
| 127 | +"cli.eest.make" = ["templates/*.j2"] |
| 128 | +"cli.pytest_commands" = ["pytest_ini_files/*.ini"] |
| 129 | +"ethereum_test_types" = ["kzg_trusted_setup.txt"] |
| 130 | + |
| 131 | +[tool.ruff] |
| 132 | +line-length = 99 |
| 133 | + |
| 134 | +[tool.ruff.lint] |
| 135 | +select = [ |
| 136 | + "E", # pycodestyle errors |
| 137 | + "F", # Pyflakes |
| 138 | + "B", # flake8-bugbear |
| 139 | + "W", # pycodestyle warnings |
| 140 | + "I", # isort |
| 141 | + "A", # flake8-builtins |
| 142 | + "N", # pep8-naming |
| 143 | + "D", # pydocstyle |
| 144 | + "C4", # flake8-comprehensions |
| 145 | + "ARG", # flake8-unused-arguments |
| 146 | +] |
| 147 | +fixable = [ |
| 148 | + "E", # pycodestyle errors |
| 149 | + "F", # Pyflakes |
| 150 | + "B", # flake8-bugbear |
| 151 | + "W", # pycodestyle warnings |
| 152 | + "I", # isort |
| 153 | + "D", # pydocstyle |
| 154 | +] |
| 155 | +ignore = [ |
| 156 | + "C401", # Unnecessary generator set |
| 157 | + "C408", # Unnecessary collection call |
| 158 | + "D107", # Missing docstring in __init__ |
| 159 | + "D200", # One-line docstring should fit on one line with quotes |
| 160 | + "D203", # 1 blank line required before class docstring |
| 161 | + "D205", # Missing blank line after summary |
| 162 | + "D212", # Multi-line docstring summary should start at the first line |
| 163 | + "D401", # First line should be in imperative mood ("Do", not "Does") |
| 164 | + # TODO: ethereum/execution-spec-tests#2176 |
| 165 | + "ARG002", # unused-method-argument |
| 166 | + "ARG003", # unused-class-method-argument |
| 167 | + "ARG005", # unused-lambda-argument |
| 168 | +] |
| 169 | + |
| 170 | +[tool.ruff.lint.per-file-ignores] |
| 171 | +"tests/*" = ["ARG001"] # TODO: ethereum/execution-spec-tests#2188 |
| 172 | + |
| 173 | +[tool.mypy] |
| 174 | +disable_error_code = ["import-untyped"] |
| 175 | +mypy_path = ["src", "$MYPY_CONFIG_FILE_DIR/stubs"] |
| 176 | +files = ["src", "tests"] |
| 177 | +exclude = [ |
| 178 | + '^\.cache/', |
| 179 | + '^\.git/', |
| 180 | + '^\.pytest_cache/', |
| 181 | + '^\.ruff_cache/', |
| 182 | + '^\.tox/', |
| 183 | + '^\.venv/', |
| 184 | + '^\.vscode/', |
| 185 | + '^fixtures/', |
| 186 | + '^logs/', |
| 187 | + '^site/', |
| 188 | +] |
| 189 | +plugins = ["pydantic.mypy"] |
| 190 | + |
| 191 | +[tool.codespell] |
| 192 | +skip = ".venv,__pycache__,.git,build,dist,*.pyc,*.lock" |
| 193 | +check-filenames = true |
| 194 | +ignore-words-list = "ingenuous" |
| 195 | + |
| 196 | +[tool.pytest.ini_options] |
| 197 | +console_output_style = "count" |
| 198 | +minversion = "7.0" |
| 199 | +python_files = [ |
| 200 | + "test_*.py" |
| 201 | +] |
| 202 | +testpaths = [ |
| 203 | + "src" |
| 204 | +] |
| 205 | +addopts = [ |
| 206 | + "-p", "pytester", |
| 207 | + "--ignore=src/pytest_plugins/consume/test_cache.py", |
| 208 | + "--ignore=src/pytest_plugins/consume/direct/", |
| 209 | + "--ignore=src/pytest_plugins/consume/simulators/", |
| 210 | +] |
| 211 | + |
| 212 | +[tool.uv] |
| 213 | +required-version = ">=0.7.0" |
| 214 | + |
| 215 | +[tool.uv.sources] |
| 216 | +ethereum-execution = { workspace = true } |
0 commit comments