def create_attr(self, frame, anchor, name): if name == 'append': return self.SequenceAppender('list.append', self, args=[ANY]) elif name == 'count': return BuiltinConstMethod('list.count', IntType.get_object(), [ANY]) elif name == 'extend': return self.SequenceExtender('list.extend', self, args=[ANY]) elif name == 'index': return BuiltinConstMethod( 'list.index', IntType.get_object(), [ANY], [IntType, IntType], expts=[ErrorConfig.MaybeElementNotFound()]) elif name == 'insert': return self.InsertMethod('list.insert', self, [IntType, ANY]) elif name == 'pop': return BuiltinConstMethod( 'list.pop', self.elemall, [], [IntType], expts=[ErrorConfig.MaybeElementNotRemovable()]) elif name == 'remove': return BuiltinConstMethod( 'list.remove', NoneType.get_object(), [ANY], expts=[ErrorConfig.MaybeElementNotRemovable()]) elif name == 'reverse': return BuiltinConstMethod('list.remove', NoneType.get_object()) elif name == 'sort': return self.SortMethod('list.sort', self) raise NodeAttrError(name)
def create_attr(self, frame, anchor, name): if name == 'add': return self.SequenceAppender('set.add', self, args=[ANY]) elif name == 'clear': return BuiltinConstMethod('set.clear', NoneType.get_object()) elif name == 'difference_update': return BuiltinConstMethod('set.difference_update', NoneType.get_object(), [[ANY]]) elif name == 'discard': return BuiltinConstMethod('set.discard', NoneType.get_object(), [ANY]) elif name == 'intersection_update': return BuiltinConstMethod('set.intersection_update', NoneType.get_object(), [[ANY]]) elif name == 'pop': return BuiltinConstMethod( 'set.pop', NoneType.get_object(), expts=[ErrorConfig.MaybeElementNotRemovable()]) elif name == 'remove': return BuiltinConstMethod( 'set.remove', NoneType.get_object(), [ANY], expts=[ErrorConfig.MaybeElementNotFound()]) elif name == 'symmetric_difference_update': return self.SequenceExtender('set.symmetric_difference_update', self, args=[ANY]) elif name == 'update': return self.SequenceExtender('set.update', self, self, [ANY]) return FrozenSetObject.create_attr(self, frame, anchor, name)
def create_attr(self, frame, anchor, name): if name == 'clear': return BuiltinConstMethod('dict.clear', NoneType.get_object()) elif name == 'copy': dictobj = self.get_type().create_copy(frame, anchor, self) return BuiltinConstMethod('dict.copy', dictobj) elif name == 'fromkeys': return DictType.FromKeys('dict.fromkeys') elif name == 'get': return DictObject.Get(self, 'dict.get') elif name == 'has_key': return BuiltinConstMethod('dict.has_key', BoolType.get_object(), [ANY]) elif name == 'keys': return BuiltinConstMethod('dict.keys', ListType.create_list(self.key)) elif name == 'values': return BuiltinConstMethod('dict.values', ListType.create_list(self.value)) elif name == 'items': return BuiltinConstMethod( 'dict.items', ListType.create_list( TupleType.create_tuple([self.key, self.value]))) elif name == 'iterkeys': return BuiltinConstMethod('dict.iterkeys', IterType.create_iter(self.key)) elif name == 'itervalues': return BuiltinConstMethod('dict.itervalues', IterType.create_iter(self.value)) elif name == 'iteritems': return BuiltinConstMethod( 'dict.iteritems', IterType.create_iter( TupleType.create_tuple([self.key, self.value]))) elif name == 'pop': return DictObject.Pop(self, 'dict.pop') elif name == 'popitem': return BuiltinConstMethod( 'dict.popitem', TupleType.create_tuple([self.key, self.value]), expts=[ErrorConfig.MaybeElementNotFound()]) elif name == 'setdefault': return DictObject.SetDefault(self, 'dict.setdefault') elif name == 'update': return DictObject.Update(self, 'dict.update') raise NodeAttrError(name)