vantage6 4.2.1__py3-none-any.whl → 4.3.0b3__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 vantage6 might be problematic. Click here for more details.

Files changed (64) hide show
  1. tests_cli/test_example.py +0 -1
  2. tests_cli/test_node_cli.py +74 -79
  3. tests_cli/test_server_cli.py +22 -22
  4. tests_cli/test_wizard.py +41 -29
  5. vantage6/cli/__build__ +1 -1
  6. vantage6/cli/_version.py +11 -8
  7. vantage6/cli/algorithm/create.py +14 -14
  8. vantage6/cli/algorithm/update.py +9 -6
  9. vantage6/cli/algostore/attach.py +32 -0
  10. vantage6/cli/algostore/new.py +55 -0
  11. vantage6/cli/algostore/start.py +102 -0
  12. vantage6/cli/algostore/stop.py +60 -0
  13. vantage6/cli/cli.py +32 -12
  14. vantage6/cli/common/decorator.py +92 -0
  15. vantage6/cli/common/start.py +232 -0
  16. vantage6/cli/configuration_manager.py +22 -32
  17. vantage6/cli/configuration_wizard.py +255 -193
  18. vantage6/cli/context/__init__.py +86 -0
  19. vantage6/cli/context/algorithm_store.py +130 -0
  20. vantage6/cli/context/base_server.py +89 -0
  21. vantage6/cli/context/node.py +254 -0
  22. vantage6/cli/context/server.py +127 -0
  23. vantage6/cli/dev/create.py +180 -113
  24. vantage6/cli/dev/remove.py +20 -19
  25. vantage6/cli/dev/start.py +10 -10
  26. vantage6/cli/dev/stop.py +7 -5
  27. vantage6/cli/globals.py +24 -0
  28. vantage6/cli/node/attach.py +21 -10
  29. vantage6/cli/node/clean.py +4 -2
  30. vantage6/cli/node/common/__init__.py +15 -11
  31. vantage6/cli/node/create_private_key.py +58 -27
  32. vantage6/cli/node/files.py +14 -6
  33. vantage6/cli/node/list.py +18 -24
  34. vantage6/cli/node/new.py +21 -12
  35. vantage6/cli/node/remove.py +31 -22
  36. vantage6/cli/node/set_api_key.py +18 -12
  37. vantage6/cli/node/start.py +38 -12
  38. vantage6/cli/node/stop.py +32 -18
  39. vantage6/cli/node/version.py +23 -13
  40. vantage6/cli/rabbitmq/__init__.py +9 -9
  41. vantage6/cli/rabbitmq/definitions.py +24 -28
  42. vantage6/cli/rabbitmq/queue_manager.py +37 -40
  43. vantage6/cli/server/attach.py +16 -11
  44. vantage6/cli/server/common/__init__.py +37 -25
  45. vantage6/cli/server/files.py +1 -1
  46. vantage6/cli/server/import_.py +45 -37
  47. vantage6/cli/server/list.py +22 -23
  48. vantage6/cli/server/new.py +20 -14
  49. vantage6/cli/server/remove.py +5 -4
  50. vantage6/cli/server/shell.py +17 -6
  51. vantage6/cli/server/start.py +118 -174
  52. vantage6/cli/server/stop.py +31 -23
  53. vantage6/cli/server/version.py +16 -13
  54. vantage6/cli/test/common/diagnostic_runner.py +30 -34
  55. vantage6/cli/test/feature_tester.py +51 -25
  56. vantage6/cli/test/integration_test.py +69 -29
  57. vantage6/cli/utils.py +6 -5
  58. {vantage6-4.2.1.dist-info → vantage6-4.3.0b3.dist-info}/METADATA +5 -3
  59. vantage6-4.3.0b3.dist-info/RECORD +68 -0
  60. vantage6/cli/context.py +0 -416
  61. vantage6-4.2.1.dist-info/RECORD +0 -58
  62. {vantage6-4.2.1.dist-info → vantage6-4.3.0b3.dist-info}/WHEEL +0 -0
  63. {vantage6-4.2.1.dist-info → vantage6-4.3.0b3.dist-info}/entry_points.txt +0 -0
  64. {vantage6-4.2.1.dist-info → vantage6-4.3.0b3.dist-info}/top_level.txt +0 -0
vantage6/cli/context.py DELETED
@@ -1,416 +0,0 @@
1
- """
2
- The context module in the CLI package contains the definition of the
3
- ServerContext and NodeContext classes. These contexts are related to the host
4
- system and therefore part of the CLI package.
5
-
6
- Both classes are derived from the abstract AppContext class. And provide the
7
- node and server with naming conventions, standard file locations, and in the
8
- case of the node with a local database URIs.
9
-
10
- *Server Context*
11
- A class to provide context for the server, both for development mode as
12
- for production.
13
-
14
- *Node Context*
15
- In case the node is run in development mode, this context will also used by
16
- the node package. Normally the node uses the
17
- `vantage6.node.context.DockerNodeContext` which provides the same
18
- functionality but is tailored to the Docker environment.
19
-
20
- """
21
- # TODO BvB 2023-01-10 we should have a look at all context classes and define
22
- # them in the same place. Now the DockerNodeContext is defined in the node, but
23
- # the server only has a TestServerContext there. This should be made consistent
24
- from __future__ import annotations
25
-
26
- import os.path
27
-
28
- from pathlib import Path
29
-
30
- from sqlalchemy.engine.url import make_url
31
-
32
- from vantage6.common.context import AppContext
33
- from vantage6.common.globals import APPNAME
34
- from vantage6.cli.configuration_manager import (NodeConfigurationManager,
35
- ServerConfigurationManager)
36
- from vantage6.cli.globals import (
37
- DEFAULT_NODE_SYSTEM_FOLDERS as N_FOL,
38
- DEFAULT_SERVER_SYSTEM_FOLDERS as S_FOL
39
- )
40
- from vantage6.cli._version import __version__
41
-
42
-
43
- class ServerContext(AppContext):
44
- """
45
- Server context
46
-
47
- Parameters
48
- ----------
49
- instance_name : str
50
- Name of the configuration instance, corresponds to the filename
51
- of the configuration file.
52
- system_folders : bool, optional
53
- System wide or user configuration, by default S_FOL
54
- """
55
-
56
- # The server configuration manager is aware of the structure of the server
57
- # configuration file and makes sure only valid configuration can be loaded.
58
- INST_CONFIG_MANAGER = ServerConfigurationManager
59
-
60
- def __init__(self, instance_name: str, system_folders: bool = S_FOL):
61
- super().__init__("server", instance_name,
62
- system_folders=system_folders)
63
- self.log.info(f"vantage6 version '{__version__}'")
64
-
65
- def get_database_uri(self) -> str:
66
- """
67
- Obtain the database uri from the environment or the configuration. The
68
- `VANTAGE6_DB_URI` environment variable is used by the Docker container,
69
- but can also be set by the user.
70
-
71
- Returns
72
- -------
73
- str
74
- string representation of the database uri
75
- """
76
- uri = os.environ.get("VANTAGE6_DB_URI") or self.config['uri']
77
- url = make_url(uri)
78
-
79
- if url.host is None and not os.path.isabs(url.database):
80
- # We're dealing with a relative path here of a local database, when
81
- # we're running the server outside of docker. Therefore we need to
82
- # prepend the data directory to the database name, but after the
83
- # driver name (e.g. sqlite:////db.sqlite ->
84
- # sqlite:////data_dir>/db.sqlite)
85
-
86
- # find index of database name
87
- idx_db_name = str(url).find(url.database)
88
-
89
- # add the datadir to the right location in the database uri
90
- return str(url)[:idx_db_name] + str(self.data_dir / url.database)
91
-
92
- return uri
93
-
94
- @property
95
- def docker_container_name(self) -> str:
96
- """
97
- Name of the docker container that the server is running in.
98
-
99
- Returns
100
- -------
101
- str
102
- Server's docker container name
103
- """
104
- return f"{APPNAME}-{self.name}-{self.scope}-server"
105
-
106
- @classmethod
107
- def from_external_config_file(
108
- cls, path: str, system_folders: bool = S_FOL) -> ServerContext:
109
- """
110
- Create a server context from an external configuration file. External
111
- means that the configuration file is not located in the default folders
112
- but its location is specified by the user.
113
-
114
- Parameters
115
- ----------
116
- path : str
117
- Path of the configuration file
118
- system_folders : bool, optional
119
- System wide or user configuration, by default S_FOL
120
-
121
- Returns
122
- -------
123
- ServerContext
124
- Server context object
125
- """
126
- cls = super().from_external_config_file(path, "server", system_folders)
127
- # if we are running a server in a docker container, the name is taken
128
- # from the name of the config file (which is usually a default). Get
129
- # the config name from environment if it is given.
130
- cls.name = os.environ.get("VANTAGE6_CONFIG_NAME") or cls.name
131
- return cls
132
-
133
- @classmethod
134
- def config_exists(cls, instance_name: str,
135
- system_folders: bool = S_FOL) -> bool:
136
- """
137
- Check if a configuration file exists.
138
-
139
- Parameters
140
- ----------
141
- instance_name : str
142
- Name of the configuration instance, corresponds to the filename
143
- of the configuration file.
144
- system_folders : bool, optional
145
- System wide or user configuration, by default S_FOL
146
-
147
- Returns
148
- -------
149
- bool
150
- Whether the configuration file exists or not
151
- """
152
- return super().config_exists("server", instance_name,
153
- system_folders=system_folders)
154
-
155
- @classmethod
156
- def available_configurations(cls, system_folders: bool = S_FOL) \
157
- -> tuple[list, list]:
158
- """
159
- Find all available server configurations in the default folders.
160
-
161
- Parameters
162
- ----------
163
- system_folders : bool, optional
164
- System wide or user configuration, by default S_FOL
165
-
166
- Returns
167
- -------
168
- tuple[list, list]
169
- The first list contains validated configuration files, the second
170
- list contains invalid configuration files.
171
- """
172
- return super().available_configurations("server", system_folders)
173
-
174
-
175
- class NodeContext(AppContext):
176
- """
177
- Node context
178
-
179
- See DockerNodeContext for the node instance mounts when running as a
180
- dockerized service.
181
-
182
- Parameters
183
- ----------
184
- instance_name : str
185
- Name of the configuration instance, corresponds to the filename
186
- of the configuration file.
187
- system_folders : bool, optional
188
- _description_, by default N_FOL
189
- config_file : str, optional
190
- _description_, by default None
191
- """
192
-
193
- # The server configuration manager is aware of the structure of the server
194
- # configuration file and makes sure only valid configuration can be loaded.
195
- INST_CONFIG_MANAGER = NodeConfigurationManager
196
-
197
- def __init__(self, instance_name: str, system_folders: bool = N_FOL,
198
- config_file: str = None):
199
- super().__init__("node", instance_name, system_folders, config_file)
200
- self.log.info(f"vantage6 version '{__version__}'")
201
-
202
- @classmethod
203
- def from_external_config_file(cls, path: str,
204
- system_folders: bool = N_FOL) -> NodeContext:
205
- """
206
- Create a node context from an external configuration file. External
207
- means that the configuration file is not located in the default folders
208
- but its location is specified by the user.
209
-
210
- Parameters
211
- ----------
212
- path : str
213
- Path of the configuration file
214
- system_folders : bool, optional
215
- System wide or user configuration, by default N_FOL
216
-
217
- Returns
218
- -------
219
- NodeContext
220
- Node context object
221
- """
222
- return super().from_external_config_file(path, "node", system_folders)
223
-
224
- @classmethod
225
- def config_exists(cls, instance_name: str,
226
- system_folders: bool = N_FOL) -> bool:
227
- """
228
- Check if a configuration file exists.
229
-
230
- Parameters
231
- ----------
232
- instance_name : str
233
- Name of the configuration instance, corresponds to the filename
234
- of the configuration file.
235
- system_folders : bool, optional
236
- System wide or user configuration, by default N_FOL
237
-
238
- Returns
239
- -------
240
- bool
241
- Whether the configuration file exists or not
242
- """
243
- return super().config_exists("node", instance_name,
244
- system_folders=system_folders)
245
-
246
- @classmethod
247
- def available_configurations(cls, system_folders: bool = N_FOL) \
248
- -> tuple[list, list]:
249
- """
250
- Find all available server configurations in the default folders.
251
-
252
- Parameters
253
- ----------
254
- system_folders : bool, optional
255
- System wide or user configuration, by default N_FOL
256
-
257
- Returns
258
- -------
259
- tuple[list, list]
260
- The first list contains validated configuration files, the second
261
- list contains invalid configuration files.
262
- """
263
- return super().available_configurations("node", system_folders)
264
-
265
- @staticmethod
266
- def type_data_folder(system_folders: bool = N_FOL) -> Path:
267
- """
268
- Obtain OS specific data folder where to store node specific data.
269
-
270
- Parameters
271
- ----------
272
- system_folders : bool, optional
273
- System wide or user configuration
274
-
275
- Returns
276
- -------
277
- Path
278
- Path to the data folder
279
- """
280
- return AppContext.type_data_folder("node", system_folders)
281
-
282
- @property
283
- def databases(self) -> dict:
284
- """
285
- Dictionary of local databases that are available for this node.
286
-
287
- Returns
288
- -------
289
- dict
290
- dictionary with database names as keys and their corresponding
291
- paths as values.
292
- """
293
- return self.config["databases"]
294
-
295
- @property
296
- def docker_container_name(self) -> str:
297
- """
298
- Docker container name of the node.
299
-
300
- Returns
301
- -------
302
- str
303
- Node's Docker container name
304
- """
305
- return f"{APPNAME}-{self.name}-{self.scope}"
306
-
307
- @property
308
- def docker_network_name(self) -> str:
309
- """
310
- Private Docker network name which is unique for this node.
311
-
312
- Returns
313
- -------
314
- str
315
- Docker network name
316
- """
317
- return f"{APPNAME}-{self.name}-{self.scope}-net"
318
-
319
- @property
320
- def docker_volume_name(self) -> str:
321
- """
322
- Docker volume in which task data is stored. In case a file based
323
- database is used, this volume contains the database file as well.
324
-
325
- Returns
326
- -------
327
- str
328
- Docker volume name
329
- """
330
- return os.environ.get(
331
- 'DATA_VOLUME_NAME',
332
- f"{self.docker_container_name}-vol"
333
- )
334
-
335
- @property
336
- def docker_vpn_volume_name(self) -> str:
337
- """
338
- Docker volume in which the VPN configuration is stored.
339
-
340
- Returns
341
- -------
342
- str
343
- Docker volume name
344
- """
345
- return os.environ.get(
346
- 'VPN_VOLUME_NAME',
347
- f"{self.docker_container_name}-vpn-vol"
348
- )
349
-
350
- @property
351
- def docker_ssh_volume_name(self) -> str:
352
- """
353
- Docker volume in which the SSH configuration is stored.
354
-
355
- Returns
356
- -------
357
- str
358
- Docker volume name
359
- """
360
- return os.environ.get(
361
- 'SSH_TUNNEL_VOLUME_NAME',
362
- f"{self.docker_container_name}-ssh-vol"
363
- )
364
-
365
- @property
366
- def docker_squid_volume_name(self) -> str:
367
- """
368
- Docker volume in which the SSH configuration is stored.
369
-
370
- Returns
371
- -------
372
- str
373
- Docker volume name
374
- """
375
- return os.environ.get(
376
- 'SSH_SQUID_VOLUME_NAME',
377
- f"{self.docker_container_name}-squid-vol"
378
- )
379
-
380
- @property
381
- def proxy_log_file(self):
382
- return self.log_file_name(type_="proxy_server")
383
-
384
- def docker_temporary_volume_name(self, job_id: int) -> str:
385
- """
386
- Docker volume in which temporary data is stored. Temporary data is
387
- linked to a specific run. Multiple algorithm containers can have the
388
- same run id, and therefore the share same temporary volume.
389
-
390
- Parameters
391
- ----------
392
- job_id : int
393
- run id provided by the server
394
-
395
- Returns
396
- -------
397
- str
398
- Docker volume name
399
- """
400
- return f"{APPNAME}-{self.name}-{self.scope}-{job_id}-tmpvol"
401
-
402
- def get_database_uri(self, label: str = "default") -> str:
403
- """
404
- Obtain the database URI for a specific database.
405
-
406
- Parameters
407
- ----------
408
- label : str, optional
409
- Database label, by default "default"
410
-
411
- Returns
412
- -------
413
- str
414
- URI to the database
415
- """
416
- return self.config["databases"][label]
@@ -1,58 +0,0 @@
1
- tests_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- tests_cli/test_example.py,sha256=TV8JA52UR-Yh1WeVwx8g8ngA9ZTiRCwsJkUKxsXUXMg,147
3
- tests_cli/test_node_cli.py,sha256=8tfCNvdZT7uMgOJ0QbBlY73kox7RUIDHhxQWVtJiSiA,15454
4
- tests_cli/test_server_cli.py,sha256=hWnGEV6JnXN_SqpUiQxCzITBlbYKRykb8B4MkFX7aEU,5798
5
- tests_cli/test_wizard.py,sha256=dRrOScN79z8nKGNWmn6tPAVfnDOmCsGckiDJMKufhms,3580
6
- vantage6/cli/__build__,sha256=X-zrZv_IbzjZUnhsbWlsecLbwjndTpG0ZynXOif7V-k,1
7
- vantage6/cli/__init__.py,sha256=dEbhLHe9VfU3otY3CQkMVrj39uPGWjqzAvHW2B2Flgs,62
8
- vantage6/cli/_version.py,sha256=YNVmlpiuEjYqo5Qo08oPbrp_LIjTk2VfPO8LA_Z2sr0,684
9
- vantage6/cli/cli.py,sha256=Tz7dj6X8GVPrzHd9GehURdbPFIDzGvyYW2MXRUJwFs4,4875
10
- vantage6/cli/configuration_manager.py,sha256=4EHlOW16nfIiplzA0sw9udc4-VLKcmdKgWzzFa5Nw7A,3841
11
- vantage6/cli/configuration_wizard.py,sha256=c8L4xm9_HYjAkyTmRmLDMwzTDqdKdgnBZy915TAIfRI,11569
12
- vantage6/cli/context.py,sha256=dJZWmOZGqQ3MazrPu8HbnXbNC2tzHcLjns9KoIHGpFk,13045
13
- vantage6/cli/globals.py,sha256=yDYhbzWgwrd549lTkVH7g59orQuN30zwP60VHiUiMD4,1027
14
- vantage6/cli/utils.py,sha256=Lx1xYKXDBeHjJpXGkVAhidy79P-zV3TOQYfa2nMbvSs,2353
15
- vantage6/cli/algorithm/create.py,sha256=cUjehkwRa6eWRSnWLPk9iLk4_qf8x_MI2WxmaAUMVT0,1496
16
- vantage6/cli/algorithm/update.py,sha256=0GCkFIRGV-HWHWagTSqkE9_SPuVrTMQQhtytpitMiQc,821
17
- vantage6/cli/dev/create.py,sha256=Xij_DOunyjzoDulpIrL00kasHiXbjp_YJWR3OjScCZc,13249
18
- vantage6/cli/dev/remove.py,sha256=m5Yjt7U3pTmlZm1f8G8JsxMm9k-CWTgoy-sCZ7GTnZA,2211
19
- vantage6/cli/dev/start.py,sha256=IJbXzezMx4MK7rO9nx3AvidEZfdUL5mX0gA7AlwETLU,1629
20
- vantage6/cli/dev/stop.py,sha256=XDvjyxxU4gVnC9sKHxYMLYPmDwRq_4lnpXE9imO614Q,993
21
- vantage6/cli/node/attach.py,sha256=n7mJaDJq7tngMVigXe0_JBAdueV_5YEz8FmVOvAF-PU,2152
22
- vantage6/cli/node/clean.py,sha256=1C0bTEuc6UO-GBIWUsp9YgO_sK5O5Mg-zZYnsCmd2OE,1088
23
- vantage6/cli/node/create_private_key.py,sha256=U0kuXmB-POneJzB8rxQ9AHRaqrmp_S54isRkG2a7rhg,4988
24
- vantage6/cli/node/files.py,sha256=ELpTvGKiPsfSH8kiYrnHfM4Fb8AES8uJF3L2sGQJ27c,1331
25
- vantage6/cli/node/list.py,sha256=b8ht09bvzVFiQx909r8zeTruCWC2uLyrNVeiipCjgAI,1707
26
- vantage6/cli/node/new.py,sha256=01sp9005TidvHA_awuaahBHV1-LImspStLTYhruek_A,1858
27
- vantage6/cli/node/remove.py,sha256=kLMK2Xsfgwrb3FuqRc9cKCadc8p0P3dLTLt9wN1_sBg,3564
28
- vantage6/cli/node/set_api_key.py,sha256=cJXWe1G5m2LTlyhBX85KFlCcL7voO-YNHUvhnsrwHhE,1796
29
- vantage6/cli/node/start.py,sha256=ojv2csH0PcqfoT9rZNJpmuGerqBN74Ypt5bta6caLic,12404
30
- vantage6/cli/node/stop.py,sha256=08SWafKBpCY_pnMopRkcIcHNaBoxqRHmlDSfQDzWjuQ,2704
31
- vantage6/cli/node/version.py,sha256=HD0iCf2VGZK8HVYfNcMpDAQdxYQ--5ff10XYCsX7Hf4,1843
32
- vantage6/cli/node/common/__init__.py,sha256=nUDpIehzfX9Zd3tL2Wa9nP5940SH27gcXGRiCHcxjrA,3166
33
- vantage6/cli/rabbitmq/__init__.py,sha256=0cuoLZ3V1199PKI-Ew37leZmh77SOAYa8CKMLUUBgBs,737
34
- vantage6/cli/rabbitmq/definitions.py,sha256=aGFdwxzi7R28uaDS60iW3a-JCkV2F5w_T3oede0kWds,536
35
- vantage6/cli/rabbitmq/queue_manager.py,sha256=CG2Lx5RCpf2AjzaCvj9vrwrqJOlWbEqf89auX2iuXcU,7613
36
- vantage6/cli/rabbitmq/rabbitmq.config,sha256=LYAQAEoXaF472XeJDYXc9JfWSETIzPRIR2W-JB2i7fU,136
37
- vantage6/cli/server/attach.py,sha256=TKibcEhqeMrTX3MQ5OkKlkqBs2pSSsZDh_yiaAoNOpw,1930
38
- vantage6/cli/server/files.py,sha256=owBO6lj_ucHY00MxJUOOdacz4NbdOqp-vrfkVrGjPUE,481
39
- vantage6/cli/server/import_.py,sha256=Up3IAK3c9jyFpr7y9_zl4HNViFj6jT9OLh_S6v6t5Hs,4611
40
- vantage6/cli/server/list.py,sha256=p5SRRGsz6G83Hc53eYoySWi32egm7jie_lo1gkS0NCk,1734
41
- vantage6/cli/server/new.py,sha256=ZHnjWlEKXOMdu6WYHDcrD62Qc2au-YuYIv2SW2KXS7M,1913
42
- vantage6/cli/server/remove.py,sha256=1Ogw2npPA9QsExVforzLe3dI3eTwxuBd9oasviX4Z_g,1182
43
- vantage6/cli/server/shell.py,sha256=SRw-CrD_ro9DRfqCI6IlifJk_UDr6EIke5ypN4-85yo,1384
44
- vantage6/cli/server/start.py,sha256=-qD1rB5dRXWLL13OVWFb4DwdshGF708bL19WOlO9uUo,10952
45
- vantage6/cli/server/stop.py,sha256=aEOqa2hYPLTGPkMBzFrFI4FLP0zMskjYD1vqzDyKEog,4005
46
- vantage6/cli/server/version.py,sha256=upvy6VdO3XGfovEW-2Ybc0c0niM2ieCOrz1SlsBrqkw,1743
47
- vantage6/cli/server/common/__init__.py,sha256=kUcDOfGuNvf8j7g5er9D_7z8IHRk53QBQ2E0NcZ_1iE,4818
48
- vantage6/cli/template/node_config.j2,sha256=ebTifJuRlfUhjtI8jm9A2SWXGpUcg8L-XUBInSwAppA,522
49
- vantage6/cli/template/server_config.j2,sha256=rKXMky8rA7Lnf5USlPx0Es9AskwmL4bILWfACPvygv4,394
50
- vantage6/cli/template/server_import_config.j2,sha256=PRB0ym_FYjx9vhkmY9C0xzlv_85Y5kBfWdUYs089bNQ,1844
51
- vantage6/cli/test/feature_tester.py,sha256=8MJGotRonEje6GVTkqOr5u1LbZi3W4A4gQnf5OYt-2I,2368
52
- vantage6/cli/test/integration_test.py,sha256=GpYG0uHoD1lVKwtSFk_QhdR1e_AYzKWIVPDI5CSwJ8o,3669
53
- vantage6/cli/test/common/diagnostic_runner.py,sha256=j6MWV0_dKZScYBwd--3_dv_JSeWyeUmp8T7E-7ZSjs8,6755
54
- vantage6-4.2.1.dist-info/METADATA,sha256=avZTkR4zvPMBuGWLJUc9ve0V56OlqeUbRxwYe9r6R2A,9758
55
- vantage6-4.2.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
56
- vantage6-4.2.1.dist-info/entry_points.txt,sha256=YFBvwjxoeAGxYyPC-YevEgOBBYRGaXkS6jiOGGCLNy0,157
57
- vantage6-4.2.1.dist-info/top_level.txt,sha256=CYDIBS8jEfFq5YCs_Fuit54K9-3wdosZppTrsymIoUk,19
58
- vantage6-4.2.1.dist-info/RECORD,,