parsl 2025.6.30__tar.gz → 2025.7.7__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-2025.6.30/parsl.egg-info → parsl-2025.7.7}/PKG-INFO +2 -2
- parsl-2025.7.7/parsl/configs/anvil.py +34 -0
- parsl-2025.7.7/parsl/configs/delta.py +35 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/interchange.py +5 -1
- parsl-2025.7.7/parsl/executors/high_throughput/probe.py +107 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/process_worker_pool.py +22 -14
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/version.py +1 -1
- {parsl-2025.6.30 → parsl-2025.7.7/parsl.egg-info}/PKG-INFO +2 -2
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl.egg-info/SOURCES.txt +2 -0
- parsl-2025.6.30/parsl/executors/high_throughput/probe.py +0 -95
- {parsl-2025.6.30 → parsl-2025.7.7}/LICENSE +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/MANIFEST.in +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/README.rst +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/addresses.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/app/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/app/app.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/app/bash.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/app/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/app/futures.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/app/python.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/benchmark/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/benchmark/perf.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/concurrent/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/config.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/ASPIRE1.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/Azure.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/bridges.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/cc_in2p3.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/ec2.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/expanse.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/frontera.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/gc_multisite.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/gc_tutorial.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/htex_local.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/illinoiscluster.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/improv.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/kubernetes.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/local_threads.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/midway.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/osg.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/polaris.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/stampede2.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/summit.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/toss3_llnl.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/vineex_local.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/configs/wqex_local.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/curvezmq.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/data_provider/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/data_provider/data_manager.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/data_provider/file_noop.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/data_provider/files.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/data_provider/ftp.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/data_provider/globus.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/data_provider/http.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/data_provider/rsync.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/data_provider/staging.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/data_provider/zip.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/dataflow/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/dataflow/dependency_resolvers.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/dataflow/dflow.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/dataflow/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/dataflow/futures.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/dataflow/memoization.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/dataflow/rundirs.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/dataflow/states.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/dataflow/taskrecord.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/base.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/execute_task.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/flux/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/flux/execute_parsl_task.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/flux/executor.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/flux/flux_instance_manager.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/globus_compute.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/executor.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/manager_record.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/manager_selector.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/monitoring_info.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/mpi_executor.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/mpi_prefix_composer.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/mpi_resource_management.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/zmq_pipes.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/radical/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/radical/executor.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/radical/rpex_resources.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/radical/rpex_worker.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/status_handling.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/taskvine/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/taskvine/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/taskvine/exec_parsl_function.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/taskvine/executor.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/taskvine/factory.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/taskvine/factory_config.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/taskvine/manager.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/taskvine/manager_config.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/taskvine/utils.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/threads.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/workqueue/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/workqueue/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/workqueue/exec_parsl_function.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/workqueue/executor.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/workqueue/parsl_coprocess.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/workqueue/parsl_coprocess_stub.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/jobs/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/jobs/error_handlers.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/jobs/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/jobs/job_status_poller.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/jobs/states.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/jobs/strategy.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/launchers/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/launchers/base.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/launchers/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/launchers/launchers.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/log_utils.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/db_manager.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/message_type.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/monitoring.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/queries/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/queries/pandas.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/radios/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/radios/base.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/radios/filesystem.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/radios/filesystem_router.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/radios/htex.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/radios/multiprocessing.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/radios/udp.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/radios/udp_router.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/radios/zmq.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/radios/zmq_router.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/remote.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/types.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/app.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/models.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/plots/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/plots/default/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/plots/default/task_plots.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/plots/default/workflow_plots.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/plots/default/workflow_resource_plots.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/static/parsl-logo-white.png +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/static/parsl-monitor.css +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/templates/app.html +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/templates/dag.html +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/templates/error.html +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/templates/layout.html +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/templates/resource_usage.html +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/templates/task.html +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/templates/workflow.html +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/templates/workflows_summary.html +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/utils.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/version.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/monitoring/visualization/views.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/multiprocessing.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/process_loggers.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/aws/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/aws/aws.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/aws/template.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/azure/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/azure/azure.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/azure/template.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/base.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/cluster_provider.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/condor/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/condor/condor.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/condor/template.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/googlecloud/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/googlecloud/googlecloud.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/grid_engine/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/grid_engine/grid_engine.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/grid_engine/template.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/kubernetes/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/kubernetes/kube.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/kubernetes/template.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/local/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/local/local.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/lsf/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/lsf/lsf.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/lsf/template.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/pbspro/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/pbspro/pbspro.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/pbspro/template.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/slurm/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/slurm/slurm.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/slurm/template.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/torque/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/torque/template.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/providers/torque/torque.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/py.typed +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/serialize/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/serialize/base.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/serialize/concretes.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/serialize/errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/serialize/facade.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/serialize/proxystore.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/callables_helper.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/azure_single_node.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/bluewaters.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/bridges.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/cc_in2p3.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/comet.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/ec2_single_node.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/ec2_spot.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/flux_local.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/frontera.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/globus_compute.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/htex_local.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/htex_local_alternate.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/htex_local_intask_staging.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/htex_local_rsync_staging.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/local_radical.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/local_radical_mpi.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/local_threads.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/local_threads_checkpoint.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/local_threads_checkpoint_dfk_exit.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/local_threads_checkpoint_periodic.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/local_threads_checkpoint_task_exit.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/local_threads_ftp_in_task.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/local_threads_globus.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/local_threads_http_in_task.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/local_threads_no_cache.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/midway.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/nscc_singapore.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/osg_htex.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/petrelkube.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/slurm_local.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/summit.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/taskvine_ex.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/user_opts.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/configs/workqueue_ex.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/conftest.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/integration/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/integration/latency.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/integration/test_apps/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/integration/test_parsl_load_default_config.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/integration/test_stress/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/integration/test_stress/test_python_simple.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/integration/test_stress/test_python_threads.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/manual_tests/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/manual_tests/htex_local.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/manual_tests/test_basic.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/manual_tests/test_log_filter.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/manual_tests/test_memory_limits.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/manual_tests/test_regression_220.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/manual_tests/test_worker_count.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/scaling_tests/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/scaling_tests/htex_local.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/scaling_tests/local_threads.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/scaling_tests/test_scale.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/scaling_tests/vineex_condor.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/scaling_tests/vineex_local.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/scaling_tests/wqex_condor.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/scaling_tests/wqex_local.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/site_tests/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/site_tests/site_config_selector.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/site_tests/test_provider.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/site_tests/test_site.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/sites/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/sites/test_affinity.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/sites/test_concurrent.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/sites/test_dynamic_executor.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/sites/test_ec2.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/sites/test_launchers.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/sites/test_mpi/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/sites/test_worker_info.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_aalst_patterns.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_apptimeout.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_basic.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_error_codes.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_inputs_default.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_keyword_overlaps.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_kwarg_storage.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_memoize.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_memoize_ignore_args.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_multiline.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_pipeline.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_std_uri.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_bash_apps/test_stdout.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_callables.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_checkpointing/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_checkpointing/test_periodic.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_checkpointing/test_python_checkpoint_1.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_checkpointing/test_python_checkpoint_2.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_checkpointing/test_regression_232.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_checkpointing/test_regression_233.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_checkpointing/test_regression_239.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_checkpointing/test_task_exit.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_curvezmq.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_docs/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_docs/test_from_slides.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_docs/test_kwargs.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_docs/test_tutorial_1.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_docs/test_workflow1.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_docs/test_workflow2.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_docs/test_workflow4.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_error_handling/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_error_handling/test_fail.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_error_handling/test_python_walltime.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_error_handling/test_rand_fail.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_error_handling/test_resource_spec.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_error_handling/test_retries.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_error_handling/test_retry_handler.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_error_handling/test_retry_handler_failure.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_error_handling/test_serialization_fail.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_error_handling/test_wrap_with_logs.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_execute_task.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_flowcontrol/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_flux.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_basic.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_block_manager_selector_unit.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_command_client_timeout.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_connected_blocks.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_cpu_affinity_explicit.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_disconnected_blocks.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_disconnected_blocks_failing_provider.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_drain.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_htex.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_interchange_exit_bad_registration.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_manager_failure.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_manager_selector_by_block.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_managers_command.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_missing_worker.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_multiple_disconnected_blocks.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_priority_queue.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_resource_spec_validation.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_worker_failure.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_htex/test_zmq_binding.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_app_names.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_basic.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_db_locks.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_exit_helper.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_htex_fuzz_zmq.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_incomplete_futures.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_memoization_representation.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_radio_filesystem.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_radio_multiprocessing.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_radio_udp.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_radio_zmq.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_stdouterr.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_monitoring/test_viz_colouring.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_mpi_apps/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_mpi_apps/test_bad_mpi_config.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_mpi_apps/test_mpi_mode_enabled.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_mpi_apps/test_mpi_prefix.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_mpi_apps/test_mpi_scheduler.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_mpi_apps/test_mpiex.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_mpi_apps/test_resource_spec.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_providers/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_providers/test_kubernetes_provider.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_providers/test_local_provider.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_providers/test_pbspro_template.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_providers/test_slurm_instantiate.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_providers/test_slurm_template.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_providers/test_submiterror_deprecation.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_arg_input_types.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_basic.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_context_manager.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_dep_standard_futures.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_dependencies.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_dependencies_deep.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_depfail_propagation.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_fail.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_fibonacci_iterative.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_fibonacci_recursive.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_futures.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_garbage_collect.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_import_fail.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_inputs_default.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_join.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_lifted.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_mapred.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_memoize_1.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_memoize_2.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_memoize_4.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_memoize_ignore_args.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_memoize_joinapp.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_outputs.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_overview.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_pipeline.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_pluggable_future_resolution.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_simple.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_timeout.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_python_apps/test_type5.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_radical/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_radical/test_mpi_funcs.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_regression/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_regression/test_1480.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_regression/test_1606_wait_for_current_tasks.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_regression/test_1653.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_regression/test_221.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_regression/test_226.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_regression/test_2652.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_regression/test_69a.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_regression/test_854.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_regression/test_97_parallelism_0.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_regression/test_98.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_scaling/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_scaling/test_block_error_handler.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_scaling/test_regression_1621.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_scaling/test_regression_3568_scaledown_vs_MISSING.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_scaling/test_regression_3696_oscillation.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_scaling/test_scale_down.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_scaling/test_scale_down_htex_unregistered.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_scaling/test_shutdown_scalein.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_scaling/test_worker_interchange_bad_messages_3262.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_serialization/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_serialization/test_2555_caching_deserializer.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_serialization/test_3495_deserialize_managerlost.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_serialization/test_basic.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_serialization/test_htex_code_cache.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_serialization/test_pack_resource_spec.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_serialization/test_proxystore_configured.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_serialization/test_proxystore_impl.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_shutdown/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_shutdown/test_kill_monitoring.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/staging_provider.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_1316.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_docs_1.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_docs_2.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_elaborate_noop_file.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_file.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_file_apps.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_file_staging.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_output_chain_filenames.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_staging_ftp.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_staging_ftp_in_task.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_staging_globus.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_staging_https.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_staging_stdout.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_zip_in.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_zip_out.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_staging/test_zip_to_zip.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_summary.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_thread_parallelism.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_threads/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_threads/test_configs.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_threads/test_lazy_errors.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_utils/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_utils/test_execute_wait.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_utils/test_representation_mixin.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/test_utils/test_sanitize_dns.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/unit/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/unit/test_address.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/unit/test_file.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/unit/test_globus_compute_executor.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/unit/test_usage_tracking.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/tests/utils.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/usage_tracking/__init__.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/usage_tracking/api.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/usage_tracking/levels.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/usage_tracking/usage.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl/utils.py +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl.egg-info/dependency_links.txt +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl.egg-info/entry_points.txt +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl.egg-info/requires.txt +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/parsl.egg-info/top_level.txt +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/requirements.txt +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/setup.cfg +0 -0
- {parsl-2025.6.30 → parsl-2025.7.7}/setup.py +0 -0
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: parsl
|
3
|
-
Version: 2025.
|
3
|
+
Version: 2025.7.7
|
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/2025.
|
6
|
+
Download-URL: https://github.com/Parsl/parsl/archive/2025.07.07.tar.gz
|
7
7
|
Author: The Parsl Team
|
8
8
|
Author-email: parsl@googlegroups.com
|
9
9
|
License: Apache 2.0
|
@@ -0,0 +1,34 @@
|
|
1
|
+
from parsl.config import Config
|
2
|
+
from parsl.executors import HighThroughputExecutor
|
3
|
+
from parsl.launchers import SrunLauncher
|
4
|
+
from parsl.providers import SlurmProvider
|
5
|
+
from parsl.usage_tracking.levels import LEVEL_1
|
6
|
+
|
7
|
+
config = Config(
|
8
|
+
executors=[
|
9
|
+
HighThroughputExecutor(
|
10
|
+
label='Anvil_GPU_Executor',
|
11
|
+
working_dir='/anvil/scratch/path/to/your/directory',
|
12
|
+
max_workers_per_node=1,
|
13
|
+
provider=SlurmProvider(
|
14
|
+
partition='gpu',
|
15
|
+
account='YOUR_ALLOCATION_ON_ANVIL',
|
16
|
+
nodes_per_block=1,
|
17
|
+
cores_per_node=4,
|
18
|
+
mem_per_node=50,
|
19
|
+
init_blocks=1,
|
20
|
+
max_blocks=1,
|
21
|
+
walltime='00:30:00',
|
22
|
+
# string to prepend to #SBATCH blocks in the submit
|
23
|
+
# script to the scheduler
|
24
|
+
scheduler_options='#SBATCH --gres gpu:1 --gpus-per-node=1',
|
25
|
+
# Command to be run before starting a worker, such as:
|
26
|
+
# 'module load Anaconda; source activate parsl_env'.
|
27
|
+
worker_init='module load modtree/gpu',
|
28
|
+
exclusive=False,
|
29
|
+
launcher=SrunLauncher(),
|
30
|
+
),
|
31
|
+
)
|
32
|
+
],
|
33
|
+
usage_tracking=LEVEL_1,
|
34
|
+
)
|
@@ -0,0 +1,35 @@
|
|
1
|
+
from parsl.config import Config
|
2
|
+
from parsl.executors import HighThroughputExecutor
|
3
|
+
from parsl.launchers import SrunLauncher
|
4
|
+
from parsl.providers import SlurmProvider
|
5
|
+
from parsl.usage_tracking.levels import LEVEL_1
|
6
|
+
|
7
|
+
config = Config(
|
8
|
+
executors=[
|
9
|
+
HighThroughputExecutor(
|
10
|
+
label='Delta_GPU_Executor',
|
11
|
+
working_dir='/scratch/path/to/your/directory',
|
12
|
+
max_workers_per_node=1,
|
13
|
+
provider=SlurmProvider(
|
14
|
+
partition='gpuA100x4',
|
15
|
+
account='YOUR_ALLOCATION_ON_DELTA',
|
16
|
+
constraint="scratch",
|
17
|
+
nodes_per_block=1,
|
18
|
+
cores_per_node=32,
|
19
|
+
mem_per_node=220,
|
20
|
+
init_blocks=1,
|
21
|
+
max_blocks=1,
|
22
|
+
walltime='00:30:00',
|
23
|
+
# string to prepend to #SBATCH blocks in the submit
|
24
|
+
# script to the scheduler
|
25
|
+
scheduler_options='#SBATCH --gpus-per-node=1 --gpu-bind=closest',
|
26
|
+
# Command to be run before starting a worker, such as:
|
27
|
+
# 'module load Anaconda; source activate parsl_env'.
|
28
|
+
worker_init='',
|
29
|
+
exclusive=False,
|
30
|
+
launcher=SrunLauncher(),
|
31
|
+
),
|
32
|
+
)
|
33
|
+
],
|
34
|
+
usage_tracking=LEVEL_1,
|
35
|
+
)
|
@@ -369,7 +369,11 @@ class Interchange:
|
|
369
369
|
'Processing message type %r from manager %r', mtype, manager_id
|
370
370
|
)
|
371
371
|
|
372
|
-
if mtype == '
|
372
|
+
if mtype == 'connection_probe':
|
373
|
+
self.manager_sock.send_multipart([manager_id, b''])
|
374
|
+
return
|
375
|
+
|
376
|
+
elif mtype == 'registration':
|
373
377
|
ix_minor_py = self.current_platform['python_v'].rsplit('.', 1)[0]
|
374
378
|
ix_parsl_v = self.current_platform['parsl_v']
|
375
379
|
mgr_minor_py = meta['python_v'].rsplit('.', 1)[0]
|
@@ -0,0 +1,107 @@
|
|
1
|
+
import logging
|
2
|
+
import pickle
|
3
|
+
from contextlib import ExitStack
|
4
|
+
from typing import Optional
|
5
|
+
|
6
|
+
import zmq
|
7
|
+
|
8
|
+
from parsl import curvezmq
|
9
|
+
|
10
|
+
logger = logging.getLogger(__name__)
|
11
|
+
|
12
|
+
|
13
|
+
def probe_addresses(
|
14
|
+
zmq_context: curvezmq.ClientContext,
|
15
|
+
addresses: str,
|
16
|
+
timeout_ms: int = 120_000,
|
17
|
+
identity: Optional[bytes] = None,
|
18
|
+
):
|
19
|
+
"""
|
20
|
+
Given a single-line CSV list of addresses, return the first proven valid address.
|
21
|
+
|
22
|
+
This function will connect to each address in ``addresses`` (a comma-separated
|
23
|
+
list of URLs) and attempt to send a CONNECTION_PROBE packet. Returns the first
|
24
|
+
address that receives a response.
|
25
|
+
|
26
|
+
If no address receives a response within the ``timeout_ms`` (specified in
|
27
|
+
milliseconds), then raise ``ConnectionError``.
|
28
|
+
|
29
|
+
:param zmq_context: A ZMQ Context; the call-site may provide an encrypted ZMQ
|
30
|
+
context for assurance that the returned address is the expected and correct
|
31
|
+
endpoint
|
32
|
+
:param addresses: a comma-separated string of addresses to attempt. Example:
|
33
|
+
``tcp://127.0.0.1:1234,tcp://[3812::03aa]:5678``
|
34
|
+
:param timeout_ms: how long to wait for a response from the probes. The probes
|
35
|
+
are initiated and await concurrently, so this timeout will be the total wall
|
36
|
+
time in the worst case of "no addresses are valid."
|
37
|
+
:param identity: a ZMQ connection identity; used for logging connection probes
|
38
|
+
at the interchange
|
39
|
+
:raises: ``ConnectionError`` if no addresses are determined valid
|
40
|
+
:returns: a single address, the first one that received a response
|
41
|
+
"""
|
42
|
+
if not addresses:
|
43
|
+
raise ValueError("No address to probe!")
|
44
|
+
|
45
|
+
sock_map = {}
|
46
|
+
urls = addresses.split(",")
|
47
|
+
with ExitStack() as stk:
|
48
|
+
poller = zmq.Poller()
|
49
|
+
for url in urls:
|
50
|
+
logger.debug("Testing ZMQ connection to url: %s", url)
|
51
|
+
s: zmq.Socket = stk.enter_context(zmq_context.socket(zmq.DEALER))
|
52
|
+
s.setsockopt(zmq.LINGER, 0)
|
53
|
+
s.setsockopt(zmq.IPV6, True)
|
54
|
+
if identity:
|
55
|
+
s.setsockopt(zmq.IDENTITY, identity)
|
56
|
+
stk.enter_context(s.connect(url))
|
57
|
+
poller.register(s, zmq.POLLIN)
|
58
|
+
sock_map[s] = url
|
59
|
+
|
60
|
+
s.send(pickle.dumps({'type': 'connection_probe'}))
|
61
|
+
|
62
|
+
for sock, evt in poller.poll(timeout=timeout_ms):
|
63
|
+
sock.recv() # clear the buffer for good netizenry
|
64
|
+
return sock_map.get(sock)
|
65
|
+
|
66
|
+
addys = ", ".join(urls) # just slightly more human friendly
|
67
|
+
raise ConnectionError(f"No viable ZMQ url from: {addys}")
|
68
|
+
|
69
|
+
|
70
|
+
class TestWorker:
|
71
|
+
|
72
|
+
def __init__(self, addresses, port):
|
73
|
+
uid = str(uuid.uuid4())
|
74
|
+
self.context = zmq.Context()
|
75
|
+
self.task_incoming = self.context.socket(zmq.DEALER)
|
76
|
+
self.task_incoming.setsockopt(zmq.IDENTITY, uid.encode('utf-8'))
|
77
|
+
# Linger is set to 0, so that the manager can exit even when there might be
|
78
|
+
# messages in the pipe
|
79
|
+
self.task_incoming.setsockopt(zmq.LINGER, 0)
|
80
|
+
|
81
|
+
address = probe_addresses(addresses, port)
|
82
|
+
print("Viable address :", address)
|
83
|
+
self.task_incoming.connect(tcp_url(address, port))
|
84
|
+
|
85
|
+
def heartbeat(self):
|
86
|
+
""" Send heartbeat to the incoming task queue
|
87
|
+
"""
|
88
|
+
HEARTBEAT_CODE = (2 ** 32) - 1
|
89
|
+
heartbeat = (HEARTBEAT_CODE).to_bytes(4, "little")
|
90
|
+
r = self.task_incoming.send(heartbeat)
|
91
|
+
print("Return from heartbeat: {}".format(r))
|
92
|
+
|
93
|
+
|
94
|
+
if __name__ == "__main__":
|
95
|
+
import argparse
|
96
|
+
import uuid
|
97
|
+
|
98
|
+
from parsl.addresses import get_all_addresses, tcp_url
|
99
|
+
|
100
|
+
parser = argparse.ArgumentParser()
|
101
|
+
parser.add_argument("-p", "--port", required=True,
|
102
|
+
help="Port to connect to")
|
103
|
+
|
104
|
+
args = parser.parse_args()
|
105
|
+
addresses = get_all_addresses()
|
106
|
+
worker = TestWorker(addresses, args.port)
|
107
|
+
worker.heartbeat()
|
@@ -154,23 +154,23 @@ class Manager:
|
|
154
154
|
|
155
155
|
self._start_time = time.time()
|
156
156
|
|
157
|
-
try:
|
158
|
-
ix_address = probe_addresses(addresses.split(','), port, timeout=address_probe_timeout)
|
159
|
-
if not ix_address:
|
160
|
-
raise Exception("No viable address found")
|
161
|
-
else:
|
162
|
-
logger.info(f"Connection to Interchange successful on {ix_address}")
|
163
|
-
ix_url = tcp_url(ix_address, port)
|
164
|
-
logger.info(f"Interchange url: {ix_url}")
|
165
|
-
except Exception:
|
166
|
-
logger.exception("Caught exception while trying to determine viable address to interchange")
|
167
|
-
print("Failed to find a viable address to connect to interchange. Exiting")
|
168
|
-
exit(5)
|
169
|
-
|
170
157
|
self.cert_dir = cert_dir
|
171
158
|
self.zmq_context = curvezmq.ClientContext(self.cert_dir)
|
172
159
|
|
173
|
-
|
160
|
+
addresses = ','.join(tcp_url(a, port) for a in addresses.split(','))
|
161
|
+
try:
|
162
|
+
self._ix_url = probe_addresses(
|
163
|
+
self.zmq_context,
|
164
|
+
addresses,
|
165
|
+
timeout_ms=1_000 * address_probe_timeout,
|
166
|
+
identity=uid.encode('utf-8'),
|
167
|
+
)
|
168
|
+
except ConnectionError:
|
169
|
+
addys = ", ".join(addresses.split(","))
|
170
|
+
logger.error(f"Unable to connect to interchange; attempted addresses: {addys}")
|
171
|
+
raise
|
172
|
+
|
173
|
+
logger.info(f"Probe discovered interchange url: {self._ix_url}")
|
174
174
|
|
175
175
|
self.uid = uid
|
176
176
|
self.block_id = block_id
|
@@ -312,6 +312,14 @@ class Manager:
|
|
312
312
|
poller.register(results_sock, zmq.POLLIN)
|
313
313
|
poller.register(ix_sock, zmq.POLLIN)
|
314
314
|
|
315
|
+
ix_sock.send(pickle.dumps({"type": "connection_probe"}))
|
316
|
+
evts = dict(poller.poll(timeout=self.heartbeat_period))
|
317
|
+
if evts.get(ix_sock) is None:
|
318
|
+
logger.error(f"Failed to connect to interchange ({self._ix_url}")
|
319
|
+
|
320
|
+
ix_sock.recv()
|
321
|
+
logger.info(f"Successfully connected to interchange via URL: {self._ix_url}")
|
322
|
+
|
315
323
|
# Send a registration message
|
316
324
|
msg = self.create_reg_message()
|
317
325
|
logger.debug("Sending registration message: %s", msg)
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: parsl
|
3
|
-
Version: 2025.
|
3
|
+
Version: 2025.7.7
|
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/2025.
|
6
|
+
Download-URL: https://github.com/Parsl/parsl/archive/2025.07.07.tar.gz
|
7
7
|
Author: The Parsl Team
|
8
8
|
Author-email: parsl@googlegroups.com
|
9
9
|
License: Apache 2.0
|
@@ -32,8 +32,10 @@ parsl/concurrent/__init__.py
|
|
32
32
|
parsl/configs/ASPIRE1.py
|
33
33
|
parsl/configs/Azure.py
|
34
34
|
parsl/configs/__init__.py
|
35
|
+
parsl/configs/anvil.py
|
35
36
|
parsl/configs/bridges.py
|
36
37
|
parsl/configs/cc_in2p3.py
|
38
|
+
parsl/configs/delta.py
|
37
39
|
parsl/configs/ec2.py
|
38
40
|
parsl/configs/expanse.py
|
39
41
|
parsl/configs/frontera.py
|
@@ -1,95 +0,0 @@
|
|
1
|
-
import argparse
|
2
|
-
import logging
|
3
|
-
import time
|
4
|
-
import uuid
|
5
|
-
|
6
|
-
import zmq
|
7
|
-
from zmq.utils.monitor import recv_monitor_message
|
8
|
-
|
9
|
-
from parsl.addresses import get_all_addresses, tcp_url
|
10
|
-
|
11
|
-
logger = logging.getLogger(__name__)
|
12
|
-
|
13
|
-
|
14
|
-
def probe_addresses(addresses, port, timeout=120):
|
15
|
-
"""
|
16
|
-
Parameters
|
17
|
-
----------
|
18
|
-
|
19
|
-
addresses: [string]
|
20
|
-
List of addresses as strings
|
21
|
-
port: int
|
22
|
-
Port on the interchange
|
23
|
-
timeout: int
|
24
|
-
Timeout in seconds
|
25
|
-
|
26
|
-
Returns
|
27
|
-
-------
|
28
|
-
None or string address
|
29
|
-
"""
|
30
|
-
context = zmq.Context()
|
31
|
-
addr_map = {}
|
32
|
-
for addr in addresses:
|
33
|
-
socket = context.socket(zmq.DEALER)
|
34
|
-
socket.setsockopt(zmq.LINGER, 0)
|
35
|
-
socket.setsockopt(zmq.IPV6, True)
|
36
|
-
url = tcp_url(addr, port)
|
37
|
-
logger.debug("Trying to connect back on {}".format(url))
|
38
|
-
socket.connect(url)
|
39
|
-
addr_map[addr] = {'sock': socket,
|
40
|
-
'mon_sock': socket.get_monitor_socket(events=zmq.EVENT_CONNECTED)}
|
41
|
-
|
42
|
-
start_t = time.time()
|
43
|
-
|
44
|
-
first_connected = None
|
45
|
-
while time.time() < start_t + timeout and not first_connected:
|
46
|
-
for addr in addr_map:
|
47
|
-
try:
|
48
|
-
recv_monitor_message(addr_map[addr]['mon_sock'], zmq.NOBLOCK)
|
49
|
-
first_connected = addr
|
50
|
-
logger.info("Connected to interchange on {}".format(first_connected))
|
51
|
-
break
|
52
|
-
except zmq.Again:
|
53
|
-
pass
|
54
|
-
time.sleep(0.01)
|
55
|
-
|
56
|
-
for addr in addr_map:
|
57
|
-
addr_map[addr]['sock'].close()
|
58
|
-
|
59
|
-
return first_connected
|
60
|
-
|
61
|
-
|
62
|
-
class TestWorker:
|
63
|
-
|
64
|
-
def __init__(self, addresses, port):
|
65
|
-
uid = str(uuid.uuid4())
|
66
|
-
self.context = zmq.Context()
|
67
|
-
self.task_incoming = self.context.socket(zmq.DEALER)
|
68
|
-
self.task_incoming.setsockopt(zmq.IDENTITY, uid.encode('utf-8'))
|
69
|
-
# Linger is set to 0, so that the manager can exit even when there might be
|
70
|
-
# messages in the pipe
|
71
|
-
self.task_incoming.setsockopt(zmq.LINGER, 0)
|
72
|
-
|
73
|
-
address = probe_addresses(addresses, port)
|
74
|
-
print("Viable address :", address)
|
75
|
-
self.task_incoming.connect(tcp_url(address, port))
|
76
|
-
|
77
|
-
def heartbeat(self):
|
78
|
-
""" Send heartbeat to the incoming task queue
|
79
|
-
"""
|
80
|
-
HEARTBEAT_CODE = (2 ** 32) - 1
|
81
|
-
heartbeat = (HEARTBEAT_CODE).to_bytes(4, "little")
|
82
|
-
r = self.task_incoming.send(heartbeat)
|
83
|
-
print("Return from heartbeat: {}".format(r))
|
84
|
-
|
85
|
-
|
86
|
-
if __name__ == "__main__":
|
87
|
-
|
88
|
-
parser = argparse.ArgumentParser()
|
89
|
-
parser.add_argument("-p", "--port", required=True,
|
90
|
-
help="Port to connect to")
|
91
|
-
|
92
|
-
args = parser.parse_args()
|
93
|
-
addresses = get_all_addresses()
|
94
|
-
worker = TestWorker(addresses, args.port)
|
95
|
-
worker.heartbeat()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{parsl-2025.6.30 → parsl-2025.7.7}/parsl/executors/high_throughput/mpi_resource_management.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|