kaqing 2.0.68__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.68 → kaqing-2.0.70}/PKG-INFO +1 -1
  2. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sql/sql_completer.py +35 -7
  3. {kaqing-2.0.68 → 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.68 → kaqing-2.0.70}/kaqing.egg-info/PKG-INFO +1 -1
  6. {kaqing-2.0.68 → kaqing-2.0.70}/setup.py +1 -1
  7. kaqing-2.0.68/adam/version.py +0 -5
  8. {kaqing-2.0.68 → kaqing-2.0.70}/README +0 -0
  9. {kaqing-2.0.68 → kaqing-2.0.70}/adam/__init__.py +0 -0
  10. {kaqing-2.0.68 → kaqing-2.0.70}/adam/app_session.py +0 -0
  11. {kaqing-2.0.68 → kaqing-2.0.70}/adam/apps.py +0 -0
  12. {kaqing-2.0.68 → kaqing-2.0.70}/adam/batch.py +0 -0
  13. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/__init__.py +0 -0
  14. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/check.py +0 -0
  15. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/check_context.py +0 -0
  16. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/check_result.py +0 -0
  17. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/check_utils.py +0 -0
  18. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/compactionstats.py +0 -0
  19. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/cpu.py +0 -0
  20. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/disk.py +0 -0
  21. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/gossip.py +0 -0
  22. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/issue.py +0 -0
  23. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/memory.py +0 -0
  24. {kaqing-2.0.68 → kaqing-2.0.70}/adam/checks/status.py +0 -0
  25. {kaqing-2.0.68 → kaqing-2.0.70}/adam/cli.py +0 -0
  26. {kaqing-2.0.68 → kaqing-2.0.70}/adam/cli_group.py +0 -0
  27. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/__init__.py +0 -0
  28. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/column.py +0 -0
  29. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/columns.py +0 -0
  30. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/compactions.py +0 -0
  31. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/cpu.py +0 -0
  32. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/dir_data.py +0 -0
  33. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/dir_snapshots.py +0 -0
  34. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/gossip.py +0 -0
  35. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/host_id.py +0 -0
  36. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/memory.py +0 -0
  37. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/node_address.py +0 -0
  38. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/node_load.py +0 -0
  39. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/node_owns.py +0 -0
  40. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/node_status.py +0 -0
  41. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/node_tokens.py +0 -0
  42. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/node_utils.py +0 -0
  43. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/pod_name.py +0 -0
  44. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/volume_cassandra.py +0 -0
  45. {kaqing-2.0.68 → kaqing-2.0.70}/adam/columns/volume_root.py +0 -0
  46. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/__init__.py +0 -0
  47. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/alter_tables.py +0 -0
  48. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/app.py +0 -0
  49. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/app_ping.py +0 -0
  50. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/bash.py +0 -0
  51. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/cd.py +0 -0
  52. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/check.py +0 -0
  53. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/cli_commands.py +0 -0
  54. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/command.py +0 -0
  55. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/command_helpers.py +0 -0
  56. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/commands_utils.py +0 -0
  57. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/cp.py +0 -0
  58. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/cql/__init__.py +0 -0
  59. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/cql/cql_completions.py +0 -0
  60. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/cql/cql_table_completer.py +0 -0
  61. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/cql/cql_utils.py +0 -0
  62. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/cql/cqlsh.py +0 -0
  63. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/__init__.py +0 -0
  64. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/code_start.py +0 -0
  65. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/code_stop.py +0 -0
  66. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/code_utils.py +0 -0
  67. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/deploy.py +0 -0
  68. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/deploy_frontend.py +0 -0
  69. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/deploy_pg_agent.py +0 -0
  70. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/deploy_pod.py +0 -0
  71. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/deploy_utils.py +0 -0
  72. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/undeploy.py +0 -0
  73. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/undeploy_frontend.py +0 -0
  74. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/undeploy_pg_agent.py +0 -0
  75. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/deploy/undeploy_pod.py +0 -0
  76. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/describe/__init__.py +0 -0
  77. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/describe/describe.py +0 -0
  78. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/describe/describe_keyspace.py +0 -0
  79. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/describe/describe_keyspaces.py +0 -0
  80. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/describe/describe_table.py +0 -0
  81. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/describe/describe_tables.py +0 -0
  82. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/devices.py +0 -0
  83. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/exit.py +0 -0
  84. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/help.py +0 -0
  85. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/issues.py +0 -0
  86. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/login.py +0 -0
  87. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/logs.py +0 -0
  88. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/ls.py +0 -0
  89. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/medusa/__init__.py +0 -0
  90. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/medusa/medusa.py +0 -0
  91. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/medusa/medusa_backup.py +0 -0
  92. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/medusa/medusa_restore.py +0 -0
  93. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/medusa/medusa_show_backupjobs.py +0 -0
  94. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/medusa/medusa_show_restorejobs.py +0 -0
  95. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/nodetool.py +0 -0
  96. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/nodetool_commands.py +0 -0
  97. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/param_get.py +0 -0
  98. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/param_set.py +0 -0
  99. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/postgres/__init__.py +0 -0
  100. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/postgres/postgres.py +0 -0
  101. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/postgres/postgres_ls.py +0 -0
  102. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/postgres/postgres_preview.py +0 -0
  103. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/postgres/postgres_session.py +0 -0
  104. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/postgres/postgres_utils.py +0 -0
  105. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/postgres/psql_completions.py +0 -0
  106. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/postgres/psql_table_completer.py +0 -0
  107. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/preview_table.py +0 -0
  108. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/pwd.py +0 -0
  109. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/__init__.py +0 -0
  110. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper.py +0 -0
  111. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_forward.py +0 -0
  112. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_forward_stop.py +0 -0
  113. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_restart.py +0 -0
  114. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_run_abort.py +0 -0
  115. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_runs.py +0 -0
  116. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_runs_abort.py +0 -0
  117. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_schedule_activate.py +0 -0
  118. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_schedule_start.py +0 -0
  119. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_schedule_stop.py +0 -0
  120. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_schedules.py +0 -0
  121. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_session.py +0 -0
  122. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/reaper/reaper_status.py +0 -0
  123. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/repair/__init__.py +0 -0
  124. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/repair/repair.py +0 -0
  125. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/repair/repair_log.py +0 -0
  126. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/repair/repair_run.py +0 -0
  127. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/repair/repair_scan.py +0 -0
  128. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/repair/repair_stop.py +0 -0
  129. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/report.py +0 -0
  130. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/restart.py +0 -0
  131. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/rollout.py +0 -0
  132. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/shell.py +0 -0
  133. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/__init__.py +0 -0
  134. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show.py +0 -0
  135. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_adam.py +0 -0
  136. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_app_actions.py +0 -0
  137. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_app_id.py +0 -0
  138. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_app_queues.py +0 -0
  139. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_cassandra_status.py +0 -0
  140. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_cassandra_version.py +0 -0
  141. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_commands.py +0 -0
  142. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_login.py +0 -0
  143. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_params.py +0 -0
  144. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_processes.py +0 -0
  145. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_repairs.py +0 -0
  146. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/show/show_storage.py +0 -0
  147. {kaqing-2.0.68 → kaqing-2.0.70}/adam/commands/watch.py +0 -0
  148. {kaqing-2.0.68 → kaqing-2.0.70}/adam/config.py +0 -0
  149. {kaqing-2.0.68 → kaqing-2.0.70}/adam/embedded_apps.py +0 -0
  150. {kaqing-2.0.68 → kaqing-2.0.70}/adam/embedded_params.py +0 -0
  151. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/__init__.py +0 -0
  152. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/cassandra_clusters.py +0 -0
  153. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/cassandra_nodes.py +0 -0
  154. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/config_maps.py +0 -0
  155. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/custom_resources.py +0 -0
  156. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/deployment.py +0 -0
  157. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/ingresses.py +0 -0
  158. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/jobs.py +0 -0
  159. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/kube_context.py +0 -0
  160. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/pods.py +0 -0
  161. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/secrets.py +0 -0
  162. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/service_accounts.py +0 -0
  163. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/services.py +0 -0
  164. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/statefulsets.py +0 -0
  165. {kaqing-2.0.68 → kaqing-2.0.70}/adam/k8s_utils/volumes.py +0 -0
  166. {kaqing-2.0.68 → kaqing-2.0.70}/adam/log.py +0 -0
  167. {kaqing-2.0.68 → kaqing-2.0.70}/adam/pod_exec_result.py +0 -0
  168. {kaqing-2.0.68 → kaqing-2.0.70}/adam/repl.py +0 -0
  169. {kaqing-2.0.68 → kaqing-2.0.70}/adam/repl_commands.py +0 -0
  170. {kaqing-2.0.68 → kaqing-2.0.70}/adam/repl_session.py +0 -0
  171. {kaqing-2.0.68 → kaqing-2.0.70}/adam/repl_state.py +0 -0
  172. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sql/__init__.py +0 -0
  173. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sso/__init__.py +0 -0
  174. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sso/authenticator.py +0 -0
  175. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sso/authn_ad.py +0 -0
  176. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sso/authn_okta.py +0 -0
  177. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sso/cred_cache.py +0 -0
  178. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sso/id_token.py +0 -0
  179. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sso/idp.py +0 -0
  180. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sso/idp_login.py +0 -0
  181. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sso/idp_session.py +0 -0
  182. {kaqing-2.0.68 → kaqing-2.0.70}/adam/sso/sso_config.py +0 -0
  183. {kaqing-2.0.68 → kaqing-2.0.70}/adam/utils.py +0 -0
  184. {kaqing-2.0.68 → kaqing-2.0.70}/kaqing.egg-info/SOURCES.txt +0 -0
  185. {kaqing-2.0.68 → kaqing-2.0.70}/kaqing.egg-info/dependency_links.txt +0 -0
  186. {kaqing-2.0.68 → kaqing-2.0.70}/kaqing.egg-info/entry_points.txt +0 -0
  187. {kaqing-2.0.68 → kaqing-2.0.70}/kaqing.egg-info/top_level.txt +0 -0
  188. {kaqing-2.0.68 → 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.68
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,7 +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',
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',
245
+ '- > and|or > select_where',
246
+ '- > group > select_group',
247
+ '- > group by > select_group_by',
248
+ '- > limit > select_where_sc_limit',
249
+ '- > } > select_where_sc_re_',
241
250
  'select_where_sc_ > and|or > select_where ^ and,or,group by,limit',
242
251
  '- > group > select_group',
243
252
  '- > group by > select_group_by',
@@ -245,6 +254,7 @@ class SqlCompleter(Completer):
245
254
  'select_group_ > by > select_group_by ^ by',
246
255
  'select_group_by_ > name > select_group_by_a ^ id,x.,y.,z.',
247
256
  'select_group_by_a > , > select_group_by_a_comma_',
257
+ '- > } > select_where_sc_re_',
248
258
  'select_group_by_a_comma_ > name > select_group_by_a ^ id,x.,y.,z.',
249
259
  'select_group_by_a_ > limit > select_where_sc_limit ^ limit',
250
260
  'select_where_sc_limit_ > num > select_where_sc_limit_num ^ 1',
@@ -269,6 +279,7 @@ class SqlCompleter(Completer):
269
279
  'select_x_join_y_on_a > comparison > select_x_join_y_on_a_op ^ =',
270
280
  'select_x_join_y_on_a_op > name > select_x_join_y_on_a_op_b ^ id,x.,y.,z.',
271
281
  'select_x_join_y_on_a_op_b > _ > select_from_x_as_x_',
282
+ '- > } > select_where_sc_re_',
272
283
 
273
284
 
274
285
  ' > insert > insert',
@@ -392,7 +403,7 @@ class SqlCompleter(Completer):
392
403
 
393
404
  return (machine, completers)
394
405
 
395
- 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()):
396
407
  keywords = [
397
408
  'select', 'from', 'as', 'not', 'in', 'where',
398
409
  'and', 'or', 'group', 'by', 'group by', 'limit',
@@ -406,6 +417,20 @@ class SqlCompleter(Completer):
406
417
  'delete'
407
418
  ]
408
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
+
409
434
  for token in tokens:
410
435
  if self.debug:
411
436
  if token.ttype == T.Whitespace:
@@ -422,7 +447,7 @@ class SqlCompleter(Completer):
422
447
  # print(" " * indent + f"Token: {token.value}, Type: {token.ttype}@{token.ttype.__class__}")
423
448
 
424
449
  if token.is_group:
425
- state = self.traverse_tokens(text, token.tokens, state, indent + 1)
450
+ state = self.traverse_tokens(text, token.tokens, state, indent + 1, lp_level)
426
451
  else:
427
452
  it = ''
428
453
  if (t := token.value.lower()) in keywords:
@@ -441,9 +466,12 @@ class SqlCompleter(Completer):
441
466
  if token.value == ',':
442
467
  it = ','
443
468
  elif token.value == '(':
444
- it = '('
469
+ it = is_opening_embrace()
470
+ lp_level += 1
445
471
  elif token.value == ')':
446
- it = ')'
472
+ lp_level -= 1
473
+ it = is_closing_embrace()
474
+
447
475
  elif token.ttype == T.Operator.Comparison:
448
476
  it = 'comparison'
449
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.68
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.68',
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.68" #: 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