pyegeria 0.7.26__py3-none-any.whl → 0.7.28__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.
@@ -12,93 +12,201 @@ This is an emerging capability based on the **click** package. Feedback welcome!
12
12
  import click
13
13
  from trogon import tui
14
14
 
15
- from examples.widgets.cat.get_project_structure import project_structure_viewer
16
- from examples.widgets.cat.get_project_dependencies import project_dependency_viewer
17
- from examples.widgets.cat.list_cert_types import display_certifications
18
15
  from examples.widgets.cat.get_asset_graph import asset_viewer
19
16
  from examples.widgets.cat.get_collection import collection_viewer
17
+ from examples.widgets.cat.get_project_dependencies import project_dependency_viewer
18
+ from examples.widgets.cat.get_project_structure import project_structure_viewer
20
19
  from examples.widgets.cat.get_tech_type_elements import tech_viewer
21
20
  from examples.widgets.cat.get_tech_type_template import template_viewer
22
21
  from examples.widgets.cat.list_assets import display_assets
22
+ from examples.widgets.cat.list_cert_types import display_certifications
23
23
  from examples.widgets.cat.list_glossary import display_glossary_terms
24
24
  from examples.widgets.cat.list_projects import display_project_list
25
+ from examples.widgets.cat.list_relationships import list_relationships
25
26
  from examples.widgets.cat.list_tech_types import display_tech_types
26
27
  from examples.widgets.cat.list_todos import display_to_dos as list_todos
27
- from examples.widgets.cli.ops_config import Config
28
- from examples.widgets.cat.list_relationships import list_relationships
29
28
  from examples.widgets.cat.list_user_ids import list_user_ids
30
-
31
- from examples.widgets.ops.engine_actions import start_daemon as start_engine_host, \
32
- stop_daemon as stop_engine_host
33
- from examples.widgets.ops.integration_daemon_actions import (add_catalog_target, remove_catalog_target,
34
- update_catalog_target, stop_server, start_server)
29
+ from examples.widgets.cli.ops_config import Config
30
+ from examples.widgets.my.list_my_profile import display_my_profile
31
+ from examples.widgets.my.list_my_roles import display_my_roles
32
+ from examples.widgets.my.monitor_my_todos import display_my_todos
33
+ from examples.widgets.my.monitor_open_todos import display_todos
34
+ from examples.widgets.ops.engine_actions import (
35
+ start_daemon as start_engine_host,
36
+ stop_daemon as stop_engine_host,
37
+ )
38
+ from examples.widgets.ops.integration_daemon_actions import (
39
+ add_catalog_target,
40
+ remove_catalog_target,
41
+ update_catalog_target,
42
+ stop_server,
43
+ start_server,
44
+ )
35
45
  from examples.widgets.ops.list_catalog_targets import display_catalog_targets
36
46
  from examples.widgets.ops.load_archive import load_archive
37
47
  from examples.widgets.ops.monitor_engine_activity import display_engine_activity
38
48
  from examples.widgets.ops.monitor_gov_eng_status import display_gov_eng_status
39
- from examples.widgets.ops.monitor_integ_daemon_status import display_integration_daemon_status
40
- from examples.widgets.ops.monitor_platform_status import display_status as p_display_status
49
+ from examples.widgets.ops.monitor_integ_daemon_status import (
50
+ display_integration_daemon_status,
51
+ )
52
+ from examples.widgets.ops.monitor_platform_status import (
53
+ display_status as p_display_status,
54
+ )
41
55
  from examples.widgets.ops.monitor_server_list import display_status as display_list
42
- from examples.widgets.ops.monitor_server_status import display_status as s_display_status
56
+ from examples.widgets.ops.monitor_server_status import (
57
+ display_status as s_display_status,
58
+ )
43
59
  from examples.widgets.ops.refresh_integration_daemon import refresh_connector
44
60
  from examples.widgets.ops.restart_integration_daemon import restart_connector
45
- from examples.widgets.my.list_my_profile import display_my_profile
46
- from examples.widgets.my.list_my_roles import display_my_roles
47
- from examples.widgets.my.monitor_my_todos import display_my_todos
48
- from examples.widgets.my.monitor_open_todos import display_todos
61
+ from examples.widgets.tech.get_element_info import display_elements
49
62
  from examples.widgets.tech.get_guid_info import display_guid
50
63
  from examples.widgets.tech.get_tech_details import tech_details_viewer
51
64
  from examples.widgets.tech.list_asset_types import display_asset_types
65
+ from examples.widgets.tech.list_elements import list_elements
52
66
  from examples.widgets.tech.list_registered_services import display_registered_svcs
67
+ from examples.widgets.tech.list_related_specification import (
68
+ display_related_specification,
69
+ )
53
70
  from examples.widgets.tech.list_relationship_types import display_relationship_types
54
71
  from examples.widgets.tech.list_tech_templates import display_templates_spec
55
72
  from examples.widgets.tech.list_valid_metadata_values import display_metadata_values
56
- from examples.widgets.tech.list_elements import list_elements
57
- from examples.widgets.tech.get_element_info import display_elements
58
- from examples.widgets.tech.list_related_specification import display_related_specification
59
73
 
60
74
 
61
75
  @tui()
62
76
  # @tui('menu', 'menu', 'A textual command line interface')
63
77
  @click.version_option("0.0.1", prog_name="egeria_ops")
64
78
  @click.group()
