kaqing 2.0.48__py3-none-any.whl → 2.0.50__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.
adam/batch.py CHANGED
@@ -5,7 +5,7 @@ from adam.commands.check import Check, CheckCommandHelper
5
5
  from adam.commands.cp import ClipboardCopy, CopyCommandHelper
6
6
  from adam.commands.command import Command
7
7
  from adam.commands.command_helpers import ClusterCommandHelper, ClusterOrPodCommandHelper, PodCommandHelper
8
- from adam.commands.cqlsh import CqlCommandHelper, Cqlsh
8
+ from adam.commands.cql.cqlsh import CqlCommandHelper, Cqlsh
9
9
  from adam.commands.deploy.deploy import Deploy, DeployCommandHelper
10
10
  from adam.commands.deploy.undeploy import Undeploy, UndeployCommandHelper
11
11
  from adam.commands.describe.describe import Describe, DescribeCommandHelper
@@ -1,5 +1,5 @@
1
1
  from adam.commands.command import Command
2
- from adam.commands.cql_utils import tables as get_tables, run_cql
2
+ from adam.commands.cql.cql_utils import tables as get_tables, run_cql
3
3
  from adam.config import Config
4
4
  from adam.pod_exec_result import PodExecResult
5
5
  from adam.repl_state import ReplState, RequiredState
File without changes
@@ -0,0 +1,13 @@
1
+ from adam.commands.cql.cql_table_completer import CqlTableNameCompleter
2
+ from adam.commands.cql.cql_utils import table_names
3
+ from adam.repl_state import ReplState
4
+ from adam.sql.sql_completer import SqlCompleter
5
+
6
+ def cql_completions(state: ReplState) -> dict[str, any]:
7
+ table_name_completer = CqlTableNameCompleter(table_names(state))
8
+ return {
9
+ 'describe': {
10
+ 'keyspaces': None,
11
+ 'table': table_name_completer,
12
+ 'tables': None},
13
+ } | SqlCompleter.completions(table_name_completer)
@@ -0,0 +1,16 @@
1
+ from adam.sql.table_name_completer import NestedDict, TableNameCompleter
2
+
3
+ class CqlTableNameCompleter(TableNameCompleter):
4
+ def __init__(self, tables: list[str], nested_dict: NestedDict = {}, ignore_case: bool = True):
5
+ self._tables = tables
6
+ self.ignore_case = ignore_case
7
+ self.append_nested_dict(nested_dict)
8
+
9
+ def __repr__(self) -> str:
10
+ return "CqlTableCompleter(%r)" % (len(self._tables))
11
+
12
+ def nested(self, data: NestedDict) -> 'TableNameCompleter':
13
+ return CqlTableNameCompleter(self._tables).append_nested_dict(data)
14
+
15
+ def tables(self) -> list[str]:
16
+ return self._tables
@@ -2,7 +2,8 @@ import click
2
2
 
3
3
  from adam.commands.command import Command
4
4
  from adam.commands.command_helpers import ClusterOrPodCommandHelper
5
- from adam.commands.cql_utils import run_cql, table_names, tables
5
+ from adam.commands.cql.cql_completions import cql_completions
6
+ from .cql_utils import run_cql, table_names
6
7
  from adam.repl_state import ReplState, RequiredState
7
8
  from adam.utils import log, log2
8
9
 
@@ -53,21 +54,12 @@ class Cqlsh(Command):
53
54
  return run_cql(state, cql, opts, show_out=True)
54
55
 
55
56
  def completion(self, state: ReplState) -> dict[str, any]:
57
+ if state.device != state.C:
58
+ # conflicts with psql completions
59
+ return {}
60
+
56
61
  if state.sts or state.pod:
57
- ts = table_names(state)
58
- return {Cqlsh.COMMAND: None} | {
59
- 'delete': {'from': {t: {'where': {'id': {'=': None}}} for t in ts}},
60
- 'insert': {'into': {t: {'values': None} for t in ts}},
61
- 'select': {'*': {'from': {t: {
62
- 'limit': {'1': None},
63
- 'where': {'id': {'=': None}}
64
- } for t in ts}}},
65
- 'update': {t: {'set': None} for t in ts},
66
- 'describe': {
67
- 'keyspaces': None,
68
- 'table': {t: None for t in ts},
69
- 'tables': None},
70
- }
62
+ return {Cqlsh.COMMAND: None} | cql_completions(state)
71
63
 
72
64
  return {}
73
65
 
@@ -1,5 +1,5 @@
1
1
  from adam.commands.command import Command
2
- from adam.commands.cql_utils import keyspaces, run_cql
2
+ from adam.commands.cql.cql_utils import keyspaces, run_cql
3
3
  from adam.pod_exec_result import PodExecResult
4
4
  from adam.repl_state import ReplState, RequiredState
5
5
  from adam.utils import log2
@@ -1,5 +1,5 @@
1
1
  from adam.commands.command import Command
2
- from adam.commands.cql_utils import run_cql
2
+ from adam.commands.cql.cql_utils import run_cql
3
3
  from adam.pod_exec_result import PodExecResult
