Пример #1
0
    def py__getitem__(self, index):
        with reraise_as_evaluator(IndexError, KeyError, TypeError):
            access = self.access_handle.py__getitem__(index)
        if access is None:
            return ContextSet()

        return ContextSet(create_from_access_path(self.evaluator, access))
Пример #2
0
    def py__getitem__(self, index):
        with reraise_as_evaluator(IndexError, KeyError, TypeError):
            access = self.access_handle.py__getitem__(index)
        if access is None:
            return ContextSet()

        return ContextSet(create_from_access_path(self.evaluator, access))
Пример #3
0
    def py__getitem__(self, index):
        if isinstance(index, slice):
            return ContextSet(self)

        all_types = list(self.py__iter__())
        with reraise_as_evaluator(IndexError, TypeError):
            lazy_context = all_types[index]
        return lazy_context.infer()
Пример #4
0
    def py__getitem__(self, index):
        if isinstance(index, slice):
            return ContextSet(self)

        all_types = list(self.py__iter__())
        with reraise_as_evaluator(IndexError, TypeError):
            lazy_context = all_types[index]
        return lazy_context.infer()
Пример #5
0
    def py__getitem__(self, index):
        """Here the index is an int/str. Raises IndexError/KeyError."""
        if self.array_type == u'dict':
            compiled_obj_index = compiled.create_simple_object(self.evaluator, index)
            for key, value in self._items():
                for k in self._defining_context.eval_node(key):
                    if isinstance(k, compiled.CompiledObject) \
                            and k.execute_operation(compiled_obj_index, u'==').get_safe_value():
                        return self._defining_context.eval_node(value)
            raise EvaluatorKeyError('No key found in dictionary %s.' % self)

        # Can raise an IndexError
        if isinstance(index, slice):
            return ContextSet(self)
        else:
            with reraise_as_evaluator(TypeError, KeyError, IndexError):
                node = self._items()[index]
            return self._defining_context.eval_node(node)
Пример #6
0
    def py__getitem__(self, index):
        if is_py3 and self.evaluator.environment.version_info.major == 2:
            # In Python 2 bytes and unicode compare.
            if isinstance(index, bytes):
                index_unicode = force_unicode(index)
                try:
                    return self._dct[index_unicode].infer()
                except KeyError:
                    pass
            elif isinstance(index, str):
                index_bytes = index.encode('utf-8')
                try:
                    return self._dct[index_bytes].infer()
                except KeyError:
                    pass

        with reraise_as_evaluator(KeyError):
            lazy_context = self._dct[index]
        return lazy_context.infer()
Пример #7
0
    def py__getitem__(self, index):
        """Here the index is an int/str. Raises IndexError/KeyError."""
        if self.array_type == u'dict':
            compiled_obj_index = compiled.create_simple_object(
                self.evaluator, index)
            for key, value in self._items():
                for k in self._defining_context.eval_node(key):
                    if isinstance(k, compiled.CompiledObject) \
                            and k.execute_operation(compiled_obj_index, u'==').get_safe_value():
                        return self._defining_context.eval_node(value)
            raise EvaluatorKeyError('No key found in dictionary %s.' % self)

        # Can raise an IndexError
        if isinstance(index, slice):
            return ContextSet(self)
        else:
            with reraise_as_evaluator(TypeError, KeyError, IndexError):
                node = self._items()[index]
            return self._defining_context.eval_node(node)
Пример #8
0
    def py__getitem__(self, index):
        if is_py3 and self.evaluator.environment.version_info.major == 2:
            # In Python 2 bytes and unicode compare.
            if isinstance(index, bytes):
                index_unicode = force_unicode(index)
                try:
                    return self._dct[index_unicode].infer()
                except KeyError:
                    pass
            elif isinstance(index, str):
                index_bytes = index.encode('utf-8')
                try:
                    return self._dct[index_bytes].infer()
                except KeyError:
                    pass

        with reraise_as_evaluator(KeyError):
            lazy_context = self._dct[index]
        return lazy_context.infer()
Пример #9
0
 def py__getitem__(self, index):
     with reraise_as_evaluator(IndexError, TypeError):
         lazy_context = self._lazy_context_list[index]
     return lazy_context.infer()
Пример #10
0
 def py__getitem__(self, index):
     with reraise_as_evaluator(IndexError, TypeError):
         lazy_context = self._lazy_context_list[index]
     return lazy_context.infer()