Demos framework, CI gate, and pyproject.toml consolidation (v3.4.0) - #30
Merged
Conversation
…st gate - Numbered V3 demo flow (01_register_v3 → 20_ws_account_v3) wired through tests/_common.py factories; each demo reads config from .env so users don't edit source files. - Move V1/V2 demos to tests/legacy/ with their own README. - tests/test_demos_smoke.py parses every numbered demo and exercises the helper factories with no network access. - tests/test_sdk_regressions.py pins invariants previously broken by refactors (change_pub_key_v3 on HttpPrivate_v3, lazy-load of accountV3/configV3 inside create_order_v3). - .env.example documents every variable the demos read. - README links updated to the new numbered demo paths.
- pyproject.toml is now the single source of truth for project metadata, dependencies, extras (demos / tests), pytest config, and tool settings. - Remove setup.py, setup.cfg, tox.ini — all silently shadowed by pyproject.toml's [project] table under PEP 621 / modern setuptools, which made the previous three-way drift between install_requires lists invisible. - Drop pytest / tox / requests-mock from install_requires (none of them are runtime deps); pytest moves to the `tests` extra. - Drop eip712-tools==0.1.1 — package is not on PyPI and never imported by apexomni/. - Add numpy (used by apexomni/http_private_sign.py — was a phantom install_requires miss). - Add mnemonic (setup.py was missing it). - Pin setuptools<81 — web3==6.0.0 imports pkg_resources at module load, which setuptools 81+ removed. Without this, Python 3.12 installs fail with ModuleNotFoundError: pkg_resources. - Tighten requires-python from >=3.6 to >=3.9; drop py36/37/38 classifiers; wheel now tags py3-none-any instead of the incorrect py2.py3-none-any from universal=1. - Single Makefile gate (make test) is invoked by both the local pre-push hook (.githooks/pre-push) and CI (.github/workflows/ci.yml) — the two cannot drift apart. - CI matrix: Python 3.9 / 3.10 / 3.11 / 3.12.
Minor bump for the demos + CI + pyproject.toml consolidation landed in the previous two commits. Notable user-visible changes that don't fit a patch bump: - requires-python tightened to >=3.9 (3.6/3.7/3.8 are EOL) - pytest / tox / requests-mock removed from install_requires; pytest now lives in the `tests` extra - eip712-tools dropped (phantom dep — never on PyPI) - numpy and pinned setuptools<81 added so installs actually work on a clean environment - wheel tag fixed to py3-none-any
joshlin111
force-pushed
the
feat/demo-and-ci
branch
from
June 29, 2026 03:29
39669a2 to
edba6ff
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three logical commits on top of
main:01_register_v3→20_ws_account_v3) wired throughtests/_common.pyfactories that read config from.env. Legacy V1/V2 demos moved totests/legacy/. Adds offline smoke tests (every numbered demo AST-parses, factories instantiate) and regression tests pinning two invariants that have broken before (change_pub_key_v3class membership, lazy-load insidecreate_order_v3).pyproject.tomlbecomes the single source of truth for project metadata, dependencies, extras, pytest config, and tool settings. Removessetup.py/setup.cfg/tox.ini/pytest.ini— all silently shadowed bypyproject.toml's[project]table under PEP 621, which made the three-way drift between dep lists invisible. Drops deadpytest/tox/requests-mock/eip712-toolsfrominstall_requires. Addsmake testgate invoked by both the local.githooks/pre-pushhook and.github/workflows/ci.ymlso the two cannot drift.3.4.0.Breaking changes (vs 3.3.1)
requires-pythontightened to>=3.9(3.6/3.7/3.8 are EOL).pytest/tox/requests-mockremoved frominstall_requires;pytestnow lives in thetestsextra.eip712-tools==0.1.1removed — the package is not on PyPI and is never imported byapexomni/, so userspip install apexomni-ing prior versions were hitting a hard error or silently relying on a cached wheel. This restores installability on a clean environment.py2.py3-none-any(incorrect) topy3-none-any.Test plan
make testpasses locally (34/34) on Python 3.9 via the project venvpython -m build --wheelproduces a wheel with the cleaned-upRequires-Distlist and correctpy3-none-anytag