Пример #1
0
 def accept_arg(self, frame, anchor, i, arg1):
     if i == 0:
         BuiltinConstMethod.accept_arg(self, frame, anchor, i, arg1)
     else:
         BuiltinSequenceObject.SequenceAppender.accept_arg(
             self, frame, anchor, i, arg1)
     return
Пример #2
0
 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)
Пример #3
0
 def get_attr(self, frame, anchor, name, write=False):
     if write: raise NodeAssignError(name)
     if name == 'isdecimal':
         return BuiltinConstMethod('unicode.isdecimal',
                                   BoolType.get_object())
     elif name == 'isnumeric':
         return BuiltinConstMethod('unicode.isnumeric',
                                   BoolType.get_object())
     elif name == 'translate':
         return self.TranslateFunc('unicode.translate', self.get_object(),
                                   [ANY])
     return BaseStringType.get_attr(self, frame, anchor, name, write=write)
Пример #4
0
 def __init__(self,
              name,
              target,
              retobj=NoneType.get_object(),
              args=None,
              expts=None):
     self.target = target
     BuiltinConstMethod.__init__(self,
                                 name,
                                 retobj,
                                 args=args,
                                 expts=expts)
     return
Пример #5
0
 def __init__(self,
              name,
              target,
              retobj=NoneType.get_object(),
              args=None,
              optargs=None):
     self.target = target
     self.cache_extend = {}
     BuiltinConstMethod.__init__(self,
                                 name,
                                 retobj,
                                 args=args,
                                 optargs=optargs)
     return
Пример #6
0
 def create_attr(self, frame, anchor, name):
     if name == 'next':
         return BuiltinConstMethod(
             'iter.next',
             self.elemall,
             expts=[StopIterationType.maybe('might raise StopIteration')])
     raise NodeAttrError(name)
Пример #7
0
 def get_attr(self, frame, anchor, name, write=False):
     if write: raise NodeAssignError(name)
     if name == 'translate':
         return BuiltinConstMethod('str.translate', self.get_object(),
                                   [BaseStringType], [BaseStringType],
                                   [ErrorConfig.MaybeTableInvalid()])
     return BaseStringType.get_attr(self, frame, anchor, name, write=write)
Пример #8
0
 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)
Пример #9
0
 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)
Пример #10
0
 def create_attr(self, frame, anchor, name):
     if name == 'copy':
         setobj = self.get_type().create_copy(frame, anchor, self)
         return BuiltinConstMethod('set.copy', setobj)
     elif name == 'difference':
         setobj = self.get_type().create_copy(frame, anchor, self)
         return BuiltinConstMethod('set.difference', setobj, [[ANY]])
     elif name == 'intersection':
         return SetObject.Intersection('set.intersection', self)
     elif name == 'issubset':
         return BuiltinConstMethod('set.issubset', BoolType.get_object(),
                                   [[ANY]])
     elif name == 'issuperset':
         return BuiltinConstMethod('set.issuperset', BoolType.get_object(),
                                   [[ANY]])
     elif name == 'symmetric_difference':
         setobj = self.get_type().create_copy(frame, anchor, self)
         return self.SequenceExtender('set.symmetric_difference', setobj,
                                      setobj, [ANY])
     elif name == 'union':
         setobj = self.get_type().create_copy(frame, anchor, self)
         return self.SequenceExtender('set.union', setobj, setobj, [ANY])
     raise NodeAttrError(name)
Пример #11
0
 def create_attr(self, frame, anchor, name):
     if name == 'send':
         return self.Send(
             'generator.send',
             self,
             self.elemall, [ANY],
             expts=[StopIterationType.maybe('might raise StopIteration')])
     if name == 'next':
         NoneType.get_object().connect(self.sent.recv)
         return self.Send(
             'generator.next',
             self,
             self.elemall,
             expts=[StopIterationType.maybe('might raise StopIteration')])
     if name == 'throw':
         # XXX do nothing for now
         return BuiltinConstMethod('generator.throw', NoneType.get_object(),
                                   [ANY], [ANY, ANY])
     if name == 'close':
         return self.Send('generator.close', self, NoneType.get_object(),
                          [ANY])
     return IterObject.create_attr(self, frame, anchor, name)
