parsl 2023.7.10__tar.gz → 2023.7.17__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 (407) hide show
  1. {parsl-2023.7.10/parsl.egg-info → parsl-2023.7.17}/PKG-INFO +2 -2
  2. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/high_throughput/executor.py +2 -3
  3. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/high_throughput/process_worker_pool.py +2 -3
  4. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/serialize/concretes.py +0 -19
  5. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/conftest.py +71 -3
  6. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_htex_worker_failure.py +5 -12
  7. parsl-2023.7.17/parsl/tests/test_regression/test_1606_wait_for_current_tasks.py +42 -0
  8. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_scaling/test_regression_1621.py +26 -20
  9. parsl-2023.7.17/parsl/tests/test_scaling/test_scale_down.py +97 -0
  10. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/version.py +1 -1
  11. {parsl-2023.7.10 → parsl-2023.7.17/parsl.egg-info}/PKG-INFO +2 -2
  12. parsl-2023.7.10/parsl/tests/test_regression/test_1606_wait_for_current_tasks.py +0 -17
  13. parsl-2023.7.10/parsl/tests/test_scaling/test_scale_down.py +0 -80
  14. {parsl-2023.7.10 → parsl-2023.7.17}/LICENSE +0 -0
  15. {parsl-2023.7.10 → parsl-2023.7.17}/MANIFEST.in +0 -0
  16. {parsl-2023.7.10 → parsl-2023.7.17}/README.rst +0 -0
  17. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/__init__.py +0 -0
  18. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/addresses.py +0 -0
  19. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/app/__init__.py +0 -0
  20. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/app/app.py +0 -0
  21. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/app/bash.py +0 -0
  22. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/app/errors.py +0 -0
  23. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/app/futures.py +0 -0
  24. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/app/python.py +0 -0
  25. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/benchmark/__init__.py +0 -0
  26. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/benchmark/perf.py +0 -0
  27. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/channels/__init__.py +0 -0
  28. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/channels/base.py +0 -0
  29. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/channels/errors.py +0 -0
  30. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/channels/local/__init__.py +0 -0
  31. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/channels/local/local.py +0 -0
  32. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/channels/oauth_ssh/__init__.py +0 -0
  33. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/channels/oauth_ssh/oauth_ssh.py +0 -0
  34. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/channels/ssh/__init__.py +0 -0
  35. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/channels/ssh/ssh.py +0 -0
  36. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/channels/ssh_il/__init__.py +0 -0
  37. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/channels/ssh_il/ssh_il.py +0 -0
  38. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/concurrent/__init__.py +0 -0
  39. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/config.py +0 -0
  40. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/ASPIRE1.py +0 -0
  41. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/Azure.py +0 -0
  42. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/__init__.py +0 -0
  43. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/ad_hoc.py +0 -0
  44. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/bluewaters.py +0 -0
  45. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/bridges.py +0 -0
  46. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/cc_in2p3.py +0 -0
  47. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/comet.py +0 -0
  48. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/cooley.py +0 -0
  49. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/ec2.py +0 -0
  50. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/frontera.py +0 -0
  51. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/htex_local.py +0 -0
  52. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/illinoiscluster.py +0 -0
  53. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/kubernetes.py +0 -0
  54. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/local_threads.py +0 -0
  55. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/midway.py +0 -0
  56. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/osg.py +0 -0
  57. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/polaris.py +0 -0
  58. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/stampede2.py +0 -0
  59. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/summit.py +0 -0
  60. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/theta.py +0 -0
  61. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/toss3_llnl.py +0 -0
  62. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/vineex_local.py +0 -0
  63. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/configs/wqex_local.py +0 -0
  64. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/data_provider/__init__.py +0 -0
  65. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/data_provider/data_manager.py +0 -0
  66. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/data_provider/file_noop.py +0 -0
  67. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/data_provider/files.py +0 -0
  68. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/data_provider/ftp.py +0 -0
  69. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/data_provider/globus.py +0 -0
  70. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/data_provider/http.py +0 -0
  71. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/data_provider/rsync.py +0 -0
  72. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/data_provider/staging.py +0 -0
  73. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/__init__.py +0 -0
  74. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/dflow.py +0 -0
  75. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/errors.py +0 -0
  76. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/executor_status.py +0 -0
  77. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/futures.py +0 -0
  78. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/job_error_handler.py +0 -0
  79. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/job_status_poller.py +0 -0
  80. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/memoization.py +0 -0
  81. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/rundirs.py +0 -0
  82. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/states.py +0 -0
  83. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/strategy.py +0 -0
  84. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/dataflow/taskrecord.py +0 -0
  85. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/errors.py +0 -0
  86. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/__init__.py +0 -0
  87. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/base.py +0 -0
  88. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/errors.py +0 -0
  89. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/flux/__init__.py +0 -0
  90. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/flux/execute_parsl_task.py +0 -0
  91. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/flux/executor.py +0 -0
  92. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/flux/flux_instance_manager.py +0 -0
  93. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/high_throughput/__init__.py +0 -0
  94. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/high_throughput/errors.py +0 -0
  95. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/high_throughput/interchange.py +0 -0
  96. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/high_throughput/manager_record.py +0 -0
  97. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/high_throughput/monitoring_info.py +0 -0
  98. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/high_throughput/probe.py +0 -0
  99. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/high_throughput/zmq_pipes.py +0 -0
  100. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/status_handling.py +0 -0
  101. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/taskvine/__init__.py +0 -0
  102. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/taskvine/errors.py +0 -0
  103. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/taskvine/exec_parsl_function.py +0 -0
  104. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/taskvine/executor.py +0 -0
  105. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/threads.py +0 -0
  106. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/workqueue/__init__.py +0 -0
  107. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/workqueue/errors.py +0 -0
  108. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/workqueue/exec_parsl_function.py +0 -0
  109. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/workqueue/executor.py +0 -0
  110. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/workqueue/parsl_coprocess.py +0 -0
  111. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/executors/workqueue/parsl_coprocess_stub.py +0 -0
  112. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/launchers/__init__.py +0 -0
  113. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/launchers/base.py +0 -0
  114. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/launchers/errors.py +0 -0
  115. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/launchers/launchers.py +0 -0
  116. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/log_utils.py +0 -0
  117. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/__init__.py +0 -0
  118. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/db_manager.py +0 -0
  119. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/message_type.py +0 -0
  120. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/monitoring.py +0 -0
  121. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/queries/__init__.py +0 -0
  122. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/queries/pandas.py +0 -0
  123. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/radios.py +0 -0
  124. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/remote.py +0 -0
  125. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/types.py +0 -0
  126. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/__init__.py +0 -0
  127. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/app.py +0 -0
  128. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/models.py +0 -0
  129. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/plots/__init__.py +0 -0
  130. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/plots/default/__init__.py +0 -0
  131. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/plots/default/task_plots.py +0 -0
  132. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/plots/default/workflow_plots.py +0 -0
  133. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/plots/default/workflow_resource_plots.py +0 -0
  134. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/static/parsl-logo-white.png +0 -0
  135. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/static/parsl-monitor.css +0 -0
  136. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/templates/app.html +0 -0
  137. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/templates/dag.html +0 -0
  138. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/templates/error.html +0 -0
  139. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/templates/layout.html +0 -0
  140. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/templates/resource_usage.html +0 -0
  141. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/templates/task.html +0 -0
  142. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/templates/workflow.html +0 -0
  143. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/templates/workflows_summary.html +0 -0
  144. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/utils.py +0 -0
  145. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/version.py +0 -0
  146. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/monitoring/visualization/views.py +0 -0
  147. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/multiprocessing.py +0 -0
  148. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/process_loggers.py +0 -0
  149. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/__init__.py +0 -0
  150. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/ad_hoc/__init__.py +0 -0
  151. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/ad_hoc/ad_hoc.py +0 -0
  152. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/aws/__init__.py +0 -0
  153. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/aws/aws.py +0 -0
  154. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/aws/template.py +0 -0
  155. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/azure/__init__.py +0 -0
  156. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/azure/azure.py +0 -0
  157. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/azure/template.py +0 -0
  158. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/base.py +0 -0
  159. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/cluster_provider.py +0 -0
  160. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/cobalt/__init__.py +0 -0
  161. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/cobalt/cobalt.py +0 -0
  162. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/cobalt/template.py +0 -0
  163. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/condor/__init__.py +0 -0
  164. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/condor/condor.py +0 -0
  165. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/condor/template.py +0 -0
  166. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/errors.py +0 -0
  167. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/googlecloud/__init__.py +0 -0
  168. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/googlecloud/googlecloud.py +0 -0
  169. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/grid_engine/__init__.py +0 -0
  170. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/grid_engine/grid_engine.py +0 -0
  171. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/grid_engine/template.py +0 -0
  172. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/kubernetes/__init__.py +0 -0
  173. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/kubernetes/kube.py +0 -0
  174. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/kubernetes/template.py +0 -0
  175. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/local/__init__.py +0 -0
  176. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/local/local.py +0 -0
  177. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/lsf/__init__.py +0 -0
  178. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/lsf/lsf.py +0 -0
  179. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/lsf/template.py +0 -0
  180. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/pbspro/__init__.py +0 -0
  181. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/pbspro/pbspro.py +0 -0
  182. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/pbspro/template.py +0 -0
  183. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/slurm/__init__.py +0 -0
  184. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/slurm/slurm.py +0 -0
  185. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/slurm/template.py +0 -0
  186. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/torque/__init__.py +0 -0
  187. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/torque/template.py +0 -0
  188. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/providers/torque/torque.py +0 -0
  189. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/py.typed +0 -0
  190. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/serialize/__init__.py +0 -0
  191. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/serialize/base.py +0 -0
  192. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/serialize/facade.py +0 -0
  193. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/__init__.py +0 -0
  194. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/callables_helper.py +0 -0
  195. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/__init__.py +0 -0
  196. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/ad_hoc_cluster_htex.py +0 -0
  197. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/azure_single_node.py +0 -0
  198. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/bluewaters.py +0 -0
  199. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/bridges.py +0 -0
  200. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/cc_in2p3.py +0 -0
  201. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/comet.py +0 -0
  202. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/cooley_htex.py +0 -0
  203. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/ec2_single_node.py +0 -0
  204. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/ec2_spot.py +0 -0
  205. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/frontera.py +0 -0
  206. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/htex_ad_hoc_cluster.py +0 -0
  207. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/htex_local.py +0 -0
  208. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/htex_local_alternate.py +0 -0
  209. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/htex_local_intask_staging.py +0 -0
  210. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/htex_local_rsync_staging.py +0 -0
  211. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/local_adhoc.py +0 -0
  212. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/local_threads.py +0 -0
  213. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/local_threads_checkpoint.py +0 -0
  214. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/local_threads_checkpoint_dfk_exit.py +0 -0
  215. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/local_threads_checkpoint_periodic.py +0 -0
  216. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/local_threads_checkpoint_task_exit.py +0 -0
  217. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/local_threads_ftp_in_task.py +0 -0
  218. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/local_threads_globus.py +0 -0
  219. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/local_threads_http_in_task.py +0 -0
  220. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/local_threads_monitoring.py +0 -0
  221. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/local_threads_no_cache.py +0 -0
  222. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/midway.py +0 -0
  223. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/nscc_singapore.py +0 -0
  224. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/osg_htex.py +0 -0
  225. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/petrelkube.py +0 -0
  226. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/summit.py +0 -0
  227. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/swan_htex.py +0 -0
  228. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/taskvine_ex.py +0 -0
  229. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/theta.py +0 -0
  230. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/user_opts.py +0 -0
  231. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/configs/workqueue_ex.py +0 -0
  232. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/__init__.py +0 -0
  233. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/latency.py +0 -0
  234. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_apps/__init__.py +0 -0
  235. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_channels/__init__.py +0 -0
  236. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_channels/test_channels.py +0 -0
  237. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_channels/test_local_channel.py +0 -0
  238. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_channels/test_scp_1.py +0 -0
  239. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_channels/test_ssh_1.py +0 -0
  240. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_channels/test_ssh_errors.py +0 -0
  241. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_channels/test_ssh_file_transport.py +0 -0
  242. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_channels/test_ssh_interactive.py +0 -0
  243. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_parsl_load_default_config.py +0 -0
  244. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_stress/__init__.py +0 -0
  245. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_stress/test_python_simple.py +0 -0
  246. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/integration/test_stress/test_python_threads.py +0 -0
  247. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/manual_tests/__init__.py +0 -0
  248. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/manual_tests/htex_local.py +0 -0
  249. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/manual_tests/test_ad_hoc_htex.py +0 -0
  250. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/manual_tests/test_basic.py +0 -0
  251. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/manual_tests/test_fan_in_out_htex_remote.py +0 -0
  252. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/manual_tests/test_log_filter.py +0 -0
  253. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/manual_tests/test_memory_limits.py +0 -0
  254. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/manual_tests/test_oauth_ssh.py +0 -0
  255. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/manual_tests/test_regression_220.py +0 -0
  256. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/manual_tests/test_udp_simple.py +0 -0
  257. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/manual_tests/test_worker_count.py +0 -0
  258. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/scaling_tests/__init__.py +0 -0
  259. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/scaling_tests/htex_local.py +0 -0
  260. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/scaling_tests/local_threads.py +0 -0
  261. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/scaling_tests/test_scale.py +0 -0
  262. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/scaling_tests/vineex_condor.py +0 -0
  263. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/scaling_tests/vineex_local.py +0 -0
  264. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/scaling_tests/wqex_condor.py +0 -0
  265. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/scaling_tests/wqex_local.py +0 -0
  266. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/site_tests/__init__.py +0 -0
  267. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/site_tests/site_config_selector.py +0 -0
  268. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/site_tests/test_provider.py +0 -0
  269. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/site_tests/test_site.py +0 -0
  270. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/sites/__init__.py +0 -0
  271. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/sites/test_affinity.py +0 -0
  272. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/sites/test_concurrent.py +0 -0
  273. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/sites/test_dynamic_executor.py +0 -0
  274. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/sites/test_ec2.py +0 -0
  275. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/sites/test_launchers.py +0 -0
  276. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/sites/test_local_adhoc.py +0 -0
  277. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/sites/test_mpi/__init__.py +0 -0
  278. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/sites/test_start_method.py +0 -0
  279. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/sites/test_worker_info.py +0 -0
  280. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_aalst_patterns.py +0 -0
  281. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/__init__.py +0 -0
  282. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/test_apptimeout.py +0 -0
  283. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/test_basic.py +0 -0
  284. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/test_error_codes.py +0 -0
  285. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/test_keyword_overlaps.py +0 -0
  286. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/test_kwarg_storage.py +0 -0
  287. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/test_memoize.py +0 -0
  288. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/test_memoize_ignore_args.py +0 -0
  289. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py +0 -0
  290. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/test_multiline.py +0 -0
  291. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/test_pipeline.py +0 -0
  292. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_bash_apps/test_stdout.py +0 -0
  293. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_callables.py +0 -0
  294. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_channels/__init__.py +0 -0
  295. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_channels/test_large_output.py +0 -0
  296. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_checkpointing/__init__.py +0 -0
  297. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_checkpointing/test_periodic.py +0 -0
  298. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_checkpointing/test_python_checkpoint_1.py +0 -0
  299. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_checkpointing/test_python_checkpoint_2.py +0 -0
  300. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_checkpointing/test_python_checkpoint_3.py +0 -0
  301. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_checkpointing/test_regression_232.py +0 -0
  302. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_checkpointing/test_regression_233.py +0 -0
  303. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_checkpointing/test_regression_239.py +0 -0
  304. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_checkpointing/test_task_exit.py +0 -0
  305. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_data/__init__.py +0 -0
  306. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_data/test_file.py +0 -0
  307. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_data/test_file_apps.py +0 -0
  308. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_data/test_file_staging.py +0 -0
  309. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_data/test_output_chain_filenames.py +0 -0
  310. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_docs/__init__.py +0 -0
  311. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_docs/test_from_slides.py +0 -0
  312. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_docs/test_tutorial_1.py +0 -0
  313. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_docs/test_workflow1.py +0 -0
  314. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_docs/test_workflow2.py +0 -0
  315. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_docs/test_workflow3.py +0 -0
  316. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_docs/test_workflow4.py +0 -0
  317. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/__init__.py +0 -0
  318. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_fail.py +0 -0
  319. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_htex_basic.py +0 -0
  320. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_htex_missing_worker.py +0 -0
  321. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_python_walltime.py +0 -0
  322. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_rand_fail.py +0 -0
  323. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_resource_spec.py +0 -0
  324. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_retries.py +0 -0
  325. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_retry_handler.py +0 -0
  326. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_retry_handler_failure.py +0 -0
  327. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_serialization_fail.py +0 -0
  328. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_error_handling/test_wrap_with_logs.py +0 -0
  329. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_flowcontrol/__init__.py +0 -0
  330. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_flux.py +0 -0
  331. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_monitoring/__init__.py +0 -0
  332. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_monitoring/test_basic.py +0 -0
  333. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_monitoring/test_db_locks.py +0 -0
  334. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_monitoring/test_fuzz_zmq.py +0 -0
  335. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_monitoring/test_memoization_representation.py +0 -0
  336. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_monitoring/test_viz_colouring.py +0 -0
  337. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_providers/__init__.py +0 -0
  338. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_providers/test_local_provider.py +0 -0
  339. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/__init__.py +0 -0
  340. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_arg_input_types.py +0 -0
  341. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_basic.py +0 -0
  342. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_dep_standard_futures.py +0 -0
  343. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_dependencies.py +0 -0
  344. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_depfail_propagation.py +0 -0
  345. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_fail.py +0 -0
  346. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_fibonacci_iterative.py +0 -0
  347. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_fibonacci_recursive.py +0 -0
  348. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_futures.py +0 -0
  349. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_garbage_collect.py +0 -0
  350. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_import_fail.py +0 -0
  351. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_join.py +0 -0
  352. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_mapred.py +0 -0
  353. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_memoize_1.py +0 -0
  354. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_memoize_2.py +0 -0
  355. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_memoize_4.py +0 -0
  356. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py +0 -0
  357. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_memoize_ignore_args.py +0 -0
  358. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_memoize_joinapp.py +0 -0
  359. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_outputs.py +0 -0
  360. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_overview.py +0 -0
  361. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_pipeline.py +0 -0
  362. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_simple.py +0 -0
  363. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_timeout.py +0 -0
  364. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_python_apps/test_type5.py +0 -0
  365. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_regression/__init__.py +0 -0
  366. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_regression/test_1480.py +0 -0
  367. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_regression/test_1653.py +0 -0
  368. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_regression/test_221.py +0 -0
  369. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_regression/test_226.py +0 -0
  370. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_regression/test_2652.py +0 -0
  371. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_regression/test_69a.py +0 -0
  372. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_regression/test_69b.py +0 -0
  373. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_regression/test_854.py +0 -0
  374. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_regression/test_97_parallelism_0.py +0 -0
  375. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_regression/test_98.py +0 -0
  376. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_scaling/__init__.py +0 -0
  377. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_serialization/__init__.py +0 -0
  378. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_serialization/test_2555_caching_deserializer.py +0 -0
  379. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_serialization/test_basic.py +0 -0
  380. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_staging/__init__.py +0 -0
  381. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_staging/staging_provider.py +0 -0
  382. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_staging/test_1316.py +0 -0
  383. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_staging/test_docs_1.py +0 -0
  384. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_staging/test_docs_2.py +0 -0
  385. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_staging/test_elaborate_noop_file.py +0 -0
  386. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_staging/test_staging_ftp.py +0 -0
  387. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_staging/test_staging_ftp_in_task.py +0 -0
  388. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_staging/test_staging_globus.py +0 -0
  389. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_staging/test_staging_https.py +0 -0
  390. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_staging/test_staging_https_in_task.py +0 -0
  391. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_summary.py +0 -0
  392. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_thread_parallelism.py +0 -0
  393. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_threads/__init__.py +0 -0
  394. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_threads/test_configs.py +0 -0
  395. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/test_threads/test_lazy_errors.py +0 -0
  396. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/tests/utils.py +0 -0
  397. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/usage_tracking/__init__.py +0 -0
  398. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/usage_tracking/usage.py +0 -0
  399. {parsl-2023.7.10 → parsl-2023.7.17}/parsl/utils.py +0 -0
  400. {parsl-2023.7.10 → parsl-2023.7.17}/parsl.egg-info/SOURCES.txt +0 -0
  401. {parsl-2023.7.10 → parsl-2023.7.17}/parsl.egg-info/dependency_links.txt +0 -0
  402. {parsl-2023.7.10 → parsl-2023.7.17}/parsl.egg-info/entry_points.txt +0 -0
  403. {parsl-2023.7.10 → parsl-2023.7.17}/parsl.egg-info/requires.txt +0 -0
  404. {parsl-2023.7.10 → parsl-2023.7.17}/parsl.egg-info/top_level.txt +0 -0
  405. {parsl-2023.7.10 → parsl-2023.7.17}/requirements.txt +0 -0
  406. {parsl-2023.7.10 → parsl-2023.7.17}/setup.cfg +0 -0
  407. {parsl-2023.7.10 → parsl-2023.7.17}/setup.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsl
3
- Version: 2023.7.10
3
+ Version: 2023.7.17
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/2023.07.10.tar.gz
6
+ Download-URL: https://github.com/Parsl/parsl/archive/2023.07.17.tar.gz
7
7
  Author: The Parsl Team
8
8
  Author-email: parsl@googlegroups.com
9
9
  License: Apache 2.0
@@ -595,10 +595,9 @@ class HighThroughputExecutor(BlockProviderExecutor, RepresentationMixin):
595
595
  except TypeError:
596
596
  raise SerializationError(func.__name__)
597
597
 
598
- msg = {"task_id": task_id,
599
- "buffer": fn_buf}
598
+ msg = {"task_id": task_id, "buffer": fn_buf}
600
599
 
601
- # Post task to the the outgoing queue
600
+ # Post task to the outgoing queue
602
601
  self.outgoing_q.put(msg)
603
602
 
604
603
  # Return the future
@@ -370,7 +370,7 @@ class Manager:
370
370
  logger.critical("Exiting")
371
371
 
372
372
  @wrap_with_logs
373
- def worker_watchdog(self, kill_event):
373
+ def worker_watchdog(self, kill_event: threading.Event):
374
374
  """Keeps workers alive.
375
375
 
376
376
  Parameters:
@@ -381,7 +381,7 @@ class Manager:
381
381
 
382
382
  logger.debug("Starting worker watchdog")
383
383
 
384
- while not kill_event.is_set():
384
+ while not kill_event.wait(self.heartbeat_period):
385
385
  for worker_id, p in self.procs.items():
386
386
  if not p.is_alive():
387
387
  logger.error("Worker {} has died".format(worker_id))
@@ -409,7 +409,6 @@ class Manager:
409
409
  name="HTEX-Worker-{}".format(worker_id))
410
410
  self.procs[worker_id] = p
411
411
  logger.info("Worker {} has been restarted".format(worker_id))
412
- time.sleep(self.heartbeat_period)
413
412
 
414
413
  logger.critical("Exiting")
415
414
 
@@ -28,25 +28,6 @@ class PickleSerializer(SerializerBase):
28
28
  return pickle.loads(body)
29
29
 
30
30
 
31
- class PickleCallableSerializer(SerializerBase):
32
- """This serializer is a variant of the PickleSerializer that will
33
- serialize and deserialize callables using an lru_cache, under the
34
- assumption that callables are immutable and so can be cached.
35
- """
36
-
37
- _identifier = b'C1'
38
- _for_code = True
39
- _for_data = False
40
-
41
- @functools.lru_cache
42
- def serialize(self, data: Any) -> bytes:
43
- return pickle.dumps(data)
44
-
45
- @functools.lru_cache
46
- def deserialize(self, body: bytes) -> Any:
47
- return pickle.loads(body)
48
-
49
-
50
31
  class DillSerializer(SerializerBase):
51
32
  """ Dill serialization works on a superset of object including the ones covered by pickle.
