Skip to content

Commit b3dbc2d

Browse files
fredroyepernod
andauthored
[Python] Remove hard dependecy to tqdm if progress bar are not needed (#108)
Co-authored-by: erik pernod <erik.pernod@gmail.com>
1 parent f8e80d1 commit b3dbc2d

4 files changed

Lines changed: 44 additions & 14 deletions

File tree

SofaRegressionProgram.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import sys
44
import numpy as np
55

6-
from tqdm import tqdm
7-
86
if "SOFA_ROOT" not in os.environ:
97
print('SOFA_ROOT environment variable has not been detected, quitting.')
108
exit(1)
@@ -15,6 +13,7 @@
1513
import Sofa
1614
import SofaRuntime # importing SofaRuntime will add the py3 loader to the scene loaders
1715
import tools.RegressionSceneList as RegressionSceneList
16+
from tools import ProgressBarHandler as pbh
1817

1918
regression_file_extension = ".regression-tests"
2019

@@ -60,15 +59,17 @@ def write_sets_references(self, id_set=0):
6059

6160
def write_all_sets_references(self):
6261
nbr_sets = len(self.scene_sets)
63-
pbar_sets = tqdm(total=nbr_sets, disable=self.disable_progress_bar)
62+
63+
pbar_sets = pbh.ProgressBarHandler(total=self.nbr_sets, disable=args.disable_progress_bar)
6464
pbar_sets.set_description("Write All sets")
6565

6666
nbr_scenes = 0
6767
for i in range(0, nbr_sets):
6868
nbr_scenes = nbr_scenes + self.write_sets_references(i)
6969
pbar_sets.update(1)
7070

71-
pbar_sets.close()
71+
if not self.disable_progress_bar:
72+
pbar_sets.close()
7273

7374
return nbr_scenes
7475

@@ -80,7 +81,7 @@ def compare_sets_references(self, id_set=0):
8081

8182
def compare_all_sets_references(self):
8283
nbr_sets = len(self.scene_sets)
83-
pbar_sets = tqdm(total=nbr_sets, disable=self.disable_progress_bar)
84+
pbar_sets = pbh.ProgressBarHandler(total=nbr_sets, disable=self.disable_progress_bar)
8485
pbar_sets.set_description("Compare All sets")
8586

8687
nbr_scenes = 0

tools/ProgressBarHandler.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
class ProgressBarHandler:
3+
def __init__(self, total, disable = False):
4+
self.enable_progress_bar = not disable
5+
self.description = ""
6+
7+
if self.enable_progress_bar:
8+
try:
9+
from tqdm import tqdm
10+
self.tqdm_object = tqdm(total=total)
11+
except ModuleNotFoundError:
12+
print('warning: tqdm is needed if you want to enable progress bars.')
13+
self.enable_progress_bar = False
14+
self.tqdm_object = None
15+
16+
def set_description(self, description):
17+
if self.enable_progress_bar:
18+
self.tqdm_object.set_description(description)
19+
20+
def update(self, nb_step):
21+
if self.enable_progress_bar:
22+
self.tqdm_object.update(nb_step)
23+
24+
def close(self):
25+
if self.enable_progress_bar:
26+
self.tqdm_object.close()

tools/RegressionSceneData.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import time
2-
3-
from tqdm import tqdm
42
import numpy as np
53
import pathlib
64

75
import tools.ReferenceFileIO as reference_io
86
import tools.RegressionHelper as helper
97
import Sofa
108

9+
from tools import ProgressBarHandler as pbh
10+
11+
1112
def is_simulated(node):
1213
if node.hasODESolver():
1314
return True
@@ -173,7 +174,7 @@ def load_scene(self, format = "JSON"):
173174

174175

175176
def write_references(self, format = "JSON"):
176-
pbar_simu = tqdm(total=self.steps, disable=self.disable_progress_bar)
177+
pbar_simu = pbh.ProgressBarHandler(total=self.steps, disable=self.disable_progress_bar)
177178
pbar_simu.set_description("Simulate: " + self.file_scene_path)
178179

179180
# compute stepping parameters for the simulation
@@ -231,7 +232,7 @@ def write_references(self, format = "JSON"):
231232

232233

233234
def compare_references(self, format = "JSON"):
234-
pbar_simu = tqdm(total=float(self.steps), disable=self.disable_progress_bar)
235+
pbar_simu = pbh.ProgressBarHandler(total=float(self.steps), disable=self.disable_progress_bar)
235236
pbar_simu.set_description("compare_references: " + self.file_scene_path)
236237

237238
nbr_meca = len(self.meca_objs)
@@ -382,7 +383,7 @@ def compare_references(self, format = "JSON"):
382383

383384

384385
def compare_legacy_references(self):
385-
pbar_simu = tqdm(total=float(self.steps), disable=self.disable_progress_bar)
386+
pbar_simu = pbh.ProgressBarHandler(total=float(self.steps), disable=self.disable_progress_bar)
386387
pbar_simu.set_description("compare_legacy_references: " + self.file_scene_path)
387388

388389
nbr_meca = len(self.meca_objs)

tools/RegressionSceneList.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import os
22
import tools.RegressionSceneData as RegressionSceneData
33
import tools.RegressionHelper as helper
4-
from tqdm import tqdm
5-
import re
4+
from tools import ProgressBarHandler as pbh
65

6+
import re
77

88
## This class is responsible for loading a file.regression-tests to gather the list of scene to test with all arguments
99
## It will provide the API to launch the tests or write refs on all scenes contained in this file
@@ -108,12 +108,14 @@ def write_references(self, id_scene, print_log = False):
108108

109109
def write_all_references(self):
110110
nbr_scenes = len(self.scenes_data_sets)
111-
pbar_scenes = tqdm(total=nbr_scenes, disable=self.disable_progress_bar)
111+
112+
pbar_scenes = pbh.ProgressBarHandler(total=self.nbr_scenes, disable=self.disable_progress_bar)
112113
pbar_scenes.set_description("Write all scenes from: " + self.file_path)
113114

114115
for i in range(0, nbr_scenes):
115116
self.write_references(i)
116117
pbar_scenes.update(1)
118+
117119
pbar_scenes.close()
118120

119121
return nbr_scenes
@@ -140,7 +142,7 @@ def compare_references(self, id_scene):
140142

141143
def compare_all_references(self):
142144
nbr_scenes = len(self.scenes_data_sets)
143-
pbar_scenes = tqdm(total=nbr_scenes, disable=self.disable_progress_bar)
145+
pbar_scenes = pbh.ProgressBarHandler(total=nbr_scenes, disable=self.disable_progress_bar)
144146
pbar_scenes.set_description("Compare all scenes from: " + self.file_path)
145147

146148
for i in range(0, nbr_scenes):

0 commit comments

Comments
 (0)