65
- @click.option('--server', default='active-metadata-store', envvar='EGERIA_METADATA_STORE',
66
- help='Egeria metadata store to work with')
67
- @click.option('--url', default='https://localhost:9443', envvar='EGERIA_PLATFORM_URL',
68
- help='URL of Egeria metadata store platform to connect to')
69
- @click.option('--integration-daemon', default='integration-daemon', envvar='EGERIA_INTEGRATION_DAEMON',
70
- help='Egeria integration daemon to work with')
71
- @click.option('--integration_daemon_url', default='https://localhost:9443', envvar='EGERIA_INTEGRATION_DAEMON_URL',
72
- help='URL of Egeria integration daemon platform to connect to')
73
- @click.option('--view_server', default='view-server', envvar='EGERIA_VIEW_SERVER',
74
- help='Egeria view server to work with')
75
- @click.option('--view_server_url', default='https://localhost:9443', envvar='EGERIA_VIEW_SERVER_URL',
76
- help='URL of Egeria view server platform to connect to')
77
- @click.option('--engine_host', default='engine-host', envvar='EGERIA_ENGINE_HOST',
78
- help='Egeria engine host to work with')
79
- @click.option('--engine_host_url', default='https://localhost:9443', envvar='EGERIA_ENGINE_HOST_URL',
80
- help='URL of Egeria engine host platform to connect to')
81
- @click.option('--admin_user', default='garygeeke', envvar='EGERIA_ADMIN_USER', help='Egeria admin user')
82
- @click.option('--admin_user_password', default='secret', envvar='EGERIA_ADMIN_PASSWORD',
83
- help='Egeria admin password')
84
- @click.option('--userid', default='erinoverview', envvar='EGERIA_USER', help='Egeria user')
85
- @click.option('--password', default='secret', envvar='EGERIA_PASSWORD',
86
- help='Egeria user password')
87
- @click.option('--timeout', default=60, help='Number of seconds to wait')
88
- @click.option('--verbose', is_flag=True, default=False, help='Enable verbose mode')
89
- @click.option('--paging', is_flag=True, default=False, help='Enable paging snapshots vs live updates')
90
- @click.option('--jupyter', is_flag=True, default=False, envvar='EGERIA_JUPYTER',
91
- help='Enable for rendering in a Jupyter terminal')
92
- @click.option('--width', default=200, envvar='EGERIA_WIDTH', help='Screen width, in characters, to use')
93
- @click.pass_context
94
- def cli(ctx, server, url, view_server, view_server_url, integration_daemon, integration_daemon_url,
95
- engine_host, engine_host_url, admin_user, admin_user_password, userid, password, timeout, paging,
96
- verbose, jupyter, width):
97
- """An Egeria Command Line interface for Operations """
98
- ctx.obj = Config(server, url, view_server, view_server_url, integration_daemon,
99
- integration_daemon_url, engine_host, engine_host_url,
100
- admin_user, admin_user_password, userid, password,
101
- timeout, paging, verbose, jupyter, width)
79
+ @click.option(
80
+ "--server",
81
+ default="active-metadata-store",
82
+ envvar="EGERIA_METADATA_STORE",
83
+ help="Egeria metadata store to work with",
84
+ )
85
+ @click.option(
86
+ "--url",
87
+ default="https://localhost:9443",
88
+ envvar="EGERIA_PLATFORM_URL",
89
+ help="URL of Egeria metadata store platform to connect to",
90
+ )
91
+ @click.option(
92
+ "--integration-daemon",
93
+ default="integration-daemon",
94
+ envvar="EGERIA_INTEGRATION_DAEMON",
95
+ help="Egeria integration daemon to work with",
96
+ )
97
+ @click.option(
98
+ "--integration_daemon_url",
99
+ default="https://localhost:9443",
100
+ envvar="EGERIA_INTEGRATION_DAEMON_URL",
101
+ help="URL of Egeria integration daemon platform to connect to",
102
+ )
103
+ @click.option(
104
+ "--view_server",
105
+ default="view-server",
106
+ envvar="EGERIA_VIEW_SERVER",
107
+ help="Egeria view server to work with",
108
+ )
109
+ @click.option(
110
+ "--view_server_url",
111
+ default="https://localhost:9443",
112
+ envvar="EGERIA_VIEW_SERVER_URL",
113
+ help="URL of Egeria view server platform to connect to",
114
+ )
115
+ @click.option(
116
+ "--engine_host",
117
+ default="engine-host",
118
+ envvar="EGERIA_ENGINE_HOST",
119
+ help="Egeria engine host to work with",
120
+ )
121
+ @click.option(
122
+ "--engine_host_url",
123
+ default="https://localhost:9443",
124
+ envvar="EGERIA_ENGINE_HOST_URL",
125
+ help="URL of Egeria engine host platform to connect to",
126
+ )
127
+ @click.option(
128
+ "--admin_user",
129
+ default="garygeeke",
130
+ envvar="EGERIA_ADMIN_USER",
131
+ help="Egeria admin user",
132
+ )
133
+ @click.option(
134
+ "--admin_user_password",
135
+ default="secret",
136
+ envvar="EGERIA_ADMIN_PASSWORD",
137
+ help="Egeria admin password",
138
+ )
139
+ @click.option(
140
+ "--userid", default="erinoverview", envvar="EGERIA_USER", help="Egeria user"
141
+ )
142
+ @click.option(
143
+ "--password",
144
+ default="secret",
145
+ envvar="EGERIA_PASSWORD",
146
+ help="Egeria user password",
147
+ )
148
+ @click.option("--timeout", default=60, help="Number of seconds to wait")
149
+ @click.option("--verbose", is_flag=True, default=False, help="Enable verbose mode")
150
+ @click.option(
151
+ "--paging",
152
+ is_flag=True,
153
+ default=False,
154
+ help="Enable paging snapshots vs live updates",
155
+ )
156
+ @click.option(
157
+ "--jupyter",
158
+ is_flag=True,
159
+ default=False,
160
+ envvar="EGERIA_JUPYTER",
161
+ help="Enable for rendering in a Jupyter terminal",
162
+ )
163
+ @click.option(
164
+ "--width",
165
+ default=200,
166
+ envvar="EGERIA_WIDTH",
167
+ help="Screen width, in characters, to use",
168
+ )
169
+ @click.pass_context
170
+ def cli(
171
+ ctx,
172
+ server,
173
+ url,
174
+ view_server,
175
+ view_server_url,
176
+ integration_daemon,
177
+ integration_daemon_url,
178
+ engine_host,
179
+ engine_host_url,
180
+ admin_user,
181
+ admin_user_password,
182
+ userid,
183
+ password,
184
+ timeout,
185
+ paging,
186
+ verbose,
187
+ jupyter,
188
+ width,
189
+ ):
190
+ """An Egeria Command Line interface for Operations"""
191
+ ctx.obj = Config(
192
+ server,
193
+ url,
194
+ view_server,
195
+ view_server_url,
196
+ integration_daemon,
197
+ integration_daemon_url,
198
+ engine_host,
199
+ engine_host_url,
200
+ admin_user,
201
+ admin_user_password,
202
+ userid,
203
+ password,
204
+ timeout,
205
+ paging,
206
+ verbose,
207
+ jupyter,
208
+ width,
209
+ )
102
210
  ctx.max_content_width = 200
