From a091ee92a450b764d29b07db385a3b83d7ce5c45 Mon Sep 17 00:00:00 2001 From: David Halter Date: Sun, 10 Feb 2013 16:12:30 +0100 Subject: [PATCH] fix dictionary index problems --- jedi/evaluate_representation.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/jedi/evaluate_representation.py b/jedi/evaluate_representation.py index 606438d2..d5717edc 100644 --- a/jedi/evaluate_representation.py +++ b/jedi/evaluate_representation.py @@ -815,26 +815,27 @@ class Array(use_metaclass(cache.CachedMetaClass, pr.Base)): return set(result) def get_exact_index_types(self, mixed_index): - """ Here the index is an int. Raises IndexError/KeyError """ + """ Here the index is an int/str. Raises IndexError/KeyError """ index = mixed_index if self.type == pr.Array.DICT: index = None for i, key_statement in enumerate(self._array.keys): # Because we only want the key to be a string. - key_elements = key_statement.get_commands() - if len(key_elements) == 1: + key_commands = key_statement.get_commands() + if len(key_commands) == 1: + key = key_commands[0] + key.get_code() try: - str_key = key_elements.get_code() + str_key = key.get_code() except AttributeError: - try: - str_key = key_elements[0].name - except AttributeError: - str_key = None + str_key = None if mixed_index == str_key: index = i break if index is None: raise KeyError('No key found in dictionary') + + # Can raise an IndexError values = [self._array.values[index]] return self._follow_values(values)