4
4
  from adam.repl_state import ReplState, RequiredState
5
5
  from adam.utils import log2
@@ -1,5 +1,5 @@
1
1
  from adam.commands.command import Command
2
- from adam.commands.cql_utils import run_cql, table_names
2
+ from adam.commands.cql.cql_utils import run_cql, table_names
3
3
  from adam.pod_exec_result import PodExecResult
4
4
  from adam.repl_state import ReplState, RequiredState
5
5
  from adam.utils import log2
@@ -1,5 +1,5 @@
1
1
  from adam.commands.command import Command
2
- from adam.commands.cql_utils import run_cql
2
+ from adam.commands.cql.cql_utils import run_cql
3
3
  from adam.pod_exec_result import PodExecResult
4
4
  from adam.repl_state import ReplState, RequiredState
5
5
  from adam.utils import log2
adam/commands/ls.py CHANGED
@@ -2,7 +2,7 @@ import copy
2
2
 
3
3
  from adam.commands.command import Command
4
4
  from adam.commands.commands_utils import show_pods, show_rollout
5
- from adam.commands.cqlsh import Cqlsh
5
+ from adam.commands.cql.cqlsh import Cqlsh
6
6
  from adam.commands.postgres.postgres_utils import pg_database_names, pg_table_names
7
7
  from adam.commands.postgres.postgres_session import PostgresSession
8
8
  from adam.config import Config
@@ -59,8 +59,7 @@ class MedusaRestore(Command):
59
59
  now_dtformat = datetime.now().strftime("%Y-%m-%d.%H.%M.%S")
60
60
  rtname = 'medusa-' + now_dtformat + '-restore-from-' + bkname
61
61
  try:
62
- print('SEAN doing')
63
- # CustomResources.create_medusa_restorejob(rtname, bkname, dc, ns)
62
+ CustomResources.create_medusa_restorejob(rtname, bkname, dc, ns)
64
63
  except Exception as e:
65
64
  log2("Exception: MedusaRestore failed: %s\n" % e)
66
65
 
@@ -1,7 +1,7 @@
1
1
  import click
2
2
 
3
3
  from adam.commands.command import Command
4
- from adam.commands.postgres.pg_completions import pg_completions
4
+ from adam.commands.postgres.psql_completions import psql_completions
5
5
  from adam.commands.postgres.postgres_utils import pg_table_names
6
6
  from .postgres_ls import PostgresLs
7
7
  from .postgres_preview import PostgresPreview
@@ -65,11 +65,15 @@ class Postgres(Command):
65
65
  PostgresSession(state.namespace, state.pg_path).run_sql(' '.join(args))
66
66
 
67
67
  def completion(self, state: ReplState):
68
+ if state.device != state.P:
69
+ # conflicts with cql completions
70
+ return {}
71
+
68
72
  leaf = {}
69
73
  session = PostgresSession(state.namespace, state.pg_path)
70
74
  if session.db:
71
75
  if pg_table_names(state.namespace, state.pg_path):
72
- leaf = pg_completions(state.namespace, state.pg_path)
76
+ leaf = psql_completions(state.namespace, state.pg_path)
73
77
  elif state.pg_path:
