parsl 2024.5.20__tar.gz → 2024.6.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {parsl-2024.5.20/parsl.egg-info → parsl-2024.6.3}/PKG-INFO +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/README.rst +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/__init__.py +9 -10
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/addresses.py +6 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/app.py +3 -6
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/bash.py +4 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/errors.py +5 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/python.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/benchmark/perf.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/base.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/errors.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/oauth_ssh/oauth_ssh.py +4 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/ssh/ssh.py +9 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/ssh_il/ssh_il.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/concurrent/__init__.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/config.py +12 -6
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/Azure.py +6 -7
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/ad_hoc.py +4 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/expanse.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/frontera.py +2 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/htex_local.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/kubernetes.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/stampede2.py +4 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/summit.py +1 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/toss3_llnl.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/vineex_local.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/data_manager.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/file_noop.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/ftp.py +1 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/globus.py +7 -6
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/staging.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/zip.py +4 -5
- parsl-2024.6.3/parsl/dataflow/dependency_resolvers.py +115 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/dflow.py +65 -54
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/errors.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/futures.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/memoization.py +5 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/taskrecord.py +4 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/base.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/flux/executor.py +11 -12
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/flux/flux_instance_manager.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/errors.py +10 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/executor.py +31 -36
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/interchange.py +16 -18
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/manager_record.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/monitoring_info.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/mpi_executor.py +6 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/mpi_prefix_composer.py +19 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/mpi_resource_management.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/probe.py +6 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/process_worker_pool.py +31 -20
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/zmq_pipes.py +63 -15
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/radical/executor.py +15 -15
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/radical/rpex_master.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/radical/rpex_resources.py +4 -9
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/radical/rpex_worker.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/status_handling.py +5 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/executor.py +23 -24
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/manager.py +11 -13
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/threads.py +4 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/exec_parsl_function.py +5 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/executor.py +26 -27
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/error_handlers.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/job_status_poller.py +2 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/launchers/__init__.py +12 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/log_utils.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/db_manager.py +16 -10
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/monitoring.py +11 -15
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/queries/pandas.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/radios.py +2 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/remote.py +13 -8
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/router.py +8 -11
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/types.py +2 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/app.py +4 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/models.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/plots/default/workflow_plots.py +8 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/plots/default/workflow_resource_plots.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/utils.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/views.py +16 -9
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/multiprocessing.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/process_loggers.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/__init__.py +9 -12
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/ad_hoc/ad_hoc.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/aws/aws.py +2 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/azure/azure.py +4 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/condor/condor.py +4 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/googlecloud/googlecloud.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/kubernetes/kube.py +5 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/local/local.py +5 -1
- parsl-2024.6.3/parsl/serialize/__init__.py +16 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/serialize/base.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/serialize/concretes.py +5 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/serialize/proxystore.py +3 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/azure_single_node.py +4 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/bridges.py +3 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/comet.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/ec2_single_node.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/ec2_spot.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/frontera.py +3 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/htex_ad_hoc_cluster.py +2 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/htex_local.py +2 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/htex_local_alternate.py +8 -11
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/htex_local_intask_staging.py +5 -7
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/htex_local_rsync_staging.py +4 -6
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_radical.py +1 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_radical_mpi.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/petrelkube.py +3 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/summit.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/taskvine_ex.py +3 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/workqueue_ex.py +3 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/conftest.py +6 -6
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_ssh_errors.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_stress/test_python_simple.py +3 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_stress/test_python_threads.py +3 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_ad_hoc_htex.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_basic.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_log_filter.py +3 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_regression_220.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_udp_simple.py +4 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_worker_count.py +3 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/test_scale.py +0 -9
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/vineex_condor.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/vineex_local.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/site_tests/test_provider.py +3 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/site_tests/test_site.py +2 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_affinity.py +7 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_dynamic_executor.py +3 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_ec2.py +3 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_local_adhoc.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_worker_info.py +4 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_aalst_patterns.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_error_codes.py +1 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_memoize_ignore_args.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_std_uri.py +4 -9
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_periodic.py +2 -7
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_python_checkpoint_1.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_python_checkpoint_2.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_python_checkpoint_3.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_regression_239.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_task_exit.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_kwargs.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_tutorial_1.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_workflow2.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_resource_spec.py +4 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_retries.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_retry_handler.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_retry_handler_failure.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_wrap_with_logs.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_basic.py +0 -1
- parsl-2024.6.3/parsl/tests/test_htex/test_command_client_timeout.py +66 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_connected_blocks.py +3 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_cpu_affinity_explicit.py +6 -10
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_disconnected_blocks.py +6 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_htex.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_manager_failure.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_managers_command.py +5 -9
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_missing_worker.py +2 -8
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_multiple_disconnected_blocks.py +6 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_app_names.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_basic.py +4 -6
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_db_locks.py +6 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_fuzz_zmq.py +6 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py +5 -7
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_incomplete_futures.py +5 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_memoization_representation.py +4 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_stdouterr.py +4 -6
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/test_viz_colouring.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_bad_mpi_config.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_mpi_mode_disabled.py +4 -7
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_mpi_mode_enabled.py +15 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_mpi_scheduler.py +7 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_mpiex.py +4 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_resource_spec.py +21 -17
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_cobalt_deprecation_warning.py +2 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_local_provider.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_submiterror_deprecation.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_context_manager.py +5 -12
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_dep_standard_futures.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_futures.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_join.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_lifted.py +11 -7
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py +1 -0
- parsl-2024.6.3/parsl/tests/test_python_apps/test_pluggable_future_resolution.py +161 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_1480.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_1653.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_2652.py +1 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_69a.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_854.py +4 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_97_parallelism_0.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_98.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_block_error_handler.py +9 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_regression_1621.py +0 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_scale_down.py +2 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py +4 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_scale_down_htex_unregistered.py +3 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/test_shutdown_scalein.py +1 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_basic.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_htex_code_cache.py +3 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_pack_resource_spec.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_proxystore_configured.py +10 -6
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_proxystore_impl.py +5 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_shutdown/test_kill_monitoring.py +3 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_1316.py +3 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_docs_1.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_docs_2.py +2 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_elaborate_noop_file.py +2 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_staging_stdout.py +4 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_zip_in.py +6 -8
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_zip_out.py +7 -9
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_zip_to_zip.py +6 -8
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_summary.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_thread_parallelism.py +0 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_threads/test_configs.py +1 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_threads/test_lazy_errors.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/usage_tracking/api.py +2 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/usage_tracking/usage.py +8 -18
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/utils.py +13 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/version.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3/parsl.egg-info}/PKG-INFO +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl.egg-info/SOURCES.txt +3 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl.egg-info/requires.txt +4 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/setup.py +2 -2
- parsl-2024.5.20/parsl/serialize/__init__.py +0 -11
- {parsl-2024.5.20 → parsl-2024.6.3}/LICENSE +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/MANIFEST.in +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/app/futures.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/benchmark/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/__init__.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/local/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/local/local.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/oauth_ssh/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/ssh/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/channels/ssh_il/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/ASPIRE1.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/bridges.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/cc_in2p3.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/ec2.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/illinoiscluster.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/local_threads.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/midway.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/osg.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/polaris.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/configs/wqex_local.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/curvezmq.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/files.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/http.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/data_provider/rsync.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/rundirs.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/dataflow/states.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/errors.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/__init__.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/errors.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/flux/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/flux/execute_parsl_task.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/high_throughput/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/radical/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/__init__.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/errors.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/exec_parsl_function.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/factory.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/factory_config.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/manager_config.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/taskvine/utils.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/errors.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/parsl_coprocess.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/executors/workqueue/parsl_coprocess_stub.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/errors.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/states.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/jobs/strategy.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/launchers/base.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/launchers/errors.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/launchers/launchers.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/message_type.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/queries/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/plots/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/plots/default/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/plots/default/task_plots.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/static/parsl-logo-white.png +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/static/parsl-monitor.css +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/app.html +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/dag.html +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/error.html +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/layout.html +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/resource_usage.html +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/task.html +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/workflow.html +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/templates/workflows_summary.html +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/monitoring/visualization/version.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/ad_hoc/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/aws/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/aws/template.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/azure/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/azure/template.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/base.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/cluster_provider.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/cobalt/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/cobalt/cobalt.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/cobalt/template.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/condor/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/condor/template.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/errors.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/googlecloud/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/grid_engine/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/grid_engine/grid_engine.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/grid_engine/template.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/kubernetes/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/kubernetes/template.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/local/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/lsf/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/lsf/lsf.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/lsf/template.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/pbspro/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/pbspro/pbspro.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/pbspro/template.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/slurm/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/slurm/slurm.py +5 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/slurm/template.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/torque/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/torque/template.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/providers/torque/torque.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/py.typed +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/serialize/errors.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/serialize/facade.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/__init__.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/callables_helper.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/ad_hoc_cluster_htex.py +4 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/bluewaters.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/cc_in2p3.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/cooley_htex.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_adhoc.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_checkpoint.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_checkpoint_dfk_exit.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_checkpoint_periodic.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_checkpoint_task_exit.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_ftp_in_task.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_globus.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_http_in_task.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_monitoring.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/local_threads_no_cache.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/midway.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/nscc_singapore.py +3 -3
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/osg_htex.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/swan_htex.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/theta.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/configs/user_opts.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/latency.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_apps/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_channels.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_local_channel.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_scp_1.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_ssh_1.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_ssh_file_transport.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_channels/test_ssh_interactive.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_parsl_load_default_config.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/integration/test_stress/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/htex_local.py +4 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_fan_in_out_htex_remote.py +4 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_memory_limits.py +6 -6
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/manual_tests/test_oauth_ssh.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/htex_local.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/local_threads.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/wqex_condor.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/scaling_tests/wqex_local.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/site_tests/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/site_tests/site_config_selector.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_concurrent.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_launchers.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/sites/test_mpi/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_apptimeout.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_basic.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_keyword_overlaps.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_kwarg_storage.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_memoize.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_multiline.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_pipeline.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_bash_apps/test_stdout.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_callables.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_channels/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_channels/test_large_output.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_regression_232.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_checkpointing/test_regression_233.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_curvezmq.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_from_slides.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_workflow1.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_docs/test_workflow4.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_fail.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_python_walltime.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_rand_fail.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_error_handling/test_serialization_fail.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_flowcontrol/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_flux.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_drain.py +5 -5
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_worker_failure.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_htex/test_zmq_binding.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_monitoring/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_mpi_apps/test_mpi_prefix.py +4 -4
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_pbspro_template.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_slurm_instantiate.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_providers/test_slurm_template.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_arg_input_types.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_basic.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_dependencies.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_depfail_propagation.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_fail.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_fibonacci_iterative.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_fibonacci_recursive.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_garbage_collect.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_import_fail.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_mapred.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_1.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_2.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_4.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_ignore_args.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_memoize_joinapp.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_outputs.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_overview.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_pipeline.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_simple.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_timeout.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_python_apps/test_type5.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_radical/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_radical/test_mpi_funcs.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_1606_wait_for_current_tasks.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_221.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_regression/test_226.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_scaling/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_serialization/test_2555_caching_deserializer.py +1 -1
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_shutdown/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/staging_provider.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_file.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_file_apps.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_file_staging.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_output_chain_filenames.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_staging_ftp.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_staging_ftp_in_task.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_staging_globus.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_staging/test_staging_https.py +2 -2
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_threads/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_utils/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/test_utils/test_representation_mixin.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/unit/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/unit/test_file.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/tests/utils.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl/usage_tracking/__init__.py +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl.egg-info/dependency_links.txt +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl.egg-info/entry_points.txt +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/parsl.egg-info/top_level.txt +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/requirements.txt +0 -0
- {parsl-2024.5.20 → parsl-2024.6.3}/setup.cfg +0 -0
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: parsl
|
3
|
-
Version: 2024.
|
3
|
+
Version: 2024.6.3
|
4
4
|
Summary: Simple data dependent workflows in Python
|
5
5
|
Home-page: https://github.com/Parsl/parsl
|
6
|
-
Download-URL: https://github.com/Parsl/parsl/archive/2024.
|
6
|
+
Download-URL: https://github.com/Parsl/parsl/archive/2024.06.03.tar.gz
|
7
7
|
Author: The Parsl Team
|
8
8
|
Author-email: parsl@googlegroups.com
|
9
9
|
License: Apache 2.0
|
@@ -122,7 +122,7 @@ Parsl is supported in Python 3.8+. Requirements can be found `here <requirements
|
|
122
122
|
Code of Conduct
|
123
123
|
===============
|
124
124
|
|
125
|
-
Parsl seeks to foster an open and welcoming environment - Please see the `Parsl Code of Conduct <https://github.com/Parsl/parsl
|
125
|
+
Parsl seeks to foster an open and welcoming environment - Please see the `Parsl Code of Conduct <https://github.com/Parsl/parsl?tab=coc-ov-file#parsl-code-of-conduct>`_ for more details.
|
126
126
|
|
127
127
|
Contributing
|
128
128
|
============
|
@@ -15,24 +15,23 @@ AUTO_LOGNAME
|
|
15
15
|
|
16
16
|
"""
|
17
17
|
import logging
|
18
|
+
import multiprocessing as _multiprocessing
|
18
19
|
import os
|
19
20
|
import platform
|
20
21
|
|
21
|
-
from parsl.version import VERSION
|
22
22
|
from parsl.app.app import bash_app, join_app, python_app
|
23
23
|
from parsl.config import Config
|
24
|
-
from parsl.executors import ThreadPoolExecutor
|
25
|
-
from parsl.executors import HighThroughputExecutor
|
26
|
-
from parsl.executors import WorkQueueExecutor
|
27
|
-
from parsl.log_utils import set_stream_logger
|
28
|
-
from parsl.log_utils import set_file_logger
|
29
|
-
from parsl.monitoring import MonitoringHub
|
30
|
-
|
31
24
|
from parsl.data_provider.files import File
|
32
|
-
|
33
25
|
from parsl.dataflow.dflow import DataFlowKernel, DataFlowKernelLoader
|
26
|
+
from parsl.executors import (
|
27
|
+
HighThroughputExecutor,
|
28
|
+
ThreadPoolExecutor,
|
29
|
+
WorkQueueExecutor,
|
30
|
+
)
|
31
|
+
from parsl.log_utils import set_file_logger, set_stream_logger
|
32
|
+
from parsl.monitoring import MonitoringHub
|
33
|
+
from parsl.version import VERSION
|
34
34
|
|
35
|
-
import multiprocessing as _multiprocessing
|
36
35
|
if platform.system() == 'Darwin':
|
37
36
|
_multiprocessing.set_start_method('fork', force=True)
|
38
37
|
|
@@ -8,17 +8,19 @@ so some experimentation will probably be needed to choose the correct one.
|
|
8
8
|
|
9
9
|
import logging
|
10
10
|
import platform
|
11
|
-
import requests
|
12
11
|
import socket
|
12
|
+
|
13
|
+
import requests
|
14
|
+
|
13
15
|
try:
|
14
16
|
import fcntl
|
15
17
|
except ImportError:
|
16
18
|
fcntl = None # type: ignore[assignment]
|
17
19
|
import struct
|
18
|
-
import
|
19
|
-
import psutil
|
20
|
+
from typing import Callable, List, Set
|
20
21
|
|
21
|
-
|
22
|
+
import psutil
|
23
|
+
import typeguard
|
22
24
|
|
23
25
|
logger = logging.getLogger(__name__)
|
24
26
|
|
@@ -3,19 +3,16 @@
|
|
3
3
|
The App class encapsulates a generic leaf task that can be executed asynchronously.
|
4
4
|
"""
|
5
5
|
import logging
|
6
|
-
import typeguard
|
7
6
|
from abc import ABCMeta, abstractmethod
|
8
7
|
from inspect import signature
|
9
|
-
from typing import List, Optional, Sequence, Union
|
8
|
+
from typing import Any, Callable, Dict, List, Optional, Sequence, Union
|
9
|
+
|
10
|
+
import typeguard
|
10
11
|
from typing_extensions import Literal
|
11
12
|
|
12
13
|
from parsl.dataflow.dflow import DataFlowKernel
|
13
|
-
|
14
|
-
from typing import Any, Callable, Dict
|
15
|
-
|
16
14
|
from parsl.dataflow.futures import AppFuture
|
17
15
|
|
18
|
-
|
19
16
|
logger = logging.getLogger(__name__)
|
20
17
|
|
21
18
|
|
@@ -1,10 +1,9 @@
|
|
1
|
-
from functools import update_wrapper
|
2
|
-
from functools import partial
|
3
|
-
from inspect import signature, Parameter
|
4
1
|
import logging
|
2
|
+
from functools import partial, update_wrapper
|
3
|
+
from inspect import Parameter, signature
|
5
4
|
|
6
|
-
from parsl.app.errors import wrap_error
|
7
5
|
from parsl.app.app import AppBase
|
6
|
+
from parsl.app.errors import wrap_error
|
8
7
|
from parsl.data_provider.files import File
|
9
8
|
from parsl.dataflow.dflow import DataFlowKernelLoader
|
10
9
|
|
@@ -17,6 +16,7 @@ def remote_side_bash_executor(func, *args, **kwargs):
|
|
17
16
|
"""
|
18
17
|
import os
|
19
18
|
import subprocess
|
19
|
+
|
20
20
|
import parsl.app.errors as pe
|
21
21
|
from parsl.utils import get_std_fname_mode
|
22
22
|
|
@@ -1,10 +1,11 @@
|
|
1
1
|
"""Exceptions raised by Apps."""
|
2
|
+
import logging
|
2
3
|
from functools import wraps
|
3
|
-
from typing import Callable, List, Optional, TypeVar, Union
|
4
|
-
from typing_extensions import ParamSpec
|
5
4
|
from types import TracebackType
|
6
|
-
import
|
5
|
+
from typing import Callable, List, Optional, TypeVar, Union
|
6
|
+
|
7
7
|
from tblib import Traceback
|
8
|
+
from typing_extensions import ParamSpec
|
8
9
|
|
9
10
|
from parsl.data_provider.files import File
|
10
11
|
from parsl.errors import ParslError
|
@@ -134,6 +135,7 @@ def wrap_error(func: Callable[P, R]) -> Callable[P, Union[R, RemoteExceptionWrap
|
|
134
135
|
@wraps(func)
|
135
136
|
def wrapper(*args: P.args, **kwargs: P.kwargs) -> Union[R, RemoteExceptionWrapper]:
|
136
137
|
import sys
|
138
|
+
|
137
139
|
from parsl.app.errors import RemoteExceptionWrapper
|
138
140
|
try:
|
139
141
|
return func(*args, **kwargs)
|
@@ -2,6 +2,7 @@ import logging
|
|
2
2
|
import threading
|
3
3
|
|
4
4
|
import tblib.pickling_support
|
5
|
+
|
5
6
|
tblib.pickling_support.install()
|
6
7
|
|
7
8
|
from functools import wraps
|
@@ -11,7 +12,6 @@ from parsl.app.errors import wrap_error
|
|
11
12
|
from parsl.dataflow.dflow import DataFlowKernelLoader
|
12
13
|
from parsl.utils import AutoCancelTimer
|
13
14
|
|
14
|
-
|
15
15
|
logger = logging.getLogger(__name__)
|
16
16
|
|
17
17
|
|
@@ -19,6 +19,7 @@ def timeout(f, seconds: float):
|
|
19
19
|
@wraps(f)
|
20
20
|
def wrapper(*args, **kwargs):
|
21
21
|
import ctypes
|
22
|
+
|
22
23
|
import parsl.app.errors
|
23
24
|
|
24
25
|
def inject_exception(thread):
|
@@ -1,13 +1,14 @@
|
|
1
1
|
import logging
|
2
|
-
import paramiko
|
3
2
|
import socket
|
4
3
|
|
5
|
-
|
4
|
+
import paramiko
|
5
|
+
|
6
6
|
from parsl.channels.ssh.ssh import SSHChannel
|
7
|
+
from parsl.errors import OptionalModuleMissing
|
7
8
|
|
8
9
|
try:
|
9
|
-
from oauth_ssh.ssh_service import SSHService
|
10
10
|
from oauth_ssh.oauth_ssh_token import find_access_token
|
11
|
+
from oauth_ssh.ssh_service import SSHService
|
11
12
|
_oauth_ssh_enabled = True
|
12
13
|
except (ImportError, NameError):
|
13
14
|
_oauth_ssh_enabled = False
|
@@ -3,8 +3,16 @@ import logging
|
|
3
3
|
import os
|
4
4
|
|
5
5
|
import paramiko
|
6
|
+
|
6
7
|
from parsl.channels.base import Channel
|
7
|
-
from parsl.channels.errors import
|
8
|
+
from parsl.channels.errors import (
|
9
|
+
AuthException,
|
10
|
+
BadHostKeyException,
|
11
|
+
BadPermsScriptPath,
|
12
|
+
BadScriptPath,
|
13
|
+
FileCopyException,
|
14
|
+
SSHException,
|
15
|
+
)
|
8
16
|
from parsl.utils import RepresentationMixin
|
9
17
|
|
10
18
|
logger = logging.getLogger(__name__)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
"""Interfaces modeled after Python's `concurrent library <https://docs.python.org/3/library/concurrent.html>`_"""
|
2
|
-
|
2
|
+
import time
|
3
3
|
from concurrent.futures import Executor
|
4
|
+
from typing import Callable, Dict, Iterable, Iterator, Optional
|
4
5
|
from warnings import warn
|
5
|
-
import time
|
6
6
|
|
7
7
|
from parsl import Config, DataFlowKernel
|
8
8
|
from parsl.app.python import PythonApp
|
@@ -1,16 +1,17 @@
|
|
1
1
|
import logging
|
2
|
-
import typeguard
|
3
|
-
|
4
2
|
from typing import Callable, Iterable, Optional, Sequence, Union
|
3
|
+
|
4
|
+
import typeguard
|
5
5
|
from typing_extensions import Literal
|
6
6
|
|
7
|
-
from parsl.
|
7
|
+
from parsl.dataflow.dependency_resolvers import DependencyResolver
|
8
|
+
from parsl.dataflow.taskrecord import TaskRecord
|
9
|
+
from parsl.errors import ConfigurationError
|
8
10
|
from parsl.executors.base import ParslExecutor
|
9
11
|
from parsl.executors.threads import ThreadPoolExecutor
|
10
|
-
from parsl.errors import ConfigurationError
|
11
|
-
from parsl.dataflow.taskrecord import TaskRecord
|
12
12
|
from parsl.monitoring import MonitoringHub
|
13
13
|
from parsl.usage_tracking.api import UsageInformation
|
14
|
+
from parsl.utils import RepresentationMixin
|
14
15
|
|
15
16
|
logger = logging.getLogger(__name__)
|
16
17
|
|
@@ -35,6 +36,8 @@ class Config(RepresentationMixin, UsageInformation):
|
|
35
36
|
checkpoint_period : str, optional
|
36
37
|
Time interval (in "HH:MM:SS") at which to checkpoint completed tasks. Only has an effect if
|
37
38
|
``checkpoint_mode='periodic'``.
|
39
|
+
dependency_resolver: plugin point for custom dependency resolvers. Default: only resolve Futures,
|
40
|
+
using the `SHALLOW_DEPENDENCY_RESOLVER`.
|
38
41
|
garbage_collect : bool. optional.
|
39
42
|
Delete task records from DFK when tasks have completed. Default: True
|
40
43
|
internal_tasks_max_threads : int, optional
|
@@ -88,6 +91,7 @@ class Config(RepresentationMixin, UsageInformation):
|
|
88
91
|
Literal['dfk_exit'],
|
89
92
|
Literal['manual']] = None,
|
90
93
|
checkpoint_period: Optional[str] = None,
|
94
|
+
dependency_resolver: Optional[DependencyResolver] = None,
|
91
95
|
garbage_collect: bool = True,
|
92
96
|
internal_tasks_max_threads: int = 10,
|
93
97
|
retries: int = 0,
|
@@ -123,6 +127,7 @@ class Config(RepresentationMixin, UsageInformation):
|
|
123
127
|
if checkpoint_mode == 'periodic' and checkpoint_period is None:
|
124
128
|
checkpoint_period = "00:30:00"
|
125
129
|
self.checkpoint_period = checkpoint_period
|
130
|
+
self.dependency_resolver = dependency_resolver
|
126
131
|
self.garbage_collect = garbage_collect
|
127
132
|
self.internal_tasks_max_threads = internal_tasks_max_threads
|
128
133
|
self.retries = retries
|
@@ -152,4 +157,5 @@ class Config(RepresentationMixin, UsageInformation):
|
|
152
157
|
', '.join(['label={}'.format(repr(d)) for d in duplicates])))
|
153
158
|
|
154
159
|
def get_usage_information(self):
|
155
|
-
return {"executors_len": len(self.executors)
|
160
|
+
return {"executors_len": len(self.executors),
|
161
|
+
"dependency_resolver": self.dependency_resolver is not None}
|
@@ -1,14 +1,13 @@
|
|
1
1
|
"""Config for Azure"""
|
2
|
-
|
2
|
+
import getpass
|
3
3
|
|
4
|
-
from parsl.
|
5
|
-
from parsl.
|
6
|
-
from parsl.data_provider.http import HTTPInTaskStaging
|
4
|
+
from parsl.addresses import address_by_query
|
5
|
+
from parsl.config import Config
|
7
6
|
from parsl.data_provider.ftp import FTPInTaskStaging
|
7
|
+
from parsl.data_provider.http import HTTPInTaskStaging
|
8
8
|
from parsl.data_provider.rsync import RSyncStaging
|
9
|
-
from parsl.
|
10
|
-
|
11
|
-
import getpass
|
9
|
+
from parsl.executors import HighThroughputExecutor
|
10
|
+
from parsl.providers import AzureProvider
|
12
11
|
|
13
12
|
vm_reference = {
|
14
13
|
# All fields below are required
|
@@ -1,8 +1,9 @@
|
|
1
|
-
from
|
1
|
+
from typing import Any, Dict
|
2
|
+
|
2
3
|
from parsl.channels import SSHChannel
|
3
|
-
from parsl.executors import HighThroughputExecutor
|
4
4
|
from parsl.config import Config
|
5
|
-
from
|
5
|
+
from parsl.executors import HighThroughputExecutor
|
6
|
+
from parsl.providers import AdHocProvider
|
6
7
|
|
7
8
|
user_opts: Dict[str, Dict[str, Any]]
|
8
9
|
user_opts = {'adhoc':
|
@@ -1,9 +1,8 @@
|
|
1
|
-
from parsl.config import Config
|
2
1
|
from parsl.channels import LocalChannel
|
3
|
-
from parsl.
|
2
|
+
from parsl.config import Config
|
4
3
|
from parsl.executors import HighThroughputExecutor
|
5
4
|
from parsl.launchers import SrunLauncher
|
6
|
-
|
5
|
+
from parsl.providers import SlurmProvider
|
7
6
|
|
8
7
|
""" This config assumes that it is used to launch parsl tasks from the login nodes
|
9
8
|
of Frontera at TACC. Each job submitted to the scheduler will request 2 nodes for 10 minutes.
|
@@ -1,8 +1,7 @@
|
|
1
|
+
from parsl.addresses import address_by_route
|
1
2
|
from parsl.config import Config
|
2
3
|
from parsl.executors import HighThroughputExecutor
|
3
4
|
from parsl.providers import KubernetesProvider
|
4
|
-
from parsl.addresses import address_by_route
|
5
|
-
|
6
5
|
|
7
6
|
config = Config(
|
8
7
|
executors=[
|
@@ -1,10 +1,9 @@
|
|
1
|
+
from parsl.addresses import address_by_interface
|
1
2
|
from parsl.config import Config
|
2
|
-
from parsl.providers import SlurmProvider
|
3
|
-
from parsl.launchers import SrunLauncher
|
4
|
-
from parsl.executors import HighThroughputExecutor
|
5
3
|
from parsl.data_provider.globus import GlobusStaging
|
6
|
-
from parsl.
|
7
|
-
|
4
|
+
from parsl.executors import HighThroughputExecutor
|
5
|
+
from parsl.launchers import SrunLauncher
|
6
|
+
from parsl.providers import SlurmProvider
|
8
7
|
|
9
8
|
config = Config(
|
10
9
|
executors=[
|
@@ -1,11 +1,9 @@
|
|
1
|
+
from parsl.addresses import address_by_interface
|
1
2
|
from parsl.config import Config
|
2
3
|
from parsl.executors import HighThroughputExecutor
|
3
|
-
|
4
4
|
from parsl.launchers import JsrunLauncher
|
5
5
|
from parsl.providers import LSFProvider
|
6
6
|
|
7
|
-
from parsl.addresses import address_by_interface
|
8
|
-
|
9
7
|
config = Config(
|
10
8
|
executors=[
|
11
9
|
HighThroughputExecutor(
|
@@ -1,8 +1,8 @@
|
|
1
|
-
from parsl.config import Config
|
2
|
-
from parsl.executors.taskvine import TaskVineExecutor
|
3
|
-
from parsl.executors.taskvine import TaskVineManagerConfig
|
4
1
|
import uuid
|
5
2
|
|
3
|
+
from parsl.config import Config
|
4
|
+
from parsl.executors.taskvine import TaskVineExecutor, TaskVineManagerConfig
|
5
|
+
|
6
6
|
config = Config(
|
7
7
|
executors=[
|
8
8
|
TaskVineExecutor(
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import logging
|
2
2
|
from concurrent.futures import Future
|
3
|
-
from typing import Any, Callable, List, Optional
|
3
|
+
from typing import TYPE_CHECKING, Any, Callable, List, Optional
|
4
4
|
|
5
5
|
from parsl.app.futures import DataFuture
|
6
|
-
from parsl.data_provider.files import File
|
7
6
|
from parsl.data_provider.file_noop import NoOpFileStaging
|
7
|
+
from parsl.data_provider.files import File
|
8
8
|
from parsl.data_provider.ftp import FTPSeparateTaskStaging
|
9
9
|
from parsl.data_provider.http import HTTPSeparateTaskStaging
|
10
|
-
from parsl.data_provider.zip import ZipFileStaging
|
11
10
|
from parsl.data_provider.staging import Staging
|
11
|
+
from parsl.data_provider.zip import ZipFileStaging
|
12
12
|
|
13
13
|
if TYPE_CHECKING:
|
14
14
|
from parsl.dataflow.dflow import DataFlowKernel
|
@@ -1,15 +1,16 @@
|
|
1
|
-
import logging
|
2
1
|
import json
|
3
|
-
import
|
2
|
+
import logging
|
4
3
|
import os
|
5
|
-
import parsl
|
6
|
-
import typeguard
|
7
|
-
|
8
4
|
from functools import partial
|
9
5
|
from typing import Optional
|
6
|
+
|
7
|
+
import globus_sdk
|
8
|
+
import typeguard
|
9
|
+
|
10
|
+
import parsl
|
10
11
|
from parsl.app.app import python_app
|
11
|
-
from parsl.utils import RepresentationMixin
|
12
12
|
from parsl.data_provider.staging import Staging
|
13
|
+
from parsl.utils import RepresentationMixin
|
13
14
|
|
14
15
|
logger = logging.getLogger(__name__)
|
15
16
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
from concurrent.futures import Future
|
2
|
-
from typing import
|
2
|
+
from typing import TYPE_CHECKING, Callable, Optional
|
3
|
+
|
3
4
|
from parsl.app.futures import DataFuture
|
4
5
|
from parsl.data_provider.files import File
|
5
6
|
|
6
|
-
from typing import TYPE_CHECKING
|
7
7
|
if TYPE_CHECKING:
|
8
8
|
from parsl.data_provider.data_manager import DataManager
|
9
9
|
|
@@ -1,16 +1,15 @@
|
|
1
|
-
import filelock
|
2
1
|
import logging
|
3
2
|
import os
|
4
|
-
import parsl
|
5
3
|
import zipfile
|
6
|
-
|
7
4
|
from typing import Tuple
|
8
5
|
|
9
|
-
|
6
|
+
import filelock
|
7
|
+
|
8
|
+
import parsl
|
10
9
|
from parsl.data_provider.files import File
|
10
|
+
from parsl.data_provider.staging import Staging
|
11
11
|
from parsl.errors import ParslError
|
12
12
|
|
13
|
-
|
14
13
|
logger = logging.getLogger(__name__)
|
15
14
|
|
16
15
|
|
@@ -0,0 +1,115 @@
|
|
1
|
+
from concurrent.futures import Future
|
2
|
+
from dataclasses import dataclass
|
3
|
+
from functools import singledispatch
|
4
|
+
from typing import Callable, Sequence
|
5
|
+
|
6
|
+
|
7
|
+
@dataclass
|
8
|
+
class DependencyResolver:
|
9
|
+
"""A DependencyResolver describes how app dependencies can be resolved.
|
10
|
+
It is specified as two functions: `traverse_to_gather` which turns an
|
11
|
+
app parameter into a sequence of futures which must be waited for before
|
12
|
+
the task can be executed (for example, in the case of
|
13
|
+
`DEEP_DEPENDENCY_RESOLVER` this traverses structures such as lists to
|
14
|
+
find every contained ``Future``), and `traverse_to_unwrap` which turns an
|
15
|
+
app parameter into its value to be passed to the app on execution
|
16
|
+
(for example in the case of `DEEP_DEPENDENCY_RESOLVER` this replaces a
|
17
|
+
list containing futures with a new list containing the values of those
|
18
|
+
resolved futures).
|
19
|
+
|
20
|
+
By default, Parsl will use `SHALLOW_DEPENDENCY_RESOLVER` which only
|
21
|
+
resolves Futures passed directly as arguments.
|
22
|
+
"""
|
23
|
+
traverse_to_gather: Callable[[object], Sequence[Future]]
|
24
|
+
traverse_to_unwrap: Callable[[object], object]
|
25
|
+
|
26
|
+
|
27
|
+
@singledispatch
|
28
|
+
def shallow_traverse_to_gather(o):
|
29
|
+
# objects in general do not expose futures that we can see
|
30
|
+
return []
|
31
|
+
|
32
|
+
|
33
|
+
@singledispatch
|
34
|
+
def shallow_traverse_to_unwrap(o):
|
35
|
+
# objects in general unwrap to themselves
|
36
|
+
return o
|
37
|
+
|
38
|
+
|
39
|
+
@shallow_traverse_to_gather.register
|
40
|
+
def _(fut: Future):
|
41
|
+
return [fut]
|
42
|
+
|
43
|
+
|
44
|
+
@shallow_traverse_to_unwrap.register
|
45
|
+
@singledispatch
|
46
|
+
def _(fut: Future):
|
47
|
+
assert fut.done()
|
48
|
+
return fut.result()
|
49
|
+
|
50
|
+
|
51
|
+
@singledispatch
|
52
|
+
def deep_traverse_to_gather(o):
|
53
|
+
# objects in general do not expose futures that we can see
|
54
|
+
return []
|
55
|
+
|
56
|
+
|
57
|
+
@singledispatch
|
58
|
+
def deep_traverse_to_unwrap(o):
|
59
|
+
# objects in general unwrap to themselves
|
60
|
+
return o
|
61
|
+
|
62
|
+
|
63
|
+
@deep_traverse_to_gather.register
|
64
|
+
def _(fut: Future):
|
65
|
+
return [fut]
|
66
|
+
|
67
|
+
|
68
|
+
@deep_traverse_to_unwrap.register
|
69
|
+
@singledispatch
|
70
|
+
def _(fut: Future):
|
71
|
+
assert fut.done()
|
72
|
+
return fut.result()
|
73
|
+
|
74
|
+
|
75
|
+
@deep_traverse_to_gather.register(tuple)
|
76
|
+
@deep_traverse_to_gather.register(list)
|
77
|
+
@deep_traverse_to_gather.register(set)
|
78
|
+
def _(iterable):
|
79
|
+
return [e for v in iterable for e in deep_traverse_to_gather(v)]
|
80
|
+
|
81
|
+
|
82
|
+
@deep_traverse_to_unwrap.register(tuple)
|
83
|
+
@deep_traverse_to_unwrap.register(list)
|
84
|
+
@deep_traverse_to_unwrap.register(set)
|
85
|
+
@singledispatch
|
86
|
+
def _(iterable):
|
87
|
+
|
88
|
+
type_ = type(iterable)
|
89
|
+
return type_(map(deep_traverse_to_unwrap, iterable))
|
90
|
+
|
91
|
+
|
92
|
+
@deep_traverse_to_gather.register(dict)
|
93
|
+
def _(dictionary):
|
94
|
+
futures = []
|
95
|
+
for key, value in dictionary.items():
|
96
|
+
futures.extend(deep_traverse_to_gather(key))
|
97
|
+
futures.extend(deep_traverse_to_gather(value))
|
98
|
+
return futures
|
99
|
+
|
100
|
+
|
101
|
+
@deep_traverse_to_unwrap.register(dict)
|
102
|
+
def _(dictionary):
|
103
|
+
unwrapped_dict = {}
|
104
|
+
for key, value in dictionary.items():
|
105
|
+
key = deep_traverse_to_unwrap(key)
|
106
|
+
value = deep_traverse_to_unwrap(value)
|
107
|
+
unwrapped_dict[key] = value
|
108
|
+
return unwrapped_dict
|
109
|
+
|
110
|
+
|
111
|
+
DEEP_DEPENDENCY_RESOLVER = DependencyResolver(traverse_to_gather=deep_traverse_to_gather,
|
112
|
+
traverse_to_unwrap=deep_traverse_to_unwrap)
|
113
|
+
|
114
|
+
SHALLOW_DEPENDENCY_RESOLVER = DependencyResolver(traverse_to_gather=shallow_traverse_to_gather,
|
115
|
+
traverse_to_unwrap=shallow_traverse_to_unwrap)
|