Пример #12
0
 def accept_arg(self, frame, anchor, i, arg1):
   if i == 0:
     BuiltinConstMethod.accept_arg(self, frame, anchor, i, arg1)
   else:
     BuiltinSequenceObject.SequenceAppender.accept_arg(self, frame, anchor, i, arg1)
   return
Пример #13
0
 def __init__(self, name):
   self.cache_fromkeys = {}
   self.dictobj = DictType.create_dict()
   BuiltinConstMethod.__init__(self, name, self.dictobj, [ANY], [ANY])
   return
Пример #14
0
 def __init__(self, name, src1):
   self.src1 = src1
   BuiltinConstMethod.__init__(self, name, SetType.create_set(), [ANY])
   return
Пример #15
0
 def __init__(self, name, target):
   self.target = target
   BuiltinConstMethod.__init__(self, name, NoneType.get_object(), [], [ANY,ANY,ANY])
   return
Пример #16
0
 def __init__(self, name, src1):
     self.src1 = src1
     BuiltinConstMethod.__init__(self, name, SetType.create_set(),
                                 [ANY])
     return
Пример #17
0
 def process_args(self, frame, anchor, args, kwargs):
     if kwargs or len(args) != 1:
         return BuiltinConstMethod.process_args(self, frame, anchor,
                                                args, kwargs)
     self.TypeMixer(frame, anchor, self.retobj, self.src1, args[0])
     return self.retobj
Пример #18
0
 def __init__(self, name, target):
     self.target = target
     BuiltinConstMethod.__init__(self, name, NoneType.get_object(), [],
                                 [ANY, ANY, ANY])
     return
Пример #19
0
 def __init__(self, dictobj, name):
   self.dictobj = dictobj
   self.found = CompoundTypeNode([dictobj.value])
   BuiltinConstMethod.__init__(self, name, self.found, [ANY], [ANY])
   return
Пример #20
0
 def __init__(self, name, target, retobj=NoneType.get_object(), args=None, optargs=None):
   self.target = target
   self.cache_extend = {}
   BuiltinConstMethod.__init__(self, name, retobj, args=args, optargs=optargs)
   return
Пример #21
0
 def __init__(self, name, target, retobj=NoneType.get_object(), args=None, expts=None):
   self.target = target
   BuiltinConstMethod.__init__(self, name, retobj, args=args, expts=expts)
   return
Пример #22
0
 def process_args(self, frame, anchor, args, kwargs):
     if len(args) == 1:
         self.found.update_type(NoneType.get_object())
     return BuiltinConstMethod.process_args(self, frame, anchor, args,
                                            kwargs)
Пример #23
0
 def process_args(self, frame, anchor, args, kwargs):
     if len(args) == 1:
         frame.raise_expt(ErrorConfig.MaybeKeyNotFound())
     return BuiltinConstMethod.process_args(self, frame, anchor, args,
                                            kwargs)
Пример #24
0
 def process_args(self, frame, anchor, args, kwargs):
   if len(args) == 1:
     self.found.update_type(NoneType.get_object())
   return BuiltinConstMethod.process_args(self, frame, anchor, args, kwargs)
