parsl 2024.1.1__tar.gz → 2024.1.8__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 (433) hide show
  1. {parsl-2024.1.1/parsl.egg-info → parsl-2024.1.8}/PKG-INFO +2 -2
  2. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/addresses.py +3 -2
  3. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/dflow.py +2 -8
  4. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/conftest.py +55 -10
  5. parsl-2024.1.8/parsl/tests/test_checkpointing/test_python_checkpoint_1.py +33 -0
  6. parsl-2024.1.8/parsl/tests/test_checkpointing/test_python_checkpoint_2.py +42 -0
  7. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_radical/test_mpi_funcs.py +3 -2
  8. parsl-2024.1.8/parsl/tests/test_staging/__init__.py +7 -0
  9. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_elaborate_noop_file.py +30 -38
  10. parsl-2024.1.8/parsl/tests/test_staging/test_staging_https.py +103 -0
  11. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/version.py +1 -1
  12. {parsl-2024.1.1 → parsl-2024.1.8/parsl.egg-info}/PKG-INFO +2 -2
  13. {parsl-2024.1.1 → parsl-2024.1.8}/parsl.egg-info/SOURCES.txt +0 -1
  14. parsl-2024.1.1/parsl/tests/test_checkpointing/test_python_checkpoint_1.py +0 -53
  15. parsl-2024.1.1/parsl/tests/test_checkpointing/test_python_checkpoint_2.py +0 -45
  16. parsl-2024.1.1/parsl/tests/test_staging/test_staging_https.py +0 -119
  17. parsl-2024.1.1/parsl/tests/test_staging/test_staging_https_in_task.py +0 -34
  18. parsl-2024.1.1/parsl/usage_tracking/__init__.py +0 -0
  19. {parsl-2024.1.1 → parsl-2024.1.8}/LICENSE +0 -0
  20. {parsl-2024.1.1 → parsl-2024.1.8}/MANIFEST.in +0 -0
  21. {parsl-2024.1.1 → parsl-2024.1.8}/README.rst +0 -0
  22. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/__init__.py +0 -0
  23. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/__init__.py +0 -0
  24. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/app.py +0 -0
  25. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/bash.py +0 -0
  26. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/errors.py +0 -0
  27. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/futures.py +0 -0
  28. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/python.py +0 -0
  29. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/benchmark/__init__.py +0 -0
  30. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/benchmark/perf.py +0 -0
  31. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/__init__.py +0 -0
  32. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/base.py +0 -0
  33. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/errors.py +0 -0
  34. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/local/__init__.py +0 -0
  35. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/local/local.py +0 -0
  36. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/oauth_ssh/__init__.py +0 -0
  37. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/oauth_ssh/oauth_ssh.py +0 -0
  38. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/ssh/__init__.py +0 -0
  39. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/ssh/ssh.py +0 -0
  40. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/ssh_il/__init__.py +0 -0
  41. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/ssh_il/ssh_il.py +0 -0
  42. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/concurrent/__init__.py +0 -0
  43. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/config.py +0 -0
  44. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/ASPIRE1.py +0 -0
  45. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/Azure.py +0 -0
  46. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/__init__.py +0 -0
  47. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/ad_hoc.py +0 -0
  48. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/bluewaters.py +0 -0
  49. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/bridges.py +0 -0
  50. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/cc_in2p3.py +0 -0
  51. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/comet.py +0 -0
  52. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/cooley.py +0 -0
  53. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/ec2.py +0 -0
  54. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/frontera.py +0 -0
  55. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/htex_local.py +0 -0
  56. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/illinoiscluster.py +0 -0
  57. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/kubernetes.py +0 -0
  58. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/local_threads.py +0 -0
  59. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/midway.py +0 -0
  60. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/osg.py +0 -0
  61. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/polaris.py +0 -0
  62. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/stampede2.py +0 -0
  63. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/summit.py +0 -0
  64. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/theta.py +0 -0
  65. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/toss3_llnl.py +0 -0
  66. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/vineex_local.py +0 -0
  67. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/wqex_local.py +0 -0
  68. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/__init__.py +0 -0
  69. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/data_manager.py +0 -0
  70. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/file_noop.py +0 -0
  71. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/files.py +0 -0
  72. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/ftp.py +0 -0
  73. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/globus.py +0 -0
  74. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/http.py +0 -0
  75. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/rsync.py +0 -0
  76. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/staging.py +0 -0
  77. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/__init__.py +0 -0
  78. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/errors.py +0 -0
  79. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/futures.py +0 -0
  80. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/memoization.py +0 -0
  81. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/rundirs.py +0 -0
  82. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/states.py +0 -0
  83. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/taskrecord.py +0 -0
  84. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/errors.py +0 -0
  85. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/__init__.py +0 -0
  86. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/base.py +0 -0
  87. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/errors.py +0 -0
  88. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/flux/__init__.py +0 -0
  89. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/flux/execute_parsl_task.py +0 -0
  90. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/flux/executor.py +0 -0
  91. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/flux/flux_instance_manager.py +0 -0
  92. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/__init__.py +0 -0
  93. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/errors.py +0 -0
  94. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/executor.py +0 -0
  95. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/interchange.py +0 -0
  96. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/manager_record.py +0 -0
  97. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/monitoring_info.py +0 -0
  98. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/probe.py +0 -0
  99. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/process_worker_pool.py +0 -0
  100. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/zmq_pipes.py +0 -0
  101. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/radical/__init__.py +0 -0
  102. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/radical/executor.py +0 -0
  103. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/radical/rpex_master.py +0 -0
  104. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/radical/rpex_resources.py +0 -0
  105. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/radical/rpex_worker.py +0 -0
  106. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/status_handling.py +0 -0
  107. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/__init__.py +0 -0
  108. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/errors.py +0 -0
  109. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/exec_parsl_function.py +0 -0
  110. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/executor.py +0 -0
  111. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/factory.py +0 -0
  112. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/factory_config.py +0 -0
  113. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/manager.py +0 -0
  114. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/manager_config.py +0 -0
  115. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/utils.py +0 -0
  116. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/threads.py +0 -0
  117. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/__init__.py +0 -0
  118. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/errors.py +0 -0
  119. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/exec_parsl_function.py +0 -0
  120. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/executor.py +0 -0
  121. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/parsl_coprocess.py +0 -0
  122. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/parsl_coprocess_stub.py +0 -0
  123. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/__init__.py +0 -0
  124. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/error_handlers.py +0 -0
  125. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/errors.py +0 -0
  126. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/job_status_poller.py +0 -0
  127. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/states.py +0 -0
  128. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/strategy.py +0 -0
  129. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/launchers/__init__.py +0 -0
  130. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/launchers/base.py +0 -0
  131. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/launchers/errors.py +0 -0
  132. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/launchers/launchers.py +0 -0
  133. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/log_utils.py +0 -0
  134. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/__init__.py +0 -0
  135. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/db_manager.py +0 -0
  136. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/message_type.py +0 -0
  137. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/monitoring.py +0 -0
  138. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/queries/__init__.py +0 -0
  139. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/queries/pandas.py +0 -0
  140. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/radios.py +0 -0
  141. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/remote.py +0 -0
  142. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/types.py +0 -0
  143. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/__init__.py +0 -0
  144. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/app.py +0 -0
  145. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/models.py +0 -0
  146. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/plots/__init__.py +0 -0
  147. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/plots/default/__init__.py +0 -0
  148. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/plots/default/task_plots.py +0 -0
  149. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/plots/default/workflow_plots.py +0 -0
  150. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/plots/default/workflow_resource_plots.py +0 -0
  151. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/static/parsl-logo-white.png +0 -0
  152. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/static/parsl-monitor.css +0 -0
  153. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/app.html +0 -0
  154. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/dag.html +0 -0
  155. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/error.html +0 -0
  156. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/layout.html +0 -0
  157. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/resource_usage.html +0 -0
  158. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/task.html +0 -0
  159. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/workflow.html +0 -0
  160. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/workflows_summary.html +0 -0
  161. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/utils.py +0 -0
  162. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/version.py +0 -0
  163. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/views.py +0 -0
  164. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/multiprocessing.py +0 -0
  165. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/process_loggers.py +0 -0
  166. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/__init__.py +0 -0
  167. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/ad_hoc/__init__.py +0 -0
  168. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/ad_hoc/ad_hoc.py +0 -0
  169. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/aws/__init__.py +0 -0
  170. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/aws/aws.py +0 -0
  171. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/aws/template.py +0 -0
  172. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/azure/__init__.py +0 -0
  173. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/azure/azure.py +0 -0
  174. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/azure/template.py +0 -0
  175. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/base.py +0 -0
  176. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/cluster_provider.py +0 -0
  177. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/cobalt/__init__.py +0 -0
  178. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/cobalt/cobalt.py +0 -0
  179. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/cobalt/template.py +0 -0
  180. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/condor/__init__.py +0 -0
  181. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/condor/condor.py +0 -0
  182. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/condor/template.py +0 -0
  183. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/errors.py +0 -0
  184. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/googlecloud/__init__.py +0 -0
  185. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/googlecloud/googlecloud.py +0 -0
  186. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/grid_engine/__init__.py +0 -0
  187. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/grid_engine/grid_engine.py +0 -0
  188. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/grid_engine/template.py +0 -0
  189. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/kubernetes/__init__.py +0 -0
  190. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/kubernetes/kube.py +0 -0
  191. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/kubernetes/template.py +0 -0
  192. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/local/__init__.py +0 -0
  193. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/local/local.py +0 -0
  194. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/lsf/__init__.py +0 -0
  195. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/lsf/lsf.py +0 -0
  196. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/lsf/template.py +0 -0
  197. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/pbspro/__init__.py +0 -0
  198. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/pbspro/pbspro.py +0 -0
  199. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/pbspro/template.py +0 -0
  200. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/slurm/__init__.py +0 -0
  201. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/slurm/slurm.py +0 -0
  202. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/slurm/template.py +0 -0
  203. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/torque/__init__.py +0 -0
  204. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/torque/template.py +0 -0
  205. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/torque/torque.py +0 -0
  206. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/py.typed +0 -0
  207. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/__init__.py +0 -0
  208. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/base.py +0 -0
  209. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/concretes.py +0 -0
  210. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/errors.py +0 -0
  211. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/facade.py +0 -0
  212. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/proxystore.py +0 -0
  213. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/__init__.py +0 -0
  214. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/callables_helper.py +0 -0
  215. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/__init__.py +0 -0
  216. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/ad_hoc_cluster_htex.py +0 -0
  217. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/azure_single_node.py +0 -0
  218. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/bluewaters.py +0 -0
  219. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/bridges.py +0 -0
  220. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/cc_in2p3.py +0 -0
  221. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/comet.py +0 -0
  222. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/cooley_htex.py +0 -0
  223. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/ec2_single_node.py +0 -0
  224. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/ec2_spot.py +0 -0
  225. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/frontera.py +0 -0
  226. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/htex_ad_hoc_cluster.py +0 -0
  227. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/htex_local.py +0 -0
  228. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/htex_local_alternate.py +0 -0
  229. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/htex_local_intask_staging.py +0 -0
  230. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/htex_local_rsync_staging.py +0 -0
  231. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_adhoc.py +0 -0
  232. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_radical.py +0 -0
  233. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_radical_mpi.py +0 -0
  234. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads.py +0 -0
  235. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_checkpoint.py +0 -0
  236. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_checkpoint_dfk_exit.py +0 -0
  237. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_checkpoint_periodic.py +0 -0
  238. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_checkpoint_task_exit.py +0 -0
  239. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_ftp_in_task.py +0 -0
  240. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_globus.py +0 -0
  241. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_http_in_task.py +0 -0
  242. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_monitoring.py +0 -0
  243. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_no_cache.py +0 -0
  244. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/midway.py +0 -0
  245. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/nscc_singapore.py +0 -0
  246. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/osg_htex.py +0 -0
  247. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/petrelkube.py +0 -0
  248. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/summit.py +0 -0
  249. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/swan_htex.py +0 -0
  250. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/taskvine_ex.py +0 -0
  251. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/theta.py +0 -0
  252. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/user_opts.py +0 -0
  253. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/workqueue_ex.py +0 -0
  254. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/__init__.py +0 -0
  255. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/latency.py +0 -0
  256. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_apps/__init__.py +0 -0
  257. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/__init__.py +0 -0
  258. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_channels.py +0 -0
  259. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_local_channel.py +0 -0
  260. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_scp_1.py +0 -0
  261. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_ssh_1.py +0 -0
  262. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_ssh_errors.py +0 -0
  263. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_ssh_file_transport.py +0 -0
  264. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_ssh_interactive.py +0 -0
  265. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_parsl_load_default_config.py +0 -0
  266. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_stress/__init__.py +0 -0
  267. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_stress/test_python_simple.py +0 -0
  268. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_stress/test_python_threads.py +0 -0
  269. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/__init__.py +0 -0
  270. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/htex_local.py +0 -0
  271. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_ad_hoc_htex.py +0 -0
  272. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_basic.py +0 -0
  273. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_fan_in_out_htex_remote.py +0 -0
  274. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_log_filter.py +0 -0
  275. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_memory_limits.py +0 -0
  276. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_oauth_ssh.py +0 -0
  277. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_regression_220.py +0 -0
  278. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_udp_simple.py +0 -0
  279. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_worker_count.py +0 -0
  280. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/__init__.py +0 -0
  281. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/htex_local.py +0 -0
  282. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/local_threads.py +0 -0
  283. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/test_scale.py +0 -0
  284. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/vineex_condor.py +0 -0
  285. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/vineex_local.py +0 -0
  286. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/wqex_condor.py +0 -0
  287. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/wqex_local.py +0 -0
  288. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/site_tests/__init__.py +0 -0
  289. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/site_tests/site_config_selector.py +0 -0
  290. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/site_tests/test_provider.py +0 -0
  291. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/site_tests/test_site.py +0 -0
  292. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/__init__.py +0 -0
  293. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_affinity.py +0 -0
  294. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_concurrent.py +0 -0
  295. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_dynamic_executor.py +0 -0
  296. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_ec2.py +0 -0
  297. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_launchers.py +0 -0
  298. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_local_adhoc.py +0 -0
  299. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_mpi/__init__.py +0 -0
  300. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_worker_info.py +0 -0
  301. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_aalst_patterns.py +0 -0
  302. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/__init__.py +0 -0
  303. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_apptimeout.py +0 -0
  304. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_basic.py +0 -0
  305. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_error_codes.py +0 -0
  306. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_keyword_overlaps.py +0 -0
  307. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_kwarg_storage.py +0 -0
  308. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_memoize.py +0 -0
  309. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_memoize_ignore_args.py +0 -0
  310. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py +0 -0
  311. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_multiline.py +0 -0
  312. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_pipeline.py +0 -0
  313. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_stdout.py +0 -0
  314. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_callables.py +0 -0
  315. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_channels/__init__.py +0 -0
  316. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_channels/test_large_output.py +0 -0
  317. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/__init__.py +0 -0
  318. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_periodic.py +0 -0
  319. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_python_checkpoint_3.py +0 -0
  320. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_regression_232.py +0 -0
  321. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_regression_233.py +0 -0
  322. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_regression_239.py +0 -0
  323. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_task_exit.py +0 -0
  324. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_data/__init__.py +0 -0
  325. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_data/test_file.py +0 -0
  326. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_data/test_file_apps.py +0 -0
  327. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_data/test_file_staging.py +0 -0
  328. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_data/test_output_chain_filenames.py +0 -0
  329. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/__init__.py +0 -0
  330. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_from_slides.py +0 -0
  331. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_kwargs.py +0 -0
  332. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_tutorial_1.py +0 -0
  333. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_workflow1.py +0 -0
  334. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_workflow2.py +0 -0
  335. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_workflow4.py +0 -0
  336. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/__init__.py +0 -0
  337. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_fail.py +0 -0
  338. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_htex_basic.py +0 -0
  339. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_htex_manager_failure.py +0 -0
  340. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_htex_missing_worker.py +0 -0
  341. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_htex_worker_failure.py +0 -0
  342. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_python_walltime.py +0 -0
  343. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_rand_fail.py +0 -0
  344. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_resource_spec.py +0 -0
  345. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_retries.py +0 -0
  346. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_retry_handler.py +0 -0
  347. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_retry_handler_failure.py +0 -0
  348. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_serialization_fail.py +0 -0
  349. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_wrap_with_logs.py +0 -0
  350. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_flowcontrol/__init__.py +0 -0
  351. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_flux.py +0 -0
  352. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_htex/__init__.py +0 -0
  353. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_htex/test_htex_zmq_binding.py +0 -0
  354. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/__init__.py +0 -0
  355. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/test_basic.py +0 -0
  356. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/test_db_locks.py +0 -0
  357. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/test_fuzz_zmq.py +0 -0
  358. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/test_memoization_representation.py +0 -0
  359. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/test_viz_colouring.py +0 -0
  360. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_providers/__init__.py +0 -0
  361. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_providers/test_local_provider.py +0 -0
  362. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_providers/test_slurm_instantiate.py +0 -0
  363. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/__init__.py +0 -0
  364. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_arg_input_types.py +0 -0
  365. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_basic.py +0 -0
  366. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_dep_standard_futures.py +0 -0
  367. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_dependencies.py +0 -0
  368. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_depfail_propagation.py +0 -0
  369. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_fail.py +0 -0
  370. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_fibonacci_iterative.py +0 -0
  371. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_fibonacci_recursive.py +0 -0
  372. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_futures.py +0 -0
  373. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_garbage_collect.py +0 -0
  374. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_import_fail.py +0 -0
  375. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_join.py +0 -0
  376. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_lifted.py +0 -0
  377. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_mapred.py +0 -0
  378. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_1.py +0 -0
  379. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_2.py +0 -0
  380. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_4.py +0 -0
  381. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py +0 -0
  382. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_ignore_args.py +0 -0
  383. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_joinapp.py +0 -0
  384. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_outputs.py +0 -0
  385. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_overview.py +0 -0
  386. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_pipeline.py +0 -0
  387. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_simple.py +0 -0
  388. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_timeout.py +0 -0
  389. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_type5.py +0 -0
  390. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_radical/__init__.py +0 -0
  391. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/__init__.py +0 -0
  392. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_1480.py +0 -0
  393. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_1606_wait_for_current_tasks.py +0 -0
  394. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_1653.py +0 -0
  395. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_221.py +0 -0
  396. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_226.py +0 -0
  397. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_2652.py +0 -0
  398. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_69a.py +0 -0
  399. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_854.py +0 -0
  400. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_97_parallelism_0.py +0 -0
  401. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_98.py +0 -0
  402. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_scaling/__init__.py +0 -0
  403. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_scaling/test_block_error_handler.py +0 -0
  404. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_scaling/test_regression_1621.py +0 -0
  405. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_scaling/test_scale_down.py +0 -0
  406. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_serialization/__init__.py +0 -0
  407. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_serialization/test_2555_caching_deserializer.py +0 -0
  408. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_serialization/test_basic.py +0 -0
  409. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_serialization/test_proxystore_configured.py +0 -0
  410. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_serialization/test_proxystore_impl.py +0 -0
  411. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/staging_provider.py +0 -0
  412. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_1316.py +0 -0
  413. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_docs_1.py +0 -0
  414. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_docs_2.py +0 -0
  415. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_staging_ftp.py +0 -0
  416. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_staging_ftp_in_task.py +0 -0
  417. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_staging_globus.py +0 -0
  418. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_summary.py +0 -0
  419. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_thread_parallelism.py +0 -0
  420. {parsl-2024.1.1/parsl/tests/test_staging → parsl-2024.1.8/parsl/tests/test_threads}/__init__.py +0 -0
  421. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_threads/test_configs.py +0 -0
  422. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_threads/test_lazy_errors.py +0 -0
  423. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/utils.py +0 -0
  424. {parsl-2024.1.1/parsl/tests/test_threads → parsl-2024.1.8/parsl/usage_tracking}/__init__.py +0 -0
  425. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/usage_tracking/usage.py +0 -0
  426. {parsl-2024.1.1 → parsl-2024.1.8}/parsl/utils.py +0 -0
  427. {parsl-2024.1.1 → parsl-2024.1.8}/parsl.egg-info/dependency_links.txt +0 -0
  428. {parsl-2024.1.1 → parsl-2024.1.8}/parsl.egg-info/entry_points.txt +0 -0
  429. {parsl-2024.1.1 → parsl-2024.1.8}/parsl.egg-info/requires.txt +0 -0
  430. {parsl-2024.1.1 → parsl-2024.1.8}/parsl.egg-info/top_level.txt +0 -0
  431. {parsl-2024.1.1 → parsl-2024.1.8}/requirements.txt +0 -0
  432. {parsl-2024.1.1 → parsl-2024.1.8}/setup.cfg +0 -0
  433. {parsl-2024.1.1 → parsl-2024.1.8}/setup.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsl
3
- Version: 2024.1.1
3
+ Version: 2024.1.8
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.01.01.tar.gz
6
+ Download-URL: https://github.com/Parsl/parsl/archive/2024.01.08.tar.gz
7
7
  Author: The Parsl Team
8
8
  Author-email: parsl@googlegroups.com
9
9
  License: Apache 2.0
@@ -72,8 +72,9 @@ def address_by_hostname() -> str:
72
72
  """
73
73
  logger.debug("Finding address by using local hostname")
74
74
  addr = platform.node()
75
- logger.debug("Address found: {}".format(addr))
76
- return addr
75
+ ip_addr = socket.gethostbyname(addr)
76
+ logger.debug("Address found: {}".format(ip_addr))
77
+ return ip_addr
77
78
 
78
79
 
79
80
  @typeguard.typechecked
@@ -526,9 +526,7 @@ class DataFlowKernel:
526
526
  # or do nothing?
527
527
  if self.checkpoint_mode == 'task_exit':
528
528
  self.checkpoint(tasks=[task_record])
529
- elif self.checkpoint_mode == 'manual' or \
530
- self.checkpoint_mode == 'periodic' or \
531
- self.checkpoint_mode == 'dfk_exit':
529
+ elif self.checkpoint_mode in ('manual', 'periodic', 'dfk_exit'):
532
530
  with self.checkpoint_lock:
533
531
  self.checkpointable_tasks.append(task_record)
534
532
  elif self.checkpoint_mode is None:
@@ -1298,11 +1296,7 @@ class DataFlowKernel:
1298
1296
  hashsum = task_record['hashsum']
1299
1297
  if not hashsum:
1300
1298
  continue
1301
- t = {'hash': hashsum,
1302
- 'exception': None,
1303
- 'result': None}
1304
-
1305
- t['result'] = app_fu.result()
1299
+ t = {'hash': hashsum, 'exception': None, 'result': app_fu.result()}
1306
1300
 
1307
1301
  # We are using pickle here since pickle dumps to a file in 'ab'
1308
1302
  # mode behave like a incremental log.
@@ -3,6 +3,8 @@ import itertools
3
3
  import logging
4
4
  import os
5
5
  import pathlib
6
+ import re
7
+ import shutil
6
8
  import time
7
9
  import types
8
10
  import signal
@@ -44,17 +46,46 @@ def pytest_sessionstart(session):
44
46
 
45
47
 
46
48
  @pytest.fixture(scope="session")
47
- def tmpd_cwd_session():
48
- n = datetime.now().strftime('%Y%m%d.%H%I%S')
49
- with tempfile.TemporaryDirectory(dir=os.getcwd(), prefix=f".pytest-{n}-") as tmpd:
50
- yield pathlib.Path(tmpd)
49
+ def tmpd_cwd_session(pytestconfig):
50
+ config = re.sub(r"[^A-z0-9_-]+", "_", pytestconfig.getoption('config')[0])
51
+ cwd = pathlib.Path(os.getcwd())
52
+ pytest_dir = cwd / ".pytest"
53
+ pytest_dir.mkdir(mode=0o700, parents=True, exist_ok=True)
54
+
55
+ test_dir_prefix = "parsltest-"
56
+ link = pytest_dir / f"{test_dir_prefix}current"
57
+ link.unlink(missing_ok=True)
58
+ n = datetime.now().strftime('%Y%m%d.%H%M%S')
59
+ tmpd = tempfile.mkdtemp(dir=pytest_dir, prefix=f"{test_dir_prefix}{n}-{config}-")
60
+ tmpd = pathlib.Path(tmpd)
61
+ link.symlink_to(tmpd.name)
62
+ yield link
63
+
64
+ try:
65
+ preserve = int(os.getenv("PARSL_TEST_PRESERVE_NUM_RUNS", "3"))
66
+ except Exception:
67
+ preserve = 3
68
+
69
+ test_runs = sorted(
70
+ d for d in pytest_dir.glob(f"{test_dir_prefix}*")
71
+ if d.is_dir() and not d.is_symlink()
72
+ )
73
+ for run_to_remove in test_runs[:-preserve]:
74
+ run_to_remove.chmod(0o700)
75
+ for root, subdirnames, fnames in os.walk(run_to_remove):
76
+ rpath = pathlib.Path(root)
77
+ for d in subdirnames:
78
+ (rpath / d).lchmod(0o700)
79
+ for f in fnames:
80
+ (rpath / f).lchmod(0o600)
81
+ shutil.rmtree(run_to_remove)
51
82
 
52
83
 
53
84
  @pytest.fixture
54
85
  def tmpd_cwd(tmpd_cwd_session, request):
55
86
  prefix = f"{request.node.name}-"
56
- with tempfile.TemporaryDirectory(dir=tmpd_cwd_session, prefix=prefix) as tmpd:
57
- yield pathlib.Path(tmpd)
87
+ tmpd = tempfile.mkdtemp(dir=tmpd_cwd_session, prefix=prefix)
88
+ yield pathlib.Path(tmpd)
58
89
 
59
90
 
60
91
  def pytest_addoption(parser):
@@ -118,7 +149,7 @@ def pytest_configure(config):
118
149
 
119
150
 
120
151
  @pytest.fixture(autouse=True, scope='session')
121
- def load_dfk_session(request, pytestconfig):
152
+ def load_dfk_session(request, pytestconfig, tmpd_cwd_session):
122
153
  """Load a dfk around entire test suite, except in local mode.