74
78
  leaf = {
75
79
  '\h': None,
@@ -0,0 +1,11 @@
1
+ from adam.commands.postgres.psql_table_completer import PsqlTableNameCompleter
2
+ from adam.sql.sql_completer import SqlCompleter
3
+
4
+ def psql_completions(ns: str, pg_path: str):
5
+ return {
6
+ '\h': None,
7
+ '\d': None,
8
+ '\dt': None,
9
+ '\du': None
10
+ } | SqlCompleter.completions(PsqlTableNameCompleter(ns, pg_path))
11
+ # } | PsqlTableCompleter(ns, pg_path).completions()
@@ -0,0 +1,18 @@
1
+ from adam.commands.postgres.postgres_utils import pg_table_names
2
+ from adam.sql.table_name_completer import NestedDict, TableNameCompleter
3
+
4
+ class PsqlTableNameCompleter(TableNameCompleter):
5
+ def __init__(self, namespace: str, pg_path: str, nested_dict: NestedDict = {}, ignore_case: bool = True):
6
+ self.namespace = namespace
7
+ self.pg_path = pg_path
8
+ self.ignore_case = ignore_case
9
+ self.append_nested_dict(nested_dict)
10
+
11
+ def __repr__(self) -> str:
12
+ return "PsqlTableCompleter(%r, pg_path=%r)" % (self.namespace, self.pg_path)
13
+
14
+ def nested(self, data: NestedDict) -> 'TableNameCompleter':
15
+ return PsqlTableNameCompleter(self.namespace, self.pg_path).append_nested_dict(data)
16
+
17
+ def tables(self) -> list[str]:
18
+ return pg_table_names(self.namespace, self.pg_path)
@@ -1,8 +1,9 @@
1
1
  import functools
2
2
 
3
3
  from adam.commands.command import Command
4
- from adam.commands.cql_utils import run_cql, tables
5
- from adam.commands.postgres.pg_table_completer import PgTableCompleter
4
+ from adam.commands.cql.cql_table_completer import CqlTableNameCompleter
5
+ from adam.commands.cql.cql_utils import run_cql, table_names, tables
6
+ from adam.commands.postgres.psql_table_completer import PsqlTableNameCompleter
6
7
  from adam.commands.postgres.postgres_session import PostgresSession
7
8
  from adam.config import Config
8
9
  from adam.repl_state import ReplState, RequiredState
@@ -72,11 +73,9 @@ class PreviewTable(Command):
72
73
 
73
74
  def completion(self, state: ReplState):
74
75
  if state.device == ReplState.P:
75
- # return {PreviewTable.COMMAND: {f'<pg_tables:{state.namespace}:{state.pg_path}>': None}}
76
- return {PreviewTable.COMMAND: PgTableCompleter(state.namespace, state.pg_path)}
76
+ return {PreviewTable.COMMAND: PsqlTableNameCompleter(state.namespace, state.pg_path)}
77
77
  elif state.sts:
78
- tables = PreviewTable.cql_tables(state)
79
- return {PreviewTable.COMMAND: {f'{k}.{t}': None for k, ts in tables.items() for t in ts}}
78
+ return {PreviewTable.COMMAND: CqlTableNameCompleter(table_names(state))}
80
79
 
81
80
  return {}
82
81
 
adam/repl.py CHANGED
@@ -18,6 +18,7 @@ from adam.log import Log
18
18
  from adam.repl_commands import ReplCommands
19
19
  from adam.repl_session import ReplSession
20
20
  from adam.repl_state import ReplState
21
+ from adam.sql.sql_completer import SqlCompleter
21
22
  from adam.utils import deep_merge_dicts, deep_sort_dict, lines_to_tabular, log2
22
23
  from adam.apps import Apps
23
24
  from . import __version__
@@ -108,7 +109,7 @@ def enter_repl(state: ReplState):
108
109
  log2(f'Timing auto-completion-calc {cmd.command()}: {time.time() - s1:.2f}')
109
110
 
110
111
  # print(json.dumps(completions, indent=4))
111
- completer = NestedCompleter.from_nested_dict(completions)
112
+ completer = SqlCompleter.from_nested_dict(completions)
112
113
 
113
114
  cmd = session.prompt(prompt_msg(), completer=completer, key_bindings=kb)
114
115
  s0 = time.time()
adam/repl_commands.py CHANGED
@@ -23,7 +23,7 @@ from adam.commands.bash import Bash
23
23
  from adam.commands.cd import Cd
24
24
  from adam.commands.check import Check
25
25
  from adam.commands.command import Command
26
- from adam.commands.cqlsh import Cqlsh
26
+ from adam.commands.cql.cqlsh import Cqlsh
27
27
  from adam.commands.devices import DeviceApp, DeviceCass, DevicePostgres
28
28
  from adam.commands.exit import Exit
29
29
  from adam.commands.medusa.medusa import Medusa
adam/sql/__init__.py ADDED
File without changes
@@ -2,24 +2,17 @@ from typing import Any, Dict, Iterable, Mapping, Optional, Set, Union
2
2
  from prompt_toolkit.completion import CompleteEvent, Completer, Completion, NestedCompleter, WordCompleter
3
3
  from prompt_toolkit.document import Document
4
4
 
5
- from adam.commands.postgres.postgres_utils import pg_table_names
5
+ from adam.sql.sql_utils import safe_terms
6
6
 
7
7
  NestedDict = Mapping[str, Union[Any, Set[str], None, Completer]]
8
8
 
9
- class PgTableCompleter(Completer):
10
- def __init__(self, namespace: str, pg_path: str, nested_dict: NestedDict = {}, ignore_case: bool = True):
11
- self.namespace = namespace
12
- self.pg_path = pg_path
9
+ class AnyCompleter(Completer):
10
+ def __init__(self, default: str = None, nested_dict: NestedDict = {}, ignore_case: bool = True):
11
+ self.default = default
13
12
  self.ignore_case = ignore_case
14
13
  self.append_nested_dict(nested_dict)
15
14
 
16
- def __repr__(self) -> str:
17
- return "PgTableCompleter(%r, pg_path=%r)" % (self.namespace, self.pg_path)
18
-
19
- def nested(self, data: NestedDict):
20
- return PgTableCompleter(self.namespace, self.pg_path).append_nested_dict(data)
21
-
22
- def append_nested_dict(self, data: NestedDict) -> "PgTableCompleter":
15
+ def append_nested_dict(self, data: NestedDict) -> "AnyCompleter":
23
16
  options: Dict[str, Optional[Completer]] = {}
24
17
  for key, value in data.items():
25
18
  if isinstance(value, Completer):
@@ -42,18 +35,18 @@ class PgTableCompleter(Completer):
42
35
  text = document.text_before_cursor.lstrip()
43
36
  stripped_len = len(document.text_before_cursor) - len(text)
44
37
 
45
- if " " in text:
38
+ terms, has_space = safe_terms(text)
39
+ if has_space:
46
40
  second_term = None
47
- tokens = text.split()
48
- if len(tokens) > 1:
49
- second_term = tokens[1]
41
+ if len(terms) > 1:
42
+ second_term = terms[1]
50
43
 
51
44
  yielded = False
52
45
  if second_term:
53
46
  completer = self.options.get(second_term)
54
47
 
55
48
  if completer is not None:
56
- first_term = tokens[0]
49
+ first_term = terms[0]
57
50
  remaining_text = text[len(first_term) :].lstrip()
58
51
  move_cursor = len(text) - len(remaining_text) + stripped_len
59
52
 
@@ -75,9 +68,17 @@ class PgTableCompleter(Completer):
75
68
  )
