Skip to content

Commit 3ff2047

Browse files
committed
<<< autocomplete column names of currently selected *frame
1 parent 6c415dc commit 3ff2047

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

larray_editor/editor.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -474,18 +474,21 @@ def __init__(self, editor_window):
474474
self.completer.setCaseSensitivity(Qt.CaseSensitivity.CaseInsensitive)
475475
self.completer.setWidget(self)
476476
self.completer.activated.connect(self.insert_completion)
477-
self.update_completer_options()
478-
self.sql_context = pl.SQLContext()
479-
480-
def update_completer_options(self, data=None):
481-
if data is not None:
482-
data = self._filter_data_for_sql(data)
483-
self.sql_context.register_many(data)
484-
var_names = [k for k, v in data.items()]
477+
self.sql_context = pl.SQLContext(eager=False)
478+
self.update_completer_options({})
479+
480+
def update_completer_options(self, data, selected=None):
481+
data = self._filter_data_for_sql(data)
482+
if selected is not None and self._handled_by_polars_sql(selected):
483+
data['self'] = selected
484+
col_names = selected.collect_schema().names()
485485
else:
486-
var_names = []
487-
logger.debug(f"available variables for SQL queries: {var_names}")
488-
completions = var_names + self.SQL_KEYWORDS
486+
col_names = []
487+
self.sql_context.register_many(data)
488+
table_names = [k for k, v in data.items()]
489+
logger.debug(f"available tables for SQL queries: {table_names}")
490+
logger.debug(f"available columns for SQL queries: {col_names}")
491+
completions = table_names + col_names + self.SQL_KEYWORDS
489492
model = QStringListModel(completions, self.completer)
490493
self.completer.setModel(model)
491494

@@ -1246,6 +1249,8 @@ def set_current_array(self, array, expr_text):
12461249
# this method is also called to refresh the widget value because of an
12471250
# inplace setitem
12481251

1252+
if self.sql_widget is not None:
1253+
self.sql_widget.update_completer_options(self.data, selected=array)
12491254
# FIXME: we should never store the current_array but current_adapter instead
12501255
self.current_array = array
12511256
self.arraywidget.set_data(array)

0 commit comments

Comments
 (0)