dpdispatcher 0.6.6__py3-none-any.whl → 1.0.0__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.
@@ -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
- # -a: archieve
130
- # -z: compress
131
- "-az",
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
- " ".join(ssh_cmd),
145
+ ssh_cmd_str,
134
146
  "-q",
135
147
  from_file,
136
148
  to_file,
137
149
  ]
138
- ret, out, err = run_cmd_with_all_output(cmd, shell=False)
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 {cmd}: {err}")
154
+ raise RuntimeError(f"Failed to run {cmd_str}: {err}")
141
155
 
142
156
 
143
157
  class RetrySignal(Exception):
@@ -191,7 +205,7 @@ def retry(
191
205
  else:
192
206
  # raise all exceptions
193
207
  raise RuntimeError(
194
- "Failed to run %s for %d times" % (func.__name__, current_retry)
208
+ f"Failed to run {func.__name__} for {current_retry} times"
195
209
  ) from errors[-1]
196
210
 
197
211
  return wrapper
@@ -1,9 +1,9 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: dpdispatcher
3
- Version: 0.6.6
3
+ Version: 1.0.0
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
- License: GNU LESSER GENERAL PUBLIC LICENSE
6
+ License: GNU LESSER GENERAL PUBLIC LICENSE
7
7
  Version 3, 29 June 2007
8
8
 
9
9
  Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
@@ -186,32 +186,33 @@ Requires-Python: >=3.7
186
186
  Description-Content-Type: text/markdown
187
187
  License-File: LICENSE
188
188
  Requires-Dist: paramiko
189
- Requires-Dist: dargs >=0.4.1
189
+ Requires-Dist: dargs>=0.4.1
190
190
  Requires-Dist: requests
191
- Requires-Dist: tqdm >=4.9.0
191
+ Requires-Dist: tqdm>=4.9.0
192
+ Requires-Dist: typing_extensions; python_version < "3.7"
192
193
  Requires-Dist: pyyaml
193
- Requires-Dist: tomli >=1.1.0 ; python_version < "3.11"
194
- Requires-Dist: typing-extensions ; python_version < "3.7"
195
- Provides-Extra: bohrium
196
- Requires-Dist: oss2 ; extra == 'bohrium'
197
- Requires-Dist: tqdm ; extra == 'bohrium'
198
- Requires-Dist: bohrium-sdk ; extra == 'bohrium'
199
- Provides-Extra: cloudserver
200
- Requires-Dist: oss2 ; extra == 'cloudserver'
201
- Requires-Dist: tqdm ; extra == 'cloudserver'
202
- Requires-Dist: bohrium-sdk ; extra == 'cloudserver'
194
+ Requires-Dist: tomli>=1.1.0; python_version < "3.11"
203
195
  Provides-Extra: docs
204
- Requires-Dist: sphinx ; extra == 'docs'
205
- Requires-Dist: myst-parser ; extra == 'docs'
206
- Requires-Dist: sphinx-rtd-theme >=1.0.0rc1 ; extra == 'docs'
207
- Requires-Dist: numpydoc ; extra == 'docs'
208
- Requires-Dist: deepmodeling-sphinx >=0.1.1 ; extra == 'docs'
209
- Requires-Dist: dargs >=0.3.1 ; extra == 'docs'
210
- Requires-Dist: sphinx-argparse <0.5.0 ; extra == 'docs'
196
+ Requires-Dist: sphinx; extra == "docs"
197
+ Requires-Dist: myst-parser; extra == "docs"
198
+ Requires-Dist: sphinx-book-theme; extra == "docs"
199
+ Requires-Dist: numpydoc; extra == "docs"
200
+ Requires-Dist: deepmodeling-sphinx>=0.3.0; extra == "docs"
201
+ Requires-Dist: dargs>=0.3.1; extra == "docs"
202
+ Requires-Dist: sphinx-argparse<0.5.0; extra == "docs"
203
+ Provides-Extra: cloudserver
204
+ Requires-Dist: oss2; extra == "cloudserver"
205
+ Requires-Dist: tqdm; extra == "cloudserver"
206
+ Requires-Dist: bohrium-sdk; extra == "cloudserver"
207
+ Provides-Extra: bohrium
208
+ Requires-Dist: oss2; extra == "bohrium"
209
+ Requires-Dist: tqdm; extra == "bohrium"
210
+ Requires-Dist: bohrium-sdk; extra == "bohrium"
211
211
  Provides-Extra: gui
212
- Requires-Dist: dpgui ; extra == 'gui'
212
+ Requires-Dist: dpgui; extra == "gui"
213
213
  Provides-Extra: test
214
- Requires-Dist: dpgui ; extra == 'test'
214
+ Requires-Dist: dpgui; extra == "test"
215
+ Dynamic: license-file
215
216
 
216
217
  # DPDispatcher
217
218
 
@@ -221,11 +222,19 @@ Requires-Dist: dpgui ; extra == 'test'
221
222
  [![Documentation Status](https://readthedocs.org/projects/dpdispatcher/badge/)](https://dpdispatcher.readthedocs.io/)
222
223
 
223
224
  DPDispatcher is a Python package used to generate HPC (High-Performance Computing) scheduler systems (Slurm/PBS/LSF/Bohrium) jobs input scripts, submit them to HPC systems, and poke until they finish.
224
-
225
+
225
226
  DPDispatcher will monitor (poke) until these jobs finish and download the results files (if these jobs are running on remote systems connected by SSH).
226
227
 
227
228
  For more information, check the [documentation](https://dpdispatcher.readthedocs.io/).
228
229
 
230
+ ## Credits
231
+
232
+ Please cite the following paper if you use this project in your work:
233
+
234
+ - Fengbo Yuan, Zhaohan Ding, Yun-Pei Liu, Kai Cao, Jiahao Fan, Cao Thang Nguyen, Yuzhi Zhang, Haidi Wang, Yixiao Chen, Jiameng Huang, Tongqi Wen, Mingkang Liu, Yifan Li, Yong-Bin Zhuang, Hao Yu, Ping Tuo, Yaotang Zhang, Yibo Wang, Linfeng Zhang, Han Wang, Jinzhe Zeng, DPDispatcher: Scalable HPC Task Scheduling for AI-Driven Science, _J. Chem. Inf. Model._, 2025, DOI: [10.1021/acs.jcim.5c02081](https://doi.org/10.1021/acs.jcim.5c02081). [![Citations](https://citations.njzjz.win/10.1021/acs.jcim.5c02081)](https://badge.dimensions.ai/details/doi/10.1021/acs.jcim.5c02081)
235
+
236
+ This project was separated out from the [DP-GEN](https://github.com/deepmodeling/dpgen) project (Section 3.3 in [its paper](https://doi.org/10.1016/j.cpc.2020.107206)) to be used by more workflow software.
237
+
229
238
  ## Installation
230
239
 
231
240
  DPDispatcher can be installed by `pip`:
@@ -248,7 +257,3 @@ See [Getting Started](https://dpdispatcher.readthedocs.io/en/latest/getting-star
248
257
 
249
258
  DPDispatcher is maintained by Deep Modeling's developers and welcomes other people.
250
259
  See [Contributing Guide](CONTRIBUTING.md) to become a contributor! 🤓
251
-
252
- ## References
253
-
254
- DPDispatcher is derived from the [DP-GEN](https://github.com/deepmodeling/dpgen) package. To mention DPDispatcher in a scholarly publication, please read Section 3.3 in the [DP-GEN paper](https://doi.org/10.1016/j.cpc.2020.107206).
@@ -0,0 +1,49 @@
1
+ dpdispatcher/__init__.py,sha256=CLZP_N5CTp14ujWCykEHuJjoIfKR6CwrclXhjWUgNoE,517
2
+ dpdispatcher/__main__.py,sha256=BFhG-mSBzVZUEezQJqXWZnt2WsnhAHT_zpT8Y6gpOz0,116
3
+ dpdispatcher/_version.py,sha256=vLA4ITz09S-S435nq6yTF6l3qiSz6w4euS1rOxXgd1M,704
4
+ dpdispatcher/arginfo.py,sha256=pNaxYIE6ahBidpR7OCKZdw8iGt003uTXGSlVzwiuvRg,188
5
+ dpdispatcher/base_context.py,sha256=W4eWDWVzYeL6EuEkivmJp-_h_B2mV9PtRWc09l1_Qzc,5242
6
+ dpdispatcher/dlog.py,sha256=QJKAwB6gV3Zb6zQUL9dZ_uIoTIEy9Z7ecmVQ-8WNmD8,1081
7
+ dpdispatcher/dpdisp.py,sha256=jhuTmwPY7KBF4WukaQomEwZcfYoISaMbKwuxdDGSluc,4206
8
+ dpdispatcher/machine.py,sha256=bW4oEpmDKwMHrMESFMgQbUxG3N1xUh3Z4NRY1uxz73I,16691
9
+ dpdispatcher/run.py,sha256=tFHbJAioXXpgHTE5bhRRAuc8w7cX1ET9SBbiAg3Rw-I,5382
10
+ dpdispatcher/submission.py,sha256=zLzdKJkMXhvaicD2el33NxDHP_9LL29HBombxR1l-Sw,48086
11
+ dpdispatcher/contexts/__init__.py,sha256=jlvcIppmUnS39yBlkZEDvIQFV-j_BR75ZTbZALF_RB0,336
12
+ dpdispatcher/contexts/dp_cloud_server_context.py,sha256=pdzQuG-j8sdNsindqwStWwu6OA0fZauCtj7FyWh_014,12491
13
+ dpdispatcher/contexts/hdfs_context.py,sha256=mYQzXMZ4A9EjjWBAH3Ba6HOErUhMMwCsKxOjpd5R57Y,9105
14
+ dpdispatcher/contexts/lazy_local_context.py,sha256=IyDBIKGRz0Ctur4VX1zA78kMi2lf6ZNRcZm_RnFkZSk,5082
15
+ dpdispatcher/contexts/local_context.py,sha256=VbaSXGAc_EDMT0K5WV_flBF0bX87ntrwO_hq_Bkcb04,14590
16
+ dpdispatcher/contexts/openapi_context.py,sha256=LecqP_8V3iCmjM0vUCBO8NrQgbtozN9L_aMjIU-T0xI,12148
17
+ dpdispatcher/contexts/ssh_context.py,sha256=0Ah3fdgq0uZxWh4kLS6UbVmaQFgCZ2bsZTwTXVa_k-M,39048
18
+ dpdispatcher/dpcloudserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ dpdispatcher/dpcloudserver/client.py,sha256=k1niKjG6zFnMtHn_UuCjYoOcMju3o3PV-GdyVLr5-KM,165
20
+ dpdispatcher/entrypoints/__init__.py,sha256=exKSFT3j2oCerGwtI8WbHQK-D0K-CyifocRji1xntT4,20
21
+ dpdispatcher/entrypoints/gui.py,sha256=29lMXqbmSRbLj4rfBv7Jnw89NLU9syTB88IUP6IRJsU,830
22
+ dpdispatcher/entrypoints/run.py,sha256=tRkHfeAktV6gF31yb2MVOSTlpNGZFw3N0jHBmM1YfIg,175
23
+ dpdispatcher/entrypoints/submission.py,sha256=ikVwIZAQL0SsYO5xaMIdKXgO6qtc05w1vqmvtG7Nk5M,3401
24
+ dpdispatcher/machines/JH_UniScheduler.py,sha256=6A4lnZUIbsR501STkXyKEJCVaq-iJguzlfVuHq9ZRf4,5698
25
+ dpdispatcher/machines/__init__.py,sha256=tOQuPUlW1Ab4qcC0oSAIyDjZA_WyE67h_EIxPCWGhys,336
26
+ dpdispatcher/machines/distributed_shell.py,sha256=c0-lGeGz_M-PY2gPciT-uYZLQht5XTMaxJSNxkbMffc,7489
27
+ dpdispatcher/machines/dp_cloud_server.py,sha256=SR69gsFb2BvOQCW1QnWfP3cQvu_qHLJNsycp5wzosJU,11706
28
+ dpdispatcher/machines/fugaku.py,sha256=BlaUfgHoGABROuZeT5byr12rXCVCqahXISL57SUObX0,4256
29
+ dpdispatcher/machines/lsf.py,sha256=BH-lvXGkoCOAYJWAX7boE1TQtPfyMsRjmShIdnZ-MBE,7838
30
+ dpdispatcher/machines/openapi.py,sha256=dqIOxuFyqYszgwqn7m-dTTmghRReS72yoHnDE0oHAw8,10232
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
+ dpdispatcher/utils/__init__.py,sha256=fwvwkMf7DFNQkNBiIce8Y8gRA6FhICwKjkKiXu_BEJg,13
35
+ dpdispatcher/utils/hdfs_cli.py,sha256=a1a9PJAzt3wsTcdaSw_oD1vcNw59pMooxpAHjYOaaGA,5209
36
+ dpdispatcher/utils/job_status.py,sha256=Eszs4TPLfszCuf6zLaFonf25feXDUguF28spYOjJpQE,233
37
+ dpdispatcher/utils/record.py,sha256=c8jdPmCuLzRmFo_jOjR0j9zFR1EWX3NSHVuPEIYCycg,2147
38
+ dpdispatcher/utils/utils.py,sha256=CSDzc3VhoF8HvEMaBiH-CSk6WnKFeORXzYcKHhBA4Dg,5940
39
+ dpdispatcher/utils/dpcloudserver/__init__.py,sha256=FnX9HH-2dXADluNfucg98JPMfruMoBpN9ER9lZkVQvQ,49
40
+ dpdispatcher/utils/dpcloudserver/client.py,sha256=BKKZyY5VblkIace2muFsvSX_7uEgM8E_IZBXaPtaT4I,12414
41
+ dpdispatcher/utils/dpcloudserver/config.py,sha256=NteQzf1OeEkz2UbkXHHQ0B72cUu23zLVzpM9Yh4v1Cc,559
42
+ dpdispatcher/utils/dpcloudserver/retcode.py,sha256=1qAF8gFZx55u2sO8KbtYSIIrjcO-IGufEUlwbkSfC1g,721
43
+ dpdispatcher/utils/dpcloudserver/zip_file.py,sha256=f9WrlktwHW0YipaWg5Y0kxjMZlhD1cJYa6EUpvu4Cro,2611
44
+ dpdispatcher-1.0.0.dist-info/licenses/LICENSE,sha256=46mU2C5kSwOnkqkw9XQAJlhBL2JAf1_uCD8lVcXyMRg,7652
45
+ dpdispatcher-1.0.0.dist-info/METADATA,sha256=FpiEXp0h_6Pal9rrpsklmT0Cm4fPImiwwv8vD0Gyw8w,13451
46
+ dpdispatcher-1.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
47
+ dpdispatcher-1.0.0.dist-info/entry_points.txt,sha256=NRHUV0IU_u7_XtcmmEDnVzAcUmurhiEAGwENckrajo4,233
48
+ dpdispatcher-1.0.0.dist-info/top_level.txt,sha256=35jAQoXY-b-e9fJ1_mxhZUiaCoJNt1ZI7mpFRf07Qjs,13
49
+ dpdispatcher-1.0.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (71.1.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,49 +0,0 @@
1
- dpdispatcher/__init__.py,sha256=CLZP_N5CTp14ujWCykEHuJjoIfKR6CwrclXhjWUgNoE,517
2
- dpdispatcher/__main__.py,sha256=BFhG-mSBzVZUEezQJqXWZnt2WsnhAHT_zpT8Y6gpOz0,116
3
- dpdispatcher/_version.py,sha256=A5NOPsDJAvtNjXOWXcGEBcGThUtYnfklnJHouP0KaiU,411
4
- dpdispatcher/arginfo.py,sha256=pNaxYIE6ahBidpR7OCKZdw8iGt003uTXGSlVzwiuvRg,188
5
- dpdispatcher/base_context.py,sha256=NvaC_RHyspxq412z-eCq4Zn8-szZxvn8K6OkXvx7l4Y,3615
6
- dpdispatcher/dlog.py,sha256=QJKAwB6gV3Zb6zQUL9dZ_uIoTIEy9Z7ecmVQ-8WNmD8,1081
7
- dpdispatcher/dpdisp.py,sha256=jhuTmwPY7KBF4WukaQomEwZcfYoISaMbKwuxdDGSluc,4206
8
- dpdispatcher/machine.py,sha256=EXrOckVsW9ZFOBc88eaSt2_WzDqNtjDTkGjOBFKWG04,16106
9
- dpdispatcher/run.py,sha256=tFHbJAioXXpgHTE5bhRRAuc8w7cX1ET9SBbiAg3Rw-I,5382
10
- dpdispatcher/submission.py,sha256=0_PCpRyiUwCHwYAzdXs-3rzq8YzZs0VZBU6tS7SixG0,48361
11
- dpdispatcher/contexts/__init__.py,sha256=jlvcIppmUnS39yBlkZEDvIQFV-j_BR75ZTbZALF_RB0,336
12
- dpdispatcher/contexts/dp_cloud_server_context.py,sha256=6XK0B2sLGEDeZmV2SZzQdVrMcWAWYZVLLK-IaShEXIY,12245
13
- dpdispatcher/contexts/hdfs_context.py,sha256=B6pjGUD8Xaa0G_Zrnoci2DZnEXxojE9fAcexMMvAZCM,8930
14
- dpdispatcher/contexts/lazy_local_context.py,sha256=F8abWAJRY1Ewx1sErINKN1ltWerXzeCcJgjTvLvucKE,5696
15
- dpdispatcher/contexts/local_context.py,sha256=AsIfOT24FV0_bNlD2xU-pqAJy-XHZ6XTsbll4Vt6bMM,14065
16
- dpdispatcher/contexts/openapi_context.py,sha256=DXaMS10SXN3VKEeEdzQyfOgRwUyHRJVCJHd2fKKdsmA,9499
17
- dpdispatcher/contexts/ssh_context.py,sha256=ApFhzK0c7zxclOSESEswpy_RsM1zLkeEYJ_hCtrALmQ,38682
18
- dpdispatcher/dpcloudserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- dpdispatcher/dpcloudserver/client.py,sha256=k1niKjG6zFnMtHn_UuCjYoOcMju3o3PV-GdyVLr5-KM,165
20
- dpdispatcher/entrypoints/__init__.py,sha256=exKSFT3j2oCerGwtI8WbHQK-D0K-CyifocRji1xntT4,20
21
- dpdispatcher/entrypoints/gui.py,sha256=29lMXqbmSRbLj4rfBv7Jnw89NLU9syTB88IUP6IRJsU,830
22
- dpdispatcher/entrypoints/run.py,sha256=tRkHfeAktV6gF31yb2MVOSTlpNGZFw3N0jHBmM1YfIg,175
23
- dpdispatcher/entrypoints/submission.py,sha256=ikVwIZAQL0SsYO5xaMIdKXgO6qtc05w1vqmvtG7Nk5M,3401
24
- dpdispatcher/machines/JH_UniScheduler.py,sha256=f7Vs9_m4Th1GVSgsJTy9_nMAY8g9n0ZewnPY2DFECfI,5795
25
- dpdispatcher/machines/__init__.py,sha256=tOQuPUlW1Ab4qcC0oSAIyDjZA_WyE67h_EIxPCWGhys,336
26
- dpdispatcher/machines/distributed_shell.py,sha256=LvWl6ktPlgmJ7rk90VWxp4douve8hYmuRf-B0saFBds,7534
27
- dpdispatcher/machines/dp_cloud_server.py,sha256=SR69gsFb2BvOQCW1QnWfP3cQvu_qHLJNsycp5wzosJU,11706
28
- dpdispatcher/machines/fugaku.py,sha256=oY2hD2ldL2dztwtJ9WNisdsfPnaX-5yTRXewIT9r60I,4314
29
- dpdispatcher/machines/lsf.py,sha256=Q6IE4nCkNEKcW0AdBTKPOYgmCJAeXWmUVxZ9sQFkxos,7932
30
- dpdispatcher/machines/openapi.py,sha256=Gzzbo8YOAybXGTrgMutexErcaEi3ts7uTUNvOhThFS8,8858
31
- dpdispatcher/machines/pbs.py,sha256=xPbdnT-g8pDMbq-yuI8G7TA0AZqn9gLXuqfWabQ2Whk,12437
32
- dpdispatcher/machines/shell.py,sha256=DnqMNb2nmBc3gVx8tA8oiUWdnWHKJwpIPs660i3Eq7A,4703
33
- dpdispatcher/machines/slurm.py,sha256=YM2Mv55jAFtDIiJoJLkD6p1Wi1ujjH6t4WlU8EtlbCw,15592
34
- dpdispatcher/utils/__init__.py,sha256=fwvwkMf7DFNQkNBiIce8Y8gRA6FhICwKjkKiXu_BEJg,13
35
- dpdispatcher/utils/hdfs_cli.py,sha256=n3EIfFIralsISlaEewawD35f0P8mabo-u8D8UW3k_7Y,5308
36
- dpdispatcher/utils/job_status.py,sha256=Eszs4TPLfszCuf6zLaFonf25feXDUguF28spYOjJpQE,233
37
- dpdispatcher/utils/record.py,sha256=c8jdPmCuLzRmFo_jOjR0j9zFR1EWX3NSHVuPEIYCycg,2147
38
- dpdispatcher/utils/utils.py,sha256=1One9eW-v3ejDcL6PB9PSCMZQkalnbxq0DfJoUwQaLs,5334
39
- dpdispatcher/utils/dpcloudserver/__init__.py,sha256=FnX9HH-2dXADluNfucg98JPMfruMoBpN9ER9lZkVQvQ,49
40
- dpdispatcher/utils/dpcloudserver/client.py,sha256=CLfXswvzI4inDrW2bYkfMQ6gQJFcZOgLhiXBz_EI17M,12029
41
- dpdispatcher/utils/dpcloudserver/config.py,sha256=NteQzf1OeEkz2UbkXHHQ0B72cUu23zLVzpM9Yh4v1Cc,559
42
- dpdispatcher/utils/dpcloudserver/retcode.py,sha256=1qAF8gFZx55u2sO8KbtYSIIrjcO-IGufEUlwbkSfC1g,721
43
- dpdispatcher/utils/dpcloudserver/zip_file.py,sha256=f9WrlktwHW0YipaWg5Y0kxjMZlhD1cJYa6EUpvu4Cro,2611
44
- dpdispatcher-0.6.6.dist-info/LICENSE,sha256=46mU2C5kSwOnkqkw9XQAJlhBL2JAf1_uCD8lVcXyMRg,7652
45
- dpdispatcher-0.6.6.dist-info/METADATA,sha256=0sYP0wVNFK9e2SMke4jpCbjpBEDA691quZj60MO3p6k,12828
46
- dpdispatcher-0.6.6.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
47
- dpdispatcher-0.6.6.dist-info/entry_points.txt,sha256=NRHUV0IU_u7_XtcmmEDnVzAcUmurhiEAGwENckrajo4,233
48
- dpdispatcher-0.6.6.dist-info/top_level.txt,sha256=35jAQoXY-b-e9fJ1_mxhZUiaCoJNt1ZI7mpFRf07Qjs,13
49
- dpdispatcher-0.6.6.dist-info/RECORD,,