76
69
  for c in completer.get_completions(document, complete_event):
77
70
  yield c
78
- else:
79
- completer = WordCompleter(
80
- list(pg_table_names(self.namespace, self.pg_path)), ignore_case=self.ignore_case
81
- )
82
- for c in completer.get_completions(document, complete_event):
83
- yield c
71
+ elif words := self.words():
72
+ for c in words.get_completions(document, complete_event):
73
+ yield c
74
+
75
+ def words(self):
76
+ if not self.default:
77
+ return None
78
+
79
+ return WordCompleter(
80
+ [self.default], ignore_case=self.ignore_case
81
+ )
82
+
83
+ def nested(self, data: NestedDict) -> 'AnyCompleter':
84
+ return AnyCompleter(self.default).append_nested_dict(data)
@@ -0,0 +1,53 @@
1
+ from typing import Dict, Iterable, Optional
2
+ from prompt_toolkit.completion import CompleteEvent, Completer, Completion, NestedCompleter, WordCompleter
3
+ from prompt_toolkit.document import Document
4
+
5
+ from adam.sql.any_completer import AnyCompleter as any
6
+ from adam.sql.sql_utils import safe_terms
7
+ from adam.sql.table_name_completer import TableNameCompleter
8
+
9
+ class SqlCompleter(NestedCompleter):
10
+ def __init__(
11
+ self, options: Dict[str, Optional[Completer]], ignore_case: bool = True
12
+ ) -> None:
13
+ super().__init__(options, ignore_case)
14
+
15
+ def get_completions(
16
+ self, document: Document, complete_event: CompleteEvent
17
+ ) -> Iterable[Completion]:
18
+ text = document.text_before_cursor.lstrip()
19
+ stripped_len = len(document.text_before_cursor) - len(text)
20
+
21
+ terms, has_space = safe_terms(text)
22
+ if has_space:
23
+ first_term = terms[0]
24
+ completer = self.options.get(first_term)
25
+
26
+ if completer is not None:
27
+ remaining_text = text[len(first_term) :].lstrip()
28
+ move_cursor = len(text) - len(remaining_text) + stripped_len
29
+
30
+ new_document = Document(
31
+ remaining_text,
32
+ cursor_position=document.cursor_position - move_cursor,
33
+ )
34
+
35
+ for c in completer.get_completions(new_document, complete_event):
36
+ yield c
37
+ else:
38
+ completer = WordCompleter(
39
+ list(self.options.keys()), ignore_case=self.ignore_case
40
+ )
41
+ for c in completer.get_completions(document, complete_event):
42
+ yield c
43
+
44
+ def completions(table: TableNameCompleter):
45
+ return {
46
+ 'delete': {'from': table.nested({'where': any('id').nested({'=': any("'id'")})})},
47
+ 'insert': {'into': table.nested({'values(': None})},
48
+ 'select': any('*').nested({'from': table.nested({
49
+ 'limit': any('1'),
50
+ 'where': any('id').nested({'=': any("'id'").nested({'limit': any('1')})})
51
+ })}),
52
+ 'update': table.nested({'set': {'column': {'=': None}}}),
53
+ }
adam/sql/sql_utils.py ADDED
@@ -0,0 +1,5 @@
1
+ import re
2
+
3
+ def safe_terms(text: str):
4
+ tokens = re.findall(r'"[^"]+"|\b\w+\b|\S', text)
5
+ return tokens, len(tokens) > 1 or text.startswith(' ') or text.endswith(' ')
@@ -0,0 +1,17 @@
1
+ from abc import abstractmethod
2
+ from prompt_toolkit.completion import WordCompleter
3
+
4
+ from .any_completer import AnyCompleter, NestedDict
5
+
6
+ class TableNameCompleter(AnyCompleter):
7
+ def __init__(self, nested_dict: NestedDict = {}, ignore_case: bool = True):
8
+ super().__init__(nested_dict=nested_dict, ignore_case=ignore_case)
9
+
10
+ def words(self):
11
+ return WordCompleter(
12
+ self.tables(), ignore_case=self.ignore_case
13
+ )
14
+
15
+ @abstractmethod
16
+ def tables(self) -> list[str]:
17
+ pass
adam/version.py CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
- __version__ = "2.0.48" #: the working version
4
+ __version__ = "2.0.50" #: the working version
5
5
  __release__ = "1.0.0" #: the release version
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kaqing
3
- Version: 2.0.48
3
+ Version: 2.0.50
4
4
  Summary: UNKNOWN
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -1,7 +1,7 @@
1
1
  adam/__init__.py,sha256=oVw1FNd9HZPJ7wm6BNn5ybyNGJLjJ8kopMeBiwgMaOI,59
