kaqing 2.0.69__tar.gz → 2.0.70__tar.gz

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.
Files changed (188) hide show
  1. {kaqing-2.0.69 → kaqing-2.0.70}/PKG-INFO +1 -1
  2. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sql/sql_completer.py +31 -7
  3. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sql/term_completer.py +1 -1
  4. kaqing-2.0.70/adam/version.py +5 -0
  5. {kaqing-2.0.69 → kaqing-2.0.70}/kaqing.egg-info/PKG-INFO +1 -1
  6. {kaqing-2.0.69 → kaqing-2.0.70}/setup.py +1 -1
  7. kaqing-2.0.69/adam/version.py +0 -5
  8. {kaqing-2.0.69 → kaqing-2.0.70}/README +0 -0
  9. {kaqing-2.0.69 → kaqing-2.0.70}/adam/__init__.py +0 -0
  10. {kaqing-2.0.69 → kaqing-2.0.70}/adam/app_session.py +0 -0
  11. {kaqing-2.0.69 → kaqing-2.0.70}/adam/apps.py +0 -0
  12. {kaqing-2.0.69 → kaqing-2.0.70}/adam/batch.py +0 -0
  13. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/__init__.py +0 -0
  14. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/check.py +0 -0
  15. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/check_context.py +0 -0
  16. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/check_result.py +0 -0
  17. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/check_utils.py +0 -0
  18. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/compactionstats.py +0 -0
  19. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/cpu.py +0 -0
  20. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/disk.py +0 -0
  21. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/gossip.py +0 -0
  22. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/issue.py +0 -0
  23. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/memory.py +0 -0
  24. {kaqing-2.0.69 → kaqing-2.0.70}/adam/checks/status.py +0 -0
  25. {kaqing-2.0.69 → kaqing-2.0.70}/adam/cli.py +0 -0
  26. {kaqing-2.0.69 → kaqing-2.0.70}/adam/cli_group.py +0 -0
  27. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/__init__.py +0 -0
  28. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/column.py +0 -0
  29. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/columns.py +0 -0
  30. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/compactions.py +0 -0
  31. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/cpu.py +0 -0
  32. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/dir_data.py +0 -0
  33. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/dir_snapshots.py +0 -0
  34. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/gossip.py +0 -0
  35. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/host_id.py +0 -0
  36. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/memory.py +0 -0
  37. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/node_address.py +0 -0
  38. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/node_load.py +0 -0
  39. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/node_owns.py +0 -0
  40. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/node_status.py +0 -0
  41. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/node_tokens.py +0 -0
  42. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/node_utils.py +0 -0
  43. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/pod_name.py +0 -0
  44. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/volume_cassandra.py +0 -0
  45. {kaqing-2.0.69 → kaqing-2.0.70}/adam/columns/volume_root.py +0 -0
  46. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/__init__.py +0 -0
  47. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/alter_tables.py +0 -0
  48. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/app.py +0 -0
  49. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/app_ping.py +0 -0
  50. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/bash.py +0 -0
  51. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/cd.py +0 -0
  52. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/check.py +0 -0
  53. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/cli_commands.py +0 -0
  54. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/command.py +0 -0
  55. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/command_helpers.py +0 -0
  56. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/commands_utils.py +0 -0
  57. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/cp.py +0 -0
  58. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/cql/__init__.py +0 -0
  59. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/cql/cql_completions.py +0 -0
  60. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/cql/cql_table_completer.py +0 -0
  61. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/cql/cql_utils.py +0 -0
  62. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/cql/cqlsh.py +0 -0
  63. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/__init__.py +0 -0
  64. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/code_start.py +0 -0
  65. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/code_stop.py +0 -0
  66. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/code_utils.py +0 -0
  67. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/deploy.py +0 -0
  68. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/deploy_frontend.py +0 -0
  69. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/deploy_pg_agent.py +0 -0
  70. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/deploy_pod.py +0 -0
  71. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/deploy_utils.py +0 -0
  72. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/undeploy.py +0 -0
  73. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/undeploy_frontend.py +0 -0
  74. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/undeploy_pg_agent.py +0 -0
  75. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/deploy/undeploy_pod.py +0 -0
  76. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/describe/__init__.py +0 -0
  77. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/describe/describe.py +0 -0
  78. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/describe/describe_keyspace.py +0 -0
  79. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/describe/describe_keyspaces.py +0 -0
  80. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/describe/describe_table.py +0 -0
  81. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/describe/describe_tables.py +0 -0
  82. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/devices.py +0 -0
  83. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/exit.py +0 -0
  84. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/help.py +0 -0
  85. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/issues.py +0 -0
  86. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/login.py +0 -0
  87. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/logs.py +0 -0
  88. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/ls.py +0 -0
  89. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/medusa/__init__.py +0 -0
  90. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/medusa/medusa.py +0 -0
  91. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/medusa/medusa_backup.py +0 -0
  92. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/medusa/medusa_restore.py +0 -0
  93. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/medusa/medusa_show_backupjobs.py +0 -0
  94. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/medusa/medusa_show_restorejobs.py +0 -0
  95. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/nodetool.py +0 -0
  96. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/nodetool_commands.py +0 -0
  97. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/param_get.py +0 -0
  98. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/param_set.py +0 -0
  99. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/postgres/__init__.py +0 -0
  100. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/postgres/postgres.py +0 -0
  101. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/postgres/postgres_ls.py +0 -0
  102. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/postgres/postgres_preview.py +0 -0
  103. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/postgres/postgres_session.py +0 -0
  104. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/postgres/postgres_utils.py +0 -0
  105. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/postgres/psql_completions.py +0 -0
  106. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/postgres/psql_table_completer.py +0 -0
  107. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/preview_table.py +0 -0
  108. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/pwd.py +0 -0
  109. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/__init__.py +0 -0
  110. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper.py +0 -0
  111. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_forward.py +0 -0
  112. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_forward_stop.py +0 -0
  113. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_restart.py +0 -0
  114. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_run_abort.py +0 -0
  115. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_runs.py +0 -0
  116. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_runs_abort.py +0 -0
  117. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_schedule_activate.py +0 -0
  118. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_schedule_start.py +0 -0
  119. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_schedule_stop.py +0 -0
  120. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_schedules.py +0 -0
  121. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_session.py +0 -0
  122. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/reaper/reaper_status.py +0 -0
  123. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/repair/__init__.py +0 -0
  124. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/repair/repair.py +0 -0
  125. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/repair/repair_log.py +0 -0
  126. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/repair/repair_run.py +0 -0
  127. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/repair/repair_scan.py +0 -0
  128. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/repair/repair_stop.py +0 -0
  129. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/report.py +0 -0
  130. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/restart.py +0 -0
  131. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/rollout.py +0 -0
  132. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/shell.py +0 -0
  133. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/__init__.py +0 -0
  134. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show.py +0 -0
  135. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_adam.py +0 -0
  136. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_app_actions.py +0 -0
  137. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_app_id.py +0 -0
  138. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_app_queues.py +0 -0
  139. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_cassandra_status.py +0 -0
  140. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_cassandra_version.py +0 -0
  141. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_commands.py +0 -0
  142. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_login.py +0 -0
  143. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_params.py +0 -0
  144. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_processes.py +0 -0
  145. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_repairs.py +0 -0
  146. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/show/show_storage.py +0 -0
  147. {kaqing-2.0.69 → kaqing-2.0.70}/adam/commands/watch.py +0 -0
  148. {kaqing-2.0.69 → kaqing-2.0.70}/adam/config.py +0 -0
  149. {kaqing-2.0.69 → kaqing-2.0.70}/adam/embedded_apps.py +0 -0
  150. {kaqing-2.0.69 → kaqing-2.0.70}/adam/embedded_params.py +0 -0
  151. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/__init__.py +0 -0
  152. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/cassandra_clusters.py +0 -0
  153. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/cassandra_nodes.py +0 -0
  154. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/config_maps.py +0 -0
  155. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/custom_resources.py +0 -0
  156. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/deployment.py +0 -0
  157. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/ingresses.py +0 -0
  158. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/jobs.py +0 -0
  159. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/kube_context.py +0 -0
  160. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/pods.py +0 -0
  161. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/secrets.py +0 -0
  162. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/service_accounts.py +0 -0
  163. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/services.py +0 -0
  164. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/statefulsets.py +0 -0
  165. {kaqing-2.0.69 → kaqing-2.0.70}/adam/k8s_utils/volumes.py +0 -0
  166. {kaqing-2.0.69 → kaqing-2.0.70}/adam/log.py +0 -0
  167. {kaqing-2.0.69 → kaqing-2.0.70}/adam/pod_exec_result.py +0 -0
  168. {kaqing-2.0.69 → kaqing-2.0.70}/adam/repl.py +0 -0
  169. {kaqing-2.0.69 → kaqing-2.0.70}/adam/repl_commands.py +0 -0
  170. {kaqing-2.0.69 → kaqing-2.0.70}/adam/repl_session.py +0 -0
  171. {kaqing-2.0.69 → kaqing-2.0.70}/adam/repl_state.py +0 -0
  172. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sql/__init__.py +0 -0
  173. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sso/__init__.py +0 -0
  174. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sso/authenticator.py +0 -0
  175. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sso/authn_ad.py +0 -0
  176. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sso/authn_okta.py +0 -0
  177. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sso/cred_cache.py +0 -0
  178. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sso/id_token.py +0 -0
  179. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sso/idp.py +0 -0
  180. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sso/idp_login.py +0 -0
  181. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sso/idp_session.py +0 -0
  182. {kaqing-2.0.69 → kaqing-2.0.70}/adam/sso/sso_config.py +0 -0
  183. {kaqing-2.0.69 → kaqing-2.0.70}/adam/utils.py +0 -0
  184. {kaqing-2.0.69 → kaqing-2.0.70}/kaqing.egg-info/SOURCES.txt +0 -0
  185. {kaqing-2.0.69 → kaqing-2.0.70}/kaqing.egg-info/dependency_links.txt +0 -0
  186. {kaqing-2.0.69 → kaqing-2.0.70}/kaqing.egg-info/entry_points.txt +0 -0
  187. {kaqing-2.0.69 → kaqing-2.0.70}/kaqing.egg-info/top_level.txt +0 -0
  188. {kaqing-2.0.69 → kaqing-2.0.70}/setup.cfg +0 -0
@@ -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
@@ -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
 
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ __version__ = "2.0.70" #: the working version
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
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='kaqing',
5
- version='2.0.69',
5
+ version='2.0.70',
6
6
  packages=find_packages(),
7
7
  entry_points={
8
8
  'console_scripts': [
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env python
2
- # -*- coding: utf-8 -*-
3
-
4
- __version__ = "2.0.69" #: the working version
5
- __release__ = "1.0.0" #: the release version
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes