parsl 2024.5.20__tar.gz → 2024.6.3__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 (476) hide show
  1. {parsl-2024.5.20/parsl.egg-info → parsl-2024.6.3}/PKG-INFO +2 -2
  2. {parsl-2024.5.20 → parsl-2024.6.3}/README.rst +1 -1
  3. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/__init__.py +9 -10
  4. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/addresses.py +6 -4
  5. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/app.py +3 -6
  6. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/bash.py +4 -4
  7. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/errors.py +5 -3
  8. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/python.py +2 -1
  9. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/benchmark/perf.py +2 -1
  10. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/base.py +0 -1
  11. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/errors.py +2 -1
  12. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/oauth_ssh/oauth_ssh.py +4 -3
  13. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/ssh/ssh.py +9 -1
  14. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/ssh_il/ssh_il.py +1 -0
  15. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/concurrent/__init__.py +2 -2
  16. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/config.py +12 -6
  17. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/Azure.py +6 -7
  18. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/ad_hoc.py +4 -3
  19. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/expanse.py +1 -2
  20. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/frontera.py +2 -3
  21. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/htex_local.py +1 -2
  22. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/kubernetes.py +1 -2
  23. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/stampede2.py +4 -5
  24. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/summit.py +1 -3
  25. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/toss3_llnl.py +1 -2
  26. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/vineex_local.py +3 -3
  27. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/data_manager.py +3 -3
  28. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/file_noop.py +1 -2
  29. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/ftp.py +1 -3
  30. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/globus.py +7 -6
  31. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/staging.py +2 -2
  32. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/zip.py +4 -5
  33. parsl-2024.6.3/parsl/dataflow/dependency_resolvers.py +115 -0
  34. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/dflow.py +65 -54
  35. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/errors.py +2 -1
  36. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/futures.py +1 -2
  37. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/memoization.py +5 -5
  38. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/taskrecord.py +4 -5
  39. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/base.py +1 -0
  40. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/flux/executor.py +11 -12
  41. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/flux/flux_instance_manager.py +3 -3
  42. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/errors.py +10 -0
  43. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/executor.py +31 -36
  44. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/interchange.py +16 -18
  45. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/manager_record.py +1 -0
  46. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/monitoring_info.py +2 -1
  47. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/mpi_executor.py +6 -3
  48. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/mpi_prefix_composer.py +19 -3
  49. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/mpi_resource_management.py +1 -2
  50. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/probe.py +6 -4
  51. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/process_worker_pool.py +31 -20
  52. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/zmq_pipes.py +63 -15
  53. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/radical/executor.py +15 -15
  54. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/radical/rpex_master.py +1 -2
  55. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/radical/rpex_resources.py +4 -9
  56. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/radical/rpex_worker.py +2 -1
  57. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/status_handling.py +5 -4
  58. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/executor.py +23 -24
  59. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/manager.py +11 -13
  60. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/threads.py +4 -5
  61. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/exec_parsl_function.py +5 -4
  62. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/executor.py +26 -27
  63. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/error_handlers.py +1 -1
  64. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/job_status_poller.py +2 -5
  65. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/launchers/__init__.py +12 -3
  66. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/log_utils.py +1 -2
  67. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/db_manager.py +16 -10
  68. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/monitoring.py +11 -15
  69. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/queries/pandas.py +1 -2
  70. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/radios.py +2 -4
  71. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/remote.py +13 -8
  72. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/router.py +8 -11
  73. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/types.py +2 -0
  74. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/app.py +4 -2
  75. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/models.py +0 -1
  76. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/plots/default/workflow_plots.py +8 -4
  77. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/plots/default/workflow_resource_plots.py +1 -0
  78. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/utils.py +0 -1
  79. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/views.py +16 -9
  80. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/multiprocessing.py +0 -1
  81. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/process_loggers.py +1 -2
  82. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/__init__.py +9 -12
  83. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/ad_hoc/ad_hoc.py +1 -1
  84. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/aws/aws.py +2 -3
  85. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/azure/azure.py +4 -5
  86. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/condor/condor.py +4 -2
  87. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/googlecloud/googlecloud.py +2 -1
  88. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/kubernetes/kube.py +5 -3
  89. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/local/local.py +5 -1
  90. parsl-2024.6.3/parsl/serialize/__init__.py +16 -0
  91. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/serialize/base.py +1 -2
  92. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/serialize/concretes.py +5 -4
  93. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/serialize/proxystore.py +3 -2
  94. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/azure_single_node.py +4 -5
  95. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/bridges.py +3 -2
  96. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/comet.py +2 -1
  97. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/ec2_single_node.py +1 -2
  98. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/ec2_spot.py +1 -2
  99. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/frontera.py +3 -2
  100. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/htex_ad_hoc_cluster.py +2 -4
  101. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/htex_local.py +2 -3
  102. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/htex_local_alternate.py +8 -11
  103. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/htex_local_intask_staging.py +5 -7
  104. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/htex_local_rsync_staging.py +4 -6
  105. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_radical.py +1 -3
  106. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_radical_mpi.py +2 -2
  107. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/petrelkube.py +3 -2
  108. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/summit.py +1 -0
  109. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/taskvine_ex.py +3 -5
  110. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/workqueue_ex.py +3 -4
  111. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/conftest.py +6 -6
  112. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_ssh_errors.py +1 -1
  113. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_stress/test_python_simple.py +3 -4
  114. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_stress/test_python_threads.py +3 -5
  115. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_ad_hoc_htex.py +2 -1
  116. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_basic.py +1 -0
  117. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_log_filter.py +3 -1
  118. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_regression_220.py +2 -1
  119. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_udp_simple.py +4 -3
  120. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_worker_count.py +3 -2
  121. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/test_scale.py +0 -9
  122. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/vineex_condor.py +1 -2
  123. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/vineex_local.py +1 -2
  124. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/site_tests/test_provider.py +3 -1
  125. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/site_tests/test_site.py +2 -0
  126. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_affinity.py +7 -5
  127. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_dynamic_executor.py +3 -4
  128. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_ec2.py +3 -2
  129. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_local_adhoc.py +2 -1
  130. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_worker_info.py +4 -3
  131. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_aalst_patterns.py +0 -1
  132. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_error_codes.py +1 -4
  133. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_memoize_ignore_args.py +1 -0
  134. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_std_uri.py +4 -9
  135. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_periodic.py +2 -7
  136. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_python_checkpoint_1.py +1 -0
  137. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_python_checkpoint_2.py +2 -2
  138. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_python_checkpoint_3.py +0 -1
  139. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_regression_239.py +1 -1
  140. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_task_exit.py +1 -2
  141. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_kwargs.py +1 -1
  142. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_tutorial_1.py +1 -2
  143. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_workflow2.py +0 -1
  144. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_resource_spec.py +4 -2
  145. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_retries.py +2 -1
  146. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_retry_handler.py +1 -0
  147. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_retry_handler_failure.py +2 -1
  148. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_wrap_with_logs.py +1 -0
  149. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_basic.py +0 -1
  150. parsl-2024.6.3/parsl/tests/test_htex/test_command_client_timeout.py +66 -0
  151. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_connected_blocks.py +3 -2
  152. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_cpu_affinity_explicit.py +6 -10
  153. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_disconnected_blocks.py +6 -4
  154. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_htex.py +1 -2
  155. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_manager_failure.py +0 -1
  156. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_managers_command.py +5 -9
  157. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_missing_worker.py +2 -8
  158. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_multiple_disconnected_blocks.py +6 -4
  159. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_app_names.py +3 -3
  160. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_basic.py +4 -6
  161. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_db_locks.py +6 -4
  162. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_fuzz_zmq.py +6 -4
  163. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py +5 -7
  164. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_incomplete_futures.py +5 -4
  165. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_memoization_representation.py +4 -2
  166. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_stdouterr.py +4 -6
  167. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_viz_colouring.py +1 -0
  168. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_bad_mpi_config.py +1 -1
  169. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_mpi_mode_disabled.py +4 -7
  170. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_mpi_mode_enabled.py +15 -4
  171. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_mpi_scheduler.py +7 -2
  172. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_mpiex.py +4 -3
  173. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_resource_spec.py +21 -17
  174. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_cobalt_deprecation_warning.py +2 -0
  175. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_local_provider.py +2 -1
  176. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_submiterror_deprecation.py +2 -1
  177. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_context_manager.py +5 -12
  178. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_dep_standard_futures.py +2 -1
  179. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_futures.py +2 -1
  180. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_join.py +0 -1
  181. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_lifted.py +11 -7
  182. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py +1 -0
  183. parsl-2024.6.3/parsl/tests/test_python_apps/test_pluggable_future_resolution.py +161 -0
  184. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_1480.py +2 -1
  185. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_1653.py +2 -1
  186. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_2652.py +1 -0
  187. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_69a.py +0 -1
  188. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_854.py +4 -2
  189. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_97_parallelism_0.py +1 -2
  190. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_98.py +0 -1
  191. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_block_error_handler.py +9 -4
  192. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_regression_1621.py +0 -2
  193. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_scale_down.py +2 -3
  194. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py +4 -5
  195. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_scale_down_htex_unregistered.py +3 -4
  196. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_shutdown_scalein.py +1 -4
  197. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_basic.py +2 -1
  198. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_htex_code_cache.py +3 -4
  199. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_pack_resource_spec.py +2 -1
  200. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_proxystore_configured.py +10 -6
  201. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_proxystore_impl.py +5 -3
  202. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_shutdown/test_kill_monitoring.py +3 -4
  203. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_1316.py +3 -4
  204. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_docs_1.py +1 -1
  205. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_docs_2.py +2 -1
  206. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_elaborate_noop_file.py +2 -3
  207. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_staging_stdout.py +4 -3
  208. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_zip_in.py +6 -8
  209. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_zip_out.py +7 -9
  210. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_zip_to_zip.py +6 -8
  211. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_summary.py +2 -2
  212. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_thread_parallelism.py +0 -1
  213. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_threads/test_configs.py +1 -2
  214. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_threads/test_lazy_errors.py +2 -2
  215. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/usage_tracking/api.py +2 -3
  216. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/usage_tracking/usage.py +8 -18
  217. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/utils.py +13 -2
  218. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/version.py +1 -1
  219. {parsl-2024.5.20 → parsl-2024.6.3/parsl.egg-info}/PKG-INFO +2 -2
  220. {parsl-2024.5.20 → parsl-2024.6.3}/parsl.egg-info/SOURCES.txt +3 -0
  221. {parsl-2024.5.20 → parsl-2024.6.3}/parsl.egg-info/requires.txt +4 -4
  222. {parsl-2024.5.20 → parsl-2024.6.3}/setup.py +2 -2
  223. parsl-2024.5.20/parsl/serialize/__init__.py +0 -11
  224. {parsl-2024.5.20 → parsl-2024.6.3}/LICENSE +0 -0
  225. {parsl-2024.5.20 → parsl-2024.6.3}/MANIFEST.in +0 -0
  226. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/__init__.py +0 -0
  227. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/futures.py +3 -3
  228. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/benchmark/__init__.py +0 -0
  229. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/__init__.py +2 -2
  230. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/local/__init__.py +0 -0
  231. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/local/local.py +0 -0
  232. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/oauth_ssh/__init__.py +0 -0
  233. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/ssh/__init__.py +0 -0
  234. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/ssh_il/__init__.py +0 -0
  235. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/ASPIRE1.py +3 -3
  236. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/__init__.py +0 -0
  237. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/bridges.py +3 -3
  238. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/cc_in2p3.py +2 -2
  239. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/ec2.py +1 -1
  240. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/illinoiscluster.py +1 -1
  241. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/local_threads.py +0 -0
  242. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/midway.py +3 -3
  243. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/osg.py +1 -1
  244. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/polaris.py +1 -1
  245. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/wqex_local.py +2 -2
  246. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/curvezmq.py +0 -0
  247. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/__init__.py +0 -0
  248. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/files.py +3 -3
  249. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/http.py +2 -2
  250. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/rsync.py +1 -1
  251. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/__init__.py +0 -0
  252. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/rundirs.py +1 -1
  253. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/states.py +0 -0
  254. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/errors.py +0 -0
  255. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/__init__.py +3 -3
  256. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/errors.py +0 -0
  257. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/flux/__init__.py +0 -0
  258. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/flux/execute_parsl_task.py +2 -2
  259. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/__init__.py +0 -0
  260. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/radical/__init__.py +0 -0
  261. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/__init__.py +1 -1
  262. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/errors.py +1 -1
  263. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/exec_parsl_function.py +2 -2
  264. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/factory.py +1 -1
  265. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/factory_config.py +0 -0
  266. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/manager_config.py +0 -0
  267. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/utils.py +0 -0
  268. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/__init__.py +0 -0
  269. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/errors.py +1 -1
  270. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/parsl_coprocess.py +1 -1
  271. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/parsl_coprocess_stub.py +0 -0
  272. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/__init__.py +0 -0
  273. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/errors.py +0 -0
  274. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/states.py +1 -1
  275. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/strategy.py +2 -2
  276. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/launchers/base.py +0 -0
  277. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/launchers/errors.py +1 -1
  278. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/launchers/launchers.py +0 -0
  279. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/__init__.py +0 -0
  280. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/message_type.py +0 -0
  281. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/queries/__init__.py +0 -0
  282. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/__init__.py +0 -0
  283. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/plots/__init__.py +0 -0
  284. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/plots/default/__init__.py +0 -0
  285. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/plots/default/task_plots.py +0 -0
  286. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/static/parsl-logo-white.png +0 -0
  287. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/static/parsl-monitor.css +0 -0
  288. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/app.html +0 -0
  289. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/dag.html +0 -0
  290. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/error.html +0 -0
  291. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/layout.html +0 -0
  292. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/resource_usage.html +0 -0
  293. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/task.html +0 -0
  294. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/workflow.html +0 -0
  295. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/workflows_summary.html +0 -0
  296. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/version.py +0 -0
  297. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/ad_hoc/__init__.py +0 -0
  298. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/aws/__init__.py +0 -0
  299. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/aws/template.py +0 -0
  300. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/azure/__init__.py +0 -0
  301. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/azure/template.py +0 -0
  302. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/base.py +1 -1
  303. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/cluster_provider.py +1 -1
  304. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/cobalt/__init__.py +0 -0
  305. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/cobalt/cobalt.py +3 -3
  306. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/cobalt/template.py +0 -0
  307. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/condor/__init__.py +0 -0
  308. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/condor/template.py +0 -0
  309. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/errors.py +2 -2
  310. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/googlecloud/__init__.py +0 -0
  311. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/grid_engine/__init__.py +0 -0
  312. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/grid_engine/grid_engine.py +2 -2
  313. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/grid_engine/template.py +0 -0
  314. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/kubernetes/__init__.py +0 -0
  315. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/kubernetes/template.py +0 -0
  316. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/local/__init__.py +0 -0
  317. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/lsf/__init__.py +0 -0
  318. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/lsf/lsf.py +2 -2
  319. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/lsf/template.py +0 -0
  320. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/pbspro/__init__.py +0 -0
  321. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/pbspro/pbspro.py +1 -1
  322. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/pbspro/template.py +0 -0
  323. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/slurm/__init__.py +0 -0
  324. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/slurm/slurm.py +5 -5
  325. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/slurm/template.py +0 -0
  326. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/torque/__init__.py +0 -0
  327. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/torque/template.py +0 -0
  328. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/torque/torque.py +1 -1
  329. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/py.typed +0 -0
  330. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/serialize/errors.py +0 -0
  331. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/serialize/facade.py +0 -0
  332. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/__init__.py +1 -1
  333. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/callables_helper.py +0 -0
  334. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/__init__.py +0 -0
  335. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/ad_hoc_cluster_htex.py +4 -4
  336. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/bluewaters.py +0 -0
  337. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/cc_in2p3.py +2 -2
  338. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/cooley_htex.py +0 -0
  339. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_adhoc.py +1 -1
  340. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads.py +0 -0
  341. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_checkpoint.py +0 -0
  342. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_checkpoint_dfk_exit.py +0 -0
  343. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_checkpoint_periodic.py +0 -0
  344. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_checkpoint_task_exit.py +0 -0
  345. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_ftp_in_task.py +0 -0
  346. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_globus.py +0 -0
  347. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_http_in_task.py +0 -0
  348. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_monitoring.py +0 -0
  349. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_no_cache.py +0 -0
  350. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/midway.py +2 -2
  351. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/nscc_singapore.py +3 -3
  352. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/osg_htex.py +1 -1
  353. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/swan_htex.py +2 -2
  354. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/theta.py +2 -2
  355. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/user_opts.py +0 -0
  356. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/__init__.py +0 -0
  357. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/latency.py +0 -0
  358. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_apps/__init__.py +0 -0
  359. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/__init__.py +0 -0
  360. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_channels.py +0 -0
  361. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_local_channel.py +0 -0
  362. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_scp_1.py +0 -0
  363. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_ssh_1.py +0 -0
  364. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_ssh_file_transport.py +0 -0
  365. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_ssh_interactive.py +0 -0
  366. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_parsl_load_default_config.py +0 -0
  367. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_stress/__init__.py +0 -0
  368. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/__init__.py +0 -0
  369. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/htex_local.py +4 -4
  370. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_fan_in_out_htex_remote.py +4 -4
  371. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_memory_limits.py +6 -6
  372. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_oauth_ssh.py +0 -0
  373. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/__init__.py +0 -0
  374. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/htex_local.py +2 -2
  375. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/local_threads.py +0 -0
  376. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/wqex_condor.py +0 -0
  377. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/wqex_local.py +0 -0
  378. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/site_tests/__init__.py +0 -0
  379. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/site_tests/site_config_selector.py +0 -0
  380. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/__init__.py +0 -0
  381. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_concurrent.py +0 -0
  382. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_launchers.py +0 -0
  383. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_mpi/__init__.py +0 -0
  384. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/__init__.py +0 -0
  385. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_apptimeout.py +2 -2
  386. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_basic.py +0 -0
  387. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_keyword_overlaps.py +0 -0
  388. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_kwarg_storage.py +0 -0
  389. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_memoize.py +0 -0
  390. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py +2 -2
  391. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_multiline.py +0 -0
  392. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_pipeline.py +1 -1
  393. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_stdout.py +0 -0
  394. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_callables.py +2 -2
  395. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_channels/__init__.py +0 -0
  396. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_channels/test_large_output.py +0 -0
  397. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/__init__.py +0 -0
  398. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_regression_232.py +0 -0
  399. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_regression_233.py +0 -0
  400. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_curvezmq.py +0 -0
  401. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/__init__.py +0 -0
  402. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_from_slides.py +2 -2
  403. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_workflow1.py +2 -2
  404. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_workflow4.py +0 -0
  405. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/__init__.py +0 -0
  406. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_fail.py +0 -0
  407. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_python_walltime.py +0 -0
  408. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_rand_fail.py +2 -2
  409. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_serialization_fail.py +1 -1
  410. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_flowcontrol/__init__.py +0 -0
  411. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_flux.py +1 -1
  412. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/__init__.py +0 -0
  413. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_drain.py +5 -5
  414. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_worker_failure.py +0 -0
  415. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_zmq_binding.py +0 -0
  416. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/__init__.py +0 -0
  417. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/__init__.py +0 -0
  418. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_mpi_prefix.py +4 -4
  419. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/__init__.py +0 -0
  420. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_pbspro_template.py +1 -1
  421. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_slurm_instantiate.py +0 -0
  422. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_slurm_template.py +1 -1
  423. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/__init__.py +0 -0
  424. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_arg_input_types.py +0 -0
  425. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_basic.py +0 -0
  426. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_dependencies.py +0 -0
  427. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_depfail_propagation.py +0 -0
  428. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_fail.py +0 -0
  429. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_fibonacci_iterative.py +0 -0
  430. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_fibonacci_recursive.py +0 -0
  431. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_garbage_collect.py +0 -0
  432. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_import_fail.py +0 -0
  433. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_mapred.py +0 -0
  434. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_1.py +0 -0
  435. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_2.py +0 -0
  436. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_4.py +0 -0
  437. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_ignore_args.py +0 -0
  438. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_joinapp.py +0 -0
  439. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_outputs.py +0 -0
  440. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_overview.py +0 -0
  441. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_pipeline.py +0 -0
  442. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_simple.py +0 -0
  443. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_timeout.py +0 -0
  444. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_type5.py +0 -0
  445. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_radical/__init__.py +0 -0
  446. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_radical/test_mpi_funcs.py +1 -1
  447. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/__init__.py +0 -0
  448. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_1606_wait_for_current_tasks.py +0 -0
  449. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_221.py +0 -0
  450. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_226.py +0 -0
  451. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/__init__.py +0 -0
  452. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/__init__.py +0 -0
  453. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_2555_caching_deserializer.py +1 -1
  454. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_shutdown/__init__.py +0 -0
  455. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/__init__.py +0 -0
  456. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/staging_provider.py +2 -2
  457. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_file.py +0 -0
  458. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_file_apps.py +0 -0
  459. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_file_staging.py +0 -0
  460. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_output_chain_filenames.py +0 -0
  461. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_staging_ftp.py +0 -0
  462. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_staging_ftp_in_task.py +0 -0
  463. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_staging_globus.py +0 -0
  464. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_staging_https.py +2 -2
  465. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_threads/__init__.py +0 -0
  466. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_utils/__init__.py +0 -0
  467. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_utils/test_representation_mixin.py +0 -0
  468. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/unit/__init__.py +0 -0
  469. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/unit/test_file.py +0 -0
  470. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/utils.py +0 -0
  471. {parsl-2024.5.20 → parsl-2024.6.3}/parsl/usage_tracking/__init__.py +0 -0
  472. {parsl-2024.5.20 → parsl-2024.6.3}/parsl.egg-info/dependency_links.txt +0 -0
  473. {parsl-2024.5.20 → parsl-2024.6.3}/parsl.egg-info/entry_points.txt +0 -0
  474. {parsl-2024.5.20 → parsl-2024.6.3}/parsl.egg-info/top_level.txt +0 -0
  475. {parsl-2024.5.20 → parsl-2024.6.3}/requirements.txt +0 -0
  476. {parsl-2024.5.20 → parsl-2024.6.3}/setup.cfg +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsl
