parsl 2024.5.27__py3-none-any.whl → 2024.6.3__py3-none-any.whl
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/__init__.py +9 -10
- parsl/addresses.py +6 -4
- parsl/app/app.py +3 -6
- parsl/app/bash.py +4 -4
- parsl/app/errors.py +5 -3
- parsl/app/futures.py +3 -3
- parsl/app/python.py +2 -1
- parsl/benchmark/perf.py +2 -1
- parsl/channels/__init__.py +2 -2
- parsl/channels/base.py +0 -1
- parsl/channels/errors.py +2 -1
- parsl/channels/oauth_ssh/oauth_ssh.py +4 -3
- parsl/channels/ssh/ssh.py +9 -1
- parsl/channels/ssh_il/ssh_il.py +1 -0
- parsl/concurrent/__init__.py +2 -2
- parsl/config.py +5 -5
- parsl/configs/ASPIRE1.py +3 -3
- parsl/configs/Azure.py +6 -7
- parsl/configs/ad_hoc.py +4 -3
- parsl/configs/bridges.py +3 -3
- parsl/configs/cc_in2p3.py +2 -2
- parsl/configs/ec2.py +1 -1
- parsl/configs/expanse.py +1 -2
- parsl/configs/frontera.py +2 -3
- parsl/configs/htex_local.py +1 -2
- parsl/configs/illinoiscluster.py +1 -1
- parsl/configs/kubernetes.py +1 -2
- parsl/configs/midway.py +3 -3
- parsl/configs/osg.py +1 -1
- parsl/configs/polaris.py +1 -1
- parsl/configs/stampede2.py +4 -5
- parsl/configs/summit.py +1 -3
- parsl/configs/toss3_llnl.py +1 -2
- parsl/configs/vineex_local.py +3 -3
- parsl/configs/wqex_local.py +2 -2
- parsl/data_provider/data_manager.py +3 -3
- parsl/data_provider/file_noop.py +1 -2
- parsl/data_provider/files.py +3 -3
- parsl/data_provider/ftp.py +1 -3
- parsl/data_provider/globus.py +7 -6
- parsl/data_provider/http.py +2 -2
- parsl/data_provider/rsync.py +1 -1
- parsl/data_provider/staging.py +2 -2
- parsl/data_provider/zip.py +4 -5
- parsl/dataflow/dflow.py +21 -16
- parsl/dataflow/errors.py +2 -1
- parsl/dataflow/futures.py +1 -2
- parsl/dataflow/memoization.py +5 -5
- parsl/dataflow/rundirs.py +1 -1
- parsl/dataflow/taskrecord.py +4 -5
- parsl/executors/__init__.py +3 -3
- parsl/executors/base.py +1 -0
- parsl/executors/flux/execute_parsl_task.py +2 -2
- parsl/executors/flux/executor.py +11 -12
- parsl/executors/flux/flux_instance_manager.py +3 -3
- parsl/executors/high_throughput/executor.py +29 -35
- parsl/executors/high_throughput/interchange.py +16 -18
- parsl/executors/high_throughput/manager_record.py +1 -0
- parsl/executors/high_throughput/monitoring_info.py +2 -1
- parsl/executors/high_throughput/mpi_executor.py +5 -2
- parsl/executors/high_throughput/mpi_prefix_composer.py +1 -1
- parsl/executors/high_throughput/mpi_resource_management.py +1 -2
- parsl/executors/high_throughput/probe.py +6 -4
- parsl/executors/high_throughput/process_worker_pool.py +31 -20
- parsl/executors/high_throughput/zmq_pipes.py +28 -14
- parsl/executors/radical/executor.py +15 -15
- parsl/executors/radical/rpex_master.py +1 -2
- parsl/executors/radical/rpex_resources.py +1 -2
- parsl/executors/radical/rpex_worker.py +2 -1
- parsl/executors/status_handling.py +5 -4
- parsl/executors/taskvine/__init__.py +1 -1
- parsl/executors/taskvine/errors.py +1 -1
- parsl/executors/taskvine/exec_parsl_function.py +2 -2
- parsl/executors/taskvine/executor.py +23 -24
- parsl/executors/taskvine/factory.py +1 -1
- parsl/executors/taskvine/manager.py +11 -13
- parsl/executors/threads.py +4 -5
- parsl/executors/workqueue/errors.py +1 -1
- parsl/executors/workqueue/exec_parsl_function.py +5 -4
- parsl/executors/workqueue/executor.py +26 -27
- parsl/executors/workqueue/parsl_coprocess.py +1 -1
- parsl/jobs/error_handlers.py +1 -1
- parsl/jobs/job_status_poller.py +2 -5
- parsl/jobs/states.py +1 -1
- parsl/jobs/strategy.py +2 -2
- parsl/launchers/__init__.py +12 -3
- parsl/launchers/errors.py +1 -1
- parsl/log_utils.py +1 -2
- parsl/monitoring/db_manager.py +16 -10
- parsl/monitoring/monitoring.py +11 -15
- parsl/monitoring/queries/pandas.py +1 -2
- parsl/monitoring/radios.py +2 -4
- parsl/monitoring/remote.py +13 -8
- parsl/monitoring/router.py +8 -11
- parsl/monitoring/types.py +2 -0
- parsl/monitoring/visualization/app.py +4 -2
- parsl/monitoring/visualization/models.py +0 -1
- parsl/monitoring/visualization/plots/default/workflow_plots.py +8 -4
- parsl/monitoring/visualization/plots/default/workflow_resource_plots.py +1 -0
- parsl/monitoring/visualization/utils.py +0 -1
- parsl/monitoring/visualization/views.py +16 -9
- parsl/multiprocessing.py +0 -1
- parsl/process_loggers.py +1 -2
- parsl/providers/__init__.py +9 -12
- parsl/providers/ad_hoc/ad_hoc.py +1 -1
- parsl/providers/aws/aws.py +2 -3
- parsl/providers/azure/azure.py +4 -5
- parsl/providers/base.py +1 -1
- parsl/providers/cluster_provider.py +1 -1
- parsl/providers/cobalt/cobalt.py +3 -3
- parsl/providers/condor/condor.py +4 -2
- parsl/providers/errors.py +2 -2
- parsl/providers/googlecloud/googlecloud.py +2 -1
- parsl/providers/grid_engine/grid_engine.py +2 -2
- parsl/providers/kubernetes/kube.py +5 -3
- parsl/providers/local/local.py +5 -1
- parsl/providers/lsf/lsf.py +2 -2
- parsl/providers/pbspro/pbspro.py +1 -1
- parsl/providers/slurm/slurm.py +5 -5
- parsl/providers/torque/torque.py +1 -1
- parsl/serialize/__init__.py +8 -3
- parsl/serialize/base.py +1 -2
- parsl/serialize/concretes.py +5 -4
- parsl/serialize/proxystore.py +3 -2
- parsl/tests/__init__.py +1 -1
- parsl/tests/configs/ad_hoc_cluster_htex.py +4 -4
- parsl/tests/configs/azure_single_node.py +4 -5
- parsl/tests/configs/bridges.py +3 -2
- parsl/tests/configs/cc_in2p3.py +2 -2
- parsl/tests/configs/comet.py +2 -1
- parsl/tests/configs/ec2_single_node.py +1 -2
- parsl/tests/configs/ec2_spot.py +1 -2
- parsl/tests/configs/frontera.py +3 -2
- parsl/tests/configs/htex_ad_hoc_cluster.py +2 -4
- parsl/tests/configs/htex_local.py +2 -3
- parsl/tests/configs/htex_local_alternate.py +8 -11
- parsl/tests/configs/htex_local_intask_staging.py +5 -7
- parsl/tests/configs/htex_local_rsync_staging.py +4 -6
- parsl/tests/configs/local_adhoc.py +1 -1
- parsl/tests/configs/local_radical.py +1 -3
- parsl/tests/configs/local_radical_mpi.py +2 -2
- parsl/tests/configs/midway.py +2 -2
- parsl/tests/configs/nscc_singapore.py +3 -3
- parsl/tests/configs/osg_htex.py +1 -1
- parsl/tests/configs/petrelkube.py +3 -2
- parsl/tests/configs/summit.py +1 -0
- parsl/tests/configs/swan_htex.py +2 -2
- parsl/tests/configs/taskvine_ex.py +3 -5
- parsl/tests/configs/theta.py +2 -2
- parsl/tests/configs/workqueue_ex.py +3 -4
- parsl/tests/conftest.py +4 -4
- parsl/tests/integration/test_channels/test_ssh_errors.py +1 -1
- parsl/tests/integration/test_stress/test_python_simple.py +3 -4
- parsl/tests/integration/test_stress/test_python_threads.py +3 -5
- parsl/tests/manual_tests/htex_local.py +4 -4
- parsl/tests/manual_tests/test_ad_hoc_htex.py +2 -1
- parsl/tests/manual_tests/test_basic.py +1 -0
- parsl/tests/manual_tests/test_fan_in_out_htex_remote.py +4 -4
- parsl/tests/manual_tests/test_log_filter.py +3 -1
- parsl/tests/manual_tests/test_memory_limits.py +6 -6
- parsl/tests/manual_tests/test_regression_220.py +2 -1
- parsl/tests/manual_tests/test_udp_simple.py +4 -3
- parsl/tests/manual_tests/test_worker_count.py +3 -2
- parsl/tests/scaling_tests/htex_local.py +2 -2
- parsl/tests/scaling_tests/test_scale.py +0 -9
- parsl/tests/scaling_tests/vineex_condor.py +1 -2
- parsl/tests/scaling_tests/vineex_local.py +1 -2
- parsl/tests/site_tests/test_provider.py +3 -1
- parsl/tests/site_tests/test_site.py +2 -0
- parsl/tests/sites/test_affinity.py +7 -5
- parsl/tests/sites/test_dynamic_executor.py +3 -3
- parsl/tests/sites/test_ec2.py +3 -2
- parsl/tests/sites/test_local_adhoc.py +2 -1
- parsl/tests/sites/test_worker_info.py +4 -3
- parsl/tests/test_aalst_patterns.py +0 -1
- parsl/tests/test_bash_apps/test_apptimeout.py +2 -2
- parsl/tests/test_bash_apps/test_error_codes.py +1 -4
- parsl/tests/test_bash_apps/test_memoize_ignore_args.py +1 -0
- parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py +2 -2
- parsl/tests/test_bash_apps/test_pipeline.py +1 -1
- parsl/tests/test_bash_apps/test_std_uri.py +4 -3
- parsl/tests/test_callables.py +2 -2
- parsl/tests/test_checkpointing/test_python_checkpoint_1.py +1 -0
- parsl/tests/test_checkpointing/test_python_checkpoint_2.py +2 -1
- parsl/tests/test_checkpointing/test_regression_239.py +1 -1
- parsl/tests/test_checkpointing/test_task_exit.py +1 -1
- parsl/tests/test_docs/test_from_slides.py +2 -2
- parsl/tests/test_docs/test_kwargs.py +1 -1
- parsl/tests/test_docs/test_tutorial_1.py +1 -2
- parsl/tests/test_docs/test_workflow1.py +2 -2
- parsl/tests/test_docs/test_workflow2.py +0 -1
- parsl/tests/test_error_handling/test_rand_fail.py +2 -2
- parsl/tests/test_error_handling/test_resource_spec.py +4 -2
- parsl/tests/test_error_handling/test_retries.py +2 -1
- parsl/tests/test_error_handling/test_retry_handler.py +1 -0
- parsl/tests/test_error_handling/test_retry_handler_failure.py +2 -1
- parsl/tests/test_error_handling/test_serialization_fail.py +1 -1
- parsl/tests/test_error_handling/test_wrap_with_logs.py +1 -0
- parsl/tests/test_flux.py +1 -1
- parsl/tests/test_htex/test_command_client_timeout.py +9 -12
- parsl/tests/test_htex/test_connected_blocks.py +3 -2
- parsl/tests/test_htex/test_cpu_affinity_explicit.py +5 -2
- parsl/tests/test_htex/test_disconnected_blocks.py +6 -4
- parsl/tests/test_htex/test_drain.py +5 -5
- parsl/tests/test_htex/test_htex.py +1 -2
- parsl/tests/test_htex/test_managers_command.py +3 -2
- parsl/tests/test_htex/test_multiple_disconnected_blocks.py +6 -4
- parsl/tests/test_monitoring/test_app_names.py +3 -2
- parsl/tests/test_monitoring/test_basic.py +4 -4
- parsl/tests/test_monitoring/test_db_locks.py +6 -3
- parsl/tests/test_monitoring/test_fuzz_zmq.py +6 -3
- parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py +5 -5
- parsl/tests/test_monitoring/test_incomplete_futures.py +5 -3
- parsl/tests/test_monitoring/test_memoization_representation.py +4 -1
- parsl/tests/test_monitoring/test_stdouterr.py +4 -4
- parsl/tests/test_monitoring/test_viz_colouring.py +1 -0
- parsl/tests/test_mpi_apps/test_bad_mpi_config.py +1 -1
- parsl/tests/test_mpi_apps/test_mpi_mode_disabled.py +2 -0
- parsl/tests/test_mpi_apps/test_mpi_mode_enabled.py +7 -5
- parsl/tests/test_mpi_apps/test_mpi_prefix.py +4 -4
- parsl/tests/test_mpi_apps/test_mpi_scheduler.py +7 -2
- parsl/tests/test_mpi_apps/test_mpiex.py +4 -3
- parsl/tests/test_mpi_apps/test_resource_spec.py +9 -10
- parsl/tests/test_providers/test_cobalt_deprecation_warning.py +2 -0
- parsl/tests/test_providers/test_local_provider.py +2 -1
- parsl/tests/test_providers/test_pbspro_template.py +1 -1
- parsl/tests/test_providers/test_slurm_template.py +1 -1
- parsl/tests/test_providers/test_submiterror_deprecation.py +2 -1
- parsl/tests/test_python_apps/test_context_manager.py +4 -3
- parsl/tests/test_python_apps/test_dep_standard_futures.py +2 -1
- parsl/tests/test_python_apps/test_futures.py +2 -1
- parsl/tests/test_python_apps/test_join.py +0 -1
- parsl/tests/test_python_apps/test_lifted.py +3 -3
- parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py +1 -0
- parsl/tests/test_python_apps/test_pluggable_future_resolution.py +1 -1
- parsl/tests/test_radical/test_mpi_funcs.py +1 -1
- parsl/tests/test_regression/test_1480.py +2 -1
- parsl/tests/test_regression/test_1653.py +2 -1
- parsl/tests/test_regression/test_2652.py +1 -0
- parsl/tests/test_regression/test_69a.py +0 -1
- parsl/tests/test_regression/test_854.py +4 -2
- parsl/tests/test_regression/test_97_parallelism_0.py +1 -2
- parsl/tests/test_regression/test_98.py +0 -1
- parsl/tests/test_scaling/test_block_error_handler.py +9 -4
- parsl/tests/test_scaling/test_scale_down.py +2 -3
- parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py +4 -5
- parsl/tests/test_scaling/test_scale_down_htex_unregistered.py +3 -4
- parsl/tests/test_scaling/test_shutdown_scalein.py +1 -2
- parsl/tests/test_serialization/test_2555_caching_deserializer.py +1 -1
- parsl/tests/test_serialization/test_basic.py +2 -1
- parsl/tests/test_serialization/test_htex_code_cache.py +3 -4
- parsl/tests/test_serialization/test_pack_resource_spec.py +2 -1
- parsl/tests/test_serialization/test_proxystore_configured.py +10 -5
- parsl/tests/test_serialization/test_proxystore_impl.py +5 -3
- parsl/tests/test_shutdown/test_kill_monitoring.py +3 -2
- parsl/tests/test_staging/staging_provider.py +2 -2
- parsl/tests/test_staging/test_1316.py +3 -2
- parsl/tests/test_staging/test_docs_1.py +1 -1
- parsl/tests/test_staging/test_docs_2.py +2 -1
- parsl/tests/test_staging/test_elaborate_noop_file.py +2 -2
- parsl/tests/test_staging/test_staging_https.py +2 -2
- parsl/tests/test_staging/test_staging_stdout.py +4 -3
- parsl/tests/test_staging/test_zip_in.py +6 -8
- parsl/tests/test_staging/test_zip_out.py +7 -9
- parsl/tests/test_staging/test_zip_to_zip.py +6 -8
- parsl/tests/test_summary.py +2 -1
- parsl/tests/test_thread_parallelism.py +0 -1
- parsl/tests/test_threads/test_configs.py +1 -1
- parsl/tests/test_threads/test_lazy_errors.py +2 -1
- parsl/usage_tracking/api.py +2 -3
- parsl/usage_tracking/usage.py +8 -18
- parsl/utils.py +13 -2
- parsl/version.py +1 -1
- {parsl-2024.5.27.data → parsl-2024.6.3.data}/scripts/exec_parsl_function.py +5 -4
- {parsl-2024.5.27.data → parsl-2024.6.3.data}/scripts/process_worker_pool.py +31 -20
- {parsl-2024.5.27.dist-info → parsl-2024.6.3.dist-info}/METADATA +2 -2
- parsl-2024.6.3.dist-info/RECORD +471 -0
- parsl-2024.5.27.dist-info/RECORD +0 -471
- {parsl-2024.5.27.data → parsl-2024.6.3.data}/scripts/parsl_coprocess.py +1 -1
- {parsl-2024.5.27.dist-info → parsl-2024.6.3.dist-info}/LICENSE +0 -0
- {parsl-2024.5.27.dist-info → parsl-2024.6.3.dist-info}/WHEEL +0 -0
- {parsl-2024.5.27.dist-info → parsl-2024.6.3.dist-info}/entry_points.txt +0 -0
- {parsl-2024.5.27.dist-info → parsl-2024.6.3.dist-info}/top_level.txt +0 -0
parsl/__init__.py
CHANGED
@@ -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
|
|
parsl/addresses.py
CHANGED
@@ -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
|
|
parsl/app/app.py
CHANGED
@@ -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
|
|
parsl/app/bash.py
CHANGED
@@ -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
|
|
parsl/app/errors.py
CHANGED
@@ -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)
|
parsl/app/futures.py
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
"""This module implements DataFutures.
|
2
2
|
"""
|
3
3
|
import logging
|
4
|
-
import typeguard
|
5
4
|
from concurrent.futures import Future
|
5
|
+
from typing import Optional
|
6
6
|
|
7
|
-
|
7
|
+
import typeguard
|
8
8
|
|
9
|
-
from
|
9
|
+
from parsl.data_provider.files import File
|
10
10
|
|
11
11
|
logger = logging.getLogger(__name__)
|
12
12
|
|
parsl/app/python.py
CHANGED
@@ -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):
|
parsl/benchmark/perf.py
CHANGED
parsl/channels/__init__.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
from parsl.channels.base import Channel
|
2
|
-
from parsl.channels.ssh.ssh import SSHChannel
|
3
2
|
from parsl.channels.local.local import LocalChannel
|
4
|
-
from parsl.channels.ssh_il.ssh_il import SSHInteractiveLoginChannel
|
5
3
|
from parsl.channels.oauth_ssh.oauth_ssh import OAuthSSHChannel
|
4
|
+
from parsl.channels.ssh.ssh import SSHChannel
|
5
|
+
from parsl.channels.ssh_il.ssh_il import SSHInteractiveLoginChannel
|
6
6
|
|
7
7
|
__all__ = ['Channel', 'SSHChannel', 'LocalChannel', 'SSHInteractiveLoginChannel', 'OAuthSSHChannel']
|
parsl/channels/base.py
CHANGED
parsl/channels/errors.py
CHANGED
@@ -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
|
parsl/channels/ssh/ssh.py
CHANGED
@@ -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__)
|
parsl/channels/ssh_il/ssh_il.py
CHANGED
parsl/concurrent/__init__.py
CHANGED
@@ -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
|
parsl/config.py
CHANGED
@@ -1,17 +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.utils import RepresentationMixin
|
8
7
|
from parsl.dataflow.dependency_resolvers import DependencyResolver
|
8
|
+
from parsl.dataflow.taskrecord import TaskRecord
|
9
|
+
from parsl.errors import ConfigurationError
|
9
10
|
from parsl.executors.base import ParslExecutor
|
10
11
|
from parsl.executors.threads import ThreadPoolExecutor
|
11
|
-
from parsl.errors import ConfigurationError
|
12
|
-
from parsl.dataflow.taskrecord import TaskRecord
|
13
12
|
from parsl.monitoring import MonitoringHub
|
14
13
|
from parsl.usage_tracking.api import UsageInformation
|
14
|
+
from parsl.utils import RepresentationMixin
|
15
15
|
|
16
16
|
logger = logging.getLogger(__name__)
|
17
17
|
|
parsl/configs/ASPIRE1.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
from parsl.
|
2
|
-
from parsl.launchers import MpiRunLauncher
|
1
|
+
from parsl.addresses import address_by_interface
|
3
2
|
from parsl.config import Config
|
4
3
|
from parsl.executors import HighThroughputExecutor
|
5
|
-
from parsl.
|
4
|
+
from parsl.launchers import MpiRunLauncher
|
6
5
|
from parsl.monitoring.monitoring import MonitoringHub
|
6
|
+
from parsl.providers import PBSProProvider
|
7
7
|
|
8
8
|
config = Config(
|
9
9
|
executors=[
|
parsl/configs/Azure.py
CHANGED
@@ -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
|
parsl/configs/ad_hoc.py
CHANGED
@@ -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':
|
parsl/configs/bridges.py
CHANGED
@@ -1,8 +1,8 @@
|
|
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
3
|
from parsl.executors import HighThroughputExecutor
|
5
|
-
from parsl.
|
4
|
+
from parsl.launchers import SrunLauncher
|
5
|
+
from parsl.providers import SlurmProvider
|
6
6
|
|
7
7
|
""" This config assumes that it is used to launch parsl tasks from the login nodes
|
8
8
|
of Bridges at PSC. Each job submitted to the scheduler will request 2 nodes for 10 minutes.
|
parsl/configs/cc_in2p3.py
CHANGED
@@ -1,7 +1,7 @@
|
|
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
|
4
|
+
from parsl.providers import GridEngineProvider
|
5
5
|
|
6
6
|
config = Config(
|
7
7
|
executors=[
|
parsl/configs/ec2.py
CHANGED
parsl/configs/expanse.py
CHANGED
parsl/configs/frontera.py
CHANGED
@@ -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.
|
parsl/configs/htex_local.py
CHANGED
parsl/configs/illinoiscluster.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
from parsl.config import Config
|
2
|
-
from parsl.providers import SlurmProvider
|
3
2
|
from parsl.executors import HighThroughputExecutor
|
4
3
|
from parsl.launchers import SrunLauncher
|
4
|
+
from parsl.providers import SlurmProvider
|
5
5
|
|
6
6
|
""" This config assumes that it is used to launch parsl tasks from the login nodes
|
7
7
|
of the Campus Cluster at UIUC. Each job submitted to the scheduler will request 2 nodes for 10 minutes.
|
parsl/configs/kubernetes.py
CHANGED
@@ -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=[
|
parsl/configs/midway.py
CHANGED
@@ -1,8 +1,8 @@
|
|
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
3
|
from parsl.executors import HighThroughputExecutor
|
5
|
-
from parsl.
|
4
|
+
from parsl.launchers import SrunLauncher
|
5
|
+
from parsl.providers import SlurmProvider
|
6
6
|
|
7
7
|
config = Config(
|
8
8
|
executors=[
|
parsl/configs/osg.py
CHANGED
parsl/configs/polaris.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
from parsl.addresses import address_by_interface
|
2
|
+
from parsl.config import Config
|
2
3
|
from parsl.executors import HighThroughputExecutor
|
3
4
|
from parsl.launchers import MpiExecLauncher
|
4
5
|
from parsl.providers import PBSProProvider
|
5
|
-
from parsl.config import Config
|
6
6
|
|
7
7
|
# There are three user parameters to change for the PBSProProvider:
|
8
8
|
# YOUR_ACCOUNT: Account to charge usage
|
parsl/configs/stampede2.py
CHANGED
@@ -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=[
|
parsl/configs/summit.py
CHANGED
@@ -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(
|
parsl/configs/toss3_llnl.py
CHANGED
parsl/configs/vineex_local.py
CHANGED
@@ -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(
|
parsl/configs/wqex_local.py
CHANGED
@@ -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
|
parsl/data_provider/file_noop.py
CHANGED
parsl/data_provider/files.py
CHANGED
@@ -5,13 +5,13 @@ to transfer the file as well as to give the appropriate filepath depending
|
|
5
5
|
on where (client-side, remote-side, intermediary-side) the File.filepath is
|
6
6
|
being called from.
|
7
7
|
"""
|
8
|
-
import os
|
9
|
-
|
10
|
-
import typeguard
|
11
8
|
import logging
|
9
|
+
import os
|
12
10
|
from typing import Optional, Union
|
13
11
|
from urllib.parse import urlparse
|
14
12
|
|
13
|
+
import typeguard
|
14
|
+
|
15
15
|
logger = logging.getLogger(__name__)
|
16
16
|
|
17
17
|
|
parsl/data_provider/ftp.py
CHANGED
parsl/data_provider/globus.py
CHANGED
@@ -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
|
|
parsl/data_provider/http.py
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
import logging
|
2
2
|
import os
|
3
|
+
|
3
4
|
import requests
|
4
5
|
|
5
6
|
import parsl
|
6
|
-
|
7
|
-
from parsl.utils import RepresentationMixin
|
8
7
|
from parsl.data_provider.staging import Staging
|
8
|
+
from parsl.utils import RepresentationMixin
|
9
9
|
|
10
10
|
logger = logging.getLogger(__name__)
|
11
11
|
|
parsl/data_provider/rsync.py
CHANGED
parsl/data_provider/staging.py
CHANGED
@@ -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
|
|