Tags: uniswap-python/uniswap-python
Tags
build(deps): bump minimum Python to 3.12, update deps, drop typed_ast (… …#473) * build(deps): bump Python to 3.12, drop typed_ast and ruff-replaced linters - Require Python ^3.12 (from ^3.7.2) - Drop typing-extensions: Concatenate/ParamSpec now in stdlib typing (3.10+) - Drop black and flake8: superseded by ruff (already in pre-commit config) - Bump pytest ^6 → ^8, Sphinx * → ^9 (requires Python 3.12) - Unpin pydata-sphinx-theme (sphinx-book-theme#711 long resolved) - Drop allow-prereleases on web3 (stable 6.x line is sufficient) - Loosen click ^8.0.3 → ^8 - Update build backend: poetry.masonry.api → poetry.core.masonry.api - CI: test and typecheck jobs now use Python 3.12 - Move [tool.ruff] → [tool.ruff.lint] (deprecation fix) - Silence unused _token_two variable (second-token approval was never wired up) Note: web3 7.x upgrade deferred (major async-first rewrite, breaking API changes). * ci: fix Poetry 2.x compat and bump docs to Python 3.12 - Remove deprecated 'installer.modern-installation' setting (removed in Poetry 2.0) - Bump docs.yml from Python 3.8 to 3.12 to match the new package floor (Python 3.8 + cytoolz 0.12.1 failed to build via Cython under PEP 517) * fix(makefile): replace flake8/black with ruff lint/format targets flake8 and black were removed as direct dependencies in the Python 3.12 dep bump; the Makefile still referenced them. Ruff already handles both roles. * fix(deps): add explicit floors for Python 3.12-incompatible Cython packages cytoolz 0.12.1, frozenlist 1.3.3, yarl 1.8.2, and multidict 6.0.4 all declare python-versions=>=3.6 but have no pre-built cp312 wheels, causing Cython compilation failures when installing under Python 3.12. Add explicit minimum constraints in pyproject.toml so poetry resolves to versions that ship cp312 wheels: - cytoolz >=0.12.3 (locked to 1.1.0) - frozenlist >=1.5.0 (locked to 1.8.0) - multidict >=6.0.5 (locked to 6.7.1) - yarl >=1.10.0 (locked to 1.24.5) propcache 0.5.2 added as a new transitive dep from yarl 1.24.5. * fix(deps): add aiohttp floor to unblock Python 3.12 CI aiohttp 3.8.4 (transitive via web3) has no cp312 wheels and fails to build from source on Python 3.12 — PyLongObject.ob_digit was removed in 3.12. Added aiohttp = ">=3.9.0" (first release with cp312 wheels) as a direct dependency constraint; poetry re-locked to 3.14.3 which ships cp312 wheels. This fixes all 6 failing CI jobs (build + 4 test matrix + typecheck). * fix(deps): pin setuptools<82 and bump doc theme versions for Python 3.12 CI Two independent CI failures after the Python 3.12 bump: - Test/typecheck jobs: eth-keyfile (pulled in via web3->eth-account) still imports pkg_resources, which setuptools dropped starting in 82.0.0 (last shipped in 81.0.0). eth-account>=0.12 fixes this upstream but requires hexbytes>=1.2.0, which conflicts with web3 6.x's hexbytes<0.4.0 pin — that needs the (deliberately deferred) web3 7.x migration. Pin setuptools<82 as a stopgap; also floor typing-extensions>=4.12.0, since 4.5.0 crashes under Python 3.12.13's stricter TypeVar base-class check (docs build failure). - Docs build: sphinx-book-theme was resolving to 0.0.11 (a 2020-era release, incompatible with Sphinx 9's theme API — missing 'get_edit_url'). Floor it to ^1.1, which also pulls a compatible pydata-sphinx-theme (0.20.0). Along the way, Sphinx 9 hard-fails on the old implicit-%s extlinks caption format ("issue #" -> "issue #%s"). Verified locally: full install, docs build (make html), pytest collection (250 tests), and mypy --pretty all pass in an isolated poetry venv. * fix(deps): add ruff as explicit dev dependency Makefile lint/format targets call `poetry run ruff` but ruff was absent from [tool.poetry.dev-dependencies]. A fresh `poetry install` would succeed without it, making `make lint` fail immediately. Lock file regenerated with Poetry 2.3.2 / Python 3.12.3.
PreviousNext