2
2
  adam/app_session.py,sha256=Klypm4JYHOlovaRCHAZ2P_Mj_nheMlcQgX403R0TJGk,6969
3
3
  adam/apps.py,sha256=UTpUJBAMRFvR8kJZwileGC0UmPvsOjJ_AgvWoGmnIFI,6701
4
- adam/batch.py,sha256=zUVW9PeOIybXY8sJksJfOlEEkeikBsu5PrukAhnGcgc,24503
4
+ adam/batch.py,sha256=F2FmdYj9bgNAIwT_L9ugafVCBj7j45IHNtbzF3b3zjg,24507
5
5
  adam/cli.py,sha256=03pIZdomAu7IL-GSP6Eun_PKwwISShRAmfx6eVRPGC0,458
6
6
  adam/cli_group.py,sha256=W3zy1BghCtVcEXizq8fBH-93ZRVVwgAyGPzy0sHno1Y,593
7
7
  adam/config.py,sha256=hDxd86MbKVVKoHhTT077L3YRKYcr0i6xVADLlnoE684,2818
@@ -9,12 +9,12 @@ adam/embedded_apps.py,sha256=lKPx63mKzJbNmwz0rgL4gF76M9fDGxraYTtNAIGnZ_s,419
9
9
  adam/embedded_params.py,sha256=_9tBKpkSzBfzm-s3tUgZs8DcSVBnPA1iumG0ZRCbZIs,4586
10
10
  adam/log.py,sha256=gg5DK52wLPc9cjykeh0WFHyAk1qI3HEpGaAK8W2dzXY,1146
11
11
  adam/pod_exec_result.py,sha256=nq0xnCNOpUGBSijGF0H-YNrwBc9vUQs4DkvLMIFS5LQ,951
12
- adam/repl.py,sha256=X9ga1iZFIXADQxBXvztFyVNBrfBRxiFLxTUYkm11img,7328
13
- adam/repl_commands.py,sha256=aH7xxbsQGrpL9Ozk9QF54iToK6wbDT3Pu9rMyw9sDBY,4719
12
+ adam/repl.py,sha256=ACIBgqitFt5z6lKFSeF4JOXbnCa3seZHWxFiMJ5Q9zw,7373
13
+ adam/repl_commands.py,sha256=WA90Rl27Juctzr3U3kfCDk5N-oYMKlfWbZeafUgk7k0,4723
14
14
  adam/repl_session.py,sha256=uIogcvWBh7wd8QQ-p_JgLsyJ8YJgINw5vOd6JIsd7Vo,472
15
15
  adam/repl_state.py,sha256=591d7gV6uQSFtm7IWdlIYAHjfAzs9bdvIkwlIAeKddE,7540
16
16
  adam/utils.py,sha256=2DoWsrcaioFFH0-RjT30qelVRPUJqCGTfz_ucfE7F8g,7406
17
- adam/version.py,sha256=9Kcgme2wMsEUv7PtuqbSWgv9AerCTt2iKa01qp9aono,139
17
+ adam/version.py,sha256=LFuTm_lavjxHMfAJnqFwLX9zL3RVjQ6n-Au9M0IztXo,139
18
18
  adam/checks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  adam/checks/check.py,sha256=Qopr3huYcMu2bzQgb99dEUYjFzkjKHRI76S6KA9b9Rk,702
20
20
  adam/checks/check_context.py,sha256=FEHkQ32jY1EDopQ2uYWqy9v7aEEX1orLpJWhopwAlh4,402
@@ -47,7 +47,7 @@ adam/columns/pod_name.py,sha256=IYw0ZKA7Fb9LaGXENqzZTiTgL98tahwFRtfy0KkKh2Q,280
47
47
  adam/columns/volume_cassandra.py,sha256=9KRNOzjNYganI9avN6zaA5_-7yxD4rV-KNxro9CSUg4,753
48
48
  adam/columns/volume_root.py,sha256=29ujLoCAf9LO75u62LxEaPD58s6ihV-tcK17OeLSOM0,556
49
49
  adam/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- adam/commands/alter_tables.py,sha256=Y5cWg0Ow93rIDusbHgxQcC7sSB64LmULTlDxPLybiVM,3578
50
+ adam/commands/alter_tables.py,sha256=Q5vXHE4_1_6v6wtYwqST7_QwpXINb1xq0Sm448Z2Y7Q,3582
51
51
  adam/commands/app.py,sha256=7alV8wK801t67_rUe6EmhtHJTl-6K7fGCm6Uz1dDgpM,1963
52
52
  adam/commands/app_ping.py,sha256=Xk7cfefphXM2w-UvpnhNUTZ3BU38f0deehUb2FEyLCI,1337
53
53
  adam/commands/bash.py,sha256=1O9cCl9JHQdttqNAgdB44rO0NjCqHzHv4psAEQMJcjw,2714