3
- Version: 2024.5.20
3
+ Version: 2024.6.3
4
4
  Summary: Simple data dependent workflows in Python
5
5
  Home-page: https://github.com/Parsl/parsl
6
- Download-URL: https://github.com/Parsl/parsl/archive/2024.05.20.tar.gz
6
+ Download-URL: https://github.com/Parsl/parsl/archive/2024.06.03.tar.gz
7
7
  Author: The Parsl Team
8
8
  Author-email: parsl@googlegroups.com
9
9
  License: Apache 2.0
@@ -122,7 +122,7 @@ Parsl is supported in Python 3.8+. Requirements can be found `here <requirements
122
122
  Code of Conduct
123
123
  ===============
124
124
 
125
- Parsl seeks to foster an open and welcoming environment - Please see the `Parsl Code of Conduct <https://github.com/Parsl/parsl/blob/master/CODE_OF_CONDUCT.md>`_ for more details.
125
+ Parsl seeks to foster an open and welcoming environment - Please see the `Parsl Code of Conduct <https://github.com/Parsl/parsl?tab=coc-ov-file#parsl-code-of-conduct>`_ for more details.
126
126
 
127
127
  Contributing
128
128
  ============
@@ -15,24 +15,23 @@ AUTO_LOGNAME
15
15
 
