Euler source The code that runs the solver shell and this site, version 4.34.2 Repository on GitHub

The checkout is three packages and a content wheel, each with its own pyproject.toml.

36 lines of TOML Raw file Open on GitHub

# 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"]