Contact: fumanchu@aminus.org

Log in as guest/geniusql to create tickets

Changeset 58

Show
Ignore:
Timestamp:
04/05/07 11:23:46
Author:
fumanchu
Message:

Fixes for codewalk.MapStackObject?.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/geniusql/codewalk.py

    r57 r58  
    700700     
    701701    def __repr__(self): 
    702         return "{%s}" % ", ".join([": ".join((k, v)) 
    703                                    for k, v in self.iteritems()]) 
     702        atoms = [] 
     703        for k, v in self.iteritems(): 
     704            atoms.append("%s: %s" % (k, v)) 
     705        return "{%s}" % ", ".join(atoms) 
    704706 
    705707 
     
    777779     
    778780    def visit_BUILD_LIST(self, lo, hi): 
    779         terms = [self.stack.pop() for i in range(lo + (hi << 8))] 
     781        terms = [str(self.stack.pop()) for i in range(lo + (hi << 8))] 
    780782        terms.reverse() 
    781783        self.stack.append("[%s]" % ", ".join(terms)) 
     
    787789     
    788790    def visit_BUILD_TUPLE(self, lo, hi): 
    789         terms = [self.stack.pop() for i in range(lo + (hi << 8))] 
     791        terms = [str(self.stack.pop()) for i in range(lo + (hi << 8))] 
    790792        terms.reverse() 
    791793        self.stack.append("(%s)" % ", ".join(terms)) 
     
    797799            key = self.stack.pop() 
    798800            kwargs[key] = val 
    799         kwargs = ", ".join([k + "=" + v for k, v in kwargs.iteritems()]) 
     801        kwargs = ", ".join(["%s=%s" % (k, v) for k, v in kwargs.iteritems()]) 
    800802         
    801803        args = [] 
     
    804806            args.append(arg) 
    805807        args.reverse() 
    806         args = ", ".join(args
     808        args = ", ".join([str(x) for x in args]
    807809         
    808810        if kwargs: 
  • trunk/geniusql/test/test_codewalk.py

    r57 r58  
    220220        self.assertEqual(codewalk.LambdaDecompiler(builder).code(), 
    221221                         "lambda a, b, c: (c, [b.next(), a], c.ID)") 
     222         
     223        # Test MapStackObject 
     224        e = lambda t: {'x': 3, 'y': 5} 
     225        ld = codewalk.LambdaDecompiler(e) 
     226        c = ld.code() 
     227        self.assertEqual(c, "lambda t: {'y': 5, 'x': 3}", (c, ld.stack)) 
     228         
     229        e = lambda t:{'x':{'a':10}, 'y':5} 
     230        ld = codewalk.LambdaDecompiler(e) 
     231        c = ld.code() 
     232        self.assertEqual(c, "lambda t: {'y': 5, 'x': {'a': 10}}", (c, ld.stack)) 
     233         
     234        e = lambda t:{'x':str({'a':10}), 'y':5} 
     235        ld = codewalk.LambdaDecompiler(e) 
     236        c = ld.code() 
     237        self.assertEqual(c, "lambda t: {'y': 5, 'x': str({'a': 10})}", (c, ld.stack)) 
     238         
     239        e = lambda t: [{'x': 10}, {'y': 5}] 
     240        ld = codewalk.LambdaDecompiler(e) 
     241        c = ld.code() 
     242        self.assertEqual(c, "lambda t: [{'x': 10}, {'y': 5}]", (c, ld.stack)) 
    222243     
    223244    def test_BranchTracker(self):