dpdispatcher 0.6.11__py3-none-any.whl → 0.6.12__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.
Potentially problematic release.
This version of dpdispatcher might be problematic. Click here for more details.
- dpdispatcher/_version.py +2 -2
- dpdispatcher/contexts/dp_cloud_server_context.py +3 -1
- dpdispatcher/contexts/lazy_local_context.py +2 -2
- dpdispatcher/contexts/openapi_context.py +6 -4
- dpdispatcher/contexts/ssh_context.py +38 -7
- dpdispatcher/machine.py +1 -1
- dpdispatcher/machines/JH_UniScheduler.py +0 -3
- dpdispatcher/machines/fugaku.py +0 -3
- dpdispatcher/machines/lsf.py +0 -3
- dpdispatcher/machines/openapi.py +3 -3
- dpdispatcher/machines/pbs.py +0 -6
- dpdispatcher/machines/shell.py +0 -3
- dpdispatcher/machines/slurm.py +0 -3
- dpdispatcher/utils/dpcloudserver/client.py +5 -5
- dpdispatcher/utils/utils.py +20 -6
- {dpdispatcher-0.6.11.dist-info → dpdispatcher-0.6.12.dist-info}/METADATA +1 -1
- {dpdispatcher-0.6.11.dist-info → dpdispatcher-0.6.12.dist-info}/RECORD +21 -21
- {dpdispatcher-0.6.11.dist-info → dpdispatcher-0.6.12.dist-info}/WHEEL +0 -0
- {dpdispatcher-0.6.11.dist-info → dpdispatcher-0.6.12.dist-info}/entry_points.txt +0 -0
- {dpdispatcher-0.6.11.dist-info → dpdispatcher-0.6.12.dist-info}/licenses/LICENSE +0 -0
- {dpdispatcher-0.6.11.dist-info → dpdispatcher-0.6.12.dist-info}/top_level.txt +0 -0
dpdispatcher/_version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.6.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 6,
|
|
31
|
+
__version__ = version = '0.6.12'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 6, 12)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -161,7 +161,9 @@ class BohriumContext(BaseContext):
|
|
|
161
161
|
# return oss_task_zip
|
|
162
162
|
# api.upload(self.oss_task_dir, zip_task_file)
|
|
163
163
|
|
|
164
|
-
def download(
|
|
164
|
+
def download(
|
|
165
|
+
self, submission, check_exists=False, mark_failure=True, back_error=False
|
|
166
|
+
):
|
|
165
167
|
jobs = submission.belonging_jobs
|
|
166
168
|
job_hashs = {}
|
|
167
169
|
job_infos = {}
|
|
@@ -83,7 +83,7 @@ class LazyLocalContext(BaseContext):
|
|
|
83
83
|
|
|
84
84
|
def upload(
|
|
85
85
|
self,
|
|
86
|
-
|
|
86
|
+
submission,
|
|
87
87
|
# local_up_files,
|
|
88
88
|
dereference=True,
|
|
89
89
|
):
|
|
@@ -91,7 +91,7 @@ class LazyLocalContext(BaseContext):
|
|
|
91
91
|
|
|
92
92
|
def download(
|
|
93
93
|
self,
|
|
94
|
-
|
|
94
|
+
submission,
|
|
95
95
|
# remote_down_files,
|
|
96
96
|
check_exists=False,
|
|
97
97
|
mark_failure=True,
|
|
@@ -95,11 +95,11 @@ class OpenAPIContext(BaseContext):
|
|
|
95
95
|
raise ValueError(
|
|
96
96
|
"remote_profile must contain 'project_id' or set environment variable 'BOHRIUM_PROJECT_ID'"
|
|
97
97
|
)
|
|
98
|
-
self.client = Bohrium(
|
|
98
|
+
self.client = Bohrium( # type: ignore[reportPossiblyUnboundVariable]
|
|
99
99
|
access_key=access_key, project_id=project_id, app_key=app_key
|
|
100
100
|
)
|
|
101
|
-
self.storage = Tiefblue()
|
|
102
|
-
self.job = Job(client=self.client)
|
|
101
|
+
self.storage = Tiefblue() # type: ignore[reportPossiblyUnboundVariable]
|
|
102
|
+
self.job = Job(client=self.client) # type: ignore[reportPossiblyUnboundVariable]
|
|
103
103
|
self.jgid = None
|
|
104
104
|
os.makedirs(DP_CLOUD_SERVER_HOME_DIR, exist_ok=True)
|
|
105
105
|
|
|
@@ -206,7 +206,9 @@ class OpenAPIContext(BaseContext):
|
|
|
206
206
|
# return oss_task_zip
|
|
207
207
|
# api.upload(self.oss_task_dir, zip_task_file)
|
|
208
208
|
|
|
209
|
-
def download(
|
|
209
|
+
def download(
|
|
210
|
+
self, submission, check_exists=False, mark_failure=True, back_error=False
|
|
211
|
+
):
|
|
210
212
|
jobs = submission.belonging_jobs
|
|
211
213
|
job_hashs = {}
|
|
212
214
|
job_infos = {}
|
|
@@ -45,6 +45,7 @@ class SSHSession:
|
|
|
45
45
|
tar_compress=True,
|
|
46
46
|
look_for_keys=True,
|
|
47
47
|
execute_command=None,
|
|
48
|
+
proxy_command=None,
|
|
48
49
|
):
|
|
49
50
|
self.hostname = hostname
|
|
50
51
|
self.username = username
|
|
@@ -58,6 +59,7 @@ class SSHSession:
|
|
|
58
59
|
self.tar_compress = tar_compress
|
|
59
60
|
self.look_for_keys = look_for_keys
|
|
60
61
|
self.execute_command = execute_command
|
|
62
|
+
self.proxy_command = proxy_command
|
|
61
63
|
self._keyboard_interactive_auth = False
|
|
62
64
|
self._setup_ssh()
|
|
63
65
|
|
|
@@ -142,7 +144,12 @@ class SSHSession:
|
|
|
142
144
|
# transport = self.ssh.get_transport()
|
|
143
145
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
144
146
|
sock.settimeout(self.timeout)
|
|
145
|
-
|
|
147
|
+
|
|
148
|
+
# Use ProxyCommand if configured (either directly or via jump host parameters)
|
|
149
|
+
if self.proxy_command is not None:
|
|
150
|
+
sock = paramiko.ProxyCommand(self.proxy_command)
|
|
151
|
+
else:
|
|
152
|
+
sock.connect((self.hostname, self.port))
|
|
146
153
|
|
|
147
154
|
# Make a Paramiko Transport object using the socket
|
|
148
155
|
ts = paramiko.Transport(sock)
|
|
@@ -340,6 +347,9 @@ class SSHSession:
|
|
|
340
347
|
"enable searching for discoverable private key files in ~/.ssh/"
|
|
341
348
|
)
|
|
342
349
|
doc_execute_command = "execute command after ssh connection is established."
|
|
350
|
+
doc_proxy_command = (
|
|
351
|
+
"ProxyCommand to use for SSH connection through intermediate servers."
|
|
352
|
+
)
|
|
343
353
|
ssh_remote_profile_args = [
|
|
344
354
|
Argument("hostname", str, optional=False, doc=doc_hostname),
|
|
345
355
|
Argument("username", str, optional=False, doc=doc_username),
|
|
@@ -388,6 +398,13 @@ class SSHSession:
|
|
|
388
398
|
default=None,
|
|
389
399
|
doc=doc_execute_command,
|
|
390
400
|
),
|
|
401
|
+
Argument(
|
|
402
|
+
"proxy_command",
|
|
403
|
+
[str, type(None)],
|
|
404
|
+
optional=True,
|
|
405
|
+
default=None,
|
|
406
|
+
doc=doc_proxy_command,
|
|
407
|
+
),
|
|
391
408
|
]
|
|
392
409
|
ssh_remote_profile_format = Argument(
|
|
393
410
|
"ssh_session", dict, ssh_remote_profile_args
|
|
@@ -396,23 +413,37 @@ class SSHSession:
|
|
|
396
413
|
|
|
397
414
|
def put(self, from_f, to_f):
|
|
398
415
|
if self.rsync_available:
|
|
416
|
+
# For rsync, we need to use %h:%p placeholders for target host/port
|
|
417
|
+
proxy_cmd_rsync = None
|
|
418
|
+
if self.proxy_command is not None:
|
|
419
|
+
proxy_cmd_rsync = self.proxy_command.replace(
|
|
420
|
+
f"{self.hostname}:{self.port}", "%h:%p"
|
|
421
|
+
)
|
|
399
422
|
return rsync(
|
|
400
423
|
from_f,
|
|
401
424
|
self.remote + ":" + to_f,
|
|
402
425
|
port=self.port,
|
|
403
426
|
key_filename=self.key_filename,
|
|
404
427
|
timeout=self.timeout,
|
|
428
|
+
proxy_command=proxy_cmd_rsync,
|
|
405
429
|
)
|
|
406
430
|
return self.sftp.put(from_f, to_f)
|
|
407
431
|
|
|
408
432
|
def get(self, from_f, to_f):
|
|
409
433
|
if self.rsync_available:
|
|
434
|
+
# For rsync, we need to use %h:%p placeholders for target host/port
|
|
435
|
+
proxy_cmd_rsync = None
|
|
436
|
+
if self.proxy_command is not None:
|
|
437
|
+
proxy_cmd_rsync = self.proxy_command.replace(
|
|
438
|
+
f"{self.hostname}:{self.port}", "%h:%p"
|
|
439
|
+
)
|
|
410
440
|
return rsync(
|
|
411
441
|
self.remote + ":" + from_f,
|
|
412
442
|
to_f,
|
|
413
443
|
port=self.port,
|
|
414
444
|
key_filename=self.key_filename,
|
|
415
445
|
timeout=self.timeout,
|
|
446
|
+
proxy_command=proxy_cmd_rsync,
|
|
416
447
|
)
|
|
417
448
|
return self.sftp.get(from_f, to_f)
|
|
418
449
|
|
|
@@ -825,8 +856,8 @@ class SSHContext(BaseContext):
|
|
|
825
856
|
# print(pid)
|
|
826
857
|
return {"stdin": stdin, "stdout": stdout, "stderr": stderr}
|
|
827
858
|
|
|
828
|
-
def check_finish(self,
|
|
829
|
-
return
|
|
859
|
+
def check_finish(self, proc):
|
|
860
|
+
return proc["stdout"].channel.exit_status_ready()
|
|
830
861
|
|
|
831
862
|
def get_return(self, cmd_pipes):
|
|
832
863
|
if not self.check_finish(cmd_pipes):
|
|
@@ -888,11 +919,11 @@ class SSHContext(BaseContext):
|
|
|
888
919
|
# local tar
|
|
889
920
|
if os.path.isfile(os.path.join(self.local_root, of)):
|
|
890
921
|
os.remove(os.path.join(self.local_root, of))
|
|
891
|
-
with tarfile.open(
|
|
922
|
+
with tarfile.open( # type: ignore[reportCallIssue, reportArgumentType]
|
|
892
923
|
os.path.join(self.local_root, of),
|
|
893
|
-
tarfile_mode,
|
|
894
|
-
dereference=dereference,
|
|
895
|
-
**kwargs,
|
|
924
|
+
mode=tarfile_mode, # type: ignore[reportArgumentType]
|
|
925
|
+
dereference=dereference, # type: ignore[reportArgumentType]
|
|
926
|
+
**kwargs, # type: ignore[reportArgumentType]
|
|
896
927
|
) as tar:
|
|
897
928
|
# avoid compressing duplicated files or directories
|
|
898
929
|
for ii in set(files):
|
dpdispatcher/machine.py
CHANGED
|
@@ -227,7 +227,7 @@ class Machine(metaclass=ABCMeta):
|
|
|
227
227
|
return if_recover
|
|
228
228
|
|
|
229
229
|
@abstractmethod
|
|
230
|
-
def check_finish_tag(self,
|
|
230
|
+
def check_finish_tag(self, job):
|
|
231
231
|
raise NotImplementedError(
|
|
232
232
|
"abstract method check_finish_tag should be implemented by derived class"
|
|
233
233
|
)
|
dpdispatcher/machines/fugaku.py
CHANGED
dpdispatcher/machines/lsf.py
CHANGED
dpdispatcher/machines/openapi.py
CHANGED
|
@@ -64,11 +64,11 @@ class OpenAPI(Machine):
|
|
|
64
64
|
raise ValueError(
|
|
65
65
|
"remote_profile must contain 'project_id' or set environment variable 'BOHRIUM_PROJECT_ID'"
|
|
66
66
|
)
|
|
67
|
-
self.client = Bohrium(
|
|
67
|
+
self.client = Bohrium( # type: ignore[reportPossiblyUnboundVariable]
|
|
68
68
|
access_key=access_key, project_id=project_id, app_key=app_key
|
|
69
69
|
)
|
|
70
|
-
self.storage = Tiefblue()
|
|
71
|
-
self.job = Job(client=self.client)
|
|
70
|
+
self.storage = Tiefblue() # type: ignore[reportPossiblyUnboundVariable]
|
|
71
|
+
self.job = Job(client=self.client) # type: ignore[reportPossiblyUnboundVariable]
|
|
72
72
|
self.group_id = None
|
|
73
73
|
|
|
74
74
|
def gen_script(self, job):
|
dpdispatcher/machines/pbs.py
CHANGED
|
@@ -69,9 +69,6 @@ class PBS(Machine):
|
|
|
69
69
|
self.context.write_file(job_id_name, job_id)
|
|
70
70
|
return job_id
|
|
71
71
|
|
|
72
|
-
def default_resources(self, resources):
|
|
73
|
-
pass
|
|
74
|
-
|
|
75
72
|
def check_status(self, job):
|
|
76
73
|
job_id = job.job_id
|
|
77
74
|
if job_id == "":
|
|
@@ -255,9 +252,6 @@ class SGE(PBS):
|
|
|
255
252
|
self.context.write_file(job_id_name, job_id)
|
|
256
253
|
return job_id
|
|
257
254
|
|
|
258
|
-
def default_resources(self, resources):
|
|
259
|
-
pass
|
|
260
|
-
|
|
261
255
|
def check_status(self, job):
|
|
262
256
|
### https://softpanorama.org/HPC/Grid_engine/Queues/queue_states.shtml
|
|
263
257
|
job_id = job.job_id
|
dpdispatcher/machines/shell.py
CHANGED
dpdispatcher/machines/slurm.py
CHANGED
|
@@ -142,10 +142,10 @@ class Client:
|
|
|
142
142
|
res = self.get("/data/get_sts_token", {})
|
|
143
143
|
# print('debug>>>>>>>>>>>>>', res)
|
|
144
144
|
dlog.debug(f"debug: _get_oss_bucket: res:{res}")
|
|
145
|
-
auth = oss2.StsAuth(
|
|
145
|
+
auth = oss2.StsAuth( # type: ignore[reportPossiblyUnboundVariable]
|
|
146
146
|
res["AccessKeyId"], res["AccessKeySecret"], res["SecurityToken"]
|
|
147
147
|
)
|
|
148
|
-
return oss2.Bucket(auth, endpoint, bucket_name)
|
|
148
|
+
return oss2.Bucket(auth, endpoint, bucket_name) # type: ignore[reportPossiblyUnboundVariable]
|
|
149
149
|
|
|
150
150
|
def download(self, oss_file, save_file, endpoint, bucket_name):
|
|
151
151
|
bucket = self._get_oss_bucket(endpoint, bucket_name)
|
|
@@ -184,7 +184,7 @@ class Client:
|
|
|
184
184
|
)
|
|
185
185
|
bucket = self._get_oss_bucket(endpoint, bucket_name)
|
|
186
186
|
total_size = os.path.getsize(zip_task_file)
|
|
187
|
-
part_size = determine_part_size(total_size, preferred_size=1000 * 1024)
|
|
187
|
+
part_size = determine_part_size(total_size, preferred_size=1000 * 1024) # type: ignore[reportPossiblyUnboundVariable]
|
|
188
188
|
upload_id = bucket.init_multipart_upload(oss_task_zip).upload_id
|
|
189
189
|
parts = []
|
|
190
190
|
with open(zip_task_file, "rb") as fileobj:
|
|
@@ -196,9 +196,9 @@ class Client:
|
|
|
196
196
|
oss_task_zip,
|
|
197
197
|
upload_id,
|
|
198
198
|
part_number,
|
|
199
|
-
SizedFileAdapter(fileobj, num_to_upload),
|
|
199
|
+
SizedFileAdapter(fileobj, num_to_upload), # type: ignore[reportPossiblyUnboundVariable]
|
|
200
200
|
)
|
|
201
|
-
parts.append(PartInfo(part_number, result.etag))
|
|
201
|
+
parts.append(PartInfo(part_number, result.etag)) # type: ignore[reportPossiblyUnboundVariable]
|
|
202
202
|
offset += num_to_upload
|
|
203
203
|
part_number += 1
|
|
204
204
|
# result = bucket.complete_multipart_upload(oss_task_zip, upload_id, parts)
|
dpdispatcher/utils/utils.py
CHANGED
|
@@ -2,6 +2,7 @@ import base64
|
|
|
2
2
|
import hashlib
|
|
3
3
|
import hmac
|
|
4
4
|
import os
|
|
5
|
+
import shlex
|
|
5
6
|
import struct
|
|
6
7
|
import subprocess
|
|
7
8
|
import time
|
|
@@ -89,6 +90,7 @@ def rsync(
|
|
|
89
90
|
port: int = 22,
|
|
90
91
|
key_filename: Optional[str] = None,
|
|
91
92
|
timeout: Union[int, float] = 10,
|
|
93
|
+
proxy_command: Optional[str] = None,
|
|
92
94
|
):
|
|
93
95
|
"""Call rsync to transfer files.
|
|
94
96
|
|
|
@@ -104,6 +106,8 @@ def rsync(
|
|
|
104
106
|
identity file name
|
|
105
107
|
timeout : int, default=10
|
|
106
108
|
timeout for ssh
|
|
109
|
+
proxy_command : str, optional
|
|
110
|
+
ProxyCommand to use for SSH connection
|
|
107
111
|
|
|
108
112
|
Raises
|
|
109
113
|
------
|
|
@@ -124,20 +128,30 @@ def rsync(
|
|
|
124
128
|
]
|
|
125
129
|
if key_filename is not None:
|
|
126
130
|
ssh_cmd.extend(["-i", key_filename])
|
|
131
|
+
|
|
132
|
+
# Use proxy_command if provided
|
|
133
|
+
if proxy_command is not None:
|
|
134
|
+
ssh_cmd.extend(["-o", f"ProxyCommand={proxy_command}"])
|
|
135
|
+
|
|
136
|
+
# Properly escape the SSH command for rsync's -e option
|
|
137
|
+
ssh_cmd_str = " ".join(shlex.quote(part) for part in ssh_cmd)
|
|
138
|
+
|
|
127
139
|
cmd = [
|
|
128
140
|
"rsync",
|
|
129
|
-
# -
|
|
130
|
-
# -z: compress
|
|
131
|
-
"-
|
|
141
|
+
# -r: recursive, -l: links, -p: perms, -t: times, -D: devices/specials
|
|
142
|
+
# -z: compress (exclude -o: owner, -g: group to avoid permission issues)
|
|
143
|
+
"-rlptDz",
|
|
132
144
|
"-e",
|
|
133
|
-
|
|
145
|
+
ssh_cmd_str,
|
|
134
146
|
"-q",
|
|
135
147
|
from_file,
|
|
136
148
|
to_file,
|
|
137
149
|
]
|
|
138
|
-
|
|
150
|
+
# Convert to string for shell=True
|
|
151
|
+
cmd_str = " ".join(shlex.quote(arg) for arg in cmd)
|
|
152
|
+
ret, out, err = run_cmd_with_all_output(cmd_str, shell=True)
|
|
139
153
|
if ret != 0:
|
|
140
|
-
raise RuntimeError(f"Failed to run {
|
|
154
|
+
raise RuntimeError(f"Failed to run {cmd_str}: {err}")
|
|
141
155
|
|
|
142
156
|
|
|
143
157
|
class RetrySignal(Exception):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dpdispatcher
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.12
|
|
4
4
|
Summary: Generate HPC scheduler systems jobs input scripts, submit these scripts to HPC systems, and poke until they finish
|
|
5
5
|
Author: DeepModeling
|
|
6
6
|
License: GNU LESSER GENERAL PUBLIC LICENSE
|
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
dpdispatcher/__init__.py,sha256=CLZP_N5CTp14ujWCykEHuJjoIfKR6CwrclXhjWUgNoE,517
|
|
2
2
|
dpdispatcher/__main__.py,sha256=BFhG-mSBzVZUEezQJqXWZnt2WsnhAHT_zpT8Y6gpOz0,116
|
|
3
|
-
dpdispatcher/_version.py,sha256=
|
|
3
|
+
dpdispatcher/_version.py,sha256=a-0leJ4HihsyvhxqpbGKODhfNk5qw_xjChcx488fqoI,706
|
|
4
4
|
dpdispatcher/arginfo.py,sha256=pNaxYIE6ahBidpR7OCKZdw8iGt003uTXGSlVzwiuvRg,188
|
|
5
5
|
dpdispatcher/base_context.py,sha256=W4eWDWVzYeL6EuEkivmJp-_h_B2mV9PtRWc09l1_Qzc,5242
|
|
6
6
|
dpdispatcher/dlog.py,sha256=QJKAwB6gV3Zb6zQUL9dZ_uIoTIEy9Z7ecmVQ-8WNmD8,1081
|
|
7
7
|
dpdispatcher/dpdisp.py,sha256=jhuTmwPY7KBF4WukaQomEwZcfYoISaMbKwuxdDGSluc,4206
|
|
8
|
-
dpdispatcher/machine.py,sha256=
|
|
8
|
+
dpdispatcher/machine.py,sha256=bW4oEpmDKwMHrMESFMgQbUxG3N1xUh3Z4NRY1uxz73I,16691
|
|
9
9
|
dpdispatcher/run.py,sha256=tFHbJAioXXpgHTE5bhRRAuc8w7cX1ET9SBbiAg3Rw-I,5382
|
|
10
10
|
dpdispatcher/submission.py,sha256=zLzdKJkMXhvaicD2el33NxDHP_9LL29HBombxR1l-Sw,48086
|
|
11
11
|
dpdispatcher/contexts/__init__.py,sha256=jlvcIppmUnS39yBlkZEDvIQFV-j_BR75ZTbZALF_RB0,336
|
|
12
|
-
dpdispatcher/contexts/dp_cloud_server_context.py,sha256=
|
|
12
|
+
dpdispatcher/contexts/dp_cloud_server_context.py,sha256=pdzQuG-j8sdNsindqwStWwu6OA0fZauCtj7FyWh_014,12491
|
|
13
13
|
dpdispatcher/contexts/hdfs_context.py,sha256=mYQzXMZ4A9EjjWBAH3Ba6HOErUhMMwCsKxOjpd5R57Y,9105
|
|
14
|
-
dpdispatcher/contexts/lazy_local_context.py,sha256=
|
|
14
|
+
dpdispatcher/contexts/lazy_local_context.py,sha256=IyDBIKGRz0Ctur4VX1zA78kMi2lf6ZNRcZm_RnFkZSk,5082
|
|
15
15
|
dpdispatcher/contexts/local_context.py,sha256=VbaSXGAc_EDMT0K5WV_flBF0bX87ntrwO_hq_Bkcb04,14590
|
|
16
|
-
dpdispatcher/contexts/openapi_context.py,sha256=
|
|
17
|
-
dpdispatcher/contexts/ssh_context.py,sha256=
|
|
16
|
+
dpdispatcher/contexts/openapi_context.py,sha256=0DKlgux-1zmUuS28AK1hy_n16n6uCTugI9xjjnKefnI,12140
|
|
17
|
+
dpdispatcher/contexts/ssh_context.py,sha256=0Ah3fdgq0uZxWh4kLS6UbVmaQFgCZ2bsZTwTXVa_k-M,39048
|
|
18
18
|
dpdispatcher/dpcloudserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
19
|
dpdispatcher/dpcloudserver/client.py,sha256=k1niKjG6zFnMtHn_UuCjYoOcMju3o3PV-GdyVLr5-KM,165
|
|
20
20
|
dpdispatcher/entrypoints/__init__.py,sha256=exKSFT3j2oCerGwtI8WbHQK-D0K-CyifocRji1xntT4,20
|
|
21
21
|
dpdispatcher/entrypoints/gui.py,sha256=29lMXqbmSRbLj4rfBv7Jnw89NLU9syTB88IUP6IRJsU,830
|
|
22
22
|
dpdispatcher/entrypoints/run.py,sha256=tRkHfeAktV6gF31yb2MVOSTlpNGZFw3N0jHBmM1YfIg,175
|
|
23
23
|
dpdispatcher/entrypoints/submission.py,sha256=ikVwIZAQL0SsYO5xaMIdKXgO6qtc05w1vqmvtG7Nk5M,3401
|
|
24
|
-
dpdispatcher/machines/JH_UniScheduler.py,sha256=
|
|
24
|
+
dpdispatcher/machines/JH_UniScheduler.py,sha256=6A4lnZUIbsR501STkXyKEJCVaq-iJguzlfVuHq9ZRf4,5698
|
|
25
25
|
dpdispatcher/machines/__init__.py,sha256=tOQuPUlW1Ab4qcC0oSAIyDjZA_WyE67h_EIxPCWGhys,336
|
|
26
26
|
dpdispatcher/machines/distributed_shell.py,sha256=c0-lGeGz_M-PY2gPciT-uYZLQht5XTMaxJSNxkbMffc,7489
|
|
27
27
|
dpdispatcher/machines/dp_cloud_server.py,sha256=SR69gsFb2BvOQCW1QnWfP3cQvu_qHLJNsycp5wzosJU,11706
|
|
28
|
-
dpdispatcher/machines/fugaku.py,sha256=
|
|
29
|
-
dpdispatcher/machines/lsf.py,sha256=
|
|
30
|
-
dpdispatcher/machines/openapi.py,sha256=
|
|
31
|
-
dpdispatcher/machines/pbs.py,sha256=
|
|
32
|
-
dpdispatcher/machines/shell.py,sha256=
|
|
33
|
-
dpdispatcher/machines/slurm.py,sha256=
|
|
28
|
+
dpdispatcher/machines/fugaku.py,sha256=BlaUfgHoGABROuZeT5byr12rXCVCqahXISL57SUObX0,4256
|
|
29
|
+
dpdispatcher/machines/lsf.py,sha256=BH-lvXGkoCOAYJWAX7boE1TQtPfyMsRjmShIdnZ-MBE,7838
|
|
30
|
+
dpdispatcher/machines/openapi.py,sha256=TXwXGYRB35049MU76-6SBinxSqvh11ey3iWYj8bqEi8,10070
|
|
31
|
+
dpdispatcher/machines/pbs.py,sha256=9QsOKxyGc4fPRxBmFhQ1rlNzRlpmbSe6WvvkZj_0Q0o,12553
|
|
32
|
+
dpdispatcher/machines/shell.py,sha256=hZwrIsT-GzXToCobrrmxY0GBoNy0BEH4oTK5MpQE1H4,4739
|
|
33
|
+
dpdispatcher/machines/slurm.py,sha256=Rf8aV_HxpSLiQ5WC-8nUoGXjAaPsttrGu9ZV6ijYsXg,15355
|
|
34
34
|
dpdispatcher/utils/__init__.py,sha256=fwvwkMf7DFNQkNBiIce8Y8gRA6FhICwKjkKiXu_BEJg,13
|
|
35
35
|
dpdispatcher/utils/hdfs_cli.py,sha256=a1a9PJAzt3wsTcdaSw_oD1vcNw59pMooxpAHjYOaaGA,5209
|
|
36
36
|
dpdispatcher/utils/job_status.py,sha256=Eszs4TPLfszCuf6zLaFonf25feXDUguF28spYOjJpQE,233
|
|
37
37
|
dpdispatcher/utils/record.py,sha256=c8jdPmCuLzRmFo_jOjR0j9zFR1EWX3NSHVuPEIYCycg,2147
|
|
38
|
-
dpdispatcher/utils/utils.py,sha256=
|
|
38
|
+
dpdispatcher/utils/utils.py,sha256=CSDzc3VhoF8HvEMaBiH-CSk6WnKFeORXzYcKHhBA4Dg,5940
|
|
39
39
|
dpdispatcher/utils/dpcloudserver/__init__.py,sha256=FnX9HH-2dXADluNfucg98JPMfruMoBpN9ER9lZkVQvQ,49
|
|
40
|
-
dpdispatcher/utils/dpcloudserver/client.py,sha256=
|
|
40
|
+
dpdispatcher/utils/dpcloudserver/client.py,sha256=BKKZyY5VblkIace2muFsvSX_7uEgM8E_IZBXaPtaT4I,12414
|
|
41
41
|
dpdispatcher/utils/dpcloudserver/config.py,sha256=NteQzf1OeEkz2UbkXHHQ0B72cUu23zLVzpM9Yh4v1Cc,559
|
|
42
42
|
dpdispatcher/utils/dpcloudserver/retcode.py,sha256=1qAF8gFZx55u2sO8KbtYSIIrjcO-IGufEUlwbkSfC1g,721
|
|
43
43
|
dpdispatcher/utils/dpcloudserver/zip_file.py,sha256=f9WrlktwHW0YipaWg5Y0kxjMZlhD1cJYa6EUpvu4Cro,2611
|
|
44
|
-
dpdispatcher-0.6.
|
|
45
|
-
dpdispatcher-0.6.
|
|
46
|
-
dpdispatcher-0.6.
|
|
47
|
-
dpdispatcher-0.6.
|
|
48
|
-
dpdispatcher-0.6.
|
|
49
|
-
dpdispatcher-0.6.
|
|
44
|
+
dpdispatcher-0.6.12.dist-info/licenses/LICENSE,sha256=46mU2C5kSwOnkqkw9XQAJlhBL2JAf1_uCD8lVcXyMRg,7652
|
|
45
|
+
dpdispatcher-0.6.12.dist-info/METADATA,sha256=1tBNA2PlJdHyxL8tbhO6G2XqpsaZ4tlBohcdUpEGfRc,12834
|
|
46
|
+
dpdispatcher-0.6.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
47
|
+
dpdispatcher-0.6.12.dist-info/entry_points.txt,sha256=NRHUV0IU_u7_XtcmmEDnVzAcUmurhiEAGwENckrajo4,233
|
|
48
|
+
dpdispatcher-0.6.12.dist-info/top_level.txt,sha256=35jAQoXY-b-e9fJ1_mxhZUiaCoJNt1ZI7mpFRf07Qjs,13
|
|
49
|
+
dpdispatcher-0.6.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|