@@ -58,26 +58,29 @@ adam/commands/command.py,sha256=Ph7IduCTGQ04dcwNegl1ekYbqCzOwAOYeWZVIRWnKyU,3958
58
58
  adam/commands/command_helpers.py,sha256=leOJJK1UXczNTJHN9TGMCbIpUpmpreULvQ-TvnsYS7w,1134
59
59
  adam/commands/commands_utils.py,sha256=ShUcxtDSd9B3NM0GDj3NBvKdmjCGY8qXgeUJpzNF63E,3122
60
60
  adam/commands/cp.py,sha256=dyQViRDPNqsKRkxPb7WyEVIBNw7YB6IfYa2q3VtfzyA,3107
61
- adam/commands/cql_utils.py,sha256=q5hzAUVh7h8iVVH2s0M4E76zWqaMUDXULMn412mfHII,3893
62
- adam/commands/cqlsh.py,sha256=PknA1I13E4L6leSq6TC3fsyJw_bugo6376q0FE0Ufz0,3088
63
61
  adam/commands/devices.py,sha256=_f8j6aQzTL8_pFlWYawRuG2Ju1zPjYSPcRIlLnZng10,2397
64
62
  adam/commands/exit.py,sha256=5MWUAmzYBlsrp0CoiTDB13SUkX9Ya18UlGeOIPia6TA,798
65
63
  adam/commands/help.py,sha256=Ey3R1X8w_CMhdADI0t8dSQ28euhDHheJm7NermiGni4,1645
66
64
  adam/commands/issues.py,sha256=VS-PC7e-2lywsa-lbmoUX8IY77OPGzFudwbw1g8XmQc,2599
67
65
  adam/commands/login.py,sha256=bj95WWIF7mJDJhnyS9T8xvaZUGL37dj7GlH8TgmODbk,1877
68
66
  adam/commands/logs.py,sha256=T-O9DYXmWEm4G1I5SM6MwyeRwq2aT-WMqNW0XA2MWmo,1165
69
- adam/commands/ls.py,sha256=X_dSitiwMsKh6wi5P6OdF50a5eUCFv_-Huem7Qzff_s,5572
67
+ adam/commands/ls.py,sha256=ZOhY_vEjOEbvI5n8c9ha-SqmJwK2b7sF94G1gDoQ5Y0,5576
70
68
  adam/commands/nodetool.py,sha256=HV9yDzMhRjS4lw6UfV7Hc1pcmeSx5a1jU6cAEKSZ1Bg,2334
71
69
  adam/commands/nodetool_commands.py,sha256=5IgWC3rmeDD1cgwqQjiiWzi-wJpJ3n_8pAzz_9phXuk,2635
72
70
  adam/commands/param_get.py,sha256=kPAAppK2T0tEFRnSIVFLDPIIGHhgLA7drJhn8TRyvvE,1305
73
71
  adam/commands/param_set.py,sha256=QDIuqfU80aWCB16OK49yf7XRaRTWwiLkwMsJuVikq9I,1271
74
- adam/commands/preview_table.py,sha256=6h6GfyRIsMH1h9isV4rgMOhq704K20soqt_dM1tDdec,3136
72
+ adam/commands/preview_table.py,sha256=EJZms-8sXqwDDNjix92z2tpU9823-WKv6y-Z3A7ucao,3068
75
73
  adam/commands/pwd.py,sha256=VlgFjxFl66I7Df1YI6cuiEeY6Q13lEavMKfrzHLESKo,2340
76
74
  adam/commands/report.py,sha256=Ky45LIzSlB_X4V12JZWjU3SA2u4_FKRencRTq7psOWU,1944
77
75
  adam/commands/restart.py,sha256=Hik1t5rjH2ATZv4tzwrGB3e44b3dNuATgY327_Nb8Bs,2044
78
76
  adam/commands/rollout.py,sha256=52_4ijna3v-8Oug12et43DRHFDNhiN34p6xLTQmhdbQ,2959
79
77
  adam/commands/shell.py,sha256=wY_PIx7Lt6vuxhFArlfxdEnBbrouCJ3yNHhFn17DEqw,848
80
78
  adam/commands/watch.py,sha256=mmBFpB8T1V7zrNs5b2YNyDDztMym_ILPDdkrbdAXTas,2438
79
+ adam/commands/cql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
+ adam/commands/cql/cql_completions.py,sha256=BfaBlLMBdSSbuYmuyVMhOcJ7IgELvYKJroq4qOjoZWc,529
81
+ adam/commands/cql/cql_table_completer.py,sha256=ktTXC_Ii8NhxRbvUebc_Rg__Z7v2faQJBt3mR-5LPoI,633
82
+ adam/commands/cql/cql_utils.py,sha256=q5hzAUVh7h8iVVH2s0M4E76zWqaMUDXULMn412mfHII,3893
83
+ adam/commands/cql/cqlsh.py,sha256=qEQufaDVi9FXkvruum6OHQDfLX01DVWVDnWsAjyCZYQ,2661
81
84
  adam/commands/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
85
  adam/commands/deploy/code_start.py,sha256=-iH8HThTNM83IfBxT_LqTByuHVatV9d-Il4OYOfrwLI,1370
