diff --git a/package/requirements.sphinx.txt b/package/requirements.sphinx.txt index 476ce31a..93a965fe 100644 --- a/package/requirements.sphinx.txt +++ b/package/requirements.sphinx.txt @@ -176,9 +176,9 @@ mdurl==0.1.2 \ myst-parser==3.0.1 \ --hash=sha256:6457aaa33a5d474aca678b8ead9b3dc298e89c68e67012e73146ea6fd54babf1 \ --hash=sha256:88f0cb406cb363b077d176b51c476f62d60604d68a8dcdf4832e080441301a87 -packaging==24.1 \ - --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ - --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 +packaging==26.3 \ + --hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \ + --hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c pycryptodome==3.20.0 \ --hash=sha256:09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7 \ --hash=sha256:210ba1b647837bfc42dd5a813cdecb5b86193ae11a3f5d972b9a0ae2c7e9e4b4 \ diff --git a/package/requirements.testing.txt b/package/requirements.testing.txt index 6a9c022e..15e7b360 100644 --- a/package/requirements.testing.txt +++ b/package/requirements.testing.txt @@ -10,12 +10,12 @@ eth-hash[pycryptodome]==0.7.0 \ iniconfig==2.0.0 \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 -packaging==24.1 \ - --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ - --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 -pluggy==1.5.0 \ - --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ - --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 +packaging==26.3 \ + --hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \ + --hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c +pluggy==1.6.0 \ + --hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \ + --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 pycryptodome==3.20.0 \ --hash=sha256:09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7 \ --hash=sha256:210ba1b647837bfc42dd5a813cdecb5b86193ae11a3f5d972b9a0ae2c7e9e4b4 \ diff --git a/package/requirements.tooling.txt b/package/requirements.tooling.txt index 67d11cde..f28067af 100644 --- a/package/requirements.tooling.txt +++ b/package/requirements.tooling.txt @@ -13,12 +13,12 @@ iniconfig==2.0.0 \ nodeenv==1.9.1 \ --hash=sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f \ --hash=sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9 -packaging==24.1 \ - --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ - --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 -pluggy==1.5.0 \ - --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ - --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 +packaging==26.3 \ + --hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \ + --hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c +pluggy==1.6.0 \ + --hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \ + --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 pycryptodome==3.20.0 \ --hash=sha256:09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7 \ --hash=sha256:210ba1b647837bfc42dd5a813cdecb5b86193ae11a3f5d972b9a0ae2c7e9e4b4 \ diff --git a/pdm.lock b/pdm.lock index 469757c7..92e74e80 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "crypto-eth-addresses", "docs-offline", "docs-online", "package", "runner", "sast", "testing", "tooling"] strategy = ["inherit_metadata"] lock_version = "4.5.1" -content_hash = "sha256:87b487aec34bf61c28aa27c06068b347802f66bfbdc07a02f6172179f9616884" +content_hash = "sha256:eb3cd6b8fdd92012b49f1a54a01e6accff90678867b866d6058037259cdeb66a" [[metadata.targets]] requires_python = ">=3.11" @@ -102,13 +102,13 @@ files = [ [[package]] name = "cachetools" -version = "5.5.0" -requires_python = ">=3.7" +version = "7.2.1" +requires_python = ">=3.10" summary = "Extensible memoizing collections and decorators" groups = ["runner"] files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, + {file = "cachetools-7.2.1-py3-none-any.whl", hash = "sha256:63aa53dfe7473c10cccdd5a01dedf76ef2c4b73a58840d9396e7d0752cbdac3b"}, + {file = "cachetools-7.2.1.tar.gz", hash = "sha256:b1a7537025c06abf96fcc1443e496af9a3fb95e774e70e1f0af226f73f7f2dcc"}, ] [[package]] @@ -122,17 +122,6 @@ files = [ {file = "certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55"}, ] -[[package]] -name = "chardet" -version = "5.2.0" -requires_python = ">=3.7" -summary = "Universal encoding detector for Python 3" -groups = ["runner"] -files = [ - {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, - {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, -] - [[package]] name = "charset-normalizer" version = "3.3.2" @@ -247,12 +236,12 @@ files = [ [[package]] name = "distlib" -version = "0.3.8" +version = "0.4.3" summary = "Distribution utilities" groups = ["runner"] files = [ - {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, - {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, + {file = "distlib-0.4.3-py2.py3-none-any.whl", hash = "sha256:4b0ce306c966eb73bc3a7b6abad017c556dadd92c44701562cd528ac7fde4d5b"}, + {file = "distlib-0.4.3.tar.gz", hash = "sha256:f152097224a0ae24be5a0f6bae1b9359af82133bce63f98a95f86cae1aede9ed"}, ] [[package]] @@ -295,13 +284,13 @@ files = [ [[package]] name = "filelock" -version = "3.15.4" -requires_python = ">=3.8" +version = "4.1.0" +requires_python = ">=3.10" summary = "A platform independent file lock." groups = ["runner"] files = [ - {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"}, - {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"}, + {file = "filelock-4.1.0-py3-none-any.whl", hash = "sha256:2ce9818e3e2d8f284c1a964414447ef148d42a5fd5e2a477a7118e574b293ec1"}, + {file = "filelock-4.1.0.tar.gz", hash = "sha256:ad7f724afef953e731b1cc39bcd3a09166d72ed7fcdf29e6e88b1c3235c6715d"}, ] [[package]] @@ -796,13 +785,13 @@ files = [ [[package]] name = "packaging" -version = "24.1" -requires_python = ">=3.8" +version = "26.3" +requires_python = ">=3.9" summary = "Core utilities for Python packages" groups = ["docs-offline", "docs-online", "package", "runner", "testing", "tooling"] files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c"}, + {file = "packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79"}, ] [[package]] @@ -838,24 +827,24 @@ files = [ [[package]] name = "platformdirs" -version = "4.2.2" -requires_python = ">=3.8" +version = "4.12.4" +requires_python = ">=3.10" summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." groups = ["docs-online", "runner"] files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.12.4-py3-none-any.whl", hash = "sha256:78bfb9db2a8471ed7eebe3c3c932da413911042994e699b384fbb4493fa872d7"}, + {file = "platformdirs-4.12.4.tar.gz", hash = "sha256:63743c02414e755de4e31b8f68125c1407495b86c5a006e203c01ff8b9924250"}, ] [[package]] name = "pluggy" -version = "1.5.0" -requires_python = ">=3.8" +version = "1.6.0" +requires_python = ">=3.9" summary = "plugin and hook calling mechanisms for python" groups = ["runner", "testing", "tooling"] files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [[package]] @@ -943,17 +932,17 @@ files = [ [[package]] name = "pyproject-api" -version = "1.7.1" -requires_python = ">=3.8" +version = "1.11.4" +requires_python = ">=3.10" summary = "API to interact with the python pyproject.toml based projects" groups = ["runner"] dependencies = [ - "packaging>=24.1", - "tomli>=2.0.1; python_version < \"3.11\"", + "packaging>=26.3", + "tomli>=2.4.1; python_version < \"3.11\"", ] files = [ - {file = "pyproject_api-1.7.1-py3-none-any.whl", hash = "sha256:2dc1654062c2b27733d8fd4cdda672b22fe8741ef1dde8e3a998a9547b071eeb"}, - {file = "pyproject_api-1.7.1.tar.gz", hash = "sha256:7ebc6cd10710f89f4cf2a2731710a98abce37ebff19427116ff2174c9236a827"}, + {file = "pyproject_api-1.11.4-py3-none-any.whl", hash = "sha256:30921dec1f85946dd47664536a003b2aea3a8be18e334c93ed12f6a8b1e60c76"}, + {file = "pyproject_api-1.11.4.tar.gz", hash = "sha256:42332ebb8e5e510a3a9ea498cedb5723134ddd46ddfe2d07693917b2ebea22a7"}, ] [[package]] @@ -1016,6 +1005,20 @@ files = [ {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] +[[package]] +name = "python-discovery" +version = "1.6.2" +requires_python = ">=3.9" +summary = "Python interpreter discovery" +groups = ["runner"] +dependencies = [ + "filelock>=3.16.1", +] +files = [ + {file = "python_discovery-1.6.2-py3-none-any.whl", hash = "sha256:f0c697f95a3aaec4174a6e5e58f5885e25768684bafc76f1afde384709ebdcf2"}, + {file = "python_discovery-1.6.2.tar.gz", hash = "sha256:cd1738ca1d37c86ef9d0b654dd46fcee1e41c97c6add12575e8501ced39afdb4"}, +] + [[package]] name = "pytz" version = "2024.1" @@ -1403,27 +1406,51 @@ files = [ {file = "stevedore-5.2.0.tar.gz", hash = "sha256:46b93ca40e1114cea93d738a6c1e365396981bb6bb78c27045b7587c9473544d"}, ] +[[package]] +name = "tomli-w" +version = "1.2.0" +requires_python = ">=3.9" +summary = "A lil' TOML writer" +groups = ["runner"] +files = [ + {file = "tomli_w-1.2.0-py3-none-any.whl", hash = "sha256:188306098d013b691fcadc011abd66727d3c414c571bb01b1a174ba8c983cf90"}, + {file = "tomli_w-1.2.0.tar.gz", hash = "sha256:2dd14fac5a47c27be9cd4c976af5a12d87fb1f0b4512f81d69cce3b35ae25021"}, +] + [[package]] name = "tox" -version = "4.18.0" -requires_python = ">=3.8" +version = "4.65.1" +requires_python = ">=3.11" summary = "tox is a generic virtualenv management and test command line tool" groups = ["runner"] dependencies = [ - "cachetools>=5.4", - "chardet>=5.2", + "cachetools>=7.0.3", "colorama>=0.4.6", - "filelock>=3.15.4", - "packaging>=24.1", - "platformdirs>=4.2.2", - "pluggy>=1.5", - "pyproject-api>=1.7.1", - "tomli>=2.0.1; python_version < \"3.11\"", - "virtualenv>=20.26.3", + "filelock>=3.25", + "packaging>=26", + "platformdirs>=4.9.4", + "pluggy>=1.6", + "pyproject-api>=1.10", + "python-discovery>=1.4.4", + "tomli-w>=1.2", + "typing-extensions>=4.15; python_version < \"3.13\"", + "virtualenv>=21.1", ] files = [ - {file = "tox-4.18.0-py3-none-any.whl", hash = "sha256:0a457400cf70615dc0627eb70d293e80cd95d8ce174bb40ac011011f0c03a249"}, - {file = "tox-4.18.0.tar.gz", hash = "sha256:5dfa1cab9f146becd6e351333a82f9e0ade374451630ba65ee54584624c27b58"}, + {file = "tox-4.65.1-py3-none-any.whl", hash = "sha256:cff962337c04c975024dbd9186a2b3f3d64b0b39b43ba4be7662ef9b37a6a945"}, + {file = "tox-4.65.1.tar.gz", hash = "sha256:bdbb7bd715a638f6a3f9eb6ffabd91c870db12de7ee2ba4d2c7c9af632f016ca"}, +] + +[[package]] +name = "typing-extensions" +version = "4.16.0" +requires_python = ">=3.9" +summary = "Backported and Experimental Type Hints for Python 3.9+" +groups = ["runner"] +marker = "python_version < \"3.13\"" +files = [ + {file = "typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8"}, + {file = "typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5"}, ] [[package]] @@ -1449,19 +1476,22 @@ files = [ [[package]] name = "virtualenv" -version = "20.26.3" -requires_python = ">=3.7" +version = "21.14.6" +requires_python = ">=3.9" summary = "Virtual Python Environment builder" groups = ["runner"] dependencies = [ - "distlib<1,>=0.3.7", - "filelock<4,>=3.12.2", - "importlib-metadata>=6.6; python_version < \"3.8\"", - "platformdirs<5,>=3.9.1", + "distlib<1,>=0.4.3", + "filelock<5,>=3.24.2; python_version >= \"3.10\"", + "filelock<=3.19.1,>=3.19.1; python_version < \"3.10\"", + "packaging>=26.3", + "platformdirs<5,>=4.4", + "python-discovery>=1.6.1", + "typing-extensions>=4.16; python_version < \"3.11\"", ] files = [ - {file = "virtualenv-20.26.3-py3-none-any.whl", hash = "sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589"}, - {file = "virtualenv-20.26.3.tar.gz", hash = "sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a"}, + {file = "virtualenv-21.14.6-py3-none-any.whl", hash = "sha256:eb1a20c5878569b69667f6a1af03458a8512b3afa7be771a2dafe92fdca05bb9"}, + {file = "virtualenv-21.14.6.tar.gz", hash = "sha256:c6b74616e64bffa9532cfa9dfd54ffbab0dc9b999df2bb8ec0d75e559b983661"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 1816699d..cd53ae7e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,13 +68,13 @@ docs-online = [ "mike>=2.1.3", ] package = ["build>=1.2.1"] -runner = ["tox>=4.18.0"] +runner = ["tox>=4.22"] sast = ["bandit[toml]>=1.7.9"] -testing = ["pytest>=8.3.2"] +testing = ["pytest>=9.0.3"] tooling = [ "ruff>=0.6.3", "pyright>=1.1.378", - "pytest>=8.3.2", + "pytest>=9.0.3", "pypandoc-binary>=1.13", # helps with type checking ] @@ -119,13 +119,12 @@ pythonVersion = "3.11" pythonPlatform = "All" typeCheckingMode = "strict" -[tool.pytest.ini_options] -minversion = "6.0" +[tool.pytest] +minversion = "9.0" pythonpath = ["src"] -testpaths = "tests" +testpaths = ["tests"] addopts = ["--doctest-modules"] - [tool.ruff] lint.select = [ # Pyflakes @@ -158,42 +157,32 @@ relative-imports-order = "closest-to-furthest" convention = "google" [tool.tox] -legacy_tox_ini = """ -[tox] -requires = - tox>=4 -env_list = lint, type, format, sast, py{311,312,313,314} - -[testenv:lint] -description = ruff linter -deps = - ruff -commands = ruff check . - -[testenv:type] -description = pyright type checker -deps = - pyright - pypandoc-binary - pytest - .[crypto-eth-addresses] -commands = pyright . - -[testenv:format] -description = code formatter -deps = - ruff -commands = ruff format . - -[testenv:sast] -deps = - bandit[toml] -commands = bandit -c pyproject.toml -r . - -[testenv] -description = unit tests -deps = - pytest - .[crypto-eth-addresses] -commands = pytest . -""" +requires = ["tox>=4.22"] +env_list = ["lint", "type", "format", "sast", "py311", "py312", "py313", "py314"] + +[tool.tox.env.lint] +description = "ruff linter" +deps = ["ruff"] +commands = [["ruff", "check", "."]] + +[tool.tox.env.type] +description = "pyright type checker" +deps = ["pyright", "pypandoc-binary", "pytest"] +extras = ["crypto-eth-addresses"] +commands = [["pyright", "."]] + +[tool.tox.env.format] +description = "code formatter" +deps = ["ruff"] +commands = [["ruff", "format", "."]] + +[tool.tox.env.sast] +description = "bandit security checks" +deps = ["bandit[toml]"] +commands = [["bandit", "-c", "pyproject.toml", "-r", "."]] + +[tool.tox.env_run_base] +description = "unit tests" +deps = ["pytest"] +extras = ["crypto-eth-addresses"] +commands = [["pytest", "."]]