parsl 2025.8.4__py3-none-any.whl → 2025.11.10__py3-none-any.whl
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.
- parsl/__init__.py +0 -4
- parsl/app/bash.py +1 -1
- parsl/benchmark/perf.py +73 -17
- parsl/concurrent/__init__.py +95 -14
- parsl/curvezmq.py +0 -16
- parsl/data_provider/globus.py +3 -1
- parsl/dataflow/dflow.py +107 -207
- parsl/dataflow/memoization.py +144 -31
- parsl/dataflow/states.py +5 -5
- parsl/executors/base.py +2 -2
- parsl/executors/execute_task.py +2 -8
- parsl/executors/flux/executor.py +4 -6
- parsl/executors/globus_compute.py +0 -4
- parsl/executors/high_throughput/executor.py +86 -25
- parsl/executors/high_throughput/interchange.py +55 -42
- parsl/executors/high_throughput/mpi_executor.py +1 -2
- parsl/executors/high_throughput/mpi_resource_management.py +7 -14
- parsl/executors/high_throughput/process_worker_pool.py +32 -7
- parsl/executors/high_throughput/zmq_pipes.py +36 -67
- parsl/executors/radical/executor.py +2 -6
- parsl/executors/radical/rpex_worker.py +2 -2
- parsl/executors/taskvine/executor.py +5 -1
- parsl/executors/threads.py +5 -2
- parsl/jobs/states.py +2 -2
- parsl/jobs/strategy.py +7 -6
- parsl/monitoring/db_manager.py +21 -23
- parsl/monitoring/monitoring.py +2 -2
- parsl/monitoring/radios/filesystem.py +2 -1
- parsl/monitoring/radios/htex.py +2 -1
- parsl/monitoring/radios/multiprocessing.py +2 -1
- parsl/monitoring/radios/udp.py +2 -1
- parsl/monitoring/radios/udp_router.py +2 -2
- parsl/monitoring/radios/zmq_router.py +2 -2
- parsl/multiprocessing.py +0 -49
- parsl/providers/base.py +24 -37
- parsl/providers/pbspro/pbspro.py +1 -1
- parsl/serialize/__init__.py +6 -9
- parsl/serialize/facade.py +0 -32
- parsl/tests/configs/local_threads_globus.py +18 -14
- parsl/tests/configs/taskvine_ex.py +1 -1
- parsl/tests/manual_tests/test_memory_limits.py +1 -1
- parsl/tests/sites/test_concurrent.py +51 -3
- parsl/tests/test_checkpointing/test_periodic.py +15 -9
- parsl/tests/test_checkpointing/test_python_checkpoint_1.py +6 -3
- parsl/tests/test_checkpointing/test_regression_233.py +0 -1
- parsl/tests/test_curvezmq.py +0 -42
- parsl/tests/test_execute_task.py +2 -11
- parsl/tests/test_htex/test_command_concurrency_regression_1321.py +54 -0
- parsl/tests/test_htex/test_htex.py +36 -1
- parsl/tests/test_htex/test_interchange_exit_bad_registration.py +2 -2
- parsl/tests/test_htex/test_priority_queue.py +26 -3
- parsl/tests/test_htex/test_zmq_binding.py +2 -1
- parsl/tests/test_mpi_apps/test_mpi_scheduler.py +18 -43
- parsl/tests/test_python_apps/test_basic.py +0 -14
- parsl/tests/test_python_apps/test_depfail_propagation.py +11 -1
- parsl/tests/test_python_apps/test_exception.py +19 -0
- parsl/tests/test_python_apps/test_garbage_collect.py +1 -6
- parsl/tests/test_python_apps/test_memoize_2.py +11 -1
- parsl/tests/test_python_apps/test_memoize_exception.py +41 -0
- parsl/tests/test_regression/test_3874.py +47 -0
- parsl/tests/test_scaling/test_regression_3696_oscillation.py +1 -0
- parsl/tests/test_staging/test_staging_globus.py +2 -2
- parsl/tests/test_utils/test_representation_mixin.py +53 -0
- parsl/tests/unit/test_globus_compute_executor.py +11 -2
- parsl/utils.py +11 -3
- parsl/version.py +1 -1
- {parsl-2025.8.4.data → parsl-2025.11.10.data}/scripts/interchange.py +55 -42
- {parsl-2025.8.4.data → parsl-2025.11.10.data}/scripts/process_worker_pool.py +32 -7
- {parsl-2025.8.4.dist-info → parsl-2025.11.10.dist-info}/METADATA +64 -50
- {parsl-2025.8.4.dist-info → parsl-2025.11.10.dist-info}/RECORD +76 -81
- {parsl-2025.8.4.dist-info → parsl-2025.11.10.dist-info}/WHEEL +1 -1
- parsl/tests/configs/local_threads_checkpoint_periodic.py +0 -11
- parsl/tests/configs/local_threads_no_cache.py +0 -11
- parsl/tests/site_tests/test_provider.py +0 -88
- parsl/tests/site_tests/test_site.py +0 -70
- parsl/tests/test_aalst_patterns.py +0 -474
- parsl/tests/test_docs/test_workflow2.py +0 -42
- parsl/tests/test_error_handling/test_rand_fail.py +0 -171
- parsl/tests/test_regression/test_854.py +0 -62
- parsl/tests/test_serialization/test_pack_resource_spec.py +0 -23
- {parsl-2025.8.4.data → parsl-2025.11.10.data}/scripts/exec_parsl_function.py +0 -0
- {parsl-2025.8.4.data → parsl-2025.11.10.data}/scripts/parsl_coprocess.py +0 -0
- {parsl-2025.8.4.dist-info → parsl-2025.11.10.dist-info}/entry_points.txt +0 -0
- {parsl-2025.8.4.dist-info → parsl-2025.11.10.dist-info/licenses}/LICENSE +0 -0
- {parsl-2025.8.4.dist-info → parsl-2025.11.10.dist-info}/top_level.txt +0 -0
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import multiprocessing
|
|
2
|
-
import random
|
|
3
|
-
import time
|
|
4
|
-
|
|
5
|
-
import pytest
|
|
6
|
-
|
|
7
|
-
from parsl.multiprocessing import MacSafeQueue
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def consumer(in_q, out_q, delay=0):
|
|
11
|
-
while True:
|
|
12
|
-
x = in_q.get()
|
|
13
|
-
time.sleep(delay)
|
|
14
|
-
if x == 'STOP':
|
|
15
|
-
out_q.put('STOPPED')
|
|
16
|
-
break
|
|
17
|
-
else:
|
|
18
|
-
out_q.put(x)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
@pytest.mark.local
|
|
22
|
-
def test_mac_safe_queue():
|
|
23
|
-
""" Regression test for HTEX being broken on Mac OS: https://github.com/Parsl/parsl/issues/854
|
|
24
|
-
This test doesn't test the fix on mac's however it tests a multiprocessing queue replacement
|
|
25
|
-
that is safe to run on Mac OS.
|
|
26
|
-
"""
|
|
27
|
-
task_q = MacSafeQueue()
|
|
28
|
-
result_q = MacSafeQueue()
|
|
29
|
-
|
|
30
|
-
p = multiprocessing.Process(target=consumer, args=(task_q, result_q,))
|
|
31
|
-
p.start()
|
|
32
|
-
for i in range(10):
|
|
33
|
-
task_q.put(i)
|
|
34
|
-
result_q.get()
|
|
35
|
-
task_q.put('STOP')
|
|
36
|
-
r = result_q.get()
|
|
37
|
-
assert r == 'STOPPED', "Did not get stopped confirmation, got:{}".format(r)
|
|
38
|
-
p.terminate()
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
@pytest.mark.local
|
|
42
|
-
def test_mac_safe_queue_size():
|
|
43
|
-
""" Regression test for HTEX being broken on Mac OS: https://github.com/Parsl/parsl/issues/854
|
|
44
|
-
This test doesn't test the fix on mac's however it tests a multiprocessing queue replacement
|
|
45
|
-
that is safe to run on Mac OS.
|
|
46
|
-
"""
|
|
47
|
-
task_q = MacSafeQueue()
|
|
48
|
-
result_q = MacSafeQueue()
|
|
49
|
-
|
|
50
|
-
x = random.randint(1, 100)
|
|
51
|
-
|
|
52
|
-
[task_q.put(i) for i in range(x)]
|
|
53
|
-
assert task_q.empty() is False, "Task queue should not be empty"
|
|
54
|
-
assert task_q.qsize() == x, "Task queue should be {}; instead got {}".format(x, task_q.qsize())
|
|
55
|
-
|
|
56
|
-
p = multiprocessing.Process(target=consumer, args=(task_q, result_q,))
|
|
57
|
-
p.start()
|
|
58
|
-
task_q.put('STOP')
|
|
59
|
-
p.join()
|
|
60
|
-
assert result_q.empty() is False, "Result queue should not be empty"
|
|
61
|
-
qlen = result_q.qsize()
|
|
62
|
-
assert qlen == x + 1, "Result queue should be {}; instead got {}".format(x + 1, qlen)
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import pytest
|
|
2
|
-
|
|
3
|
-
from parsl.serialize import pack_res_spec_apply_message, unpack_res_spec_apply_message
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def double(x: int, y: int = 2) -> int:
|
|
7
|
-
return x * y
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@pytest.mark.local
|
|
11
|
-
def test_pack_and_unpack():
|
|
12
|
-
args = (5,)
|
|
13
|
-
kwargs = {'y': 10}
|
|
14
|
-
resource_spec = {'num_nodes': 4}
|
|
15
|
-
packed = pack_res_spec_apply_message(double, args, kwargs, resource_specification=resource_spec)
|
|
16
|
-
|
|
17
|
-
unpacked = unpack_res_spec_apply_message(packed)
|
|
18
|
-
assert len(unpacked) == 4
|
|
19
|
-
u_fn, u_args, u_kwargs, u_res_spec = unpacked
|
|
20
|
-
assert u_fn == double
|
|
21
|
-
assert u_args == args
|
|
22
|
-
assert u_kwargs == kwargs
|
|
23
|
-
assert u_res_spec == resource_spec
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|