103
211
  ctx.ensure_object(Config)
104
212
  if verbose:
@@ -108,7 +216,7 @@ def cli(ctx, server, url, view_server, view_server_url, integration_daemon, inte
108
216
  #
109
217
  # my: Show
110
218
  #
111
- @cli.group('my')
219
+ @cli.group("my")
112
220
  @click.pass_context
113
221
  def my(ctx):
114
222
  "Work with my information"
@@ -122,7 +230,7 @@ def show(ctx):
122
230
  pass
123
231
 
124
232
 
125
- @show.command('my-profile')
233
+ @show.command("my-profile")
126
234
  @click.pass_context
127
235
  def show_my_profile(ctx):
128
236
  """Display my profiles
@@ -131,11 +239,12 @@ def show_my_profile(ctx):
131
239
 
132
240
  """
133
241
  c = ctx.obj
134
- display_my_profile(c.view_server, c.view_server_url,
135
- c.userid, c.password, c.jupyter, c.width)
242
+ display_my_profile(
243
+ c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width
244
+ )
136
245
 
137
246
 
138
- @show.command('my-roles')
247
+ @show.command("my-roles")
139
248
  @click.pass_context
140
249
  def show_my_roles(ctx):
141
250
  """Display my profiles
@@ -144,11 +253,12 @@ def show_my_roles(ctx):
144
253
 
145
254
  """
146
255
  c = ctx.obj
147
- display_my_roles(c.view_server, c.view_server_url,
148
- c.userid, c.password, c.jupyter, c.width)
256
+ display_my_roles(
257
+ c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width
258
+ )
149
259
 
150
260
 
151
- @show.command('my-to-dos')
261
+ @show.command("my-to-dos")
152
262
  @click.pass_context
153
263
  def show_my_todos(ctx):
154
264
  """Show my To-Dos
@@ -157,11 +267,12 @@ def show_my_todos(ctx):
157
267
 
158
268
  """
159
269
  c = ctx.obj
160
- display_my_todos(c.view_server, c.view_server_url,
161
- c.userid, c.password, c.jupyter, c.width)
270
+ display_my_todos(
271
+ c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width
272
+ )
162
273
 
163
274
 
164
- @show.command('open-to-dos')
275
+ @show.command("open-to-dos")
165
276
  @click.pass_context
166
277
  def show_open_todos(ctx):
167
278
  """Display a live status view of Egeria servers for the specified Egeria platform
@@ -171,14 +282,17 @@ def show_open_todos(ctx):
171
282
  tech-name is a valid technology name (see 'show tech-types')
172
283
  """
173
284
  c = ctx.obj
174
- display_todos(c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
285
+ display_todos(
286
+ c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width
287
+ )
175
288
 
176
289
 
177
290
  #
178
291
  # my: Tell
179
292
  #
180
293
 
181
- @my.group('tell')
294
+
295
+ @my.group("tell")
182
296
  @click.pass_context
183
297
  def tell(ctx):
184
298
  """Perform actions an Egeria Objects"""
@@ -204,26 +318,40 @@ def show(ctx):
204
318
 
205
319
  @show.command("get-elements")
206
320
  @click.pass_context
207
- @click.option('--om_type', default='Project', help='Metadata type to query')
321
+ @click.option("--om_type", default="Project", help="Metadata type to query")
208
322
  def get_element_info(ctx, om_type):
209
323
  """Display the elements for an Open Metadata Type"""
210
324
  c = ctx.obj
211
- display_elements(om_type, c.view_server, c.view_server_url,
212
- c.userid, c.password, c.jupyter, c.width)
325
+ display_elements(
326
+ om_type,
327
+ c.view_server,
328
+ c.view_server_url,
329
+ c.userid,
330
+ c.password,
331
+ c.jupyter,
332
+ c.width,
333
+ )
334
+
213
335
 
214
336
  @show.command("list-elements")
215
337
  @click.pass_context
216
- @click.option('--om_type', default='Project', help='Metadata type to query')
338
+ @click.option("--om_type", default="Project", help="Metadata type to query")
217
339
  def list_element_info(ctx, om_type):
218
340
  """Display the elements for an Open Metadata Type"""
219
341
  c = ctx.obj
220
- list_elements(om_type, c.view_server, c.view_server_url,
221
- c.userid, c.password, c.jupyter, c.width)
222
-
223
-
224
-
225
- @show.command('guid-info')
226
- @click.argument('guid', nargs=1)
342
+ list_elements(
343
+ om_type,
344
+ c.view_server,
345
+ c.view_server_url,
346
+ c.userid,
347
+ c.password,
348
+ c.jupyter,
349
+ c.width,
350
+ )
351
+
352
+
353
+ @show.command("guid-info")
354
+ @click.argument("guid", nargs=1)
227
355
  @click.pass_context
228
356
  def show_guid_infos(ctx, guid):
229
357
  """Display a live status view of known platforms
@@ -232,12 +360,11 @@ def show_guid_infos(ctx, guid):
232
360
 
233
361
  """
234
362
  c = ctx.obj
235
- display_guid(guid, c.server, c.url,
236
- c.userid, c.password, c.jupyter, c.width)
363
+ display_guid(guid, c.server, c.url, c.userid, c.password, c.jupyter, c.width)
237
364
 
238
365
 
239
- @show.command('tech-types')
240
- @click.option('--search-string', default='*', help='Tech type to search for')
366
+ @show.command("tech-types")
367
+ @click.option("--search-string", default="*", help="Tech type to search for")
241
368
  @click.pass_context
242
369
  def show_tech_types(ctx, search_string):
243
370
  """List deployed technology types
@@ -249,12 +376,13 @@ def show_tech_types(ctx, search_string):
249
376
  """
250
377
 
251
378
  c = ctx.obj
252
- display_tech_types(search_string, c.view_server, c.view_server_url,
253
- c.userid, c.password)
379
+ display_tech_types(
380
+ search_string, c.view_server, c.view_server_url, c.userid, c.password
381
+ )
254
382
 
255
383
 
256
- @show.command('tech-details')
257
- @click.argument('tech-name')
384
+ @show.command("tech-details")
385
+ @click.argument("tech-name")
258
386
  @click.pass_context
259
387
  def show_tech_details(ctx, tech_name):
260
388
  """Display a live status view of Egeria servers for the specified Egeria platform
@@ -264,7 +392,15 @@ def show_tech_details(ctx, tech_name):
264
392
  tech-name is a valid technology name (see 'show tech-types')
265
393
  """
266
394
  c = ctx.obj
267
- tech_details_viewer(tech_name, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
395
+ tech_details_viewer(
396
+ tech_name,
397
+ c.view_server,
398
+ c.view_server_url,
399
+ c.userid,
400
+ c.password,
401
+ c.jupyter,
402
+ c.width,
403
+ )
268
404
 
269
405
 
270
406
  @show.command("asset-types")
@@ -272,82 +408,147 @@ def show_tech_details(ctx, tech_name):
272
408
  def show_asset_types(ctx):
273
409
  """Display engine-host status information"""
274
410
  c = ctx.obj
275
- display_asset_types(c.view_server, c.view_server_url,
276
- c.userid, c.password,
277
- c.jupyter, c.width)
278
-
279
-
280
- @show.command('registered-services')
281
- @click.option('--services',
282
- type=click.Choice(['all', 'access-services', 'common-services', 'engine-services',
283
- 'governance-services', 'integration-services', 'view-services'],
284
- case_sensitive=False), default='all', help='Which service group to display')
411
+ display_asset_types(
412
+ c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width
413
+ )
414
+
415
+
416
+ @show.command("registered-services")
417
+ @click.option(
418
+ "--services",
419
+ type=click.Choice(
420
+ [
421
+ "all",
422
+ "access-services",
423
+ "common-services",
424
+ "engine-services",
425
+ "governance-services",
426
+ "integration-services",
427
+ "view-services",
428
+ ],
429
+ case_sensitive=False,
430
+ ),
431
+ default="all",
432
+ help="Which service group to display",
433
+ )
285
434
  @click.pass_context
286
435
  def show_registered_services(ctx, services):
287
436
  """Show information about a registered services"""
288
437
  c = ctx.obj
289
- display_registered_svcs(services, c.view_server, c.view_server_url,
290
- c.userid, c.password, c.jupyter, c.width)
291
-
292
- @show.command('related-specifications')
438
+ display_registered_svcs(
439
+ services,
440
+ c.view_server,
441
+ c.view_server_url,
442
+ c.userid,
443
+ c.password,
444
+ c.jupyter,
445
+ c.width,
446
+ )
447
+
448
+
449
+ @show.command("related-specifications")
293
450
  @click.pass_context
294
- @click.argument('element-guid')
451
+ @click.argument("element-guid")
295
452
  def show_related_specifications(ctx, element_guid):
296
453
  """List specifications related to the given Element"""
297
454
  c = ctx.obj
298
- display_related_specification(element_guid, c.view_server, c.view_server_url,
299
- c.userid, c.password, c.jupyter, c.width)
300
-
301
-
302
-
303
-
304
- @show.command('relationship-types')
305
- @click.option('--rel-type', default='AssetOwner', help='Relationship type to get information about')
455
+ display_related_specification(
456
+ element_guid,
457
+ c.view_server,
458
+ c.view_server_url,
459
+ c.userid,
460
+ c.password,
461
+ c.jupyter,
462
+ c.width,
463
+ )
464
+
465
+
466
+ @show.command("relationship-types")
467
+ @click.option(
468
+ "--rel-type",
469
+ default="AssetOwner",
470
+ help="Relationship type to get information about",
471
+ )
306
472
  @click.pass_context
307
473
  def show_relationship_types(ctx, rel_type):
308
474
  """Show information about the specified relationship type"""
309
475
  c = ctx.obj
310
- display_relationship_types(rel_type, c.view_server, c.view_server_url,
311
-
312
- c.userid, c.password, False, c.jupyter, c.width)
476
+ display_relationship_types(
477
+ rel_type,
478
+ c.view_server,
479
+ c.view_server_url,
480
+ c.userid,
481
+ c.password,
482
+ False,
483
+ c.jupyter,
484
+ c.width,
485
+ )
313
486
 
314
487
 
315
488
  @show.command("tech-templates")
316
489
  @click.pass_context
317
- @click.option('--search-string', default='*', help='Technology type to get information about')
490
+ @click.option(
491
+ "--search-string", default="*", help="Technology type to get information about"
492
+ )
318
493
  def tech_templates(ctx, search_string):
319
494
  """Display template information about the specified technology."""
320
495
  c = ctx.obj
321
- template_viewer(search_string, c.view_server, c.view_server_url,
322
- c.userid, c.password, c.jupyter, c.width)
496
+ template_viewer(
497
+ search_string,
498
+ c.view_server,
499
+ c.view_server_url,
500
+ c.userid,
501
+ c.password,
502
+ c.jupyter,
503
+ c.width,
504
+ )
323
505
 
324
506
 
325
507
  @show.command("tech-template-spec")
326
508
  @click.pass_context
327
- @click.option('--search-string', default='*', help='Technology type to get information about')
509
+ @click.option(
510
+ "--search-string", default="*", help="Technology type to get information about"
511
+ )
328
512
  def tech_template_spec(ctx, search_string):
329
513
  """Display template specification information about the specified technology."""
330
514
  c = ctx.obj
331
- display_templates_spec(search_string, c.view_server, c.view_server_url,
332
- c.userid, c.password, c.jupyter, c.width)
515
+ display_templates_spec(
516
+ search_string,
517
+ c.view_server,
518
+ c.view_server_url,
519
+ c.userid,
520
+ c.password,
521
+ c.jupyter,
522
+ c.width,
523
+ )
333
524
 
334
525
 
335
526
  @show.command("valid-metadata-values")
336
527
  @click.pass_context
337
- @click.option('--property', default='projectHealth', help='Metadata property to query')
338
- @click.option('--type-name', default='Project', help='Metadata type to query')
528
+ @click.option("--property", default="projectHealth", help="Metadata property to query")
529
+ @click.option("--type-name", default="Project", help="Metadata type to query")
339
530
  def valid_metadata_values(ctx, property, type_name):
340
531
  """Display the valid metadata values for a property and type"""
341
532
  c = ctx.obj
342
- display_metadata_values(property, type_name, c.view_server, c.view_server_url,
343
- c.userid, c.password, False, c.jupyter, c.width)
533
+ display_metadata_values(
534
+ property,
535
+ type_name,
536
+ c.view_server,
537
+ c.view_server_url,
538
+ c.userid,
539
+ c.password,
540
+ False,
541
+ c.jupyter,
542
+ c.width,
543
+ )
344
544
 
345
545
 
346
546
  #
347
547
  # tech Users: Tell
348
548
  #
349
549
 
350
- @tech.group('tell')
550
+
551
+ @tech.group("tell")
351
552
  @click.pass_context
352
553
  def tell(ctx):
353
554
  """Perform actions an Egeria Objects"""
@@ -358,7 +559,8 @@ def tell(ctx):
358
559
  # Catalog User: Show
359
560
  #
360
561
 
361
- @cli.group('cat')
562
+
563
+ @cli.group("cat")
362
564
  @click.pass_context
363
565
  def cat(ctx):
364
566
  """Commands for the more tech user"""
@@ -372,82 +574,139 @@ def show(ctx):
372
574
  pass
373
575
 
374
576
 
375
- @show.command('tech-types')
376
- @click.option('--tech_type', default='*', help='Tech type to search for')
577
+ @show.command("tech-types")
578
+ @click.option("--tech_type", default="*", help="Tech type to search for")
377
579
  @click.pass_context
378
580
  def show_tech_types(ctx, tech_type):
379
581
  """List deployed technology types"""
380
582
  c = ctx.obj
381
- display_tech_types(tech_type, c.view_server, c.view_server_url,
382
- c.userid, c.password)
583
+ display_tech_types(
584
+ tech_type, c.view_server, c.view_server_url, c.userid, c.password
585
+ )
383
586
 
384
587
 
385
- @show.command('tech-type-elements')
386
- @click.option('--tech_type', default='PostgreSQL Server', help='Specific tech type to get elements for')
588
+ @show.command("tech-type-elements")
589
+ @click.option(
590
+ "--tech_type",
591
+ default="PostgreSQL Server",
592
+ help="Specific tech type to get elements for",
593
+ )
387
594
  @click.pass_context
388
595
  def show_tech_type_elements(ctx, tech_type):
389
596
  """List technology type elements"""
390
597
  c = ctx.obj
391
- tech_viewer(tech_type, c.view_server, c.view_server_url,
392
- c.userid, c.password)
598
+ tech_viewer(tech_type, c.view_server, c.view_server_url, c.userid, c.password)
393
599
 
394
600
 
395
- @show.command('tech-type-templates')
396
- @click.option('--tech-type', default='PostgreSQL Server', help='Specific tech type to get elements for')
601
+ @show.command("tech-type-templates")
602
+ @click.option(
603
+ "--tech-type",
604
+ default="PostgreSQL Server",
605
+ help="Specific tech type to get elements for",
606
+ )
397
607
  @click.pass_context
398
608
  def show_tech_type_templates(ctx, tech_type):
399
609
  """List technology type templates"""
400
610
  c = ctx.obj
401
- template_viewer(tech_type, c.view_server, c.view_server_url, c.userid,
402
- c.password, c.jupyter, c.width)
403
-
404
- @show.command('certification-types')
405
- @click.option('--search-string', default = 'CertificationType', help="")
611
+ template_viewer(
612
+ tech_type,
613
+ c.view_server,
614
+ c.view_server_url,
615
+ c.userid,
616
+ c.password,
617
+ c.jupyter,
618
+ c.width,
619
+ )
620
+
621
+
622
+ @show.command("certification-types")
623
+ @click.option("--search-string", default="CertificationType", help="")
406
624
  @click.pass_context
407
625
  def show_certification_types(ctx, search_string):
408
626
  """Show certification types
409
- - generally stay with the default..
627
+ - generally stay with the default..
410
628
  """
411
629
  c = ctx.obj
412
- display_certifications(search_string, c.view_server, c.view_server_url, c.userid,
413
- c.password, c.timeout, c.jupyter, c.width)
414
-
415
- @show.command('project-structure')
416
- @click.option('--project', default = 'Clinical Trials Management',
417
- help="Enter the root project to start from")
630
+ display_certifications(
631
+ search_string,
632
+ c.view_server,
633
+ c.view_server_url,
634
+ c.userid,
635
+ c.password,
636
+ c.timeout,
637
+ c.jupyter,
638
+ c.width,
639
+ )
640
+
641
+
642
+ @show.command("project-structure")
643
+ @click.option(
644
+ "--project",
645
+ default="Clinical Trials Management",
646
+ help="Enter the root project to start from",
647
+ )
418
648
  @click.pass_context
419
649
  def show_project_structure(ctx, project):
420
650
  """Show the organization structure of the project starting from a root project"""
421
651
  c = ctx.obj
422
- project_structure_viewer(project, c.view_server, c.view_server_url, c.userid,
423
- c.password, c.jupyter, c.width, c.timeout)
424
-
425
- @show.command('project-dependencies')
426
- @click.option('--project', default = 'Clinical Trials Management',
427
- help="Enter the root project to start from")
652
+ project_structure_viewer(
653
+ project,
654
+ c.view_server,
655
+ c.view_server_url,
656
+ c.userid,
657
+ c.password,
658
+ c.jupyter,
659
+ c.width,
660
+ c.timeout,
661
+ )
662
+
663
+
664
+ @show.command("project-dependencies")
665
+ @click.option(
666
+ "--project",
667
+ default="Clinical Trials Management",
668
+ help="Enter the root project to start from",
669
+ )
428
670
  @click.pass_context
429
671
  def show_project_dependencies(ctx, project):
430
672
  """Show the dependencies of a project starting from a root project"""
431
673
  c = ctx.obj
432
- project_dependency_viewer(project, c.view_server, c.view_server_url, c.userid,
433
- c.password, c.jupyter, c.width, c.timeout)
434
-
435
-
436
-
437
- @show.command('relationships')
438
- @click.option('--relationship', default = 'Certification',
439
- help="Relationship type name to search for.")
674
+ project_dependency_viewer(
675
+ project,
676
+ c.view_server,
677
+ c.view_server_url,
678
+ c.userid,
679
+ c.password,
680
+ c.jupyter,
681
+ c.width,
682
+ c.timeout,
683
+ )
684
+
685
+
686
+ @show.command("relationships")
687
+ @click.option(
688
+ "--relationship",
689
+ default="Certification",
690
+ help="Relationship type name to search for.",
691
+ )
440
692
  @click.pass_context
441
693
  def show_relationships(ctx, relationship):
442
694
  """Show the structure of the project starting from a root project"""
443
695
  c = ctx.obj
444
- list_relationships(relationship, c.view_server, c.view_server_url, c.userid,
445
- c.password, c.timeout, c.jupyter, c.width)
446
-
447
-
448
-
449
- @show.command('assets')
450
- @click.argument('search-string')
696
+ list_relationships(
697
+ relationship,
698
+ c.view_server,
699
+ c.view_server_url,
700
+ c.userid,
701
+ c.password,
702
+ c.timeout,
703
+ c.jupyter,
704
+ c.width,
705
+ )
706
+
707
+
708
+ @show.command("assets")
709
+ @click.argument("search-string")
451
710
  @click.pass_context
452
711
  def show_assets(ctx, search_string):
453
712
  """Find and display assets
@@ -457,24 +716,47 @@ def show_assets(ctx, search_string):
457
716
  search-string must be greater than four characters.
458
717
  """
459
718
  c = ctx.obj
460
- display_assets(search_string, c.view_server, c.view_server_url, c.userid,
461
- c.password, 60, c.jupyter, c.width)
462
-
463
-
464
- @show.command('glossary-terms')
465
- @click.option('--search-string', default='*',
466
- help='List glossary terms similar to search string - minimum of 4 characters')
467
- @click.option('--glossary_guid', default=None, help='Optionally restrict search to glossary with the specified guid')
719
+ display_assets(
720
+ search_string,
721
+ c.view_server,
722
+ c.view_server_url,
723
+ c.userid,
724
+ c.password,
725
+ 60,
726
+ c.jupyter,
727
+ c.width,
728
+ )
729
+
730
+
731
+ @show.command("glossary-terms")
732
+ @click.option(
733
+ "--search-string",
734
+ default="*",
735
+ help="List glossary terms similar to search string - minimum of 4 characters",
736
+ )
737
+ @click.option(
738
+ "--glossary_guid",
739
+ default=None,
740
+ help="Optionally restrict search to glossary with the specified guid",
741
+ )
468
742
  @click.pass_context
469
743
  def show_terms(ctx, search_string, glossary_guid):
470
744
  """Find and display glossary terms"""
471
745
  c = ctx.obj
472
- display_glossary_terms(search_string, glossary_guid, c.view_server, c.view_server_url, c.userid,
473
- c.password, c.jupyter, c.width)
474
-
475
-
476
- @show.command('asset-graph')
477
- @click.argument('asset_guid', nargs=1)
746
+ display_glossary_terms(
747
+ search_string,
748
+ glossary_guid,
749
+ c.view_server,
750
+ c.view_server_url,
751
+ c.userid,
752
+ c.password,
753
+ c.jupyter,
754
+ c.width,
755
+ )
756
+
757
+
758
+ @show.command("asset-graph")
759
+ @click.argument("asset_guid", nargs=1)
478
760
  @click.pass_context
479
761
  def show_asset_graph(ctx, asset_guid):
480
762
  """Display a tree graph of information about an asset
@@ -485,65 +767,107 @@ def show_asset_graph(ctx, asset_guid):
485
767
 
486
768
  """
487
769
  c = ctx.obj
488
- asset_viewer(asset_guid, c.view_server, c.view_server_url, c.userid,
489
- c.password, c.jupyter, c.width)
490
-
491
-
492
- @show.command('collection')
493
- @click.option('--root_collection', default='Root Sustainability Collection',
494
- help='View of tree of collections from a given root')
770
+ asset_viewer(
771
+ asset_guid,
772
+ c.view_server,
773
+ c.view_server_url,
774
+ c.userid,
775
+ c.password,
776
+ c.jupyter,
777
+ c.width,
778
+ )
779
+
780
+
781
+ @show.command("collection")
782
+ @click.option(
783
+ "--root_collection",
784
+ default="Root Sustainability Collection",
785
+ help="View of tree of collections from a given root",
786
+ )
495
787
  @click.pass_context
496
788
  def show_asset_graph(ctx, root_collection):
497
- """Display a tree graph of information about an asset """
789
+ """Display a tree graph of information about an asset"""
498
790
  c = ctx.obj
499
- collection_viewer(root_collection, c.view_server, c.view_server_url, c.userid,
500
- c.password, c.jupyter, c.width)
501
-
502
-
503
- @show.command('projects')
504
- @click.option('--search-string', default='*',
505
- help='List Projects by Search String')
791
+ collection_viewer(
792
+ root_collection,
793
+ c.view_server,
794
+ c.view_server_url,
795
+ c.userid,
796
+ c.password,
797
+ c.jupyter,
798
+ c.width,
799
+ )
800
+
801
+
802
+ @show.command("projects")
803
+ @click.option("--search-string", default="*", help="List Projects by Search String")
506
804
  @click.pass_context
507
805
  def show_projects(ctx, search_string):
508
- """Display a list of Egeria projects """
806
+ """Display a list of Egeria projects"""
509
807
  c = ctx.obj
510
- display_project_list(search_string, c.view_server, c.view_server_url, c.userid,
511
- c.password, False, c.jupyter, c.width)
512
-
513
-
514
- @show.command('to-dos')
515
- @click.option('--search-string', default='*',
516
- help='View the list of To-Do items')
517
- @click.option('--status', type=click.Choice(['OPEN','IN_PROGRESS','WAITING','COMPLETE', 'ABANDONED', 'None'],
518
- case_sensitive='False'), help = 'Enter an optional status filter', required=False, default=None)
808
+ display_project_list(
809
+ search_string,
810
+ c.view_server,
811
+ c.view_server_url,
812
+ c.userid,
813
+ c.password,
814
+ False,
815
+ c.jupyter,
816
+ c.width,
817
+ )
818
+
819
+
820
+ @show.command("to-dos")
821
+ @click.option("--search-string", default="*", help="View the list of To-Do items")
822
+ @click.option(
823
+ "--status",
824
+ type=click.Choice(
825
+ ["OPEN", "IN_PROGRESS", "WAITING", "COMPLETE", "ABANDONED", "None"],
826
+ case_sensitive="False",
827
+ ),
828
+ help="Enter an optional status filter",
829
+ required=False,
830
+ default=None,
831
+ )
519
832
  @click.pass_context
520
833
  def show_todos(ctx, search_string, status):
521
- """Display a tree graph of information about an asset """
834
+ """Display a tree graph of information about an asset"""
522
835
  c = ctx.obj
523
- list_todos(search_string, status, c.view_server, c.view_server_url, c.userid,
524
- c.password, c.jupyter, c.width)
525
-
526
- @show.command('user-ids')
836
+ list_todos(
837
+ search_string,
838
+ status,
839
+ c.view_server,
840
+ c.view_server_url,
841
+ c.userid,
842
+ c.password,
843
+ c.jupyter,
844
+ c.width,
845
+ )
846
+
847
+
848
+ @show.command("user-ids")
527
849
  @click.pass_context
528
850
  def show_todos(ctx):
529
- """Display a tree graph of information about an asset """
851
+ """Display a tree graph of information about an asset"""
530
852
  c = ctx.obj
531
- list_user_ids( c.view_server, c.view_server_url, c.userid,
532
- c.password, c.jupyter, c.width)
853
+ list_user_ids(
854
+ c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width
855
+ )
533
856
 
534
857
 
535
858
  #
536
859
  # Catalog User: Tell
537
860
  #
538
861
 
539
- @cat.group('tell')
862
+
863
+ @cat.group("tell")
540
864
  @click.pass_context
541
865
  def tell(ctx):
542
866
  """Perform actions an Egeria Objects"""
543
867
  pass
544
868
 
545
869
 
546
- @tell.group('survey')
870
+ @tell.group("survey")
547
871
  @click.pass_context
548
872
  def survey(ctx):
549
873
  """Refresh the specified integration connector or ALL connectors if not specified"""
@@ -551,10 +875,13 @@ def survey(ctx):
551
875
  pass
552
876
 
553
877
 
554
- @survey.command('survey-uc-server')
878
+ @survey.command("survey-uc-server")
555
879
  @click.pass_context
556
- @click.option('--uc_endpoint', default='https://localhost:8080',
557
- help="Endpoint of the Unity Catalog Server to Survey")
880
+ @click.option(
881
+ "--uc_endpoint",
882
+ default="https://localhost:8080",
883
+ help="Endpoint of the Unity Catalog Server to Survey",
884
+ )
558
885
  def survey_uc_server(ctx, uc_endpoint):
559
886
  """Survey the Unity Catalog server at the given endpoint"""
560
887
  c = ctx.obj
@@ -567,10 +894,11 @@ def survey_uc_server(ctx, uc_endpoint):
567
894
  # Operations: Show
568
895
  #
569
896
 
570
- @cli.group('ops')
897
+
898
+ @cli.group("ops")
571
899
  @click.pass_context
572
900
  def ops(ctx):
573
- """ Commands to understand and manage operations"""
901
+ """Commands to understand and manage operations"""
574
902
  pass
575
903
 
576
904
 
@@ -581,20 +909,21 @@ def show(ctx):
581
909
  pass
582
910
 
583
911
 
584
- @show.group('platforms')
912
+ @show.group("platforms")
585
913
  @click.pass_context
586
914
  def show_platform(ctx):
587
915
  """Group of commands to show information about Egeria platforms"""
588
916
  pass
589
917
 
590
918
 
591
- @show_platform.command('status')
919
+ @show_platform.command("status")
592
920
  @click.pass_context
593
921
  def show_platform_status(ctx):
594
922
  """Display a live status view of known platforms"""
595
923
  c = ctx.obj
596
- p_display_status(c.view_server, c.view_server_url,
597
- c.admin_user, c.admin_user_password)
924
+ p_display_status(
925
+ c.view_server, c.view_server_url, c.admin_user, c.admin_user_password
926
+ )
598
927
 
599
928
 
600
929
  @show.group("servers")
@@ -604,17 +933,35 @@ def show_server(ctx):
604
933
  pass
605
934
 
606
935
 
607
- @show_server.command('status')
608
- @click.option('--full', is_flag=True, default=False, help='If True, full server descriptions will be shown')
936
+ @show_server.command("status")
937
+ @click.option(
938
+ "--full",
939
+ is_flag=True,
940
+ default=False,
941
+ help="If True, full server descriptions will be shown",
942
+ )
609
943
  @click.pass_context
610
944
  def show_server_status(ctx, full):
611
945
  """Display a live status view of Egeria servers for the specified Egeria platform"""
612
946
  c = ctx.obj
613
947
  if full:
614
- display_list(c.metadata_store, c.metadata_store_url, c.admin_user, c.admin_user_password, c.jupyter, c.width)
948
+ display_list(
949
+ c.metadata_store,
950
+ c.metadata_store_url,
951
+ c.admin_user,
952
+ c.admin_user_password,
953
+ c.jupyter,
954
+ c.width,
955
+ )
615
956
  else:
616
- s_display_status(c.metadata_store, c.metadata_store_url, c.admin_user, c.admin_user_password, c.jupyter,
617
- c.width)
957
+ s_display_status(
958
+ c.metadata_store,
959
+ c.metadata_store_url,
960
+ c.admin_user,
961
+ c.admin_user_password,
962
+ c.jupyter,
963
+ c.width,
964
+ )
618
965
 
619
966
 
620
967
  @show.group("engines")
@@ -625,28 +972,38 @@ def engine_host(ctx):
625
972
 
626
973
 
627
974
  @engine_host.command("status")
628
- @click.option('--list', is_flag=True, default=False, help='If True, a paged list will be shown')
975
+ @click.option(
976
+ "--list", is_flag=True, default=False, help="If True, a paged list will be shown"
977
+ )
629
978
  @click.pass_context
630
979
  def gov_eng_status(ctx, list):
631
980
  """Display engine-host status information"""
632
981
  c = ctx.obj
633
- display_gov_eng_status(c.engine_host, c.engine_host_url,
634
- c.userid, c.password,
635
- list, c.jupyter, c.width)
982
+ display_gov_eng_status(
983
+ c.engine_host, c.engine_host_url, c.userid, c.password, list, c.jupyter, c.width
984
+ )
636
985
 
637
986
 
638
- @engine_host.command('activity')
639
- @click.option('--list', is_flag=True, default=False, help='If True, a paged list will be shown')
987
+ @engine_host.command("activity")
988
+ @click.option(
989
+ "--list", is_flag=True, default=False, help="If True, a paged list will be shown"
990
+ )
640
991
  @click.pass_context
641
992
  def eng_activity_status(ctx, list):
642
993
  """Show Governance Activity in engine-host"""
643
994
  c = ctx.obj
644
- display_engine_activity(c.view_server, c.view_server_url,
645
- c.admin_user, c.admin_user_password,
646
- list, c.jupyter, c.width)
647
-
648
-
649
- @show.group('integrations')
995
+ display_engine_activity(
996
+ c.view_server,
997
+ c.view_server_url,
998
+ c.admin_user,
999
+ c.admin_user_password,
1000
+ list,
1001
+ c.jupyter,
1002
+ c.width,
1003
+ )
1004
+
1005
+
1006
+ @show.group("integrations")
650
1007
  @click.pass_context
651
1008
  def integrations(ctx):
652
1009
  """Group of commands to show information about Egeria integrations"""
@@ -654,62 +1011,92 @@ def integrations(ctx):
654
1011
 
655
1012
 
656
1013
  @integrations.command("status")
657
- @click.option('--list', is_flag=True, default=False, help='If True, a paged list will be shown')
1014
+ @click.option(
1015
+ "--list", is_flag=True, default=False, help="If True, a paged list will be shown"
1016
+ )
1017
+ @click.option("--sorted", default=True, help="If True, the table will be sorted")
658
1018
  @click.pass_context
659
- def integrations_status(ctx, list):
1019
+ def integrations_status(ctx, list, sorted):
660
1020
  """Display integration-daemon status information"""
661
1021
  c = ctx.obj
662
- display_integration_daemon_status(c.integration_daemon, c.integration_daemon_url,
663
- c.view_server, c.view_server_url,
664
- c.userid, c.password, list, c.jupyter, c.width)
1022
+ display_integration_daemon_status(
1023
+ c.integration_daemon,
1024
+ c.integration_daemon_url,
1025
+ c.view_server,
1026
+ c.view_server_url,
1027
+ c.userid,
1028
+ c.password,
1029
+ list,
1030
+ c.jupyter,
1031
+ c.width,
1032
+ sorted,
1033
+ )
665
1034
 
666
1035
 
667
1036
  @integrations.command("targets")
668
1037
  @click.pass_context
669
- @click.argument('connector', nargs=1)
1038
+ @click.argument("connector", nargs=1)
670
1039
  def integrations_status(ctx, connector):
671
1040
  """Display Catalog Targets for a connector"""
672
1041
  c = ctx.obj
673
- display_catalog_targets(connector, c.view_server, c.view_server_url,
674
- c.userid, c.password, c.jupyter, c.width)
1042
+ display_catalog_targets(
1043
+ connector,
1044
+ c.view_server,
1045
+ c.view_server_url,
1046
+ c.userid,
1047
+ c.password,
1048
+ c.jupyter,
1049
+ c.width,
1050
+ )
675
1051
 
676
1052
 
677
1053
  #
678
1054
  # Operations: Tell
679
1055
  #
680
1056
 
681
- @ops.group('tell')
1057
+
1058
+ @ops.group("tell")
682
1059
  @click.pass_context
683
1060
  def tell(ctx):
684
1061
  """Perform actions an Egeria Objects"""
685
1062
  pass
686
1063
 
687
1064
 
688
- @tell.group('integration-daemon')
1065
+ @tell.group("integration-daemon")
689
1066
  @click.pass_context
690
1067
  def integration_daemon(ctx):
691
1068
  """Group of commands to an integration-daemon"""
692
1069
  pass
693
1070
 
694
1071
 
695
- @integration_daemon.command('refresh')
1072
+ @integration_daemon.command("refresh")
696
1073
  @click.pass_context
697
- @click.option('--connector', default='all', help="Name of connector to refresh or 'all' to refresh all")
1074
+ @click.option(
1075
+ "--connector",
1076
+ default="all",
1077
+ help="Name of connector to refresh or 'all' to refresh all",
1078
+ )
698
1079
  def refresh_connectors(ctx, connector):
699
1080
  """Refresh the specified integration connector or ALL connectors if not specified"""
700
1081
  c = ctx.obj
701
- refresh_connector(connector, c.integration_daemon, c.integration_daemon_url,
702
- c.userid, c.password)
1082
+ refresh_connector(
1083
+ connector, c.integration_daemon, c.integration_daemon_url, c.userid, c.password
1084
+ )
703
1085
 
704
1086
 
705
- @integration_daemon.command('restart')
1087
+ @integration_daemon.command("restart")
706
1088
  @click.pass_context
707
- @click.option('--connector', default='all', help="Name of connector to restart or 'all' to restart all")
1089
+ @click.option(
1090
+ "--connector",
1091
+ default="all",
1092
+ help="Name of connector to restart or 'all' to restart all",
1093
+ )
708
1094
  def restart_connectors(ctx, connector):
709
1095
  """Restart the specified integration connector or ALL connectors if not specified"""
710
1096
  c = ctx.obj
711
- restart_connector(connector, c.integration_daemon, c.integration_daemon_url,
712
- c.userid, c.password)
1097
+ restart_connector(
1098
+ connector, c.integration_daemon, c.integration_daemon_url, c.userid, c.password
1099
+ )
713
1100
 
714
1101
 
715
1102
  integration_daemon.add_command(add_catalog_target)
@@ -719,7 +1106,7 @@ integration_daemon.add_command(stop_server)
719
1106
  integration_daemon.add_command(start_server)
720
1107
 
721
1108
 
722
- @tell.group('engine-host')
1109
+ @tell.group("engine-host")
723
1110
  @click.pass_context
724
1111
  def engine_host(ctx):
725
1112
  """Group of commands to an engine-host"""
@@ -729,13 +1116,15 @@ def engine_host(ctx):
729
1116
  engine_host.add_command(start_engine_host)
730
1117
  engine_host.add_command(stop_engine_host)
731
1118
 
732
- @tell.group('repository')
1119
+
1120
+ @tell.group("repository")
733
1121
  @click.pass_context
734
1122
  def repository(ctx):
735
1123
  """Group of commands to a repository"""
736
1124
  pass
737
1125
 
1126
+
738
1127
  repository.add_command(load_archive)
739
1128
 
740
- if __name__ == '__main__':
1129
+ if __name__ == "__main__":
741
1130
  cli()