123
154
 
124
155
  The special path `local` indicates that configuration will not come
@@ -137,12 +168,19 @@ def load_dfk_session(request, pytestconfig):
137
168
  raise RuntimeError("DFK didn't start as None - there was a DFK from somewhere already")
138
169
 
139
170
  if hasattr(module, 'config'):
140
- dfk = parsl.load(module.config)
171
+ parsl_conf = module.config
141
172
  elif hasattr(module, 'fresh_config'):
142
- dfk = parsl.load(module.fresh_config())
173
+ parsl_conf = module.fresh_config()
143
174
  else:
144
175
  raise RuntimeError("Config module does not define config or fresh_config")
145
176
 
177
+ if parsl_conf.run_dir == "runinfo": # the default
178
+ parsl_conf.run_dir = tmpd_cwd_session / parsl_conf.run_dir
179
+ dfk = parsl.load(parsl_conf)
180
+
181
+ for ex in dfk.executors.values():
182
+ ex.working_dir = tmpd_cwd_session
183
+
146
184
  yield
147
185
 
148
186
  if parsl.dfk() != dfk:
@@ -154,7 +192,7 @@ def load_dfk_session(request, pytestconfig):
154
192
 
155
193
 
156
194
  @pytest.fixture(autouse=True, scope='module')
