Goal
Modernize packaging and project metadata so PharmaPy installs cleanly and follows current Python standards. Part of #3.
Problems today
Tasks
Acceptance criteria
pip install -e . and python -m build both succeed and produce a wheel that imports.
egg-info no longer tracked; git status clean after a build.
- Optional deps installable via
pip install -e ".[test]", ".[docs]".
Reference
Reverted PR #106 included a pyproject.toml, setup.cfg, MANIFEST.in, and split requirements files at commit 599ffb3 — reuse selectively, keeping this PR packaging-only.
Upstream PR
Wave 1 — isolated, high-acceptance. One focused upstream PR: pyproject.toml + remove committed egg-info + metadata. See #3.
Reverted PR provenance
This issue is part of the selective re-introduction of useful infrastructure from the reverted upstream work:
Implementation should stay small and reviewable, avoid repo-wide formatting, and preserve traceability through one focused PR per issue.
Goal
Modernize packaging and project metadata so PharmaPy installs cleanly and follows current Python standards. Part of #3.
Problems today
setup.py(PharmaPy/../setup.py):version='0.0.1'hardcoded, emptylicenseandurl, redundantpy_modules=["PharmaPy"]alongsidefind_packages().pyproject.toml(no PEP 517/518 build definition).PharmaPy/PharmaPy.egg-info/is tracked.requirements.txtis the only dependency source; no separation of runtime vs. test vs. docs deps; assimulo is a hard runtime dep (see Decouple the ODE/DAE solver behind an interface (assimulo optional, scipy fallback) #10, Relax dependency pins and enable Dependabot #9).MANIFEST.in, so packaged sdists may omit data files (data/, test CSV/JSON).Tasks
pyproject.tomlwith[build-system]and[project]metadata (name, version, license, authors, URLs,requires-python).[project.dependencies]and[project.optional-dependencies](test,docs,simulation/assimulo as an extra).PharmaPy.egg-info/from version control and add to.gitignore.MANIFEST.in(ortool.setuptools.package-data) so data files ship in sdists/wheels.license(the repo hasLICENSE.md) and projecturl.Acceptance criteria
pip install -e .andpython -m buildboth succeed and produce a wheel that imports.egg-infono longer tracked;git statusclean after a build.pip install -e ".[test]",".[docs]".Reference
Reverted PR #106 included a
pyproject.toml,setup.cfg,MANIFEST.in, and split requirements files at commit599ffb3— reuse selectively, keeping this PR packaging-only.Upstream PR
Wave 1 — isolated, high-acceptance. One focused upstream PR:
pyproject.toml+ remove committedegg-info+ metadata. See #3.Reverted PR provenance
This issue is part of the selective re-introduction of useful infrastructure from the reverted upstream work:
Implementation should stay small and reviewable, avoid repo-wide formatting, and preserve traceability through one focused PR per issue.