def traceQueueContents(self): """ Dump information about the queue to the trace log. """ from typhon.objects.printers import toString debug_print("Pending queue for " + self.name.encode("utf-8")) for (resolver, target, atom, args, namedArgs) in self._pending: debug_print(toString(target).encode('utf-8') + "." + atom.verb.encode('utf-8') + "(" + ', '.join([toString(a).encode('utf-8') for a in args]) + ")") return NullObject
def traceQueueContents(self): """ Dump information about the queue to the trace log. """ from typhon.objects.printers import toString debug_print("Pending queue for " + self.name.encode("utf-8")) for (resolver, target, atom, args, namedArgs) in self._pending: debug_print( toString(target).encode('utf-8') + "." + atom.verb.encode('utf-8') + "(" + ', '.join([toString(a).encode('utf-8') for a in args]) + ")") return NullObject
def auditDeepFrozen(audition): from typhon.nodes import FinalPattern, Obj from typhon.objects.user import Audition from typhon.objects.printers import toString if not isinstance(audition, Audition): raise userError(u"not invoked with an Audition") ast = audition.ast if not isinstance(ast, Obj): raise userError(u"audition not created with an object expr") n = ast._n if isinstance(n, FinalPattern): objName = ast._n._n else: objName = None ss = ast._script.getStaticScope() namesUsed = ss.read + ss.set errors = [] for name in namesUsed: if name == objName: continue guard = audition.getGuard(name) if not deepFrozenSupersetOf(guard): errors.append(u'"%s" in the lexical scope of %s does not have a ' u'guard implying DeepFrozen, but %s' % (name, audition.fqn, toString(guard))) if len(errors) > 0: raise userError(u'\n'.join(errors))
def _toString(self, obj): """ Convert an object to an unquoted string representation. """ return toString(obj)
def toString(self): return toString(self)
def toQuote(self): return toString(self)
def recv(self, atom, args): if atom is CALLWITHPAIR_2 or atom is CALLWITHPAIR_3: target = args[0] pair = unwrapList(args[1]) if len(pair) not in (2, 3): raise userError(u"callWithPair/2 requires a pair!") if len(pair) == 3: namedArgs = pair[2] else: namedArgs = EMPTY_MAP sendVerb = unwrapStr(pair[0]) sendArgs = unwrapList(pair[1]) rv = target.call(sendVerb, sendArgs, namedArgs) if rv is None: print "callWithPair/2: Returned None:", \ target.__class__.__name__, sendVerb.encode("utf-8") raise RuntimeError("Implementation error") return rv if atom is CALL_3 or atom is CALL_4: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) if len(args) == 3: namedArgs = EMPTY_MAP else: namedArgs = args[3] rv = target.call(sendVerb, sendArgs, namedArgs) if rv is None: print "call/3: Returned None:", target.__class__.__name__, \ sendVerb.encode("utf-8") raise RuntimeError("Implementation error") return rv if atom is SENDONLY_3: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) # Signed, sealed, delivered, I'm yours. sendAtom = getAtom(sendVerb, len(sendArgs)) vat = currentVat.get() vat.sendOnly(target, sendAtom, sendArgs, EMPTY_MAP) return NullObject if atom is SEND_3: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) # Signed, sealed, delivered, I'm yours. sendAtom = getAtom(sendVerb, len(sendArgs)) vat = currentVat.get() return vat.send(target, sendAtom, sendArgs, EMPTY_MAP) if atom is CALLWITHMESSAGE_2: target = args[0] msg = unwrapList(args[1]) if len(msg) != 3: raise userError( u"callWithPair/2 requires a [verb, args, namedArgs] triple") sendVerb = unwrapStr(msg[0]) sendArgs = unwrapList(msg[1]) sendNamedArgs = resolution(msg[2]) if not isinstance(sendNamedArgs, ConstMap): raise WrongType(u"namedArgs must be a ConstMap") rv = target.call(sendVerb, sendArgs, sendNamedArgs) if rv is None: print "callWithPair/2: Returned None:", \ target.__class__.__name__, sendVerb.encode("utf-8") raise RuntimeError("Implementation error") return rv if atom is CALL_4: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) sendNamedArgs = resolution(args[3]) if not isinstance(sendNamedArgs, ConstMap): raise WrongType(u"namedArgs must be a ConstMap") rv = target.call(sendVerb, sendArgs, sendNamedArgs) if rv is None: print "call/3: Returned None:", target.__class__.__name__, \ sendVerb.encode("utf-8") raise RuntimeError("Implementation error") return rv if atom is SENDONLY_4: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) sendNamedArgs = resolution(args[3]) if not isinstance(sendNamedArgs, ConstMap): raise WrongType(u"namedArgs must be a ConstMap") # Signed, sealed, delivered, I'm yours. sendAtom = getAtom(sendVerb, len(sendArgs)) vat = currentVat.get() return vat.sendOnly(target, sendAtom, sendArgs, sendNamedArgs) if atom is SEND_4: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) sendNamedArgs = resolution(args[3]) if not isinstance(sendNamedArgs, ConstMap): raise WrongType(u"namedArgs must be a ConstMap") # Signed, sealed, delivered, I'm yours. sendAtom = getAtom(sendVerb, len(sendArgs)) vat = currentVat.get() return vat.send(target, sendAtom, sendArgs, sendNamedArgs) if atom is TOQUOTE_1: return StrObject(args[0].toQuote()) if atom is TOSTRING_1: return StrObject(toString(args[0])) raise Refused(self, atom, args)
def recv(self, atom, args): if atom is CALLWITHPAIR_2 or atom is CALLWITHPAIR_3: target = args[0] pair = unwrapList(args[1]) if len(pair) not in (2, 3): raise userError(u"callWithPair/2 requires a pair!") if len(pair) == 3: namedArgs = pair[2] else: namedArgs = EMPTY_MAP sendVerb = unwrapStr(pair[0]) sendArgs = unwrapList(pair[1]) rv = target.call(sendVerb, sendArgs, namedArgs) if rv is None: print "callWithPair/2: Returned None:", \ target.__class__.__name__, sendVerb.encode("utf-8") raise RuntimeError("Implementation error") return rv if atom is CALL_3 or atom is CALL_4: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) if len(args) == 3: namedArgs = EMPTY_MAP else: namedArgs = args[3] rv = target.call(sendVerb, sendArgs, namedArgs) if rv is None: print "call/3: Returned None:", target.__class__.__name__, \ sendVerb.encode("utf-8") raise RuntimeError("Implementation error") return rv if atom is SENDONLY_3: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) # Signed, sealed, delivered, I'm yours. sendAtom = getAtom(sendVerb, len(sendArgs)) vat = currentVat.get() vat.sendOnly(target, sendAtom, sendArgs, EMPTY_MAP) return NullObject if atom is SEND_3: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) # Signed, sealed, delivered, I'm yours. sendAtom = getAtom(sendVerb, len(sendArgs)) vat = currentVat.get() return vat.send(target, sendAtom, sendArgs, EMPTY_MAP) if atom is CALLWITHMESSAGE_2: target = args[0] msg = unwrapList(args[1]) if len(msg) != 3: raise userError( u"callWithPair/2 requires a [verb, args, namedArgs] triple" ) sendVerb = unwrapStr(msg[0]) sendArgs = unwrapList(msg[1]) sendNamedArgs = resolution(msg[2]) if not isinstance(sendNamedArgs, ConstMap): raise WrongType(u"namedArgs must be a ConstMap") rv = target.call(sendVerb, sendArgs, sendNamedArgs) if rv is None: print "callWithPair/2: Returned None:", \ target.__class__.__name__, sendVerb.encode("utf-8") raise RuntimeError("Implementation error") return rv if atom is CALL_4: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) sendNamedArgs = resolution(args[3]) if not isinstance(sendNamedArgs, ConstMap): raise WrongType(u"namedArgs must be a ConstMap") rv = target.call(sendVerb, sendArgs, sendNamedArgs) if rv is None: print "call/3: Returned None:", target.__class__.__name__, \ sendVerb.encode("utf-8") raise RuntimeError("Implementation error") return rv if atom is SENDONLY_4: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) sendNamedArgs = resolution(args[3]) if not isinstance(sendNamedArgs, ConstMap): raise WrongType(u"namedArgs must be a ConstMap") # Signed, sealed, delivered, I'm yours. sendAtom = getAtom(sendVerb, len(sendArgs)) vat = currentVat.get() return vat.sendOnly(target, sendAtom, sendArgs, sendNamedArgs) if atom is SEND_4: target = args[0] sendVerb = unwrapStr(args[1]) sendArgs = unwrapList(args[2]) sendNamedArgs = resolution(args[3]) if not isinstance(sendNamedArgs, ConstMap): raise WrongType(u"namedArgs must be a ConstMap") # Signed, sealed, delivered, I'm yours. sendAtom = getAtom(sendVerb, len(sendArgs)) vat = currentVat.get() return vat.send(target, sendAtom, sendArgs, sendNamedArgs) if atom is TOQUOTE_1: return StrObject(args[0].toQuote()) if atom is TOSTRING_1: return StrObject(toString(args[0])) raise Refused(self, atom, args)