From 064a5dc1fc6cfdfbc326199e62168ae74a723d0c Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Mon, 27 May 2024 11:54:34 -0700 Subject: [PATCH 1/3] setup.py: Build op-tables.json as part of 'build_py' --- pyproject.toml | 5 ++++- setup.py | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 92b5262ac..5d209e0b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,11 @@ [build-system] requires = [ "setuptools>=61.2", - "cython>=0.15.1; implementation_name!='pypy'" + "cython>=0.15.1; implementation_name!='pypy'", + # For mathics-generate-json-table + "Mathics-Scanner >= 1.3.0", ] +build-backend = "setuptools.build_meta" [project] name = "Mathics3" diff --git a/setup.py b/setup.py index c57d0b45f..5d74e9292 100644 --- a/setup.py +++ b/setup.py @@ -34,6 +34,7 @@ import sys from setuptools import Extension, setup +from setuptools.command.build_py import build_py as setuptools_build_py log = logging.getLogger(__name__) @@ -97,6 +98,24 @@ def get_srcdir(): CMDCLASS = {"build_ext": build_ext} +class build_py(setuptools_build_py): + def run(self): + os.system( + "mathics-generate-json-table" + " --field=ascii-operator-to-symbol" + " --field=ascii-operator-to-unicode" + " --field=ascii-operator-to-wl-unicode" + " --field=operator-to-ascii" + " --field=operator-to-unicode" + " -o mathics/data/op-tables.json" + ) + self.distribution.package_data["mathics"].append("data/op-tables.json") + setuptools_build_py.run(self) + + +CMDCLASS["build_py"] = build_py + + setup( cmdclass=CMDCLASS, ext_modules=EXTENSIONS, From 22ade2db8353eb2c980df4082272cc02037d2603 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Mon, 27 May 2024 12:21:17 -0700 Subject: [PATCH 2/3] pyproject.toml: Replace incomplete package list by setuptools package discovery --- pyproject.toml | 43 +++---------------------------------------- 1 file changed, 3 insertions(+), 40 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5d209e0b9..06090fa23 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -79,46 +79,9 @@ mathics = "mathics.main:main" [tool.setuptools] include-package-data = false -packages = [ - "mathics", - "mathics.algorithm", - "mathics.compile", - "mathics.core", - "mathics.core.convert", - "mathics.core.parser", - "mathics.builtin", - "mathics.builtin.arithfns", - "mathics.builtin.assignments", - "mathics.builtin.atomic", - "mathics.builtin.binary", - "mathics.builtin.box", - "mathics.builtin.colors", - "mathics.builtin.distance", - "mathics.builtin.exp_structure", - "mathics.builtin.drawing", - "mathics.builtin.fileformats", - "mathics.builtin.files_io", - "mathics.builtin.forms", - "mathics.builtin.functional", - "mathics.builtin.image", - "mathics.builtin.intfns", - "mathics.builtin.list", - "mathics.builtin.matrices", - "mathics.builtin.numbers", - "mathics.builtin.numpy_utils", - "mathics.builtin.pymimesniffer", - "mathics.builtin.pympler", - "mathics.builtin.quantum_mechanics", - "mathics.builtin.scipy_utils", - "mathics.builtin.specialfns", - "mathics.builtin.statistics", - "mathics.builtin.string", - "mathics.builtin.testing_expressions", - "mathics.builtin.vectors", - "mathics.eval", - "mathics.doc", - "mathics.format", -] + +[tool.setuptools.packages.find] +include = ["mathics*"] [tool.setuptools.package-data] "mathics" = [ From 6557a2443f492bb5e316ef4a2301be4098133e51 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Mon, 27 May 2024 13:02:22 -0700 Subject: [PATCH 3/3] setup.py: Only generate mathics/data/op-tables.json if it does not exist already --- setup.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/setup.py b/setup.py index 5d74e9292..0a8cd85f7 100644 --- a/setup.py +++ b/setup.py @@ -100,15 +100,16 @@ def get_srcdir(): class build_py(setuptools_build_py): def run(self): - os.system( - "mathics-generate-json-table" - " --field=ascii-operator-to-symbol" - " --field=ascii-operator-to-unicode" - " --field=ascii-operator-to-wl-unicode" - " --field=operator-to-ascii" - " --field=operator-to-unicode" - " -o mathics/data/op-tables.json" - ) + if not os.path.exists("mathics/data/op-tables.json"): + os.system( + "mathics-generate-json-table" + " --field=ascii-operator-to-symbol" + " --field=ascii-operator-to-unicode" + " --field=ascii-operator-to-wl-unicode" + " --field=operator-to-ascii" + " --field=operator-to-unicode" + " -o mathics/data/op-tables.json" + ) self.distribution.package_data["mathics"].append("data/op-tables.json") setuptools_build_py.run(self)