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.
Files changed (85) hide show
  1. parsl/__init__.py +0 -4
  2. parsl/app/bash.py +1 -1
  3. parsl/benchmark/perf.py +73 -17
  4. parsl/concurrent/__init__.py +95 -14
  5. parsl/curvezmq.py +0 -16
  6. parsl/data_provider/globus.py +3 -1
  7. parsl/dataflow/dflow.py +107 -207
  8. parsl/dataflow/memoization.py +144 -31
  9. parsl/dataflow/states.py +5 -5
  10. parsl/executors/base.py +2 -2
  11. parsl/executors/execute_task.py +2 -8
  12. parsl/executors/flux/executor.py +4 -6
  13. parsl/executors/globus_compute.py +0 -4
  14. parsl/executors/high_throughput/executor.py +86 -25
  15. parsl/executors/high_throughput/interchange.py +55 -42
  16. parsl/executors/high_throughput/mpi_executor.py +1 -2
  17. parsl/executors/high_throughput/mpi_resource_management.py +7 -14
  18. parsl/executors/high_throughput/process_worker_pool.py +32 -7
  19. parsl/executors/high_throughput/zmq_pipes.py +36 -67
  20. parsl/executors/radical/executor.py +2 -6
  21. parsl/executors/radical/rpex_worker.py +2 -2
  22. parsl/executors/taskvine/executor.py +5 -1
  23. parsl/executors/threads.py +5 -2
  24. parsl/jobs/states.py +2 -2
  25. parsl/jobs/strategy.py +7 -6
  26. parsl/monitoring/db_manager.py +21 -23
  27. parsl/monitoring/monitoring.py +2 -2
  28. parsl/monitoring/radios/filesystem.py +2 -1
  29. parsl/monitoring/radios/htex.py +2 -1
  30. parsl/monitoring/radios/multiprocessing.py +2 -1
  31. parsl/monitoring/radios/udp.py +2 -1
  32. parsl/monitoring/radios/udp_router.py +2 -2
  33. parsl/monitoring/radios/zmq_router.py +2 -2
  34. parsl/multiprocessing.py +0 -49
  35. parsl/providers/base.py +24 -37
  36. parsl/providers/pbspro/pbspro.py +1 -1
  37. parsl/serialize/__init__.py +6 -9
  38. parsl/serialize/facade.py +0 -32
  39. parsl/tests/configs/local_threads_globus.py +18 -14
  40. parsl/tests/configs/taskvine_ex.py +1 -1
  41. parsl/tests/manual_tests/test_memory_limits.py +1 -1
  42. parsl/tests/sites/test_concurrent.py +51 -3
  43. parsl/tests/test_checkpointing/test_periodic.py +15 -9
  44. parsl/tests/test_checkpointing/test_python_checkpoint_1.py +6 -3
  45. parsl/tests/test_checkpointing/test_regression_233.py +0 -1
  46. parsl/tests/test_curvezmq.py +0 -42
  47. parsl/tests/test_execute_task.py +2 -11
  48. parsl/tests/test_htex/test_command_concurrency_regression_1321.py +54 -0
  49. parsl/tests/test_htex/test_htex.py +36 -1
  50. parsl/tests/test_htex/test_interchange_exit_bad_registration.py +2 -2
  51. parsl/tests/test_htex/test_priority_queue.py +26 -3
  52. parsl/tests/test_htex/test_zmq_binding.py +2 -1
  53. parsl/tests/test_mpi_apps/test_mpi_scheduler.py +18 -43
  54. parsl/tests/test_python_apps/test_basic.py +0 -14
  55. parsl/tests/test_python_apps/test_depfail_propagation.py +11 -1
  56. parsl/tests/test_python_apps/test_exception.py +19 -0
  57. parsl/tests/test_python_apps/test_garbage_collect.py +1 -6
  58. parsl/tests/test_python_apps/test_memoize_2.py +11 -1
  59. parsl/tests/test_python_apps/test_memoize_exception.py +41 -0
  60. parsl/tests/test_regression/test_3874.py +47 -0
  61. parsl/tests/test_scaling/test_regression_3696_oscillation.py +1 -0
  62. parsl/tests/test_staging/test_staging_globus.py +2 -2
  63. parsl/tests/test_utils/test_representation_mixin.py +53 -0
  64. parsl/tests/unit/test_globus_compute_executor.py +11 -2
  65. parsl/utils.py +11 -3
  66. parsl/version.py +1 -1
  67. {parsl-2025.8.4.data → parsl-2025.11.10.data}/scripts/interchange.py +55 -42
  68. {parsl-2025.8.4.data → parsl-2025.11.10.data}/scripts/process_worker_pool.py +32 -7
  69. {parsl-2025.8.4.dist-info → parsl-2025.11.10.dist-info}/METADATA +64 -50
  70. {parsl-2025.8.4.dist-info → parsl-2025.11.10.dist-info}/RECORD +76 -81
  71. {parsl-2025.8.4.dist-info → parsl-2025.11.10.dist-info}/WHEEL +1 -1
  72. parsl/tests/configs/local_threads_checkpoint_periodic.py +0 -11
  73. parsl/tests/configs/local_threads_no_cache.py +0 -11
  74. parsl/tests/site_tests/test_provider.py +0 -88
  75. parsl/tests/site_tests/test_site.py +0 -70
  76. parsl/tests/test_aalst_patterns.py +0 -474
  77. parsl/tests/test_docs/test_workflow2.py +0 -42
  78. parsl/tests/test_error_handling/test_rand_fail.py +0 -171
  79. parsl/tests/test_regression/test_854.py +0 -62
  80. parsl/tests/test_serialization/test_pack_resource_spec.py +0 -23
  81. {parsl-2025.8.4.data → parsl-2025.11.10.data}/scripts/exec_parsl_function.py +0 -0
  82. {parsl-2025.8.4.data → parsl-2025.11.10.data}/scripts/parsl_coprocess.py +0 -0
  83. {parsl-2025.8.4.dist-info → parsl-2025.11.10.dist-info}/entry_points.txt +0 -0
  84. {parsl-2025.8.4.dist-info → parsl-2025.11.10.dist-info/licenses}/LICENSE +0 -0
  85. {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