diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index 4036c7b..a663664 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -14,7 +14,6 @@ requirements: - python - flit - run: - python - jinja2 diff --git a/pyproject.toml b/pyproject.toml index e9f31aa..c5574d9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,12 +19,12 @@ classifiers = [ description-file="README.md" requires = [ "jinja2", - "ruamel_yaml", + "ruamel_yaml<0.18", # the code is not compatible with ruamel 0.18 "matplotlib", "pandas", "pygments", "blessings", - "dask", + "dask[distributed]", ] [tool.flit.metadata.requires-extra] @@ -32,4 +32,6 @@ test = [ "pytest", "hypothesis", ] - +dashboard = [ + "bokeh!=3.0.*,>=2.4.2" +] diff --git a/src/reportengine/resourcebuilder.py b/src/reportengine/resourcebuilder.py index c0f01bf..94ee80e 100644 --- a/src/reportengine/resourcebuilder.py +++ b/src/reportengine/resourcebuilder.py @@ -43,9 +43,9 @@ class DefaultStylePlugin(WorkerPlugin): Class used to set style for each dask worker """ - def __init__(self, style, default_style): - self.style = style - self.default_style = default_style + def __init__(self, style = None, default_style = None): + self.style = style if style is not None else "default" + self.default_style = default_style if default_style is not None else "default" def setup(self, worker): from matplotlib import style @@ -238,9 +238,12 @@ def execute_parallel(self, scheduler=None): """ log.info("Initializing dask.distributed Client") - plugin = DefaultStylePlugin( - style=self.environment.style, default_style=self.environment.default_style - ) + if self.environment is not None: + plugin = DefaultStylePlugin( + style=self.environment.style, default_style=self.environment.default_style + ) + else: + plugin = DefaultStylePlugin() if not scheduler: # the deefault distributed logger is too noisy. Limit it here since diff --git a/src/reportengine/tests/test_builder.py b/src/reportengine/tests/test_builder.py index e95e3d5..c00c56c 100644 --- a/src/reportengine/tests/test_builder.py +++ b/src/reportengine/tests/test_builder.py @@ -162,7 +162,8 @@ def test_collect(self): d = namespaces.resolve(builder.rootns, [('lists',1)]) assert d['restaurant_collect'] == list("123") builder.execute_parallel() - assert namespaces.resolve(builder.rootns, ('UK',))['score'] == -1 + # since it is using dask it returns a future + assert namespaces.resolve(builder.rootns, ('UK',))['score'].result() == -1 def test_collect_raises(self): with self.assertRaises(TypeError): diff --git a/src/reportengine/tests/test_executor.py b/src/reportengine/tests/test_executor.py index 7066ded..ca056d5 100644 --- a/src/reportengine/tests/test_executor.py +++ b/src/reportengine/tests/test_executor.py @@ -76,10 +76,13 @@ def nsspec(x, beginning=()): self.graph.add_node(mcall, inputs={gcall, hcall}) - def _test_ns(self): + def _test_ns(self, promise=False): mresult = 'fresult: 4'*10 namespace = self.rootns - self.assertEqual(namespace['mresult'], mresult) + if promise: + self.assertEqual(namespace['mresult'].result(), mresult) + else: + self.assertEqual(namespace['mresult'], mresult) def test_seq_execute(self): @@ -88,7 +91,7 @@ def test_seq_execute(self): def test_parallel_execute(self): self.execute_parallel() - self._test_ns() + self._test_ns(promise=True) if __name__ =='__main__': - unittest.main() \ No newline at end of file + unittest.main()