kaqing 2.0.69__py3-none-any.whl → 2.0.70__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/sql/sql_completer.py CHANGED
@@ -194,10 +194,10 @@ class SqlCompleter(Completer):
194
194
  'select_a_comma_ > name|* > select_a ^ *',
195
195
  'select_a_ > from > select_from ^ from',
196
196
  'select_from_ > name > select_from_x ^ (select,tables',
197
- '- > ( > select_from_x_lp_',
197
+ '- > { > select_from_x_lp_',
198
198
  'select_from_x_lp_ > select > select',
199
199
  'select_from_x > , > select_from_x_comma_',
200
- '- > ) > select_from_x_rp_',
200
+ '- > } > select_from_x_rp_',
201
201
  'select_from_x_rp__ > as > select_from_x_as ^ as',
202
202
  'select_from_x_comma_ > name > select_from_x ^ tables',
203
203
  'select_from_x_ ^ as,where,inner join,left outer join,right outer join,full outer join,group by,limit',
@@ -219,6 +219,7 @@ class SqlCompleter(Completer):
219
219
  '- > full outer join > select_join',
220
220
  'select_from_x_as_ > name > select_from_x_as_x ^ x,y,z',
221
221
  'select_from_x_as_x > , > select_from_x_as_x_comma_',
222
+ '- > } > select_where_sc_re_',
222
223
  'select_from_x_as_x_comma_ > name > select_from_x ^ tables',
223
224
  'select_where_ > name > select_where_a ^ id,x.,y.,z.',
224
225
  'select_where_a > comparison > select_where_a_op ^ =,<,<=,>,>=,<>,like,not,in',
@@ -237,11 +238,15 @@ class SqlCompleter(Completer):
237
238
  'select_where_a_not_op > name|single|num > select_where_sc ^ single',
238
239
  'select_where_a_op > name|single|num > select_where_sc ^ single',
239
240
  'select_where_sc > ) > select_where_sc_rp_',
240
- 'select_where_sc_rp__ > as > select_from_x_as ^ as,and,or,group by,limit',
241
+ 'select_where_sc > } > select_where_sc_re_',
242
+ 'select_where_sc_re__ > as > select_from_x_as ^ as',
243
+ 'select_where_sc_rp_ > } > select_where_sc_re_',
244
+ 'select_where_sc_rp__ > as > select_from_x_as ^ and,or,group by,limit',
241
245
  '- > and|or > select_where',
242
246
  '- > group > select_group',
243
247
  '- > group by > select_group_by',
244
248
  '- > limit > select_where_sc_limit',
249
+ '- > } > select_where_sc_re_',
245
250
  'select_where_sc_ > and|or > select_where ^ and,or,group by,limit',
246
251
  '- > group > select_group',
247
252
  '- > group by > select_group_by',
@@ -249,6 +254,7 @@ class SqlCompleter(Completer):
249
254
  'select_group_ > by > select_group_by ^ by',
250
255
  'select_group_by_ > name > select_group_by_a ^ id,x.,y.,z.',
251
256
  'select_group_by_a > , > select_group_by_a_comma_',
257
+ '- > } > select_where_sc_re_',
252
258
  'select_group_by_a_comma_ > name > select_group_by_a ^ id,x.,y.,z.',
253
259
  'select_group_by_a_ > limit > select_where_sc_limit ^ limit',
254
260
  'select_where_sc_limit_ > num > select_where_sc_limit_num ^ 1',
@@ -273,6 +279,7 @@ class SqlCompleter(Completer):
273
279
  'select_x_join_y_on_a > comparison > select_x_join_y_on_a_op ^ =',
274
280
  'select_x_join_y_on_a_op > name > select_x_join_y_on_a_op_b ^ id,x.,y.,z.',
275
281
  'select_x_join_y_on_a_op_b > _ > select_from_x_as_x_',
282
+ '- > } > select_where_sc_re_',
276
283
 
277
284
 
278
285
  ' > insert > insert',
@@ -396,7 +403,7 @@ class SqlCompleter(Completer):
396
403
 
397
404
  return (machine, completers)
398
405
 
399
- def traverse_tokens(self, text: str, tokens: list[Token], state: str = '', indent=0):
406
+ def traverse_tokens(self, text: str, tokens: list[Token], state: str = '', indent=0, lp_level = 0, lp_levels_to_match: set = set()):
400
407
  keywords = [
401
408
  'select', 'from', 'as', 'not', 'in', 'where',
402
409
  'and', 'or', 'group', 'by', 'group by', 'limit',
@@ -410,6 +417,20 @@ class SqlCompleter(Completer):
410
417
  'delete'
411
418
  ]
412
419
 
420
+ def is_opening_embrace():
421
+ if f'{state} > ' + '{' in self.machine[0]:
422
+ lp_levels_to_match.add(lp_level)
423
+ return '{'
424
+
425
+ return '('
426
+
427
+ def is_closing_embrace():
428
+ if f'{state} > ' + '}' in self.machine[0] and lp_level in lp_levels_to_match:
429
+ lp_levels_to_match.remove(lp_level)
430
+ return '}'
431
+
432
+ return ')'
433
+
413
434
  for token in tokens:
414
435
  if self.debug:
415
436
  if token.ttype == T.Whitespace:
@@ -426,7 +447,7 @@ class SqlCompleter(Completer):
426
447
  # print(" " * indent + f"Token: {token.value}, Type: {token.ttype}@{token.ttype.__class__}")
427
448
 
428
449
  if token.is_group:
