Skip to content

Commit 2d1448e

Browse files
authored
Merge pull request #247 from AgriculturalModelExchangeInitiative/pypackaging
Generate pyproject.toml rather than setup.py for Python Packages
2 parents d16a62e + 1b62870 commit 2d1448e

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

src/pycropml/cyml.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def transpile_package(package, language):
155155

156156
# create computing algorithm
157157
if language == "py":
158-
simulation = PythonSimulation(T.model)
158+
simulation = PythonSimulation(T.model, package_name=namep)
159159
simulation.generate()
160160
code = ''.join(simulation.result)
161161
filename = Path(os.path.join(tg_rep, "simulation.py"))
@@ -164,10 +164,13 @@ def transpile_package(package, language):
164164
tg_file.write(code.encode("utf-8"))
165165
with open(initfile, "wb") as tg_file:
166166
tg_file.write("".encode("utf-8"))
167-
setup = PythonSimulation(T.model)
168-
setup.generate_setup()
167+
168+
setup = PythonSimulation(T.model, package_name=namep)
169+
#setup.generate_setup()
170+
setup.generate_pyproject()
169171
code = ''.join(setup.result)
170-
setupfile = Path(os.path.join(tg_rep1, "setup.py"))
172+
#setupfile = Path(os.path.join(tg_rep1, "setup.py"))
173+
setupfile = Path(os.path.join(tg_rep1, "pyproject.toml"))
171174
with open(setupfile, "wb") as tg_file:
172175
tg_file.write(code.encode("utf-8"))
173176

src/pycropml/transpiler/generators/pythonGenerator.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -509,13 +509,14 @@ class PythonSimulation(CodeGenerator):
509509
PythonCompo ([type]): [description]
510510
"""
511511

512-
def __init__(self, modelcomposite):
512+
def __init__(self, modelcomposite, package_name=''):
513513
"""[summary]
514514
515515
Args:
516516
modelcomposite (ModelComposite): [description]
517517
"""
518518
self.modelcomposite = modelcomposite
519+
self.package_name = package_name if package_name else self.modelcomposite.name
519520
self.params = []
520521
self.variables = []
521522
self.stateInit = []
@@ -629,7 +630,7 @@ def generate(self):
629630
def generate_setup(self):
630631
self.write("import setuptools")
631632
self.newline(1)
632-
self.write("setuptools.setup(name='%s',"%self.modelcomposite.name)
633+
self.write("setuptools.setup(name='%s',"%self.package_name)
633634
self.newline(1)
634635
self.write("version='0.1',")
635636
self.newline(1)
@@ -648,6 +649,30 @@ def generate_setup(self):
648649
self.write("zip_safe=False)")
649650
self.newline(1)
650651

652+
def generate_pyproject(self):
653+
# use setuptools
654+
self.write('[build-system]')
655+
self.newline(1)
656+
self.write('requires = ["setuptools>=61", "setuptools_scm[toml]>=7"]')
657+
self.newline(1)
658+
self.write('build-backend = "setuptools.build_meta"')
659+
self.newline(1)
660+
661+
# project metainformation
662+
self.write('[project]')
663+
self.newline(1)
664+
self.write(f'name = "{self.package_name}"')
665+
self.newline(1)
666+
self.write('authors = [{name = "%s"}]'%(self.modelcomposite.description.Authors))
667+
self.newline(1)
668+
self.write(f'description="{self.modelcomposite.description.Abstract}"')
669+
self.newline(1)
670+
self.write('version="0.1"')
671+
self.newline(1)
672+
673+
# project dependencies
674+
self.write('dependencies = ["pandas","numpy"]')
675+
self.newline(1)
651676

652677

653678
def newtype_func(type_):

0 commit comments

Comments
 (0)