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.
- {parsl-2024.1.1/parsl.egg-info → parsl-2024.1.8}/PKG-INFO +2 -2
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/addresses.py +3 -2
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/dflow.py +2 -8
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/conftest.py +55 -10
- parsl-2024.1.8/parsl/tests/test_checkpointing/test_python_checkpoint_1.py +33 -0
- parsl-2024.1.8/parsl/tests/test_checkpointing/test_python_checkpoint_2.py +42 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_radical/test_mpi_funcs.py +3 -2
- parsl-2024.1.8/parsl/tests/test_staging/__init__.py +7 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_elaborate_noop_file.py +30 -38
- parsl-2024.1.8/parsl/tests/test_staging/test_staging_https.py +103 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/version.py +1 -1
- {parsl-2024.1.1 → parsl-2024.1.8/parsl.egg-info}/PKG-INFO +2 -2
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl.egg-info/SOURCES.txt +0 -1
- parsl-2024.1.1/parsl/tests/test_checkpointing/test_python_checkpoint_1.py +0 -53
- parsl-2024.1.1/parsl/tests/test_checkpointing/test_python_checkpoint_2.py +0 -45
- parsl-2024.1.1/parsl/tests/test_staging/test_staging_https.py +0 -119
- parsl-2024.1.1/parsl/tests/test_staging/test_staging_https_in_task.py +0 -34
- parsl-2024.1.1/parsl/usage_tracking/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/LICENSE +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/MANIFEST.in +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/README.rst +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/app.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/bash.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/futures.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/app/python.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/benchmark/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/benchmark/perf.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/base.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/local/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/local/local.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/oauth_ssh/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/oauth_ssh/oauth_ssh.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/ssh/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/ssh/ssh.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/ssh_il/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/channels/ssh_il/ssh_il.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/concurrent/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/config.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/ASPIRE1.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/Azure.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/ad_hoc.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/bluewaters.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/bridges.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/cc_in2p3.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/comet.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/cooley.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/ec2.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/frontera.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/htex_local.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/illinoiscluster.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/kubernetes.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/local_threads.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/midway.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/osg.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/polaris.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/stampede2.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/summit.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/theta.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/toss3_llnl.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/vineex_local.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/configs/wqex_local.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/data_manager.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/file_noop.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/files.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/ftp.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/globus.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/http.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/rsync.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/data_provider/staging.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/futures.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/memoization.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/rundirs.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/states.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/dataflow/taskrecord.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/base.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/flux/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/flux/execute_parsl_task.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/flux/executor.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/flux/flux_instance_manager.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/executor.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/interchange.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/manager_record.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/monitoring_info.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/probe.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/process_worker_pool.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/high_throughput/zmq_pipes.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/radical/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/radical/executor.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/radical/rpex_master.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/radical/rpex_resources.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/radical/rpex_worker.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/status_handling.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/exec_parsl_function.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/executor.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/factory.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/factory_config.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/manager.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/manager_config.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/taskvine/utils.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/threads.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/exec_parsl_function.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/executor.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/parsl_coprocess.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/executors/workqueue/parsl_coprocess_stub.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/error_handlers.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/job_status_poller.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/states.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/jobs/strategy.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/launchers/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/launchers/base.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/launchers/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/launchers/launchers.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/log_utils.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/db_manager.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/message_type.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/monitoring.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/queries/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/queries/pandas.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/radios.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/remote.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/types.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/app.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/models.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/plots/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/plots/default/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/plots/default/task_plots.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/plots/default/workflow_plots.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/plots/default/workflow_resource_plots.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/static/parsl-logo-white.png +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/static/parsl-monitor.css +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/app.html +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/dag.html +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/error.html +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/layout.html +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/resource_usage.html +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/task.html +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/workflow.html +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/templates/workflows_summary.html +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/utils.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/version.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/monitoring/visualization/views.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/multiprocessing.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/process_loggers.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/ad_hoc/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/ad_hoc/ad_hoc.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/aws/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/aws/aws.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/aws/template.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/azure/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/azure/azure.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/azure/template.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/base.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/cluster_provider.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/cobalt/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/cobalt/cobalt.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/cobalt/template.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/condor/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/condor/condor.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/condor/template.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/googlecloud/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/googlecloud/googlecloud.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/grid_engine/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/grid_engine/grid_engine.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/grid_engine/template.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/kubernetes/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/kubernetes/kube.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/kubernetes/template.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/local/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/local/local.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/lsf/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/lsf/lsf.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/lsf/template.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/pbspro/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/pbspro/pbspro.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/pbspro/template.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/slurm/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/slurm/slurm.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/slurm/template.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/torque/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/torque/template.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/providers/torque/torque.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/py.typed +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/base.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/concretes.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/facade.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/serialize/proxystore.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/callables_helper.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/ad_hoc_cluster_htex.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/azure_single_node.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/bluewaters.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/bridges.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/cc_in2p3.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/comet.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/cooley_htex.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/ec2_single_node.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/ec2_spot.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/frontera.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/htex_ad_hoc_cluster.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/htex_local.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/htex_local_alternate.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/htex_local_intask_staging.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/htex_local_rsync_staging.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_adhoc.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_radical.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_radical_mpi.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_checkpoint.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_checkpoint_dfk_exit.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_checkpoint_periodic.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_checkpoint_task_exit.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_ftp_in_task.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_globus.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_http_in_task.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_monitoring.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/local_threads_no_cache.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/midway.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/nscc_singapore.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/osg_htex.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/petrelkube.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/summit.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/swan_htex.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/taskvine_ex.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/theta.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/user_opts.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/configs/workqueue_ex.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/latency.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_apps/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_channels.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_local_channel.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_scp_1.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_ssh_1.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_ssh_errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_ssh_file_transport.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_channels/test_ssh_interactive.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_parsl_load_default_config.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_stress/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_stress/test_python_simple.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/integration/test_stress/test_python_threads.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/htex_local.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_ad_hoc_htex.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_basic.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_fan_in_out_htex_remote.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_log_filter.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_memory_limits.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_oauth_ssh.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_regression_220.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_udp_simple.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/manual_tests/test_worker_count.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/htex_local.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/local_threads.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/test_scale.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/vineex_condor.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/vineex_local.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/wqex_condor.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/scaling_tests/wqex_local.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/site_tests/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/site_tests/site_config_selector.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/site_tests/test_provider.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/site_tests/test_site.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_affinity.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_concurrent.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_dynamic_executor.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_ec2.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_launchers.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_local_adhoc.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_mpi/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/sites/test_worker_info.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_aalst_patterns.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_apptimeout.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_basic.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_error_codes.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_keyword_overlaps.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_kwarg_storage.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_memoize.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_memoize_ignore_args.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_multiline.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_pipeline.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_bash_apps/test_stdout.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_callables.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_channels/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_channels/test_large_output.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_periodic.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_python_checkpoint_3.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_regression_232.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_regression_233.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_regression_239.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_checkpointing/test_task_exit.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_data/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_data/test_file.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_data/test_file_apps.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_data/test_file_staging.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_data/test_output_chain_filenames.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_from_slides.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_kwargs.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_tutorial_1.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_workflow1.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_workflow2.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_docs/test_workflow4.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_fail.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_htex_basic.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_htex_manager_failure.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_htex_missing_worker.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_htex_worker_failure.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_python_walltime.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_rand_fail.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_resource_spec.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_retries.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_retry_handler.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_retry_handler_failure.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_serialization_fail.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_error_handling/test_wrap_with_logs.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_flowcontrol/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_flux.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_htex/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_htex/test_htex_zmq_binding.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/test_basic.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/test_db_locks.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/test_fuzz_zmq.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/test_memoization_representation.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_monitoring/test_viz_colouring.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_providers/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_providers/test_local_provider.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_providers/test_slurm_instantiate.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_arg_input_types.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_basic.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_dep_standard_futures.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_dependencies.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_depfail_propagation.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_fail.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_fibonacci_iterative.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_fibonacci_recursive.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_futures.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_garbage_collect.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_import_fail.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_join.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_lifted.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_mapred.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_1.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_2.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_4.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_ignore_args.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_memoize_joinapp.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_outputs.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_overview.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_pipeline.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_simple.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_timeout.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_python_apps/test_type5.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_radical/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_1480.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_1606_wait_for_current_tasks.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_1653.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_221.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_226.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_2652.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_69a.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_854.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_97_parallelism_0.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_regression/test_98.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_scaling/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_scaling/test_block_error_handler.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_scaling/test_regression_1621.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_scaling/test_scale_down.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_serialization/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_serialization/test_2555_caching_deserializer.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_serialization/test_basic.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_serialization/test_proxystore_configured.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_serialization/test_proxystore_impl.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/staging_provider.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_1316.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_docs_1.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_docs_2.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_staging_ftp.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_staging_ftp_in_task.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_staging/test_staging_globus.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_summary.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_thread_parallelism.py +0 -0
- {parsl-2024.1.1/parsl/tests/test_staging → parsl-2024.1.8/parsl/tests/test_threads}/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_threads/test_configs.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/test_threads/test_lazy_errors.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/tests/utils.py +0 -0
- {parsl-2024.1.1/parsl/tests/test_threads → parsl-2024.1.8/parsl/usage_tracking}/__init__.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/usage_tracking/usage.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl/utils.py +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl.egg-info/dependency_links.txt +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl.egg-info/entry_points.txt +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl.egg-info/requires.txt +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/parsl.egg-info/top_level.txt +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/requirements.txt +0 -0
- {parsl-2024.1.1 → parsl-2024.1.8}/setup.cfg +0 -0
- {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.
|
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.
|
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
|
-
|
76
|
-
|
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
|
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
|
-
|
49
|
-
|
50
|
-
|
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
|
-
|
57
|
-
|
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
|
-
|
171
|
+
parsl_conf = module.config
|
141
172
|
elif hasattr(module, 'fresh_config'):
|
142
|
-
|
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
|
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 =
|
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))
|
@@ -20,8 +20,8 @@ logger = logging.getLogger(__name__)
|
|
20
20
|
|
21
21
|
|
22
22
|
@bash_app
|
23
|
-
def touch(filename,
|
24
|
-
return "touch {}"
|
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
|
-
|
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
|
51
|
-
# invoked. If stage-in is invoked,
|
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
|
-
|
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
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
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))
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: parsl
|
3
|
-
Version: 2024.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.
|
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()
|