16
16
  """
17
17
  import logging
18
+ import multiprocessing as _multiprocessing
18
19
  import os
19
20
  import platform
20
21
 
21
- from parsl.version import VERSION
22
22
  from parsl.app.app import bash_app, join_app, python_app
23
23
  from parsl.config import Config
24
- from parsl.executors import ThreadPoolExecutor
25
- from parsl.executors import HighThroughputExecutor
26
- from parsl.executors import WorkQueueExecutor
27
- from parsl.log_utils import set_stream_logger
28
- from parsl.log_utils import set_file_logger
29
- from parsl.monitoring import MonitoringHub
30
-
31
24
  from parsl.data_provider.files import File
32
-
33
25
  from parsl.dataflow.dflow import DataFlowKernel, DataFlowKernelLoader
26
+ from parsl.executors import (
27
+ HighThroughputExecutor,
28
+ ThreadPoolExecutor,
29
+ WorkQueueExecutor,
30
+ )
31
+ from parsl.log_utils import set_file_logger, set_stream_logger
32
+ from parsl.monitoring import MonitoringHub
33
+ from parsl.version import VERSION
34
34
 
35
- import multiprocessing as _multiprocessing
36
35
  if platform.system() == 'Darwin':
37
36
  _multiprocessing.set_start_method('fork', force=True)
38
37
 
@@ -8,17 +8,19 @@ so some experimentation will probably be needed to choose the correct one.
8
8
 
9
9
  import logging
10
10
  import platform
11
- import requests
12
11
  import socket
12
+
13
+ import requests
14
+
13
15
  try:
14
16
  import fcntl
15
17
  except ImportError:
16
18
  fcntl = None # type: ignore[assignment]
17
19
  import struct
18
- import typeguard
19
- import psutil
20
+ from typing import Callable, List, Set
20
21
 
21
- from typing import Set, List, Callable
22
+ import psutil
23
+ import typeguard
22
24
 
23
25
  logger = logging.getLogger(__name__)
24
26
 
@@ -3,19 +3,16 @@
3
3
  The App class encapsulates a generic leaf task that can be executed asynchronously.
4
4
  """
