# The checkout is three packages and a content wheel (docs/package-guide.md), each with its own# pyproject.toml:## packages/solver/pyproject.toml euler-solver import solver the solver shell# packages/site/pyproject.toml euler-site import euler_site the content site + auth# packages/webshell/pyproject.toml euler-webshell import euler_webshell the web shell + spool# packages/content/pyproject.toml euler-content import euler_content the published content (staged by scripts/content/stage.py)## This file is no package. It records the system setup the packages need before `pip install`.# System-level dependencies (apt) required before `pip install`.# Install with: ./scripts/setup_dev_env.sh install python primesieve c## python — Python 3.14 runtime + venv (via ppa:deadsnakes/ppa)# primesieve — primesieve, libprimesieve-dev (required to build primesieve)# c — gcc, build-essential, etc. (required to compile C extensions)[tool.setup.system-dependencies]script="./scripts/setup/dev_env.sh"targets=["python","primesieve","c"]apt=["python3.14","python3.14-dev","python3.14-venv","primesieve","libprimesieve-dev","build-essential","gcc",]# Post-install build of the optional `primesieve.numpy` extension.# The PyPI sdist ships a NumPy-1.x-era pre-generated C++ that won't compile under# NumPy 2.x, so the extension is re-Cythonized and installed from source.# Run with: ./scripts/setup/primesieve_numpy_extension.sh install[tool.setup.primesieve-numpy]script="./scripts/setup/primesieve_numpy_extension.sh"actions=["install","check","uninstall"]