MCPcopy Create free account
hub / github.com/dbcli/mssql-cli / MssqlCompleter

Class MssqlCompleter

mssqlcli/mssqlcompleter.py:71–984  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

69
70
71class MssqlCompleter(Completer):
72 # keywords_tree: A dict mapping keywords to well known following keywords.
73 # e.g. 'CREATE': ['TABLE', 'USER', ...],
74 keywords_tree = get_literals('keywords', type_=dict)
75 keywords = tuple(set(chain(keywords_tree.keys(), *keywords_tree.values())))
76 functions = get_literals('functions')
77 datatypes = get_literals('datatypes')
78 reserved_words = set(get_literals('reserved'))
79
80 def __init__(self, smart_completion=True, settings=None):
81 super(MssqlCompleter, self).__init__()
82 self.smart_completion = smart_completion
83 self.prioritizer = PrevalenceCounter()
84 settings = settings or {}
85 self.signature_arg_style = settings.get(
86 'signature_arg_style', '{arg_name} {arg_type}'
87 )
88 self.call_arg_style = settings.get(
89 'call_arg_style', '{arg_name: <{max_arg_len}} := {arg_default}'
90 )
91 self.call_arg_display_style = settings.get(
92 'call_arg_display_style', '{arg_name}'
93 )
94 self.call_arg_oneliner_max = settings.get('call_arg_oneliner_max', 2)
95 self.search_path_filter = settings.get('search_path_filter')
96 self.generate_aliases = settings.get('generate_aliases')
97 self.casing_file = settings.get('casing_file')
98 self.insert_col_skip_patterns = [
99 re.compile(pattern) for pattern in settings.get(
100 'insert_col_skip_patterns',
101 [r'^now\(\)$', r'^nextval\(']
102 )
103 ]
104 self.generate_casing_file = settings.get('generate_casing_file')
105 self.qualify_columns = settings.get(
106 'qualify_columns', 'if_more_than_one_table')
107 self.asterisk_column_order = settings.get(
108 'asterisk_column_order', 'table_order')
109
110 keyword_casing = settings.get('keyword_casing', 'upper').lower()
111 if keyword_casing not in ('upper', 'lower', 'auto'):
112 keyword_casing = 'upper'
113 self.keyword_casing = keyword_casing
114 self.name_pattern = re.compile(r"^[_a-z][_a-z0-9\$]*$")
115
116 self.databases = []
117 self.dbmetadata = {'tables': {}, 'views': {}, 'functions': {},
118 'datatypes': {}}
119 self.search_path = []
120 self.casing = {}
121
122 self.all_completions = set(self.keywords + self.functions)
123
124 # initialize attributes to be set later
125 self._arg_list_cache = None
126 self.special_commands = None
127
128 @staticmethod

Callers 4

__init__Method · 0.90
get_completerMethod · 0.90
_bg_refreshMethod · 0.85

Calls 1

get_literalsFunction · 0.90

Tested by 1