52
33
  However for most cases pickle is faster. For most callable objects the additional overhead
@@ -1,12 +1,16 @@
1
1
  import importlib.util
2
+ import itertools
2
3
  import logging
3
4
  import os
4
5
  import pathlib
6
+ import time
7
+ import types
5
8
  import signal
6
9
  import sys
7
10
  import tempfile
8
11
  import threading
9
12
  import traceback
13
+ import typing as t
10
14
  from datetime import datetime
11
15
  from glob import glob
12
16
  from itertools import chain
@@ -157,9 +161,9 @@ def load_dfk_local_module(request, pytestconfig):
157
161
  parsl.load. It should be a Callable that returns a parsl Config object.
158
162
 
159
163
  If local_setup and/or local_teardown are callables (such as functions) in
160
- the test module, they they will be invoked before/after the tests. This
161
- can be used to perform more interesting DFK initialisation not possible
162
- with local_config.
164
+ the test module, they will be invoked before/after the tests. This can
165
+ be used to perform more interesting DFK initialisation not possible with
166
+ local_config.
163
167
  """
164
168
 
165
169
  config = pytestconfig.getoption('config')[0]
@@ -290,3 +294,67 @@ def pytest_ignore_collect(path):
290
294
  return True
291
295
  else:
292
296
  return False
297
+
298
+
299
+ def create_traceback(start: int = 0) -> t.Optional[types.TracebackType]:
300
+ """
301
+ Dynamically create a traceback.
302
+
303
+ Builds a traceback from the top of the stack (the currently executing frame) on
304
+ down to the root frame. Optionally, use start to build from an earlier stack
305
+ frame.
306
+
307
+ N.B. uses `sys._getframe`, which I only know to exist in CPython.
308
+ """
309
+ tb = None
310
+ for depth in itertools.count(start + 1, 1):
311
+ try:
312
+ frame = sys._getframe(depth)
313
+ tb = types.TracebackType(tb, frame, frame.f_lasti, frame.f_lineno)
314
+ except ValueError:
315
+ break
316
+ return tb
317
+
318
+
319
+ @pytest.fixture
320
+ def try_assert():
321
+ def _impl(
322
+ test_func: t.Callable[[], bool],
323
+ fail_msg: str = "",
324
+ timeout_ms: float = 5000,
325
+ attempts: int = 0,
326
+ check_period_ms: int = 20,
327
+ ):
328
+ tb = create_traceback(start=1)
329
+ timeout_s = abs(timeout_ms) / 1000.0
330
+ check_period_s = abs(check_period_ms) / 1000.0
331
+ if attempts > 0:
332
+ for _attempt_no in range(attempts):
333
+ if test_func():
334
+ return
335
+ time.sleep(check_period_s)
336
+ else:
337
+ att_fail = (
338
+ f"\n (Still failing after attempt limit [{attempts}], testing"
339
+ f" every {check_period_ms}ms)"
340
+ )
341
+ exc = AssertionError(f"{str(fail_msg)}{att_fail}".strip())
342
+ raise exc.with_traceback(tb)
343
+
344
+ elif timeout_s > 0:
345
+ end = time.monotonic() + timeout_s
346
+ while time.monotonic() < end:
347
+ if test_func():
348
+ return
349
+ time.sleep(check_period_s)
350
+ att_fail = (
351
+ f"\n (Still failing after timeout [{timeout_ms}ms], with attempts "
352
+ f"every {check_period_ms}ms)"
353
+ )
354
+ exc = AssertionError(f"{str(fail_msg)}{att_fail}".strip())
355
+ raise exc.with_traceback(tb)
356
+
357
+ else:
358
+ raise AssertionError("Bad assert call: no attempts or timeout period")
359
+
360
+ yield _impl
@@ -1,28 +1,21 @@
1
1
  import pytest
2
2
 
3
- import parsl
4
3
  from parsl.app.app import python_app
5
- from parsl.tests.configs.htex_local import fresh_config
6
-
7
4
  from parsl.executors.high_throughput.errors import WorkerLost
8
5
 
9
6
 
10
- def local_setup():
7
+ def local_config():
8
+ from parsl.tests.configs.htex_local import fresh_config
11
9
  config = fresh_config()
12
10
  config.executors[0].poll_period = 1
13
11
  config.executors[0].max_workers = 1
14
- parsl.load(config)
15
-
16
-
17
- def local_teardown():
18
- parsl.dfk().cleanup()
19
- parsl.clear()
12
+ config.executors[0].heartbeat_period = 1
13
+ return config
20
14
 
21
15
 
22
16
  @python_app
23
17
  def kill_worker():
24
- import sys
25
- sys.exit(2)
18
+ raise SystemExit(2)
26
19
 
27
20
 
28
21
  @pytest.mark.local
@@ -0,0 +1,42 @@
1
+ import threading
2
+ import time
3
+
4
+ import pytest
5
+
6
+ import parsl
7
+ from parsl.tests.configs.local_threads import fresh_config as local_config # noqa
8
+
9
+
10
+ @parsl.python_app
11
+ def slow_app(evt: threading.Event):
12
+ evt.wait()
13
+
14
+
15
+ @pytest.mark.local
16
+ def test_wait_for_tasks():
17
+ """
18
+ gh#1606 reported that wait_for_current_tasks fails due to tasks being removed
19
+ from the DFK tasks dict as they complete; bug introduced in #1543.
20
+ """
21
+ def test_kernel(may_wait: threading.Event):
22
+ e1, e2 = threading.Event(), threading.Event()
23
+
24
+ # app_slow is in *middle* of internal DFK data structure
25
+ app_fast1, app_slow, app_fast2 = slow_app(e1), slow_app(e2), slow_app(e1)
26
+
27
+ may_wait.set() # initiated wait in outer test
28
+ time.sleep(0.01)
29
+
30
+ e1.set()
31
+
32
+ while not all(f.done() for f in (app_fast1, app_fast2)):
33
+ time.sleep(0.01)
34
+
35
+ e2.set()
36
+ app_slow.result()
37
+
38
+ may_continue = threading.Event()
39
+ threading.Thread(target=test_kernel, daemon=True, args=(may_continue,)).start()
40
+
41
+ may_continue.wait()
42
+ parsl.dfk().wait_for_current_tasks() # per sleeps, waits for all 3 tasks
@@ -1,33 +1,27 @@
1
- # this test is intended to ensure that only one block is launched when only
2
- # one app is invoked. this is a regression test.
1
+ import threading
2
+
3
+ import pytest
3
4
 
4
- import logging
5
5
  import parsl
6
6
  from parsl.channels import LocalChannel
7
7
  from parsl.config import Config
8
8
  from parsl.executors import HighThroughputExecutor
9
9
  from parsl.launchers import SimpleLauncher
10
10
  from parsl.providers import LocalProvider
11
- import pytest
12
-
13
-
14
- logger = logging.getLogger(__name__)
15
11
 
16
12
 
17
13
  @parsl.python_app
18
14
  def app():
19
15
  import time
20
- time.sleep(45)
16
+ time.sleep(1)
21
17
 
22
18
 
23
19
  class OneShotLocalProvider(LocalProvider):
24
20
  def __init__(self, *args, **kwargs):
25
- logger.info("OneShotLocalProvider __init__ with MRO: {}".format(type(self).mro()))
26
21
  self.recorded_submits = 0
27
22
  super().__init__(*args, **kwargs)
28
23
 
29
24
  def submit(self, *args, **kwargs):
30
- logger.info("OneShotLocalProvider submit")
31
25
  self.recorded_submits += 1
32
26
  return super().submit(*args, **kwargs)
33
27
 
@@ -35,32 +29,44 @@ class OneShotLocalProvider(LocalProvider):
35
29
 
36
30
 
37
31
  @pytest.mark.local
38
- def test_one_block():
39
-
32
+ def test_one_block(tmpd_cwd):
33
+ """
34
+ this test is intended to ensure that only one block is launched when only
35
+ one app is invoked. this is a regression test.
36
+ """
40
37
  oneshot_provider = OneShotLocalProvider(
41
- channel=LocalChannel(),
42
- init_blocks=0,
43
- min_blocks=0,
44
- max_blocks=10,
45
- launcher=SimpleLauncher(),
46
- )
38
+ channel=LocalChannel(),
39
+ init_blocks=0,
40
+ min_blocks=0,
41
+ max_blocks=10,
42
+ launcher=SimpleLauncher(),
43
+ )
47
44
 
48
45
  config = Config(
49
46
  executors=[
50
47
  HighThroughputExecutor(
51
48
  label="htex_local",
49
+ address="127.0.0.1",
52
50
  worker_debug=True,
53
51
  cores_per_worker=1,
54
52
  provider=oneshot_provider,
53
+ worker_logdir_root=str(tmpd_cwd)
55
54
  )
56
55
  ],
57
56
  strategy='simple',
58
57
  )
59
58
 
60
59
  parsl.load(config)
60
+ dfk = parsl.dfk()
61
+
62
+ def poller():
63
+ import time
64
+ while True:
65
+ dfk.job_status_poller.poll()
66
+ time.sleep(0.1)
61
67
 
62
- f = app()
63
- f.result()
68
+ threading.Thread(target=poller, daemon=True).start()
69
+ app().result()
64
70
  parsl.dfk().cleanup()
65
71
  parsl.clear()
66
72
 
@@ -0,0 +1,97 @@
1
+ import logging
2
+ import time
3
+
4
+ import pytest
5
+
6
+ import parsl
7
+
8
+ from parsl import File, python_app
9
+ from parsl.providers import LocalProvider
10
+ from parsl.channels import LocalChannel
11
+ from parsl.launchers import SingleNodeLauncher
12
+ from parsl.config import Config
13
+ from parsl.executors import HighThroughputExecutor
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+ _max_blocks = 5
18
+ _min_blocks = 2
19
+
20
+
21
+ def local_config():
22
+ return Config(
23
+ executors=[
24
+ HighThroughputExecutor(
25
+ heartbeat_period=1,
26
+ heartbeat_threshold=2,
27
+ poll_period=100,
28
+ label="htex_local",
29
+ address="127.0.0.1",
30
+ max_workers=1,
31
+ provider=LocalProvider(
32
+ channel=LocalChannel(),
33
+ init_blocks=0,
34
+ max_blocks=_max_blocks,
35
+ min_blocks=_min_blocks,
36
+ launcher=SingleNodeLauncher(),
37
+ ),
38
+ )
39
+ ],
40
+ max_idletime=0.5,
41
+ strategy='htex_auto_scale',
42
+ )
43
+
44
+
45
+ @python_app
46
+ def waiting_app(ident: int, inputs=()):
47
+ import pathlib
48
+ import time
49
+
50
+ # Approximate an Event by writing to files; the test logic will poll this file
51
+ with open(inputs[0], "a") as f:
52
+ f.write(f"Ready: {ident}\n")
53
+
54
+ # Similarly, use Event approximation (file check!) by polling.
55
+ may_finish_file = pathlib.Path(inputs[1])
56
+ while not may_finish_file.exists():
57
+ time.sleep(0.01)
58
+
59
+
60
+ # see issue #1885 for details of failures of this test.
61
+ # at the time of issue #1885 this test was failing frequently
62
+ # in CI.
63
+ @pytest.mark.local
64
+ def test_scale_out(tmpd_cwd, try_assert):
65
+ dfk = parsl.dfk()
66
+
67
+ num_managers = len(dfk.executors['htex_local'].connected_managers())
68
+
69
+ assert num_managers == 0, "Expected 0 managers at start"
70
+ assert dfk.executors['htex_local'].outstanding == 0, "Expected 0 tasks at start"
71
+
72
+ ntasks = 10
73
+ ready_path = tmpd_cwd / "workers_ready"
74
+ finish_path = tmpd_cwd / "workers_may_continue"
75
+ ready_path.touch()
76
+ inputs = [File(str(ready_path)), File(str(finish_path))]
77
+
78
+ futs = [waiting_app(i, inputs=inputs) for i in range(ntasks)]
79
+
80
+ while ready_path.read_text().count("\n") < _max_blocks:
81
+ time.sleep(0.5)
82
+
83
+ assert len(dfk.executors['htex_local'].connected_managers()) == _max_blocks
84
+
85
+ finish_path.touch() # Approximation of Event, via files
86
+ [x.result() for x in futs]
87
+
88
+ assert dfk.executors['htex_local'].outstanding == 0
89
+
90
+ def assert_kernel():
91
+ return len(dfk.executors['htex_local'].connected_managers()) == _min_blocks
92
+
93
+ try_assert(
94
+ assert_kernel,
95
+ fail_msg=f"Expected {_min_blocks} managers when no tasks (min_blocks)",
96
+ timeout_ms=15000,
97
+ )
@@ -3,4 +3,4 @@
3
3
  Year.Month.Day[alpha/beta/..]
4
4
  Alphas will be numbered like this -> 2024.12.10a0
5
5
  """
