Development tooling#
This page tracks the software-development tooling used across QuantEcon’s actively-developed
code repositories — the themes (quantecon-book-theme, quantecon-theme-src) and packages
(QuantEcon.py). It is a living index: when we adopt, drop, or change a tool, update the table here so
there is a single place to see what we test, lint, and build with.
Note
This page is about the tooling used to develop our code repositories. It is distinct from:
the build / publishing toolchain for lectures — see Software used by QuantEcon;
the CI/CD workflows themselves — see GitHub Actions Workflows.
QuantEcon’s lecture content repositories (e.g. lecture-python.myst, lecture-dp) carry almost none
of the tooling below — their “test” is the Jupyter Book build itself, run with --warningiserror through
the quantecon/actions library. The tools on this page apply
to the repositories that ship code (Python / TypeScript), where unit tests, linters, and formatters
matter.
Testing#
Tool |
Used in |
Purpose |
|---|---|---|
Playwright ( |
|
Visual-regression testing of the themes — screenshot a fixture site and diff against committed baselines. See Visual regression testing. |
pytest ( |
|
Python unit / build-output regression tests |
|
Task runner and test-matrix driver (e.g. |
Linting & formatting#
Tool |
Used in |
Purpose |
|---|---|---|
|
Orchestrates the hooks below on each commit ( |
|
|
Python code formatter |
|
|
Python linter |
|
|
Formats |
|
|
TypeScript / React linting ( |
|
TypeScript ( |
|
Type-checking, run in CI as |
Build & bundling#
Tool |
Used in |
Purpose |
|---|---|---|
sphinx-theme-builder ( |
|
Compiles the Sphinx theme and its web assets |
webpack + npm |
|
Bundles the theme’s JS / SCSS ( |
Remix + Tailwind CSS + npm |
|
Builds the runtime MyST theme ( |
CI & coverage#
Tool |
Used in |
Purpose |
|---|---|---|
All |
Runs the tests, linters, and builds above. See GitHub Actions Workflows. |
|
|
Coverage reporting on pull requests |
|
|
Deploys the fixtures site as a PR preview so reviewers can eyeball the theme |
Version pinning#
Tool versions are pinned so local runs match CI:
Node — an
.nvmrcin each theme repo pins the Node version (nvm useto match); CI reads the same file.quantecon-book-themeadditionally pinsnode-versioninpyproject.tomlforsphinx-theme-builder.Python —
requires-pythoninpyproject.toml, with the supported matrix expressed intox.ini/ the CI workflow.Build dependencies for lectures are pinned separately in the shared quantecon environment.
Tip
Keep this table in sync with reality. If you add a linter, swap a test runner, or retire a tool in one of the code repositories, edit the relevant section above in the same PR so the manual does not drift.