157
- def load_dfk_local_module(request, pytestconfig):
195
+ def load_dfk_local_module(request, pytestconfig, tmpd_cwd_session):
158
196
  """Load the dfk around test modules, in local mode.
159
197
 
160
198
  If local_config is specified in the test module, it will be loaded using
@@ -177,8 +215,15 @@ def load_dfk_local_module(request, pytestconfig):
177
215
  assert callable(local_config)
178
216
  c = local_config()
179
217
  assert isinstance(c, parsl.Config)
218
+
219
+ if c.run_dir == "runinfo": # the default
220
+ c.run_dir = tmpd_cwd_session / c.run_dir
221
+
180
222
  dfk = parsl.load(c)
181
223
 
224
+ for ex in dfk.executors.values():
225
+ ex.working_dir = tmpd_cwd_session
226
+
182
227
  if callable(local_setup):
183
228
  local_setup()
184
229
 
@@ -0,0 +1,33 @@
1
+ import os
2
+ import pytest
3
+
4
+ import parsl
5
+ from parsl import python_app
6
+ from parsl.tests.configs.local_threads import fresh_config
7
+
8
+
9
+ def local_config():
10
+ config = fresh_config()
11
+ config.checkpoint_mode = "manual"
12
+ return config
13
+
14
+
15
+ @python_app(cache=True)
16
+ def uuid_app():
17
+ import uuid
18
+ return uuid.uuid4()
19
+
20
+
21
+ @pytest.mark.local
22
+ def test_initial_checkpoint_write():
23
+ """1. Launch a few apps and write the checkpoint once a few have completed
24
+ """
25
+ uuid_app().result()
26
+
27
+ cpt_dir = parsl.dfk().checkpoint()
28
+
29
+ cptpath = cpt_dir + '/dfk.pkl'
30
+ assert os.path.exists(cptpath), f"DFK checkpoint missing: {cptpath}"
31
+
32
+ cptpath = cpt_dir + '/tasks.pkl'
33
+ assert os.path.exists(cptpath), f"Tasks checkpoint missing: {cptpath}"
@@ -0,0 +1,42 @@
1
+ import contextlib
2
+ import os
3
+ import pytest
4
+ import parsl
5
+ from parsl import python_app
6
+
7
+ from parsl.tests.configs.local_threads_checkpoint import fresh_config
8
+
9
+
10
+ @contextlib.contextmanager
11
+ def parsl_configured(run_dir, **kw):
12
+ c = fresh_config()
13
+ c.run_dir = run_dir
14
+ for config_attr, config_val in kw.items():
15
+ setattr(c, config_attr, config_val)
16
+ dfk = parsl.load(c)
17
+ for ex in dfk.executors.values():
18
+ ex.working_dir = run_dir
19
+ yield dfk
20
+
21
+ parsl.dfk().cleanup()
22
+ parsl.clear()
23
+
24
+
25
+ @python_app(cache=True)
26
+ def uuid_app():
27
+ import uuid
28
+ return uuid.uuid4()
29
+
30
+
31
+ @pytest.mark.local
32
+ def test_loading_checkpoint(tmpd_cwd):
33
+ """Load memoization table from previous checkpoint
34
+ """
35
+ with parsl_configured(tmpd_cwd, checkpoint_mode="task_exit"):
36
+ checkpoint_files = [os.path.join(parsl.dfk().run_dir, "checkpoint")]
37
+ result = uuid_app().result()
38
+
39
+ with parsl_configured(tmpd_cwd, checkpoint_files=checkpoint_files):
40
+ relaunched = uuid_app().result()
41
+
42
+ assert result == relaunched, "Expected following call to uuid_app to return cached uuid"
@@ -5,7 +5,7 @@ from parsl.tests.configs.local_radical_mpi import fresh_config as local_config
5
5
 
6
6
 
7
7
  @parsl.python_app
8
- def test_mpi_func(msg, sleep, comm=None, parsl_resource_specification={}):
8
+ def some_mpi_func(msg, sleep, comm=None, parsl_resource_specification={}):
9
9
  import time
10
10
  msg = 'hello %d/%d: %s' % (comm.rank, comm.size, msg)
11
11
  time.sleep(sleep)
@@ -17,11 +17,12 @@ apps = []
17
17
 
18
18
 
19
19
  @pytest.mark.local
20
+ @pytest.mark.radical
20
21
  def test_radical_mpi(n=7):
21
22
  # rank size should be > 1 for the
22
23
  # radical runtime system to run this function in MPI env
23
24
  for i in range(2, n):
24
25
  spec = {'ranks': i}
25
- t = test_mpi_func(msg='mpi.func.%06d' % i, sleep=1, comm=None, parsl_resource_specification=spec)
26
+ t = some_mpi_func(msg='mpi.func.%06d' % i, sleep=1, comm=None, parsl_resource_specification=spec)
26
27
  apps.append(t)
27
28
  assert [len(app.result()) for app in apps] == list(range(2, n))
@@ -0,0 +1,7 @@
1
+ def read_sort_write(in_path, out_path):
2
+ with open(in_path) as u:
3
+ strs = u.read().split()
4
+ strs.sort()
5
+ with open(out_path, 'w') as s:
6
+ for e in strs:
7
+ print(e, file=s)
@@ -20,8 +20,8 @@ logger = logging.getLogger(__name__)
20
20
 
21
21
 
22
22
  @bash_app
23
- def touch(filename, inputs=[], outputs=[]):
24
- return "touch {}".format(filename)
23
+ def touch(filename, outputs=()):
24
+ return f"touch {filename}"
25
25
 
26
26
 
27
27
  @python_app
@@ -31,52 +31,47 @@ def app_test_in(file):
31
31
  pass
32
32
 
33
33
 
34
+ @pytest.fixture
35
+ def storage_access_parsl():
36
+ def _setup_config(*args, **kwargs):
37
+ tpe = ThreadPoolExecutor(
38
+ label='local_threads',
39
+ storage_access=[NoOpTestingFileStaging(*args, **kwargs)]
40
+ )
41
+ config = Config(executors=[tpe])
42
+ parsl.load(config)
43
+
44
+ yield _setup_config
45
+
46
+ parsl.dfk().cleanup()
47
+ parsl.clear()
48
+
49
+
34
50
  @pytest.mark.local
35
- def test_regression_stage_out_does_not_stage_in():
36
- no_stageout_config = Config(
37
- executors=[
38
- ThreadPoolExecutor(
39
- label='local_threads',
40
- storage_access=[NoOpTestingFileStaging(allow_stage_in=False)]
41
- )
42
- ]
43
- )
44
-
45
- parsl.load(no_stageout_config)
51
+ def test_regression_stage_out_does_not_stage_in(storage_access_parsl, tmpd_cwd):
52
+ storage_access_parsl(allow_stage_in=False)
46
53
 
47
54
  # Test that the helper app runs with no staging
48
- touch("test.1", outputs=[]).result()
55
+ touch(str(tmpd_cwd / "test.1"), outputs=[]).result()
49
56
 
50
- # Test with stage-out, checking that provider stage in is never
51
- # invoked. If stage-in is invoked, the the NoOpTestingFileStaging
57
+ # Test with stage-out, checking that provider stage-in is never
58
+ # invoked. If stage-in is invoked, then the NoOpTestingFileStaging
52
59
  # provider will raise an exception, which should propagate to
53
60
  # .result() here.
54
- touch("test.2", outputs=[File("test.2")]).result()
61
+ fpath = tmpd_cwd / "test.2"
62
+ touch(str(fpath), outputs=[File(fpath)]).result()
55
63
 
56
64
  # Test that stage-in exceptions propagate out to user code.
57
65
  with pytest.raises(NoOpError):
58
66
  touch("test.3", inputs=[File("test.3")]).result()
59
67
 
60
- parsl.dfk().cleanup()
61
- parsl.clear()
62
-
63
68
 
64
69
  @pytest.mark.local
65
- def test_regression_stage_in_does_not_stage_out():
66
- no_stageout_config = Config(
67
- executors=[
68
- ThreadPoolExecutor(
69
- label='local_threads',
70
- storage_access=[NoOpTestingFileStaging(allow_stage_out=False)]
71
- )
72
- ],
73
- )
74
-
75
- parsl.load(no_stageout_config)
76
-
77
- f = open("test.4", "a")
78
- f.write("test")
79
- f.close()
70
+ def test_regression_stage_in_does_not_stage_out(storage_access_parsl, tmpd_cwd):
71
+ storage_access_parsl(allow_stage_out=False)
72
+
73
+ fpath = tmpd_cwd / "test.4"
74
+ fpath.write_text("test")
80
75
 
81
76
  # Test that stage in does not invoke stage out. If stage out is
82
77
  # attempted, then the NoOpTestingFileStaging provider will raise
@@ -86,6 +81,3 @@ def test_regression_stage_in_does_not_stage_out():
86
81
  # Test that stage out exceptions propagate to user code.
87
82
  with pytest.raises(NoOpError):
88
83
  touch("test.5", outputs=[File("test.5")]).result()
89
-
90
- parsl.dfk().cleanup()
91
- parsl.clear()
@@ -0,0 +1,103 @@
1
+ import parsl
2
+ from parsl.app.app import python_app
3
+ from parsl.data_provider.files import File
4
+
5
+ import pytest
6
+
7
+ # This config is for the local test which will adding an executor.
8
+ # Most tests in this file should be non-local and use the configuration
9
+ # specificed with --config, not this one.
10
+ from parsl.tests.configs.htex_local import fresh_config as local_config
11
+
12
+ """
13
+ Test staging for an http file
14
+
15
+ Create a remote input file (https) that points to unsorted.txt, then
16
+ a local file for output data (sorted.txt).
17
+ """
18
+
19
+ _unsorted_url = (
20
+ 'https://gist.githubusercontent.com/yadudoc/7f21dd15e64a421990a46766bfa5359c/'
21
+ 'raw/7fe04978ea44f807088c349f6ecb0f6ee350ec49/unsorted.txt'
22
+ )
23
+ _exp_sorted = sorted(f"{i}\n" for i in range(1, 101))[:20]
24
+
25
+
26
+ @python_app
27
+ def sort_strings(inputs=(), outputs=()):
28
+ from parsl.tests.test_staging import read_sort_write
29
+ read_sort_write(inputs[0].filepath, outputs[0].filepath)
30
+
31
+
32
+ @python_app
33
+ def sort_strings_kw(*, x=None, outputs=()):
34
+ from parsl.tests.test_staging import read_sort_write
35
+ read_sort_write(x.filepath, outputs[0].filepath)
36
+
37
+
38
+ @python_app
39
+ def sort_strings_arg(x, /, outputs=()):
40
+ from parsl.tests.test_staging import read_sort_write
41
+ read_sort_write(x.filepath, outputs[0].filepath)
42
+
43
+
44
+ @python_app(executors=['other'])
45
+ def sort_strings_additional_executor(inputs=(), outputs=()):
46
+ from parsl.tests.test_staging import read_sort_write
47
+ read_sort_write(inputs[0].filepath, outputs[0].filepath)
48
+
49
+
50
+ @pytest.mark.cleannet
51
+ def test_staging_https_cleannet(tmpd_cwd):
52
+ unsorted_file = File(_unsorted_url)
53
+ sorted_file = File(tmpd_cwd / 'sorted.txt')
54
+
55
+ sort_strings(inputs=[unsorted_file], outputs=[sorted_file]).result()
56
+ with open(sorted_file) as f:
57
+ assert all(a == b for a, b in zip(f.readlines(), _exp_sorted))
58
+
59
+
60
+ @pytest.mark.local
61
+ def test_staging_https_local(tmpd_cwd):
62
+ unsorted_file = File(_unsorted_url)
63
+ sorted_file = File(tmpd_cwd / 'sorted.txt')
64
+
65
+ sort_strings(inputs=[unsorted_file], outputs=[sorted_file]).result()
66
+ with open(sorted_file) as f:
67
+ assert all(a == b for a, b in zip(f.readlines(), _exp_sorted))
68
+
69
+
70
+ @pytest.mark.cleannet
71
+ def test_staging_https_kwargs(tmpd_cwd):
72
+ unsorted_file = File(_unsorted_url)
73
+ sorted_file = File(tmpd_cwd / 'sorted.txt')
74
+
75
+ sort_strings_kw(x=unsorted_file, outputs=[sorted_file]).result()
76
+ with open(sorted_file) as f:
77
+ assert all(a == b for a, b in zip(f.readlines(), _exp_sorted))
78
+
79
+
80
+ @pytest.mark.cleannet
81
+ def test_staging_https_args(tmpd_cwd):
82
+ unsorted_file = File(_unsorted_url)
83
+ sorted_file = File(tmpd_cwd / 'sorted.txt')
84
+
85
+ sort_strings_arg(unsorted_file, outputs=[sorted_file]).result()
86
+ with open(sorted_file) as f:
87
+ assert all(a == b for a, b in zip(f.readlines(), _exp_sorted))
88
+
89
+
90
+ @pytest.mark.cleannet
91
+ @pytest.mark.local
92
+ def test_staging_https_additional_executor(tmpd_cwd):
93
+ unsorted_file = File(_unsorted_url)
94
+ sorted_file = File(tmpd_cwd / 'sorted.txt')
95
+
96
+ other_executor = parsl.ThreadPoolExecutor(label='other')
97
+ other_executor.working_dir = tmpd_cwd
98
+
99
+ parsl.dfk().add_executors([other_executor])
100
+
101
+ sort_strings_additional_executor(inputs=[unsorted_file], outputs=[sorted_file]).result()
102
+ with open(sorted_file) as f:
103
+ assert all(a == b for a, b in zip(f.readlines(), _exp_sorted))
@@ -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 = '2024.01.01'
6
+ VERSION = '2024.01.08'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsl
3
- Version: 2024.1.1
3
+ Version: 2024.1.8
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.01.01.tar.gz
6
+ Download-URL: https://github.com/Parsl/parsl/archive/2024.01.08.tar.gz
7
7
  Author: The Parsl Team
8
8
  Author-email: parsl@googlegroups.com
9
9
  License: Apache 2.0
@@ -419,7 +419,6 @@ parsl/tests/test_staging/test_staging_ftp.py
419
419
  parsl/tests/test_staging/test_staging_ftp_in_task.py
420
420
  parsl/tests/test_staging/test_staging_globus.py
421
421
  parsl/tests/test_staging/test_staging_https.py
422
- parsl/tests/test_staging/test_staging_https_in_task.py
423
422
  parsl/tests/test_threads/__init__.py
424
423
  parsl/tests/test_threads/test_configs.py
425
424
  parsl/tests/test_threads/test_lazy_errors.py
@@ -1,53 +0,0 @@
1
- import argparse
2
- import os
3
- import pytest
4
-
5
- import parsl
6
- from parsl import python_app
7
- from parsl.tests.configs.local_threads import fresh_config
8
-
9
-
10
- @python_app(cache=True)
11
- def random_app(i):
12
- import random
13
- return random.randint(i, 100000)
14
-
15
-
16
- def launch_n_random(n=2):
17
- """1. Launch a few apps and write the checkpoint once a few have completed
18
- """
19
-
20
- d = [random_app(i) for i in range(0, n)]
21
- print("Done launching")
22
-
23
- # Block till done
24
- return [i.result() for i in d]
25
-
26
-
27
- @pytest.mark.local
28
- def test_initial_checkpoint_write(n=2):
29
- """1. Launch a few apps and write the checkpoint once a few have completed
30
- """
31
- config = fresh_config()
32
- config.checkpoint_mode = 'manual'
33
- parsl.load(config)
34
- results = launch_n_random(n)
35
-
36
- cpt_dir = parsl.dfk().checkpoint()
37
-
38
- cptpath = cpt_dir + '/dfk.pkl'
39
- print("Path exists : ", os.path.exists(cptpath))
40
- assert os.path.exists(
41
- cptpath), "DFK checkpoint missing: {0}".format(cptpath)
42
-
43
- cptpath = cpt_dir + '/tasks.pkl'
44
- print("Path exists : ", os.path.exists(cptpath))
45
- assert os.path.exists(
46
- cptpath), "Tasks checkpoint missing: {0}".format(cptpath)
47
-
48
- run_dir = parsl.dfk().run_dir
49
-
50
- parsl.dfk().cleanup()
51
- parsl.clear()
52
-
53
- return run_dir, results
@@ -1,45 +0,0 @@
1
- import argparse
2
- import os
3
- import pytest
4
- import parsl
5
- from parsl import python_app
6
-
7
- from parsl.tests.configs.local_threads import config
8
- from parsl.tests.configs.local_threads_checkpoint import fresh_config
9
-
10
-
11
- @python_app(cache=True)
12
- def random_app(i):
13
- import random
14
- return random.randint(i, 100000)
15
-
16
-
17
- def launch_n_random(n=2):
18
- """1. Launch a few apps and write the checkpoint once a few have completed
19
- """
20
- d = [random_app(i) for i in range(0, n)]
21
- return [i.result() for i in d]
22
-
23
-
24
- @pytest.mark.local
25
- def test_loading_checkpoint(n=2):
26
- """Load memoization table from previous checkpoint
27
- """
28
- config.checkpoint_mode = 'task_exit'
29
- parsl.load(config)
30
- results = launch_n_random(n)
31
- rundir = parsl.dfk().run_dir
32
- parsl.dfk().cleanup()
33
- parsl.clear()
34
-
35
- local_config = fresh_config()
36
- local_config.checkpoint_files = [os.path.join(rundir, 'checkpoint')]
37
- parsl.load(local_config)
38
-
39
- relaunched = launch_n_random(n)
40
- assert len(relaunched) == len(results) == n, "Expected all results to have n items"
41
-
42
- for i in range(n):
43
- assert relaunched[i] == results[i], "Expected relaunched to contain cached results from first run"
44
- parsl.dfk().cleanup()
45
- parsl.clear()