83
86
  adam/commands/deploy/code_stop.py,sha256=ch7ZMgosvTHsGaIcDwQY5XYh_5HYrUjBkZFOI-d2gOU,1696
@@ -93,24 +96,24 @@ adam/commands/deploy/undeploy_pg_agent.py,sha256=RYME8no1FT94WpVg-HXDGL1NmLlpE1I
93
96
  adam/commands/deploy/undeploy_pod.py,sha256=hTcL8cAh7xYPcSm9sgiVFCxPh3SskefBfTmla310oUA,1905
94
97
  adam/commands/describe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
98
  adam/commands/describe/describe.py,sha256=isRQ1z3lrFtaSkeWPndLGvaIbZivlBxI8D1X8ywNe1E,1510
96
- adam/commands/describe/describe_keyspace.py,sha256=CdgDBMlOngp_P5dK4QbqmqEGVZfhrRcFyISSrXoXoa4,1927
97
- adam/commands/describe/describe_keyspaces.py,sha256=O6ZY3q7H3-fNDEHf_qjgfTQmdYPXExAZh1M1COPJbnM,1574
98
- adam/commands/describe/describe_table.py,sha256=HL9Bufqj60R7GqqfhMvNgb6-eGPpOOf_okHoNT-2B9s,1883
99
- adam/commands/describe/describe_tables.py,sha256=2EtkLavSTNy-JHtegR9qUoVYs2NPmAz1Tq-yc-hKzZY,1553
99
+ adam/commands/describe/describe_keyspace.py,sha256=ug2xqddB-2VST8PdlEIc_tLE-8dqe2GMQk30t68ymm0,1931
100
+ adam/commands/describe/describe_keyspaces.py,sha256=P3AbUIxm-KiuM98DjK7I2MGjj8bjZwOm5qN1-Y4tHzA,1578
101
+ adam/commands/describe/describe_table.py,sha256=k4cbVkHkpCuFD3grne58sDPFZFG7e21DWtxAg2b_uUw,1887
102
+ adam/commands/describe/describe_tables.py,sha256=vIs4lKz4nHBJumOlR4wBhR1QxXTFqzXCq-DNOO04CVE,1557
100
103
  adam/commands/medusa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
104
  adam/commands/medusa/medusa.py,sha256=KNFjStvilIuOJt3wTtcWmKvdm8FdCnrDY2ltEWbratk,1402
102
105
  adam/commands/medusa/medusa_backup.py,sha256=j4DTVWFT-4rzs4gG_pBvjE-JuPsVCJIsnyQjIzJ4EbA,1801
103
- adam/commands/medusa/medusa_restore.py,sha256=MU47bmozrjfGJ6GVkj_OVgLH6Uz_fGh03MdLR4ZDKHE,3308
106
+ adam/commands/medusa/medusa_restore.py,sha256=GSjwsZYCqRA-XmJ1f6VELzX9cKXh5NDwxyBoGEiqUXY,3274
104
107
  adam/commands/medusa/medusa_show_backupjobs.py,sha256=QekHpKezVJdgfa9hOxfgyx-y4D08tmHzyu_AAa8QPR0,1756
105
108
  adam/commands/medusa/medusa_show_restorejobs.py,sha256=wgPonSmC6buDIp3k3WUY-Yu2MyP1xyE3Q_XhvAwpnx4,1651
106
109
  adam/commands/postgres/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
- adam/commands/postgres/pg_completions.py,sha256=hhFKpGt4fCkicAAwlCX8n7pe6N8Wau_nhmL3TJqPQcM,669
108
- adam/commands/postgres/pg_table_completer.py,sha256=QVypmCrKpxebPDpPpQC_NqS97M6c5ChXcFqPVzokTkQ,3330
109
- adam/commands/postgres/postgres.py,sha256=cwMzevef1Vo06zNTl74T2f4Lpv5aG006M0EsSGg5CMM,3032
110
+ adam/commands/postgres/postgres.py,sha256=TiJwXGa4faPZ7DI8698SwgjnUXsIaVgG-R_-eXVPhwk,3142
110
111
  adam/commands/postgres/postgres_ls.py,sha256=HwZTgwGKXUqHX33S8aQPF6FqCrLqtoz4cLyJV2SpoE0,1186
111
112
  adam/commands/postgres/postgres_preview.py,sha256=MLzdEc4mvNj6V1Q8jO5OPznXyYELJHgd35_eQgLlNIU,1274
112
113
  adam/commands/postgres/postgres_session.py,sha256=RcqkCgtA78M-9LKTwG6pp8n9JwjmURXgf1FknIIPl9g,9305
113
114
  adam/commands/postgres/postgres_utils.py,sha256=mC5PZXrfxzqZt6n_HYASwe6Y-OyAK3QwEtDeVb_TKrA,877
115
+ adam/commands/postgres/psql_completions.py,sha256=huEvqYTjBk_3CY_Tu1dDeUlaNwPIMLagnv9QuSWCB5U,392
116
+ adam/commands/postgres/psql_table_completer.py,sha256=8-4flf-PEtQGOSjTdA_93ht1EoZGZ4-dAbrXtyVblS4,819
114
117
  adam/commands/reaper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
