Skip to content

Commit f900e6b

Browse files
Update installation process.
1 parent f38674d commit f900e6b

File tree

2 files changed

+39
-28
lines changed

2 files changed

+39
-28
lines changed

setup.py

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,41 @@
11
from setuptools import setup, find_packages
22
from os.path import join
33

4-
packages = []
5-
packages_dir = {}
4+
PROJECT = 'SSD'
5+
PACKAGES = ['Core', 'SOFA']
66

7-
include_SOFA = True
8-
try:
9-
import Sofa
10-
except ImportError:
11-
include_SOFA = False
7+
packages = [f'{PROJECT}']
8+
packages_dir = {f'{PROJECT}': 'src'}
129

13-
project = 'SSD'
14-
roots = ['Core', 'SOFA'] if include_SOFA else ['Core']
15-
root_packages = ['storage', 'rendering']
10+
# Configure packages list and directories
11+
for package in find_packages(where='src'):
12+
packages.append(f'{PROJECT}.{package}')
13+
for package in PACKAGES:
14+
packages_dir[f'{PROJECT}.{package}'] = join('src', package)
1615

17-
for root in roots:
18-
packages.append(f'{project}.{root}')
19-
packages_dir[f'{project}.{root}'] = join('src', root)
20-
for package in find_packages(where=join('src', root)):
21-
packages.append(f'{project}.{root}.{package}')
22-
packages_dir[f'{project}.{root}.{package}'] = join('src', root, package)
16+
# Add examples as subpackages
17+
examples_dir = {'Core': ['storage', 'rendering'],
18+
'SOFA': ['storage', 'rendering', 'rendering-offscreen']}
19+
for package in PACKAGES:
20+
packages_dir[f'{PROJECT}.examples.{package}'] = join('examples', package)
21+
for example_dir in examples_dir[package]:
22+
packages.append(f'{PROJECT}.examples.{package}.{example_dir}')
2323

24-
examples = {'Core': ['storage', 'rendering'],
25-
'SOFA': ['storage', 'rendering', 'rendering-offscreen']}
26-
for root in roots:
27-
for repo in examples[root]:
28-
packages.append(f'{project}.examples.{root}.{repo}')
29-
packages_dir[f'{project}.examples.{root}.{repo}'] = join('examples', root, repo)
30-
31-
packages.append(f'{project}')
32-
packages_dir[f'{project}'] = 'src'
24+
# Extract README.md content
25+
with open('README.md') as f:
26+
long_description = f.read()
3327

28+
# Installation
3429
setup(name='SimulationSimpleDatabase',
35-
version='22.06',
30+
version='22.12',
3631
description='A simplified API to use SQL Databases with numerical simulation.',
32+
long_description=long_description,
33+
long_description_content_type='text/markdown',
3734
author='R. Enjalbert, A. Odot',
35+
author_email='robin.enjalbert@inria.fr',
3836
url='https://github.com/RobinEnjalbert/SimulationSimpleDatabase',
3937
packages=packages,
4038
package_dir=packages_dir,
41-
package_data={f'{project}.examples.Core.rendering': ['armadillo.obj']},
39+
package_data={f'{PROJECT}.examples.Core.rendering': ['armadillo.obj']},
4240
install_requires=['numpy', 'peewee', 'vedo'],
4341
entry_points={'console_scripts': ['SSD=SSD.cli:execute_cli']})

src/cli.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,12 @@ def execute_cli():
144144

145145
# Run a demo script
146146
if (example := args.run) is not None:
147+
147148
# Check the example name
148149
if example.lower() not in examples.keys():
149150
print(f"Unknown demo '{example}'.")
150151
quit(print_available_examples(examples))
152+
151153
# Get the example directory
152154
if not is_pip_installed():
153155
import SSD.Core
@@ -160,13 +162,25 @@ def execute_cli():
160162
print(f"The directory '{join(getcwd(), 'SSD_examples')}' does not exists.")
161163
copy_examples_dir()
162164
examples_dir = join(getcwd(), 'SSD_examples')
165+
166+
# Run the example
163167
if type(examples[example]) == str:
164168
root, repo, script, _ = examples[example].split('.')
169+
# Check SOFA installation
170+
if root == 'SOFA' and not is_SOFA_installed():
171+
quit(print(f"SOFA bindings were not found, unable to run {example} example "
172+
f"({join(root, repo, script)}.py)"))
173+
# Run example
165174
run([f'{executable}', f'{script}.py'], cwd=join(examples_dir, root, repo))
166175
else:
167176
root, repo, example_record, extension = examples[example][0].split('.')
168177
_, _, example_replay, _ = examples[example][1].split('.')
178+
# Check SOFA installation
179+
if root == 'SOFA' and not is_SOFA_installed():
180+
quit(print(f"SOFA bindings were not found, unable to run {example} example "
181+
f"({join(root, repo, example_record)}.py)"))
169182
chdir(join(examples_dir, root, repo))
183+
# Get user input between record and replay
170184
if example == 'caduceus':
171185
if not exists('caduceus.db'):
172186
print("Recording data in offscreen mode, please wait...")
@@ -181,7 +195,6 @@ def execute_cli():
181195
run([f'{executable}', f'{example_replay}.py'], cwd=join(examples_dir, root, repo))
182196
else:
183197
run([f'{executable}', f'{example_record}.py'], cwd=join(examples_dir, root, repo))
184-
return
185198

186199
# No command
187200
else:

0 commit comments

Comments
 (0)