5
5
  import logging
6
- import typeguard
7
6
  from abc import ABCMeta, abstractmethod
8
7
  from inspect import signature
9
- from typing import List, Optional, Sequence, Union
8
+ from typing import Any, Callable, Dict, List, Optional, Sequence, Union
9
+
10
+ import typeguard
10
11
  from typing_extensions import Literal
11
12
 
12
13
  from parsl.dataflow.dflow import DataFlowKernel
13
-
14
- from typing import Any, Callable, Dict
15
-
16
14
  from parsl.dataflow.futures import AppFuture
17
15
 
18
-
19
16
  logger = logging.getLogger(__name__)
20
17
 
21
18
 
@@ -1,10 +1,9 @@
1
- from functools import update_wrapper
2
- from functools import partial
3
- from inspect import signature, Parameter
4
1
  import logging
2
+ from functools import partial, update_wrapper
3
+ from inspect import Parameter, signature
5
4
 
6
- from parsl.app.errors import wrap_error
7
5
  from parsl.app.app import AppBase
6
+ from parsl.app.errors import wrap_error
8
7
  from parsl.data_provider.files import File
9
8
  from parsl.dataflow.dflow import DataFlowKernelLoader
10
9
 
@@ -17,6 +16,7 @@ def remote_side_bash_executor(func, *args, **kwargs):
17
16
  """
18
17
  import os
19
18
  import subprocess
19
+
20
20
  import parsl.app.errors as pe
21
21
  from parsl.utils import get_std_fname_mode
22
22
 
@@ -1,10 +1,11 @@
1
1
  """Exceptions raised by Apps."""
2
+ import logging
2
3
  from functools import wraps
3
- from typing import Callable, List, Optional, TypeVar, Union
4
- from typing_extensions import ParamSpec
5
4
  from types import TracebackType
6
- import logging
5
+ from typing import Callable, List, Optional, TypeVar, Union
6
+
7
7
  from tblib import Traceback
8
+ from typing_extensions import ParamSpec
8
9
 
9
10
  from parsl.data_provider.files import File
10
11
  from parsl.errors import ParslError
@@ -134,6 +135,7 @@ def wrap_error(func: Callable[P, R]) -> Callable[P, Union[R, RemoteExceptionWrap
134
135
  @wraps(func)
135
136
  def wrapper(*args: P.args, **kwargs: P.kwargs) -> Union[R, RemoteExceptionWrapper]:
136
137
  import sys
138
+
137
139
  from parsl.app.errors import RemoteExceptionWrapper
138
140
  try:
139
141
  return func(*args, **kwargs)
@@ -2,6 +2,7 @@ import logging
2
2
  import threading
3
3
 
4
4
  import tblib.pickling_support
5
+
5
6
  tblib.pickling_support.install()
6
7
 
7
8
  from functools import wraps
@@ -11,7 +12,6 @@ from parsl.app.errors import wrap_error
11
12
  from parsl.dataflow.dflow import DataFlowKernelLoader
12
13
  from parsl.utils import AutoCancelTimer
13
14
 
14
-
15
15
  logger = logging.getLogger(__name__)
16
16
 
17
17
 
@@ -19,6 +19,7 @@ def timeout(f, seconds: float):
19
19
  @wraps(f)
20
20
  def wrapper(*args, **kwargs):
21
21
  import ctypes
22
+
22
23
  import parsl.app.errors
23
24
 
24
25
  def inject_exception(thread):
@@ -1,7 +1,8 @@
1
1
  import argparse
2
+ import concurrent.futures
2
3
  import importlib
3
4
  import time
4
- import concurrent.futures
5
+
5
6
  import parsl
6
7
 
7
8
  min_iterations = 2
@@ -1,5 +1,4 @@
1
1
  from abc import ABCMeta, abstractmethod, abstractproperty
2
-
3
2
  from typing import Dict, Tuple
4
3
 
5
4
 
@@ -1,8 +1,9 @@
1
1
  ''' Exceptions raise by Apps.
2
2
  '''
3
- from parsl.errors import ParslError
4
3
  from typing import Optional
5
4
 
5
+ from parsl.errors import ParslError
6
+
6
7
 
7
8
  class ChannelError(ParslError):
8
9
  """ Base class for all exceptions
