From 5128d684f19bf59690aa542ac056e6c6eda94cd1 Mon Sep 17 00:00:00 2001 From: Ashley Sommer Date: Sun, 21 Apr 2024 13:29:29 +1000 Subject: [PATCH] Put prez module's pyproject.toml _inside_ the built prez module in the wheel package, this allows the config builder to find it when prez is installed as a system module. Modify the config builder to search inside the prez module for pyproject.toml if there is not one in the project top directory (enables the above functionality). Also explicitly list all the files to include in a sdist, because should be different than the wheel bdist. --- prez/config.py | 21 ++++++++++++++++++--- pyproject.toml | 14 ++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/prez/config.py b/prez/config.py index db02415c..88320463 100644 --- a/prez/config.py +++ b/prez/config.py @@ -67,9 +67,24 @@ def get_version(cls, values): values["prez_version"] = version if version is None or version == "": - values["prez_version"] = toml.load( - Path(Path(__file__).parent.parent) / "pyproject.toml" - )["tool"]["poetry"]["version"] + possible_locations = ( + # dir above /prez, this is present in dev environments + # this is also used by derived projects to override the app version + Path(__file__).parent.parent, + # _inside_ /prez module, this is present in wheel builds + Path(__file__).parent, + ) + p: Path + for p in possible_locations: + if (p / "pyproject.toml").exists(): + values["prez_version"] = toml.load(p / "pyproject.toml")["tool"][ + "poetry" + ]["version"] + break + else: + raise RuntimeError( + "PREZ_VERSION not set, and cannot find a pyproject.toml to extract the version." + ) return values diff --git a/pyproject.toml b/pyproject.toml index 91363a86..0d1d52ad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,6 +3,20 @@ name = "prez" version = "0.1.0.dev0" description = "A python application for displaying linked data on the web" authors = ["Jamie Feiss ", "Nicholas Car ", "David Habgood "] +packages = [ + { include = "prez" }, + { include = "pyproject.toml", format = "wheel", to="prez" }, +] +include = [ + { path = "./*.md", format = "sdist" }, + { path = "LICENSE", format = "sdist" }, + { path = "demo", format = "sdist" }, + { path = "dev", format = "sdist" }, + { path = "tests", format = "sdist" }, + { path = "poetry.lock", format = "sdist" }, + { path = "./*.whl", format = "sdist" }, + { path = "*.toml", format = "sdist" } +] [tool.poetry.dependencies] python = "^3.11"