import sys, os sys.path.insert(0, r"D:\0projects\bountykimi\tmp") from harness import Call, build, check_stream, ART, MARKDIR, g, enc # Fix: server classes take handler CLASS, not instance. Our Call always calls. # Emit the class object raw via GLOBAL (no REDUCE). class Raw: def __init__(self, mod, name): self.mod, self.name = mod, name def emit(self): return g(self.mod, self.name) import harness _orig_enc = harness.enc def enc2(a): if isinstance(a, Raw): return a.emit() return _orig_enc(a) harness.enc = enc2 Call_mod = harness.Call cands = { "B10_threadinghttpserver": [Call_mod("http.server", "ThreadingHTTPServer", ("127.0.0.1", 18993), Raw("http.server", "SimpleHTTPRequestHandler"))], "B11_udpserver_bind": [Call_mod("socketserver", "UDPServer", ("127.0.0.1", 18994), Raw("socketserver", "DatagramRequestHandler"))], "B12_forkingmixin_bind": [Call_mod("socketserver", "TCPServer", ("127.0.0.1", 18995), Raw("socketserver", "StreamRequestHandler"))], } for name, steps in cands.items(): path = os.path.join(ART, name + ".pkl") build(steps, path) bad, globs, ga = check_stream(path) print(name, "bad:", bad, "getattr:", ga, "globals:", globs)