@@ -1,13 +1,14 @@
1
1
  import logging
2
- import paramiko
3
2
  import socket
4
3
 
5
- from parsl.errors import OptionalModuleMissing
4
+ import paramiko
5
+
6
6
  from parsl.channels.ssh.ssh import SSHChannel
7
+ from parsl.errors import OptionalModuleMissing
7
8
 
8
9
  try:
9
- from oauth_ssh.ssh_service import SSHService
10
10
  from oauth_ssh.oauth_ssh_token import find_access_token
11
+ from oauth_ssh.ssh_service import SSHService
11
12
  _oauth_ssh_enabled = True
12
13
  except (ImportError, NameError):
13
14
  _oauth_ssh_enabled = False
@@ -3,8 +3,16 @@ import logging
3
3
  import os
4
4
 
5
5
  import paramiko
6
+
6
7
  from parsl.channels.base import Channel
7
- from parsl.channels.errors import BadHostKeyException, AuthException, SSHException, BadScriptPath, BadPermsScriptPath, FileCopyException
8
+ from parsl.channels.errors import (
9
+ AuthException,
10
+ BadHostKeyException,
11
+ BadPermsScriptPath,
12
+ BadScriptPath,
13
+ FileCopyException,
14
+ SSHException,
15
+ )
8
16
  from parsl.utils import RepresentationMixin