6
- VERSION = '2023.07.10'
6
+ VERSION = '2023.07.17'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsl
3
- Version: 2023.7.10
3
+ Version: 2023.7.17
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/2023.07.10.tar.gz
6
+ Download-URL: https://github.com/Parsl/parsl/archive/2023.07.17.tar.gz
7
7
  Author: The Parsl Team
8
8
  Author-email: parsl@googlegroups.com
9
9
  License: Apache 2.0
@@ -1,17 +0,0 @@
1
- import parsl
2
-
3
-
4
- @parsl.python_app
5
- def slow_app(delay):
6
- import time
7
- time.sleep(delay)
8
-
9
-
10
- def test_wait_for_tasks():
11
- slow_app(5)
12
- slow_app(10) # This test has a higher task ID, and runs for a longer period
13
- slow_app(3) # This test has a higher task ID, but runs for a shorter period
14
- parsl.dfk().wait_for_current_tasks()
15
- # the regression reported in #1606 is that wait_for_current_tasks
16
- # fails due to tasks being removed from the DFK tasks dict as they
17
- # complete, introduced in #1543.
@@ -1,80 +0,0 @@
1
- import logging
2
- import parsl
3
- import pytest
4
- import time
5
- from parsl import python_app
6
-
7
- from parsl.providers import LocalProvider
8
- from parsl.channels import LocalChannel
9
- # from parsl.launchers import SimpleLauncher
10
- from parsl.launchers import SingleNodeLauncher
11
-
12
- from parsl.config import Config
13
- from parsl.executors import HighThroughputExecutor
14
-
15
- logger = logging.getLogger(__name__)
16
-
17
-
18
- def local_config():
19
- return Config(
20
- executors=[
21
- HighThroughputExecutor(
22
- heartbeat_period=2,
23
- heartbeat_threshold=6,
24
- poll_period=1,
25
- label="htex_local",
26
- max_workers=1,
27
- provider=LocalProvider(
28
- channel=LocalChannel(),
29
- init_blocks=0,
30
- max_blocks=5,
31
- min_blocks=2,
32
- launcher=SingleNodeLauncher(),
33
- ),
34
- )
35
- ],
36
- max_idletime=5,
37
- strategy='htex_auto_scale',
38
- )
39
-
40
-
41
- @python_app
42
- def sleeper(t):
43
- import time
44
- time.sleep(t)
45
-
46
-
47
- # see issue #1885 for details of failures of this test.
48
- # at the time of issue #1885 this test was failing frequently
49
- # in CI.
50
- @pytest.mark.local
51
- def test_scale_out():
52
- logger.info("start")
53
- dfk = parsl.dfk()
54
-
55
- logger.info("initial asserts")
56
- assert len(dfk.executors['htex_local'].connected_managers()) == 0, "Expected 0 managers at start"
57
- assert dfk.executors['htex_local'].outstanding == 0, "Expected 0 tasks at start"
58
-
59
- logger.info("launching tasks")
60
- fus = [sleeper(i) for i in [15 for x in range(0, 10)]]
61
-
62
- logger.info("waiting for warm up")
63
- time.sleep(15)
64
-
65
- logger.info("asserting 5 managers")
66
- assert len(dfk.executors['htex_local'].connected_managers()) == 5, "Expected 5 managers after some time"
67
-
68
- logger.info("waiting for all futures to complete")
69
- [x.result() for x in fus]
70
-
71
- logger.info("asserting 0 outstanding tasks after completion")
72
- assert dfk.executors['htex_local'].outstanding == 0, "Expected 0 outstanding tasks after future completion"
73
-
74
- logger.info("waiting a while for scale down")
75
- time.sleep(25)
76
-
77
- logger.info("asserting 2 managers remain")
78
- assert len(dfk.executors['htex_local'].connected_managers()) == 2, "Expected 2 managers when no tasks, lower bound by min_blocks"
79
-
80
- logger.info("test passed")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes