From ea787b30eb8cbda1adac26d3d6a9c6288e9ca6fa Mon Sep 17 00:00:00 2001 From: Aditya Toshniwal Date: Mon, 27 Aug 2018 16:37:00 +0530 Subject: [PATCH] Fixed auto complete issues for Python 2.6 --- .../query_tool_auto_complete_tests.py | 1 + .../utils/sqlautocomplete/autocomplete.py | 41 ++++++++++--------- .../utils/sqlautocomplete/sqlcompletion.py | 2 +- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/web/pgadmin/feature_tests/query_tool_auto_complete_tests.py b/web/pgadmin/feature_tests/query_tool_auto_complete_tests.py index 2e0dd4a2b..a5f033ed8 100644 --- a/web/pgadmin/feature_tests/query_tool_auto_complete_tests.py +++ b/web/pgadmin/feature_tests/query_tool_auto_complete_tests.py @@ -7,6 +7,7 @@ # ########################################################################## +from __future__ import print_function import sys import random diff --git a/web/pgadmin/utils/sqlautocomplete/autocomplete.py b/web/pgadmin/utils/sqlautocomplete/autocomplete.py index 3efac773d..a82976d4c 100644 --- a/web/pgadmin/utils/sqlautocomplete/autocomplete.py +++ b/web/pgadmin/utils/sqlautocomplete/autocomplete.py @@ -11,9 +11,15 @@ import re import operator +import sys from itertools import count, repeat, chain from .completion import Completion -from collections import namedtuple, defaultdict, OrderedDict +from collections import namedtuple, defaultdict +if sys.version_info < (2, 7): + from ordereddict import OrderedDict +else: + from collections import OrderedDict + from .sqlcompletion import ( FromClauseItem, suggest_type, Database, Schema, Table, Function, Column, View, Keyword, Datatype, Alias, JoinCondition, Join) @@ -286,15 +292,14 @@ class SQLAutoComplete(object): # This is used when suggesting functions, to avoid the latency that # would result if we'd recalculate the arg lists each time we suggest # functions (in large DBs) - self._arg_list_cache = { - usage: { - meta: self._arg_list(meta, usage) - for sch, funcs in self.dbmetadata['functions'].items() - for func, metas in funcs.items() - for meta in metas - } - for usage in ('call', 'call_display', 'signature') - } + + self._arg_list_cache = \ + dict((usage, + dict((meta, self._arg_list(meta, usage)) + for sch, funcs in self.dbmetadata['functions'].items() + for func, metas in funcs.items() + for meta in metas)) + for usage in ('call', 'call_display', 'signature')) def extend_foreignkeys(self, fk_data): @@ -532,11 +537,10 @@ class SQLAutoComplete(object): c.name for t, cs in scoped_cols.items() if t.ref != ltbl for c in cs ) - scoped_cols = { - t: [col for col in cols if col.name in other_tbl_cols] - for t, cols in scoped_cols.items() - if t.ref == ltbl - } + scoped_cols = \ + dict((t, [col for col in cols if col.name in other_tbl_cols]) + for t, cols in scoped_cols.items() if t.ref == ltbl) + lastword = last_word(word_before_cursor, include='most_punctuations') if lastword == '*': if suggestion.context == 'insert': @@ -547,10 +551,9 @@ class SQLAutoComplete(object): p.match(col.default) for p in self.insert_col_skip_patterns ) - scoped_cols = { - t: [col for col in cols if filter(col)] - for t, cols in scoped_cols.items() - } + scoped_cols = \ + dict((t, [col for col in cols if filter(col)]) + for t, cols in scoped_cols.items()) if self.asterisk_column_order == 'alphabetic': for cols in scoped_cols.values(): cols.sort(key=operator.attrgetter('name')) diff --git a/web/pgadmin/utils/sqlautocomplete/sqlcompletion.py b/web/pgadmin/utils/sqlautocomplete/sqlcompletion.py index 5d18ce928..41641f439 100644 --- a/web/pgadmin/utils/sqlautocomplete/sqlcompletion.py +++ b/web/pgadmin/utils/sqlautocomplete/sqlcompletion.py @@ -458,7 +458,7 @@ def suggest_based_on_last_token(token, stmt): if not schema: suggestions.append(Schema()) return tuple(suggestions) - elif token_v in {'alter', 'create', 'drop'}: + elif token_v in ['alter', 'create', 'drop']: return (Keyword(token_v.upper()),) elif token.is_keyword: # token is a keyword we haven't implemented any special handling for