Multiclass-interface 1.18__tar.gz → 1.19__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. {multiclass_interface-1.18 → multiclass_interface-1.19/Multiclass_interface.egg-info}/PKG-INFO +1 -1
  2. {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/scm_version.json +2 -2
  3. {multiclass_interface-1.18/Multiclass_interface.egg-info → multiclass_interface-1.19}/PKG-INFO +1 -1
  4. {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/mpi_interface.py +8 -2
  5. {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/test_mpi.py +30 -4
  6. {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/version.py +3 -3
  7. {multiclass_interface-1.18 → multiclass_interface-1.19}/.gitignore +0 -0
  8. {multiclass_interface-1.18 → multiclass_interface-1.19}/.gitlab-ci.yml +0 -0
  9. {multiclass_interface-1.18 → multiclass_interface-1.19}/LICENSE +0 -0
  10. {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/SOURCES.txt +0 -0
  11. {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/dependency_links.txt +0 -0
  12. {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/requires.txt +0 -0
  13. {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/scm_file_list.json +0 -0
  14. {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/top_level.txt +0 -0
  15. {multiclass_interface-1.18 → multiclass_interface-1.19}/README.md +0 -0
  16. {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/__init__.py +0 -0
  17. {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/multi_object_list.py +0 -0
  18. {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/multiprocess_interface.py +0 -0
  19. {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/__init__.py +0 -0
  20. {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/my_test_cls.py +0 -0
  21. {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/test_multiclass_list.py +0 -0
  22. {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/test_multiprocessinterface.py +0 -0
  23. {multiclass_interface-1.18 → multiclass_interface-1.19}/pyproject.toml +0 -0
  24. {multiclass_interface-1.18 → multiclass_interface-1.19}/sequence_diagrams.md +0 -0
  25. {multiclass_interface-1.18 → multiclass_interface-1.19}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Multiclass_interface
3
- Version: 1.18
3
+ Version: 1.19
4
4
  Summary: Multiclass interface
5
5
  Author-email: "Mads M. Pedersen" <mmpe@dtu.dk>
6
6
  Project-URL: Homepage, https://gitlab.windenergy.dtu.dk/DYNAMIKS/multiclass_interface
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "1.18",
2
+ "tag": "1.19",
3
3
  "distance": 0,
4
- "node": "gb934019843ac9640a5beae7880add16d3c7e3838",
4
+ "node": "g26b6778cd0dd2eedd49e1ca5a050e6c18834fc8d",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-10-23"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Multiclass_interface
3
- Version: 1.18
3
+ Version: 1.19
4
4
  Summary: Multiclass interface
5
5
  Author-email: "Mads M. Pedersen" <mmpe@dtu.dk>
6
6
  Project-URL: Homepage, https://gitlab.windenergy.dtu.dk/DYNAMIKS/multiclass_interface
@@ -258,7 +258,10 @@ def bcast_function_result(f):
258
258
  def wrapper(*args, **kwargs):
259
259
  if mpi:
260
260
  try:
261
- v = f(*args, **kwargs)[0]
261
+ v = f(*args, **kwargs)
262
+ if not isinstance(v, list):
263
+ v = [v]
264
+ v = v[0]
262
265
  except ChildProcessError:
263
266
  v = None
264
267
 
@@ -267,7 +270,10 @@ def bcast_function_result(f):
267
270
  # broadcast the full list to all workers
268
271
  return comm.bcast(v, root=0)
269
272
  else:
270
- return f(*args, **kwargs)
273
+ v = f(*args, **kwargs)
274
+ if not isinstance(v, list):
275
+ v = [v]
276
+ return v
271
277
  return wrapper
272
278
 
273
279
 
@@ -145,14 +145,40 @@ def test_non_collective_mpi2():
145
145
  m.object.cls
146
146
 
147
147
 
148
- def test_non_collective_mpi2_no_mpi():
149
- N = 3
148
+ @pytest.mark.parametrize('N', [1, 3])
149
+ def test_bcast_function_result_mci(N):
150
150
  with MultiClassInterface(MyTest, [(i + 10,) for i in range(N)]) as m:
151
151
 
152
152
  id_lst = mpi_interface.bcast_function_result(lambda: m.get_id())()
153
- assert id_lst == [10, 11, 12], id_lst
153
+ assert id_lst == [10, 11, 12][:N], id_lst
154
+ id_lst = mpi_interface.bcast_function_result(lambda: m.return_input(['a', 'b', 'c'][:N]))()
155
+ assert id_lst == ["10 got: ('a',) and {}", "11 got: ('b',) and {}", "12 got: ('c',) and {}"][:N], id_lst
156
+
157
+ assert mpi_interface.bcast_function_result(lambda: 0)() == [0]
158
+
159
+
160
+ @mpi_run_test
161
+ def test_bcast_function_result_mpi1():
162
+ mpi_interface.activate_mpi(collective_mpi=False)
163
+ with MPIClassInterface(MyTest, [(i + 10,) for i in range(1)]) as m:
164
+ id_lst = mpi_interface.bcast_function_result(lambda: m.get_id())()
165
+ assert id_lst == [10, None, None, None], id_lst
166
+ id_lst = mpi_interface.bcast_function_result(lambda: m.return_input(['a']))()
167
+ assert id_lst == ["10 got: ('a',) and {}", None, None, None], id_lst
168
+
169
+ assert mpi_interface.bcast_function_result(lambda: mpi_interface.rank)() == [0, 1, 2, 3]
170
+
171
+
172
+ @mpi_run_test
173
+ def test_bcast_function_result_mpi3():
174
+ mpi_interface.activate_mpi(collective_mpi=False)
175
+ with MPIClassInterface(MyTest, [(i + 10,) for i in range(3)]) as m:
176
+ id_lst = mpi_interface.bcast_function_result(lambda: m.get_id())()
177
+ assert id_lst == [10, 11, 12, None], id_lst
154
178
  id_lst = mpi_interface.bcast_function_result(lambda: m.return_input(['a', 'b', 'c']))()
155
- assert id_lst == ["10 got: ('a',) and {}", "11 got: ('b',) and {}", "12 got: ('c',) and {}"], id_lst
179
+ assert id_lst == ["10 got: ('a',) and {}", "11 got: ('b',) and {}", "12 got: ('c',) and {}", None], id_lst
180
+
181
+ assert mpi_interface.bcast_function_result(lambda: mpi_interface.rank)() == [0, 1, 2, 3]
156
182
 
157
183
 
158
184
  @mpi_run_test(4)
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.18'
22
- __version_tuple__ = version_tuple = (1, 18)
21
+ __version__ = version = '1.19'
22
+ __version_tuple__ = version_tuple = (1, 19)
23
23
 
24
- __commit_id__ = commit_id = 'gb93401984'
24
+ __commit_id__ = commit_id = 'g26b6778cd'