9
17
 
10
18
  logger = logging.getLogger(__name__)
@@ -2,6 +2,7 @@ import getpass
2
2
  import logging
3
3
 
4
4
  import paramiko
5
+
5
6
  from parsl.channels.ssh.ssh import SSHChannel
6
7
 
7
8
  logger = logging.getLogger(__name__)
@@ -1,8 +1,8 @@
1
1
  """Interfaces modeled after Python's `concurrent library <https://docs.python.org/3/library/concurrent.html>`_"""
2
- from typing import Callable, Dict, Optional, Iterator, Iterable
2
+ import time
3
3
  from concurrent.futures import Executor
4
+ from typing import Callable, Dict, Iterable, Iterator, Optional
4
5
  from warnings import warn
5
- import time
6
6
 
7
7
  from parsl import Config, DataFlowKernel
8
8
  from parsl.app.python import PythonApp
@@ -1,16 +1,17 @@
1
1
  import logging
2
- import typeguard
3
-
4
2
  from typing import Callable, Iterable, Optional, Sequence, Union
3
+
4
+ import typeguard
5
5
  from typing_extensions import Literal
6
6
 
7
- from parsl.utils import RepresentationMixin
7
+ from parsl.dataflow.dependency_resolvers import DependencyResolver
8
+ from parsl.dataflow.taskrecord import TaskRecord
9
+ from parsl.errors import ConfigurationError
8
10
  from parsl.executors.base import ParslExecutor
9
11
  from parsl.executors.threads import ThreadPoolExecutor
10
- from parsl.errors import ConfigurationError
11
- from parsl.dataflow.taskrecord import TaskRecord
12
12
  from parsl.monitoring import MonitoringHub
13
13
  from parsl.usage_tracking.api import UsageInformation
14
+ from parsl.utils import RepresentationMixin
14
15
 
15
16
  logger = logging.getLogger(__name__)
16
17
 
@@ -35,6 +36,8 @@ class Config(RepresentationMixin, UsageInformation):
35
36
  checkpoint_period : str, optional
36
37
  Time interval (in "HH:MM:SS") at which to checkpoint completed tasks. Only has an effect if
37
38
  ``checkpoint_mode='periodic'``.
39
+ dependency_resolver: plugin point for custom dependency resolvers. Default: only resolve Futures,
40
+ using the `SHALLOW_DEPENDENCY_RESOLVER`.
38
41
  garbage_collect : bool. optional.
39
42
  Delete task records from DFK when tasks have completed. Default: True
40
43
  internal_tasks_max_threads : int, optional
@@ -88,6 +91,7 @@ class Config(RepresentationMixin, UsageInformation):
88
91
  Literal['dfk_exit'],
89
92
  Literal['manual']] = None,
90
93
  checkpoint_period: Optional[str] = None,
94
+ dependency_resolver: Optional[DependencyResolver] = None,
91
95
  garbage_collect: bool = True,
92
96
  internal_tasks_max_threads: int = 10,
93
97
  retries: int = 0,
@@ -123,6 +127,7 @@ class Config(RepresentationMixin, UsageInformation):
123
127
  if checkpoint_mode == 'periodic' and checkpoint_period is None:
124
128
  checkpoint_period = "00:30:00"
125
129
  self.checkpoint_period = checkpoint_period
130
+ self.dependency_resolver = dependency_resolver
126
131
  self.garbage_collect = garbage_collect
127
132
  self.internal_tasks_max_threads = internal_tasks_max_threads
128
133
  self.retries = retries
@@ -152,4 +157,5 @@ class Config(RepresentationMixin, UsageInformation):
152
157
  ', '.join(['label={}'.format(repr(d)) for d in duplicates])))
153
158
 
154
159
  def get_usage_information(self):
155
- return {"executors_len": len(self.executors)}
160
+ return {"executors_len": len(self.executors),
161
+ "dependency_resolver": self.dependency_resolver is not None}
@@ -1,14 +1,13 @@
1
1
  """Config for Azure"""
2
- from parsl.config import Config
2
+ import getpass
3
3
 
4
- from parsl.providers import AzureProvider
5
- from parsl.executors import HighThroughputExecutor
6
- from parsl.data_provider.http import HTTPInTaskStaging
4
+ from parsl.addresses import address_by_query
5
+ from parsl.config import Config
7
6
  from parsl.data_provider.ftp import FTPInTaskStaging
7
+ from parsl.data_provider.http import HTTPInTaskStaging
8
8
  from parsl.data_provider.rsync import RSyncStaging
9
- from parsl.addresses import address_by_query
10
-
11
- import getpass
9
+ from parsl.executors import HighThroughputExecutor
10
+ from parsl.providers import AzureProvider
12
11
 