429
- state = self.traverse_tokens(text, token.tokens, state, indent + 1)
450
+ state = self.traverse_tokens(text, token.tokens, state, indent + 1, lp_level)
430
451
  else:
431
452
  it = ''
432
453
  if (t := token.value.lower()) in keywords:
@@ -445,9 +466,12 @@ class SqlCompleter(Completer):
445
466
  if token.value == ',':
446
467
  it = ','
447
468
  elif token.value == '(':
448
- it = '('
469
+ it = is_opening_embrace()
470
+ lp_level += 1
449
471
  elif token.value == ')':
450
- it = ')'
472
+ lp_level -= 1
473
+ it = is_closing_embrace()
474
+
451
475
  elif token.ttype == T.Operator.Comparison:
452
476
  it = 'comparison'
453
477
 
@@ -1,6 +1,6 @@
1
1
  from typing import Callable, Iterable, List, Mapping, Optional, Pattern, Union
2
2
 
3
- from prompt_toolkit.completion import CompleteEvent, Completer, Completion, WordCompleter
3
+ from prompt_toolkit.completion import CompleteEvent, Completion, WordCompleter
4
4
  from prompt_toolkit.document import Document
5
5
  from prompt_toolkit.formatted_text import AnyFormattedText
6
6
 
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.69" #: the working version
4
+ __version__ = "2.0.70" #: 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.69
3
+ Version: 2.0.70
4
4
  Summary: UNKNOWN
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -14,7 +14,7 @@ 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=nZO5CucSIGz68f4JreadGphRzMXPUzkTn-4XcoJJOug,8643
16
16
  adam/utils.py,sha256=2DoWsrcaioFFH0-RjT30qelVRPUJqCGTfz_ucfE7F8g,7406
17
- adam/version.py,sha256=G1LibaC6-GU37K8gWnRtUEl_L0viqrYb3vkddzPDJZc,139
17
+ adam/version.py,sha256=yckbK4TX1cs1x8SSakRP16TVFCz-kWBTek3kfgTkIHA,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
@@ -164,8 +164,8 @@ adam/k8s_utils/services.py,sha256=EOJJGACVbbRvu5T3rMKqIJqgYic1_MSJ17EA0TJ6UOk,31
164
164
  adam/k8s_utils/statefulsets.py,sha256=5g7KxGRHgEewT8rnZneDTaJDylUf-dHH2edWJEoorr8,4667
165
165
  adam/k8s_utils/volumes.py,sha256=RIBmlOSWM3V3QVXLCFT0owVOyh4rGG1ETp521a-6ndo,1137
166
166
  adam/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
- adam/sql/sql_completer.py,sha256=iK_Qi5QEllTbUOJLXLitGUqYNj1z26S0mEkkGHduY9M,25491
168
- adam/sql/term_completer.py,sha256=17fuRyW2Uk-CoKySAh0S_UEzRQu9a-NxWII8jQnpAPU,2550
167
+ adam/sql/sql_completer.py,sha256=VQfSPgNenkzIPKdER2p7NkU-82yyM-TDiSPHs_NkSJA,26705
168
+ adam/sql/term_completer.py,sha256=bNnHAVf9NZl52xS_BQpikbOK39gDBJADnT9gSvG0iqI,2539
169
169
  adam/sso/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
170
170
  adam/sso/authenticator.py,sha256=BCm16L9zf5aLU47-sTCnudn2zLPwd8M2wwRminJfsqw,615
171
171
  adam/sso/authn_ad.py,sha256=fDW8UR3WWykny5Awa5dQjjBUSFzIDz4aMn-lwXoABl8,5857
@@ -176,8 +176,8 @@ adam/sso/idp.py,sha256=fvcwUw_URTgsO6ySaqTIw0zQT2qRO1IPSGhf6rPtybo,5804
176
176
  adam/sso/idp_login.py,sha256=QAtCUeDTVWliJy40RK_oac8Vgybr13xH8wzeBoxPaa8,1754
177
177
  adam/sso/idp_session.py,sha256=9BUHNRf70u4rVKrVY1HKPOEmOviXvkjam8WJxmXSKIM,1735
178
178
  adam/sso/sso_config.py,sha256=5N8WZgIJQBtHUy585XLRWKjpU87_v6QluyNK9E27D5s,2459
179
- kaqing-2.0.69.dist-info/METADATA,sha256=0bqiR5tLzH3vrHCRw303aCPDaIxsyZDFix2w0jb_28U,132
180
- kaqing-2.0.69.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
181
- kaqing-2.0.69.dist-info/entry_points.txt,sha256=SkzhuQJUWsXOzHeZ5TgQ2c3_g53UGK23zzJU_JTZOZI,39
182
- kaqing-2.0.69.dist-info/top_level.txt,sha256=8_2PZkwBb-xDcnc8a2rAbQeJhXKXskc7zTP7pSPa1fw,5
183
- kaqing-2.0.69.dist-info/RECORD,,
179
+ kaqing-2.0.70.dist-info/METADATA,sha256=CXfFNyxJYztdM8ZE6MW7MSPJ6LmxM63_fNGPBAH4THU,132
180
+ kaqing-2.0.70.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
181
+ kaqing-2.0.70.dist-info/entry_points.txt,sha256=SkzhuQJUWsXOzHeZ5TgQ2c3_g53UGK23zzJU_JTZOZI,39
182
+ kaqing-2.0.70.dist-info/top_level.txt,sha256=8_2PZkwBb-xDcnc8a2rAbQeJhXKXskc7zTP7pSPa1fw,5
183
+ kaqing-2.0.70.dist-info/RECORD,,