Пример #25
0
 def get_attr(self, frame, anchor, name, write=False):
     from pyntch.aggregate_types import ListType
     if write: raise NodeAssignError(name)
     if name == 'close':
         return BuiltinConstMethod('file.close', NoneType.get_object())
     elif name == 'closed':
         return BoolType.get_object()
     elif name == 'encoding':
         return StrType.get_object()
     elif name == 'fileno':
         return BuiltinConstMethod('file.fileno', IntType.get_object())
     elif name == 'flush':
         return BuiltinConstMethod('file.flush', NoneType.get_object())
     elif name == 'isatty':
         return BuiltinConstMethod('file.isatty', BoolType.get_object())
     elif name == 'mode':
         return StrType.get_object()
     elif name == 'name':
         return StrType.get_object()
     elif name == 'newlines':
         return NoneType.get_object()
     elif name == 'next':
         return BuiltinConstMethod('file.next', StrType.get_object())
     elif name == 'read':
         return BuiltinConstMethod('file.read', StrType.get_object(), [],
                                   [IntType], [ErrorConfig.MaybeEOFError()])
     elif name == 'readline':
         return BuiltinConstMethod('file.readline', StrType.get_object(),
                                   [], [IntType],
                                   [ErrorConfig.MaybeEOFError()])
     elif name == 'readlines':
         return BuiltinConstMethod(
             'file.readlines', ListType.create_list(StrType.get_object()),
             [], [IntType], [ErrorConfig.MaybeEOFError()])
     elif name == 'seek':
         return BuiltinConstMethod('file.seek', NoneType.get_object(),
                                   [IntType], [IntType],
                                   [ErrorConfig.MaybeEOFError()])
     elif name == 'softspace':
         return IntType.get_object()
     elif name == 'tell':
         return BuiltinConstMethod(
             'file.tell',
             IntType.get_object(),
             expts=[ErrorConfig.MaybeFileIllegalSeek()])
     elif name == 'truncate':
         return BuiltinConstMethod('file.truncate', NoneType.get_object(),
                                   [], [IntType])
     elif name == 'write':
         return BuiltinConstMethod('file.write', NoneType.get_object(),
                                   [BaseStringType])
     elif name == 'writelines':
         return BuiltinConstMethod('file.writestrings',
                                   NoneType.get_object(),
                                   [[BaseStringType]])
     elif name == 'xreadlines':
         return self
     raise NodeAttrError(name)
Пример #26
0
 def process_args(self, frame, anchor, args, kwargs):
   if kwargs or len(args) != 1:
     return BuiltinConstMethod.process_args(self, frame, anchor, args, kwargs)
   self.TypeMixer(frame, anchor, self.retobj, self.src1, args[0])
   return self.retobj
Пример #27
0
 def __init__(self, dictobj, name):
   self.cache_update = {}
   self.dictobj = dictobj
   BuiltinConstMethod.__init__(self, name, NoneType.get_object(), [ANY])
   return
Пример #28
0
 def process_args(self, frame, anchor, args, kwargs):
   if len(args) == 1:
     frame.raise_expt(ErrorConfig.MaybeKeyNotFound())
   return BuiltinConstMethod.process_args(self, frame, anchor, args, kwargs)
Пример #29
0
 def __init__(self, dictobj, name):
     self.dictobj = dictobj
     self.found = CompoundTypeNode([dictobj.value])
     BuiltinConstMethod.__init__(self, name, self.found, [ANY], [ANY])
     return
Пример #30
0
 def __init__(self, name):
     self.cache_fromkeys = {}
     self.dictobj = DictType.create_dict()
     BuiltinConstMethod.__init__(self, name, self.dictobj, [ANY], [ANY])
     return
Пример #31
0
 def __init__(self, dictobj, name):
     self.cache_update = {}
     self.dictobj = dictobj
     BuiltinConstMethod.__init__(self, name, NoneType.get_object(),
                                 [ANY])
     return
