MCPcopy Index your code
hub / github.com/diffgram/diffgram / get_suggestions

Method get_suggestions

shared/query_engine/query_creator.py:40–106  ·  view source on GitHub ↗
(self, query_string)

Source from the content-addressed store, hash-verified

38 transformer = None)
39
40 def get_suggestions(self, query_string):
41 suggest_type = 'entities'
42 if query_string == '':
43 return ENTITY_TYPES, suggest_type
44 try:
45 result = self.parser.parse(query_string)
46 # If the query is correct we try the interactive parser to see next possible tokens of valid query.
47 interactive = self.parser.parse_interactive(query_string)
48 interactive.exhaust_lexer()
49 suggestions = [x for x in interactive.accepts() if x != '$END']
50 suggest_type = 'boolean_operator'
51 return suggestions, suggest_type
52 except UnexpectedCharacters as chars_exception:
53 if type(chars_exception) == UnexpectedCharacters:
54 if chars_exception.char == '.':
55 last_token = chars_exception.state.value_stack[len(chars_exception.state.value_stack) - 1]
56 suggestions = []
57 num_nested = len(last_token.value.split('.'))
58 if last_token.type == 'COMPARE_OP':
59 suggestions.append('$number')
60 suggestions.append('$text')
61 suggest_type = 'text'
62 return suggestions, suggest_type
63 if num_nested == 1:
64 if last_token.value in ['label', 'labels']:
65 # Show available labels in project.
66 labels = self.project.get_label_list(self.session,
67 directory = self.project.directory_default)
68 for label in labels:
69 suggestions.append(label['label']['name'])
70 suggest_type = 'labels'
71 elif last_token.value in ['file', 'files']:
72 # TODO: add metadata suggestions
73 keys = File.get_metadata_keys(session = self.session,
74 project = self.project,
75 directory = self.directory)
76 suggestions = keys
77 suggest_type = 'labels'
78 elif last_token.value in ['instance', 'instances']:
79 suggestions = ['type', 'count', 'tag', 'model', 'model_run']
80 suggest_type = 'instance_data'
81 elif last_token.value in ['issues', 'issue']:
82 suggestions = ['status', 'count']
83 suggest_type = 'issues_data'
84 elif num_nested == 2:
85 entity = last_token.value.split('.')[0]
86 if entity in ['label', 'labels']:
87 suggestions.append('$operator')
88 suggest_type = 'operator'
89 return suggestions, suggest_type
90 else:
91 print('NOT ENDING IN .')
92 return [], None
93 except UnexpectedToken as token_exception:
94 suggestions = []
95 token_type = [t for t in token_exception.accepts]
96 if 'COMPARE_OP' in token_type:
97 suggestions.append('$operator')

Callers 2

test_get_suggestionsMethod · 0.95
query_suggest_coreFunction · 0.95

Calls 4

parseMethod · 0.80
splitMethod · 0.80
get_label_listMethod · 0.80
get_metadata_keysMethod · 0.80

Tested by 1

test_get_suggestionsMethod · 0.76