118
  adam/commands/reaper/reaper.py,sha256=83R0ZRitEwaYKKssfKxn3zAzLnWIP9QKd1mA6awceS8,1908
116
119
  adam/commands/reaper/reaper_forward.py,sha256=mUp409MzT91cVXGxoPfBGceaR3qZ0rVdWKGdyzPNzSA,3177
@@ -160,6 +163,11 @@ adam/k8s_utils/service_accounts.py,sha256=v2oQSqCrNvt2uRnKlNwR3fjtpUG7oF5nqgzEB7
160
163
  adam/k8s_utils/services.py,sha256=EOJJGACVbbRvu5T3rMKqIJqgYic1_MSJ17EA0TJ6UOk,3156
161
164
  adam/k8s_utils/statefulsets.py,sha256=hiBOmJZ3KTI6_naAFzNoW1NoYnnBG35BZ7RMdPhNC6o,4664
162
165
  adam/k8s_utils/volumes.py,sha256=RIBmlOSWM3V3QVXLCFT0owVOyh4rGG1ETp521a-6ndo,1137
166
+ adam/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
+ adam/sql/any_completer.py,sha256=hPnhqAyWIk1-gyZsna1X7AJ8po23cYR-MvYY-7iBn3w,3184
168
+ adam/sql/sql_completer.py,sha256=9JSZj-Rv5aag720xuQLgq9WlseLtPEAcQXx6OH-pFP8,2160
169
+ adam/sql/sql_utils.py,sha256=MLoxB9h22WZiANu0SZzmBJcY2gtb6f_D4jnoJEjLgPc,171
170
+ adam/sql/table_name_completer.py,sha256=n_vJbsfM4XYN0tCjov1l-4skFYO3xaLcyOVcZ77mteo,519
163
171
  adam/sso/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
172
  adam/sso/authenticator.py,sha256=BCm16L9zf5aLU47-sTCnudn2zLPwd8M2wwRminJfsqw,615
165
173
  adam/sso/authn_ad.py,sha256=fDW8UR3WWykny5Awa5dQjjBUSFzIDz4aMn-lwXoABl8,5857
@@ -170,8 +178,8 @@ adam/sso/idp.py,sha256=fvcwUw_URTgsO6ySaqTIw0zQT2qRO1IPSGhf6rPtybo,5804
170
178
  adam/sso/idp_login.py,sha256=QAtCUeDTVWliJy40RK_oac8Vgybr13xH8wzeBoxPaa8,1754
171
179
  adam/sso/idp_session.py,sha256=9BUHNRf70u4rVKrVY1HKPOEmOviXvkjam8WJxmXSKIM,1735
172
180
  adam/sso/sso_config.py,sha256=5N8WZgIJQBtHUy585XLRWKjpU87_v6QluyNK9E27D5s,2459
173
- kaqing-2.0.48.dist-info/METADATA,sha256=ha7O1U8FB_TzVM5vFZaDfP6pSTHUwStWwfzZ8CCkma8,132
174
- kaqing-2.0.48.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
175
- kaqing-2.0.48.dist-info/entry_points.txt,sha256=SkzhuQJUWsXOzHeZ5TgQ2c3_g53UGK23zzJU_JTZOZI,39
176
- kaqing-2.0.48.dist-info/top_level.txt,sha256=8_2PZkwBb-xDcnc8a2rAbQeJhXKXskc7zTP7pSPa1fw,5
177
- kaqing-2.0.48.dist-info/RECORD,,
181
+ kaqing-2.0.50.dist-info/METADATA,sha256=6cRmIvrJppOAGCWN23OkycCXqvwVuUh8CMOcImdjjxs,132
182
+ kaqing-2.0.50.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
183
+ kaqing-2.0.50.dist-info/entry_points.txt,sha256=SkzhuQJUWsXOzHeZ5TgQ2c3_g53UGK23zzJU_JTZOZI,39
184
+ kaqing-2.0.50.dist-info/top_level.txt,sha256=8_2PZkwBb-xDcnc8a2rAbQeJhXKXskc7zTP7pSPa1fw,5
185
+ kaqing-2.0.50.dist-info/RECORD,,
@@ -1,17 +0,0 @@
1
- from adam.commands.postgres.pg_table_completer import PgTableCompleter
2
-
3
- def pg_completions(ns: str, pg_path: str):
4
- table = PgTableCompleter(ns, pg_path)
5
- return {
6
- '\h': None,
7
- '\d': None,
8
- '\dt': None,
9
- '\du': None,
10
- 'delete': {'from': table.nested({'where': {'id': {'=': {"'id'": None}}}})},
11
- 'insert': {'into': table.nested({'values(': None})},
12
- 'select': {'*': {'from': table.nested({
13
- 'limit': {'1': {'where': {'id': {'=': {"'id'": None}}}}},
14
- 'where': {'id': {'=': {"'id'": {'limit': {'1': None}}}}}
15
- })}},
16
- 'update': table.nested({'set': {'column': {'=': None}}}),
17
- }
File without changes