13
12
  vm_reference = {
14
13
  # All fields below are required
@@ -1,8 +1,9 @@
1
- from parsl.providers import AdHocProvider
1
+ from typing import Any, Dict
2
+
2
3
  from parsl.channels import SSHChannel
3
- from parsl.executors import HighThroughputExecutor
4
4
  from parsl.config import Config
5
- from typing import Any, Dict
5
+ from parsl.executors import HighThroughputExecutor
6
+ from parsl.providers import AdHocProvider
6
7
 
7
8
  user_opts: Dict[str, Dict[str, Any]]
8
9
  user_opts = {'adhoc':
@@ -1,8 +1,7 @@
1
1
  from parsl.config import Config
2
+ from parsl.executors import HighThroughputExecutor
2
3
  from parsl.launchers import SrunLauncher
3
4
  from parsl.providers import SlurmProvider
4
- from parsl.executors import HighThroughputExecutor
5
-
6
5
 
7
6
  config = Config(
8
7
  executors=[
@@ -1,9 +1,8 @@
1
- from parsl.config import Config
2
1
  from parsl.channels import LocalChannel
3
- from parsl.providers import SlurmProvider
2
+ from parsl.config import Config
4
3
  from parsl.executors import HighThroughputExecutor
5
4
  from parsl.launchers import SrunLauncher
6
-
5
+ from parsl.providers import SlurmProvider
7
6
 
8
7
  """ This config assumes that it is used to launch parsl tasks from the login nodes
9
8
  of Frontera at TACC. Each job submitted to the scheduler will request 2 nodes for 10 minutes.
@@ -1,8 +1,7 @@
1
- from parsl.providers import LocalProvider
2
1
  from parsl.channels import LocalChannel
3
-
4
2
  from parsl.config import Config
5
3
  from parsl.executors import HighThroughputExecutor
4
+ from parsl.providers import LocalProvider
6
5
 
7
6
  config = Config(
8
7
  executors=[
@@ -1,8 +1,7 @@
1
+ from parsl.addresses import address_by_route
1
2
  from parsl.config import Config
2
3
  from parsl.executors import HighThroughputExecutor
3
4
  from parsl.providers import KubernetesProvider
4
- from parsl.addresses import address_by_route
5
-
6
5
 
7
6
  config = Config(
8
7
  executors=[
@@ -1,10 +1,9 @@
1
+ from parsl.addresses import address_by_interface
1
2
  from parsl.config import Config
2
- from parsl.providers import SlurmProvider
3
- from parsl.launchers import SrunLauncher
4
- from parsl.executors import HighThroughputExecutor
5
3
  from parsl.data_provider.globus import GlobusStaging
6
- from parsl.addresses import address_by_interface
7
-
4
+ from parsl.executors import HighThroughputExecutor
5
+ from parsl.launchers import SrunLauncher
6
+ from parsl.providers import SlurmProvider
8
7
 
9
8
  config = Config(
10
9
  executors=[
@@ -1,11 +1,9 @@
1
+ from parsl.addresses import address_by_interface
1
2
  from parsl.config import Config
2
3
  from parsl.executors import HighThroughputExecutor
3
-
4
4
  from parsl.launchers import JsrunLauncher
5
5
  from parsl.providers import LSFProvider
6
6
 
7
- from parsl.addresses import address_by_interface
8
-
9
7
  config = Config(
10
8
  executors=[
11
9
  HighThroughputExecutor(
@@ -1,8 +1,7 @@
1
1
  from parsl.config import Config
2
2
  from parsl.executors import FluxExecutor
3
- from parsl.providers import SlurmProvider
4
3
  from parsl.launchers import SrunLauncher
5
-
4
+ from parsl.providers import SlurmProvider
6
5
 
7
6
  config = Config(
8
7
  executors=[
@@ -1,8 +1,8 @@
1
- from parsl.config import Config
2
- from parsl.executors.taskvine import TaskVineExecutor
3
- from parsl.executors.taskvine import TaskVineManagerConfig
4
1
  import uuid
5
2
 
3
+ from parsl.config import Config
4
+ from parsl.executors.taskvine import TaskVineExecutor, TaskVineManagerConfig
5
+
6
6
  config = Config(
7
7
  executors=[
8
8
  TaskVineExecutor(
@@ -1,14 +1,14 @@
1
1
  import logging
2
2
  from concurrent.futures import Future
3
- from typing import Any, Callable, List, Optional, TYPE_CHECKING
3
+ from typing import TYPE_CHECKING, Any, Callable, List, Optional
4
4
 
5
5
  from parsl.app.futures import DataFuture
6
- from parsl.data_provider.files import File
7
6
  from parsl.data_provider.file_noop import NoOpFileStaging
7
+ from parsl.data_provider.files import File
8
8
  from parsl.data_provider.ftp import FTPSeparateTaskStaging
9
9
  from parsl.data_provider.http import HTTPSeparateTaskStaging
10
- from parsl.data_provider.zip import ZipFileStaging
11
10
  from parsl.data_provider.staging import Staging
11
+ from parsl.data_provider.zip import ZipFileStaging
12
12
 
13
13
  if TYPE_CHECKING:
14
14
  from parsl.dataflow.dflow import DataFlowKernel
@@ -1,8 +1,7 @@
1
1
  import logging
2
2
 
3
- from parsl.utils import RepresentationMixin
4
3
  from parsl.data_provider.staging import Staging
5
-
4
+ from parsl.utils import RepresentationMixin
6
5
 
7
6
  logger = logging.getLogger(__name__)
8
7
 
@@ -3,10 +3,8 @@ import logging
3
3
  import os
4
4
 
5
5
  import parsl
6
-
7
- from parsl.utils import RepresentationMixin
8
6
  from parsl.data_provider.staging import Staging
9
-
7
+ from parsl.utils import RepresentationMixin
10
8
 
11
9
  logger = logging.getLogger(__name__)
12
10
 
@@ -1,15 +1,16 @@
1
- import logging
2
1
  import json
3
- import globus_sdk
2
+ import logging
4
3
  import os
5
- import parsl
6
- import typeguard
7
-
8
4
  from functools import partial
9
5
  from typing import Optional
6
+
7
+ import globus_sdk
8
+ import typeguard
9
+
10
+ import parsl
10
11
  from parsl.app.app import python_app
11
- from parsl.utils import RepresentationMixin
12
12
  from parsl.data_provider.staging import Staging
13
+ from parsl.utils import RepresentationMixin
13
14
 
14
15
  logger = logging.getLogger(__name__)
15
16
 
@@ -1,9 +1,9 @@
1
1
  from concurrent.futures import Future
2
- from typing import Optional, Callable
2
+ from typing import TYPE_CHECKING, Callable, Optional
3
+
3
4
  from parsl.app.futures import DataFuture
4
5
  from parsl.data_provider.files import File
5
6
 
6
- from typing import TYPE_CHECKING
7
7
  if TYPE_CHECKING:
8
8
  from parsl.data_provider.data_manager import DataManager
9
9
 
@@ -1,16 +1,15 @@
1
- import filelock
2
1
  import logging
3
2
  import os
4
- import parsl
5
3
  import zipfile
6
-
7
4
  from typing import Tuple
8
5
 
9
- from parsl.data_provider.staging import Staging
6
+ import filelock
7
+
8
+ import parsl
10
9
  from parsl.data_provider.files import File
10
+ from parsl.data_provider.staging import Staging
11
11
  from parsl.errors import ParslError
12
12
 
13
-
14
13
  logger = logging.getLogger(__name__)
15
14
 
16
15
 
@@ -0,0 +1,115 @@
1
+ from concurrent.futures import Future
2
+ from dataclasses import dataclass
3
+ from functools import singledispatch
4
+ from typing import Callable, Sequence
5
+
6
+
7
+ @dataclass
8
+ class DependencyResolver:
9
+ """A DependencyResolver describes how app dependencies can be resolved.
10
+ It is specified as two functions: `traverse_to_gather` which turns an
11
+ app parameter into a sequence of futures which must be waited for before
12
+ the task can be executed (for example, in the case of
13
+ `DEEP_DEPENDENCY_RESOLVER` this traverses structures such as lists to
14
+ find every contained ``Future``), and `traverse_to_unwrap` which turns an
15
+ app parameter into its value to be passed to the app on execution
16
+ (for example in the case of `DEEP_DEPENDENCY_RESOLVER` this replaces a
17
+ list containing futures with a new list containing the values of those
18
+ resolved futures).
19
+
20
+ By default, Parsl will use `SHALLOW_DEPENDENCY_RESOLVER` which only
21
+ resolves Futures passed directly as arguments.
22
+ """
23
+ traverse_to_gather: Callable[[object], Sequence[Future]]
24
+ traverse_to_unwrap: Callable[[object], object]
25
+
26
+
27
+ @singledispatch
28
+ def shallow_traverse_to_gather(o):
29
+ # objects in general do not expose futures that we can see
30
+ return []
31
+
32
+
33
+ @singledispatch
34
+ def shallow_traverse_to_unwrap(o):
35
+ # objects in general unwrap to themselves
36
+ return o
37
+
38
+
39
+ @shallow_traverse_to_gather.register
40
+ def _(fut: Future):
41
+ return [fut]
42
+
43
+
44
+ @shallow_traverse_to_unwrap.register
45
+ @singledispatch
46
+ def _(fut: Future):
47
+ assert fut.done()
48
+ return fut.result()
49
+
50
+
51
+ @singledispatch
52
+ def deep_traverse_to_gather(o):
53
+ # objects in general do not expose futures that we can see
54
+ return []
55
+
56
+
57
+ @singledispatch
58
+ def deep_traverse_to_unwrap(o):
59
+ # objects in general unwrap to themselves
60
+ return o
61
+
62
+
63
+ @deep_traverse_to_gather.register
64
+ def _(fut: Future):
65
+ return [fut]
66
+
67
+
68
+ @deep_traverse_to_unwrap.register
69
+ @singledispatch
70
+ def _(fut: Future):
71
+ assert fut.done()
72
+ return fut.result()
73
+
74
+
75
+ @deep_traverse_to_gather.register(tuple)
76
+ @deep_traverse_to_gather.register(list)
77
+ @deep_traverse_to_gather.register(set)
78
+ def _(iterable):
79
+ return [e for v in iterable for e in deep_traverse_to_gather(v)]
80
+
81
+
82
+ @deep_traverse_to_unwrap.register(tuple)
83
+ @deep_traverse_to_unwrap.register(list)
84
+ @deep_traverse_to_unwrap.register(set)
85
+ @singledispatch
86
+ def _(iterable):
87
+
88
+ type_ = type(iterable)
89
+ return type_(map(deep_traverse_to_unwrap, iterable))
90
+
91
+
92
+ @deep_traverse_to_gather.register(dict)
93
+ def _(dictionary):
94
+ futures = []
95
+ for key, value in dictionary.items():
96
+ futures.extend(deep_traverse_to_gather(key))
97
+ futures.extend(deep_traverse_to_gather(value))
98
+ return futures
99
+
100
+
101
+ @deep_traverse_to_unwrap.register(dict)
102
+ def _(dictionary):
103
+ unwrapped_dict = {}
104
+ for key, value in dictionary.items():
105
+ key = deep_traverse_to_unwrap(key)
106
+ value = deep_traverse_to_unwrap(value)
107
+ unwrapped_dict[key] = value
108
+ return unwrapped_dict
109
+
110
+
111
+ DEEP_DEPENDENCY_RESOLVER = DependencyResolver(traverse_to_gather=deep_traverse_to_gather,
112
+ traverse_to_unwrap=deep_traverse_to_unwrap)
113
+
114
+ SHALLOW_DEPENDENCY_RESOLVER = DependencyResolver(traverse_to_gather=shallow_traverse_to_gather,
115
+ traverse_to_unwrap=shallow_traverse_to_unwrap)