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.
- {multiclass_interface-1.18 → multiclass_interface-1.19/Multiclass_interface.egg-info}/PKG-INFO +1 -1
- {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/scm_version.json +2 -2
- {multiclass_interface-1.18/Multiclass_interface.egg-info → multiclass_interface-1.19}/PKG-INFO +1 -1
- {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/mpi_interface.py +8 -2
- {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/test_mpi.py +30 -4
- {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/version.py +3 -3
- {multiclass_interface-1.18 → multiclass_interface-1.19}/.gitignore +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/.gitlab-ci.yml +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/LICENSE +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/SOURCES.txt +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/dependency_links.txt +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/requires.txt +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/scm_file_list.json +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/top_level.txt +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/README.md +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/__init__.py +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/multi_object_list.py +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/multiprocess_interface.py +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/__init__.py +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/my_test_cls.py +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/test_multiclass_list.py +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/test_multiprocessinterface.py +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/pyproject.toml +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/sequence_diagrams.md +0 -0
- {multiclass_interface-1.18 → multiclass_interface-1.19}/setup.cfg +0 -0
{multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/mpi_interface.py
RENAMED
|
@@ -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)
|
|
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
|
-
|
|
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
|
|
{multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/test_mpi.py
RENAMED
|
@@ -145,14 +145,40 @@ def test_non_collective_mpi2():
|
|
|
145
145
|
m.object.cls
|
|
146
146
|
|
|
147
147
|
|
|
148
|
-
|
|
149
|
-
|
|
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.
|
|
22
|
-
__version_tuple__ = version_tuple = (1,
|
|
21
|
+
__version__ = version = '1.19'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 19)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g26b6778cd'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/requires.txt
RENAMED
|
File without changes
|
|
File without changes
|
{multiclass_interface-1.18 → multiclass_interface-1.19}/Multiclass_interface.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/multi_object_list.py
RENAMED
|
File without changes
|
|
File without changes
|
{multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/__init__.py
RENAMED
|
File without changes
|
{multiclass_interface-1.18 → multiclass_interface-1.19}/multiclass_interface/tests/my_test_cls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|