Пример #32
0
 def get_attr(self, frame, anchor, name, write=False):
     from pyntch.aggregate_types import TupleType, ListType
     if write: raise NodeAssignError(name)
     if name == 'capitalize':
         return BuiltinConstMethod('str.capitalize', self.get_object())
     elif name == 'center':
         return BuiltinConstMethod('str.center', self.get_object(),
                                   [IntType], [BaseStringType])
     elif name == 'count':
         return BuiltinConstMethod('str.count', IntType.get_object(),
                                   [BaseStringType], [IntType, IntType])
     elif name == 'decode':
         return BuiltinConstMethod('str.decode', UnicodeType.get_object(),
                                   [], [BaseStringType, BaseStringType],
                                   [ErrorConfig.MaybeNotDecodable()])
     elif name == 'encode':
         return BuiltinConstMethod('str.encode', StrType.get_object(), [],
                                   [BaseStringType, BaseStringType],
                                   [ErrorConfig.MaybeNotEncodable()])
     elif name == 'endswith':
         return BuiltinConstMethod('str.endswith', BoolType.get_object(),
                                   [BaseStringType], [IntType, IntType])
     elif name == 'expandtabs':
         return BuiltinConstMethod('str.expandtabs', self.get_object(), [],
                                   [IntType])
     elif name == 'find':
         return BuiltinConstMethod('str.find', IntType.get_object(),
                                   [BaseStringType], [IntType, IntType])
     elif name == 'index':
         return BuiltinConstMethod('str.index', IntType.get_object(),
                                   [BaseStringType], [IntType, IntType],
                                   [ErrorConfig.MaybeSubstringNotFound()])
     elif name == 'isalnum':
         return BuiltinConstMethod('str.isalnum', BoolType.get_object())
     elif name == 'isalpha':
         return BuiltinConstMethod('str.isalpha', BoolType.get_object())
     elif name == 'isdigit':
         return BuiltinConstMethod('str.isdigit', BoolType.get_object())
     elif name == 'islower':
         return BuiltinConstMethod('str.islower', BoolType.get_object())
     elif name == 'isspace':
         return BuiltinConstMethod('str.isspace', BoolType.get_object())
     elif name == 'istitle':
         return BuiltinConstMethod('str.istitle', BoolType.get_object())
     elif name == 'isupper':
         return BuiltinConstMethod('str.isupper', BoolType.get_object())
     elif name == 'join':
         return BuiltinConstMethod('str.join', self.get_object(),
                                   [[BaseStringType]])
     elif name == 'ljust':
         return BuiltinConstMethod('str.ljust', self.get_object(),
                                   [IntType], [BaseStringType])
     elif name == 'lower':
         return BuiltinConstMethod('str.lower', self.get_object())
     elif name == 'lstrip':
         return BuiltinConstMethod('str.lstrip', self.get_object(), [],
                                   [BaseStringType])
     elif name == 'partition':
         return BuiltinConstMethod(
             'str.partiion',
             TupleType.create_tuple(
                 [self.get_object(),
                  self.get_object(),
                  self.get_object()]), [BaseStringType])
     elif name == 'replace':
         return BuiltinConstMethod('str.replace', self.get_object(),
                                   [BaseStringType, BaseStringType],
                                   [IntType])
     elif name == 'rfind':
         return BuiltinConstMethod('str.rfind', IntType.get_object(),
                                   [BaseStringType], [IntType, IntType])
     elif name == 'rindex':
         return BuiltinConstMethod('str.rindex', IntType.get_object(),
                                   [BaseStringType], [IntType, IntType],
                                   [ErrorConfig.MaybeSubstringNotFound()])
     elif name == 'rjust':
         return BuiltinConstMethod('str.rjust', self.get_object(),
                                   [IntType], [BaseStringType])
     elif name == 'rpartition':
         return BuiltinConstMethod(
             'str.rpartiion',
             TupleType.create_tuple(
                 [self.get_object(),
                  self.get_object(),
                  self.get_object()]), [BaseStringType])
     elif name == 'rsplit':
         return BuiltinConstMethod('str.rsplit',
                                   ListType.create_list(self.get_object()),
                                   [], [BaseStringType, IntType])
     elif name == 'rstrip':
         return BuiltinConstMethod('str.rstrip', self.get_object(), [],
                                   [BaseStringType])
     elif name == 'split':
         return BuiltinConstMethod('str.split',
                                   ListType.create_list(self.get_object()),
                                   [], [BaseStringType, IntType])
     elif name == 'splitlines':
         return BuiltinConstMethod('str.splitlines',
                                   ListType.create_list(self.get_object()),
                                   [], [ANY])
     elif name == 'startswith':
         return BuiltinConstMethod('str.startswith', BoolType.get_object(),
                                   [BaseStringType], [IntType, IntType])
     elif name == 'strip':
         return BuiltinConstMethod('str.strip', self.get_object(), [],
                                   [BaseStringType])
     elif name == 'swapcase':
         return BuiltinConstMethod('str.swapcase', self.get_object())
     elif name == 'title':
         return BuiltinConstMethod('str.title', self.get_object())
     elif name == 'upper':
         return BuiltinConstMethod('str.upper', self.get_object())
     elif name == 'zfill':
         return BuiltinConstMethod('str.zfill', self.get_object(),
                                   [IntType])
     raise NodeAttrError(name)