Changeset 3893:8ded7a61db60 in livinglogic.python.xist

Show
Ignore:
Timestamp:
11/25/09 12:08:39 (10 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Use format method instead of % for string formatting. Optimize JSP for UL4 templates.

The generated JSP code for the UL4 function xmlescape no longer calls
ObjectUtils?.toString().

Use autoboxing in the Java code generated by jsp.fromul4().

Files:
53 modified

Legend:

Unmodified
Added
Removed
  • NEWS.rst

    r3892 r3893  
    2525*   :class:`ll.orasql.PrimaryKey` has a new method :meth:`itercolumns` that 
    2626    returns an iterator over the columns this primary key consists of. 
     27 
     28*   The generated JSP code for the UL4 function ``xmlescape`` no longer calls 
     29    ``ObjectUtils.toString``. This should reduce the code size for the JSP 
     30    source code of UL4 templates. 
     31 
     32* Use autoboxing in the Java code generated by :mod:`ll.xist.ns.jsp.fromul4`. 
    2733 
    2834 
  • demos/cherrypy-images/images.py

    r3795 r3893  
    2525    @cherrypy.expose 
    2626    def images(self, filename): 
    27         return cptools.serveFile("%s/%s" % (self.directory, filename)) 
     27        return cptools.serveFile("{0}/{1}".format(self.directory, filename)) 
    2828 
    2929    @cherrypy.expose 
  • docs/XIST_Advanced.xml

    r3829 r3893  
    153153            node = converter.target.inline(self.content, font_weight="bold") 
    154154        else: 
    155             raise TypeError("unsupported conversion target %r" % converter.target) 
     155            raise TypeError("unsupported conversion target {0!r}".format(converter.target)) 
    156156        return node.convert(converter) 
    157157</prog> 
  • docs/XIST_Examples.xml

    r3862 r3893  
    261261    def convert(self, converter): 
    262262        context = converter[self] 
    263         elementname = "h%d" % min(context.level, 6) 
     263        elementname = "h{0}".format(min(context.level, 6)) 
    264264        node = xsc.Frag( 
    265265            getattr(converter.target, elementname)(self.attrs.title), 
  • setup.py

    r3874 r3893  
    164164FTP 
    165165ssh 
    166 py.execnet 
     166execnet 
    167167 
    168168# xml_codec 
     
    218218    news = news[underlines[0]-1:underlines[1]-1] 
    219219    news = "".join(news) 
    220     descr = "%s\n\n\n%s" % (DESCRIPTION.strip(), news) 
     220    descr = "{0}\n\n\n{1}".format(DESCRIPTION.strip(), news) 
    221221 
    222222    # Get rid of text roles PyPI doesn't know about 
  • src/ll/color.py

    r3691 r3893  
    7676        elif s in csscolors: 
    7777            return csscolors[s] 
    78         raise ValueError("can't interpret %s as css value" % s) 
     78        raise ValueError("can't interpret {0} as css value".format(s)) 
    7979 
    8080    @classmethod 
     
    111111    def __repr__(self): 
    112112        if self[3] != 0xff: 
    113             return "Color(0x%02x, 0x%02x, 0x%02x, 0x%02x)" % self 
     113            return "Color({0:#04x}, {1:#04x}, {2:#04x}, {3:#04x})".format(*self) 
    114114        else: 
    115             return "Color(0x%02x, 0x%02x, 0x%02x)" % self[:3] 
     115            return "Color({0:#04x}, {1:#04x}, {2:#04x})".format(self[0], self[1], self[2]) 
    116116 
    117117    def __str__(self): 
     
    120120        """ 
    121121        if self[3] != 0xff: 
    122             return "rgba(%d,%d,%d,%.3f)" % (self[0], self[1], self[2], self[3]/255.) 
     122            return "rgba({0},{1},{2},{3:.3f})".format(self[0], self[1], self[2], self[3]/255.) 
    123123        else: 
    124             s = "#%02x%02x%02x" % (self[0], self[1], self[2]) 
     124            s = "#{0:02x}{1:02x}{2:02x}".format(self[0], self[1], self[2]) 
    125125            if s[1]==s[2] and s[3]==s[4] and s[5]==s[6]: 
    126                 s = "#%s%s%s" % (s[1], s[3], s[5]) 
     126                s = "#{0}{1}{2}".format(s[1], s[3], s[5]) 
    127127        return s 
    128128 
  • src/ll/daemon.py

    r3769 r3893  
    3030        if counter.service(): 
    3131            import sys, os, time 
    32             sys.stdout.write("Daemon started with pid %d\n" % os.getpid()) 
     32            sys.stdout.write("Daemon started with pid {0}\n".format(os.getpid())) 
    3333            sys.stdout.write("Daemon stdout output\n") 
    3434            sys.stderr.write("Daemon stderr output\n") 
    3535            c = 0 
    3636            while True: 
    37                 sys.stdout.write('%d: %s\n' % (c, time.ctime(time.time()))) 
     37                sys.stdout.write('{0}: {1}\n'.format(c, time.ctime(time.time()))) 
    3838                sys.stdout.flush() 
    3939                c += 1 
     
    146146                sys.exit(0) # Exit first parent 
    147147        except OSError, exc: 
    148             sys.exit("%s: fork #1 failed: (%d) %s\n" % (sys.argv[0], exc.errno, exc.strerror)) 
     148            sys.exit("{0}: fork #1 failed: ({1}) {2}\n".format(sys.argv[0], exc.errno, exc.strerror)) 
    149149     
    150150        # Decouple from parent environment 
     
    159159                sys.exit(0) # Exit second parent 
    160160        except OSError, exc: 
    161             sys.exit("%s: fork #2 failed: (%d) %s\n" % (sys.argv[0], exc.errno, exc.strerror)) 
     161            sys.exit("{0}: fork #2 failed: ({1}) {2}\n".format(sys.argv[0], exc.errno, exc.strerror)) 
    162162     
    163163        # Now I am a daemon! 
     
    189189            pidfile = open(self.options.pidfile, "rb") 
    190190        except IOError, exc: 
    191             sys.exit("can't open pidfile %s: %s" % (self.options.pidfile, str(exc))) 
     191            sys.exit("can't open pidfile {0}: {1}".format(self.options.pidfile, str(exc))) 
    192192        data = pidfile.read() 
    193193        try: 
    194194            pid = int(data) 
    195195        except ValueError: 
    196             sys.exit("mangled pidfile %s: %r" % (self.options.pidfile, data)) 
     196            sys.exit("mangled pidfile {0}: {1}".format(self.options.pidfile, data)) 
    197197        os.kill(pid, signal.SIGTERM) 
    198198 
     
    245245            return False 
    246246        else: 
    247             p.error("incorrect argument %s" % self.args[1]) 
     247            p.error("incorrect argument {0}".format(self.args[1])) 
    248248            sys.exit(1) 
  • src/ll/make.py

    r3888 r3893  
    9999 
    100100    def __repr__(self): 
    101         return "<%s.%s object action=%r since=%r reportable=%r reported=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.action, self.since, self.reportable, self.reported, id(self)) 
     101        return "<{0}.{1} object action={2!r} since={3!r} reportable={4!r} reported={5} at {6:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.action, self.since, self.reportable, self.reported, id(self)) 
    102102 
    103103 
     
    161161                    if error is not None: 
    162162                        if error.__module__ != "exceptions": 
    163                             text = "%s.%s" % (error.__module__, error.__name__) 
     163                            text = "{0}.{1}".format(error.__module__, error.__name__) 
    164164                        else: 
    165165                            text = error.__name__ 
     
    168168                        args.append("nodata") 
    169169                    elif isinstance(data, str): 
    170                         args.append(s4data("str (%db)" % len(data))) 
     170                        args.append(s4data("str ({0}b)".format(len(data)))) 
    171171                    elif isinstance(data, unicode): 
    172                         args.append(s4data("unicode (%dc)" % len(data))) 
     172                        args.append(s4data("unicode ({0}c)".format(len(data)))) 
    173173                    else: 
    174174                        dataclass = data.__class__ 
    175175                        if dataclass.__module__ != "__builtin__": 
    176                             text = "%s.%s @ 0x%x" % (dataclass.__module__, dataclass.__name__, id(data)) 
     176                            text = "{0}.{1} @ {2:#x}".format(dataclass.__module__, dataclass.__name__, id(data)) 
    177177                        else: 
    178                             text = "%s @ 0x%x" % (dataclass.__name__, id(data)) 
     178                            text = "{0} @ {1:#x}".format(dataclass.__name__, id(data)) 
    179179                        args.append(s4data(text)) 
    180180                project.writestack(*args) 
     
    200200 
    201201    def __str__(self): 
    202         return "target with key=%r redefined" % self.key 
     202        return "target with key={0!r} redefined".format(self.key) 
    203203 
    204204 
     
    213213 
    214214    def __str__(self): 
    215         return "target %r undefined" % self.key 
     215        return "target {0!r} undefined".format(self.key) 
    216216 
    217217 
     
    281281        return obj.type 
    282282    except AttributeError: 
    283         return "%s.%s" % (obj.__class__.__module__, obj.__class__.__name__) 
     283        return "{0}.{1}".format(obj.__class__.__module__, obj.__class__.__name__) 
    284284_ipipe_type.__xname__ = "type" 
    285285 
     
    390390        def format(arg): 
    391391            if isinstance(arg, Action): 
    392                 return " from %s.%s" % (arg.__class__.__module__, arg.__class__.__name__) 
     392                return " from {0}.{1}".format(arg.__class__.__module__, arg.__class__.__name__) 
    393393            elif isinstance(arg, tuple): 
    394394                return "=(?)" 
     
    398398                return "={?}" 
    399399            else: 
    400                 return "=%r" % (arg,) 
    401  
    402         output = ["arg %d%s" % (i, format(arg)) for (i, arg) in enumerate(self.getargs())] 
     400                return "={0!r}"/format(arg) 
     401 
     402        output = ["arg {0}{1}".format(i, format(arg)) for (i, arg) in enumerate(self.getargs())] 
    403403        for (argname, arg) in self.getkwargs().iteritems(): 
    404             output.append("arg %s%s" % (argname, format(arg))) 
     404            output.append("arg {0}{1}".format(argname, format(arg))) 
    405405             
    406406        if output: 
    407             output = " with %s" % ", ".join(output) 
     407            output = " with {0}".format(", ".join(output)) 
    408408        else: 
    409409            output = "" 
    410         return "<%s.%s object%s at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, output, id(self)) 
     410        return "<{0}.{1} object{2} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, output, id(self)) 
    411411 
    412412    @misc.notimplemented 
     
    466466                    if len(test) < len(s): 
    467467                        s = test 
    468                     test = "~/%s" % key.relative(home) 
     468                    test = "~/{0}".format(key.relative(home)) 
    469469                    if len(test) < len(s): 
    470470                        s = test 
     
    550550 
    551551    def __repr__(self): 
    552         return "<%s.%s object at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, id(self)) 
     552        return "<{0}.{1} object at {2:#x}>".format(self.__class__.__module__, self.__class__.__name__, id(self)) 
    553553 
    554554 
     
    602602 
    603603    def __repr__(self): 
    604         s = "<%s.%s object" % (self.__class__.__module__, self.__class__.__name__) 
     604        s = "<{0}.{1} object".format(self.__class__.__module__, self.__class__.__name__) 
    605605        if self.key is not None: 
    606             s += " with key=%r" % self.key 
    607         s += " at 0x%x>" % id(self) 
     606            s += " with key={0!r}".format(self.key) 
     607        s += " at {0:#x}>".format(id(self)) 
    608608        return s 
    609609 
     
    673673        else: # We have no inputs (i.e. this is a "source" file) 
    674674            if self.changed is bigbang: 
    675                 raise ValueError("source file %r doesn't exist" % self.key) 
     675                raise ValueError("source file {0!r} doesn't exist".format(self.key)) 
    676676        if self.changed > since: # We are up to date now and newer than the output action 
    677677            return self.read(project) # return file data (to output action or client) 
     
    694694 
    695695    def __repr__(self): 
    696         return "<%s.%s object key=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.key, id(self)) 
     696        return "<{0}.{1} object key={2!r} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.key, id(self)) 
    697697 
    698698 
     
    721721 
    722722    def __repr__(self): 
    723         return "<%s.%s object with mode=0%03o at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.mode, id(self)) 
     723        return "<{0}.{1} object with mode={2:#03o} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.mode, id(self)) 
    724724 
    725725 
     
    752752 
    753753    def __repr__(self): 
    754         return "<%s.%s object with command=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.command, id(self)) 
     754        return "<{0}.{1} object with command={2!r} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.command, id(self)) 
    755755 
    756756 
     
    899899    __ http://xmlgraphics.apache.org/fop/ 
    900900    """ 
    901     command = "/usr/local/src/fop-0.20.5/fop.sh -q -c /usr/local/src/fop-0.20.5/conf/userconfig.xml -fo %s -pdf %s" 
     901    command = "/usr/local/src/fop-0.20.5/fop.sh -q -c /usr/local/src/fop-0.20.5/conf/userconfig.xml -fo {src} -pdf {dst}" 
    902902 
    903903    def execute(self, project, data): 
     
    910910            infile.write(data) 
    911911            infile.close() 
    912             os.system(self.command % (inname, outname)) 
     912            os.system(self.command.format(src=inname, dst=outname)) 
    913913            data = open(outname, "rb").read() 
    914914        finally: 
     
    948948                argsmsg = " with 1 arg" 
    949949            else: 
    950                 argsmsg = " with %d args" % len(args) 
     950                argsmsg = " with {0} args".format(len(args)) 
    951951        else: 
    952952            argsmsg = " without args" 
    953953        if kwargs: 
    954954            if len(kwargs) == 1: 
    955                 kwargsmsg = " and keyword %s" % ", ".join(kwargs) 
     955                kwargsmsg = " and keyword {0}".format(", ".join(kwargs)) 
    956956            else: 
    957                 kwargsmsg = " and keywords %s" % ", ".join(kwargs) 
     957                kwargsmsg = " and keywords {0}".format(", ".join(kwargs)) 
    958958        else: 
    959959            kwargsmsg = "" 
    960         project.writestep(self, "Calling %r" % (func, ), argsmsg, kwargsmsg) 
     960        project.writestep(self, "Calling {0!r}".format(func), argsmsg, kwargsmsg) 
    961961        return func(*args, **kwargs) 
    962962 
     
    991991    def execute(self, project, obj, attrname, *args, **kwargs): 
    992992        func = getattr(obj, attrname) 
    993         project.writestep(self, "Calling %r" % func) 
     993        project.writestep(self, "Calling {0!r}".format(func)) 
    994994        return func(*args, **kwargs) 
    995995 
     
    10141014 
    10151015    def __repr__(self): 
    1016         return "<%s.%s object command=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.command, id(self)) 
     1016        return "<{0}.{1} object command={2!r} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.command, id(self)) 
    10171017 
    10181018 
     
    10431043        """ 
    10441044        key = self.getkey() 
    1045         project.writestep(self, "Changing mode of ", project.strkey(key), " to 0%03o" % mode) 
     1045        project.writestep(self, "Changing mode of ", project.strkey(key), " to {0:#03o}".format(mode)) 
    10461046        key.chmod(mode) 
    10471047        return data 
     
    11881188 
    11891189    def __repr__(self): 
    1190         return "<%s.%s object key=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.getkey(), id(self)) 
     1190        return "<{0}.{1} object key={2!r} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.getkey(), id(self)) 
    11911191 
    11921192 
     
    12761276 
    12771277    def __repr__(self): 
    1278         return "<%s.%s with %d targets at 0x%x>" % (self.__module__, self.__class__.__name__, len(self), id(self)) 
     1278        return "<{0}.{1} with {2} targets at {3:#x}>".format(self.__module__, self.__class__.__name__, len(self), id(self)) 
    12791279 
    12801280    class showaction(misc.propclass): 
     
    14141414            secs += delta.microseconds/1000000. 
    14151415            if rest: 
    1416                 text = "%d:%02d:%06.3fh" % (rest, mins, secs) 
     1416                text = "{0:d}:{1:02d}:{2:06.3f}h".format(rest, mins, secs) 
    14171417            elif mins: 
    1418                 text = "%02d:%06.3fm" % (mins, secs) 
     1418                text = "{0:02d}:{1:06.3f}m".format(mins, secs) 
    14191419            else: 
    1420                 text = "%.3fs" % secs 
     1420                text = "{0:.3f}s".format(secs) 
    14211421        return s4time(text) 
    14221422 
     
    14261426        :class:`datetime.datetime` value :var:`dt`. 
    14271427        """ 
    1428         return s4time(dt.strftime("%Y-%m-%d %H:%M:%S"), ".%06d" % (dt.microsecond)) 
     1428        return s4time(dt.strftime("%Y-%m-%d %H:%M:%S"), "{0:06d}".format(dt.microsecond)) 
    14291429 
    14301430    def strcounter(self, counter): 
     
    14331433        :var:`counter`. 
    14341434        """ 
    1435         return s4counter("%d." % counter) 
     1435        return s4counter("{0}.".format(counter)) 
    14361436 
    14371437    def strerror(self, text): 
     
    14561456            if len(test) < len(s): 
    14571457                s = test 
    1458             test = "~/%s" % key.relative(self.home) 
     1458            test = "~/{0}".format(key.relative(self.home)) 
    14591459            if len(test) < len(s): 
    14601460                s = test 
     
    16131613        p.add_option("-C", "--nocolor", dest="color", help="No colored output", action="store_false", default=None) 
    16141614        p.add_option("-g", "--growl", dest="growl", help="Issue growl notification after the build?", action="store_true", default=None) 
    1615         p.add_option("-a", "--showaction", dest="showaction", help="Show actions (%s)?" % ", ".join(actions), choices=actions, default=action2name(self.showaction)) 
    1616         p.add_option("-s", "--showstep", dest="showstep", help="Show steps (%s)?" % ", ".join(actions), choices=actions, default=action2name(self.showstep)) 
    1617         p.add_option("-n", "--shownote", dest="shownote", help="Show notes (%s)?" % ", ".join(actions), choices=actions, default=action2name(self.shownote)) 
    1618         p.add_option("-r", "--showregistration", dest="showregistration", help="Show registration (%s)?" % ", ".join(actions), choices=actions, default=action2name(self.showregistration)) 
     1615        p.add_option("-a", "--showaction", dest="showaction", help="Show actions ({0})?".format(", ".join(actions)), choices=actions, default=action2name(self.showaction)) 
     1616        p.add_option("-s", "--showstep", dest="showstep", help="Show steps ({0})?".format(", ".join(actions)), choices=actions, default=action2name(self.showstep)) 
     1617        p.add_option("-n", "--shownote", dest="shownote", help="Show notes ({0})?".format(", ".join(actions)), choices=actions, default=action2name(self.shownote)) 
     1618        p.add_option("-r", "--showregistration", dest="showregistration", help="Show registration ({0})?".format(", ".join(actions)), choices=actions, default=action2name(self.showregistration)) 
    16191619        p.add_option("-i", "--showidle", dest="showidle", help="Show actions that didn't produce data?", action="store_true", default=self.showidle) 
    16201620        p.add_option("-d", "--showdata", dest="showdata", help="Show data?", action="store_true", default=self.showdata) 
     
    17271727            if self.growl: 
    17281728                filename = os.path.abspath(sys.modules[self.__class__.__module__].__file__) 
    1729                 cmd = "growlnotify -i py -n ll.make 'll.make done in %s'" % self.strtimedelta(now-self.starttime) 
     1729                cmd = "growlnotify -i py -n ll.make 'll.make done in {0}'".format(self.strtimedelta(now-self.starttime)) 
    17301730                import subprocess 
    17311731                pipe = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE).stdin 
    1732                 pipe.write("%s\n" % filename) 
    1733                 pipe.write("%s.%s\n" % (self.__class__.__module__, self.__class__.__name__)) 
    1734                 pipe.write("%d registered targets, " % len(self)) 
    1735                 pipe.write("%d actions called, " % self.actionscalled) 
    1736                 pipe.write("%d steps executed, " % self.stepsexecuted) 
    1737                 pipe.write("%d files/%d bytes read, " % (self.filesread, self.bytesread)) 
    1738                 pipe.write("%d files/%d bytes written, " % (self.fileswritten, self.byteswritten)) 
    1739                 pipe.write("%d actions failed" % self.actionsfailed) 
     1732                pipe.write("{0}\n".format(filename)) 
     1733                pipe.write("{0}.{1}\n".format(self.__class__.__module__, self.__class__.__name__)) 
     1734                pipe.write("{0} registered targets, ".format(len(self))) 
     1735                pipe.write("{0} actions called, ".format(self.actionscalled)) 
     1736                pipe.write("{0} steps executed, ".format(self.stepsexecuted)) 
     1737                pipe.write("{0} files/{1} bytes read, ".format(self.filesread, self.bytesread)) 
     1738                pipe.write("{0} files/{1} bytes written, ".format(self.fileswritten, self.byteswritten)) 
     1739                pipe.write("{0} actions failed".format(self.actionsfailed)) 
    17401740                pipe.close() 
    17411741 
  • src/ll/misc.py

    r3888 r3893  
    104104            string = string.replace('"', "&quot;") 
    105105            for c in "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1f\x7f\x80\x81\x82\x83\x84\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f": 
    106                 string = string.replace(c, "&#%d;" % ord(c)) 
     106                string = string.replace(c, "&#{0};".format(ord(c))) 
    107107            return string 
    108108 
     
    120120            string = string.replace(">", "&gt;") 
    121121            for c in "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1f\x7f\x80\x81\x82\x83\x84\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f": 
    122                 string = string.replace(c, "&#%d;" % ord(c)) 
     122                string = string.replace(c, "&#{0};".format(ord(c))) 
    123123            return string 
    124124 
     
    137137            string = string.replace('"', "&quot;") 
    138138            for c in "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1f\x7f\x80\x81\x82\x83\x84\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f": 
    139                 string = string.replace(c, "&#%d;" % ord(c)) 
     139                string = string.replace(c, "&#{0};".format(ord(c))) 
    140140            return string 
    141141 
     
    148148    """ 
    149149    def wrapper(self, *args, **kwargs): 
    150         raise NotImplementedError("method %s() not implemented in %r" % (function.__name__, self.__class__)) 
     150        raise NotImplementedError("method {0}() not implemented in {1!r}".format(function.__name__, self.__class__)) 
    151151    wrapper.__dict__.update(function.__dict__) 
    152152    wrapper.__doc__ = function.__doc__ 
     
    278278 
    279279    def __repr__(self): 
    280         return "<%s.%s object with %d items at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, len(self._attrs), id(self)) 
     280        return "<{0}.{1} object with {2} items at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, len(self._attrs), id(self)) 
    281281 
    282282 
     
    365365 
    366366    def __repr__(self): 
    367         return "%s.%s" % (self.__module__, self._name) 
     367        return "{0}.{1}".format(self.__module__, self._name) 
    368368 
    369369 
  • src/ll/nightshade.py

    r3793 r3893  
    8888    else: 
    8989        dt -= dt.tzinfo.utcoffset(dt) 
    90     return "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (weekdayname[dt.weekday()], dt.day, monthname[dt.month], dt.year, dt.hour, dt.minute, dt.second) 
     90    return "{0}, {1:02d} {2:3s} {3:4d} {4:02d}:{5:02d}:{6:02d} GMT".format(weekdayname[dt.weekday()], dt.day, monthname[dt.month], dt.year, dt.hour, dt.minute, dt.second) 
    9191 
    9292 
     
    265265                encoding = result.get("p_encoding", None) 
    266266            if encoding is not None: 
    267                 cherrypy.response.headers["Content-Type"] = "%s; charset=%s" % (mimetype, encoding) 
     267                cherrypy.response.headers["Content-Type"] = "{0}; charset={1}".format(mimetype, encoding) 
    268268            else: 
    269269                cherrypy.response.headers["Content-Type"] = mimetype 
     
    288288                result = result.read() 
    289289            if not hasetag: 
    290                 cherrypy.response.headers["ETag"] = '"%x"' % hash(body) 
     290                cherrypy.response.headers["ETag"] = '"{0:x}"'.format(hash(body)) 
    291291 
    292292        if hasattr(body, "read"): 
  • src/ll/orasql/__init__.py

    r3892 r3893  
    6868class SQLObjectNotFoundError(IOError): 
    6969    def __init__(self, obj): 
    70         IOError.__init__(self, errno.ENOENT, "no such %s: %s" % (obj.type, getfullname(obj.name, obj.owner))) 
     70        IOError.__init__(self, errno.ENOENT, "no such {0}: {1}".format(obj.type, getfullname(obj.name, obj.owner))) 
    7171        self.obj = obj 
    7272 
     
    7878 
    7979    def __repr__(self): 
    80         return "<%s.%s name=%r owner=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, self.owner, id(self)) 
     80        return "<{0}.{1} name={2!r} owner={3!r} at {4:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.name, self.owner, id(self)) 
    8181 
    8282    def __str__(self): 
    8383        if self.owner is None: 
    84             return "no object named %r" % (self.name, ) 
    85         else: 
    86             return "no object named %r for owner %r" % (self.name, self.owner) 
     84            return "no object named {0!r}".format(self.name) 
     85        else: 
     86            return "no object named {0!r} for owner {1!r}".format(self.name, self.owner) 
    8787 
    8888 
     
    9292 
    9393    def __repr__(self): 
    94         return "<%s.%s mode=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.mode, id(self)) 
     94        return "<{0}.{1} mode={2!r} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.mode, id(self)) 
    9595 
    9696    def __str__(self): 
    97         return "unknown mode %r" % self.mode 
     97        return "unknown mode {0!r}".format(self.mode) 
    9898 
    9999 
     
    103103 
    104104    def __repr__(self): 
    105         return "<%s.%s schema=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.schema, id(self)) 
     105        return "<{0}.{1} schema={2!r} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.schema, id(self)) 
    106106 
    107107    def __str__(self): 
    108         return "unknown schema %r" % self.schema 
     108        return "unknown schema {0!r}".format(self.schema) 
    109109 
    110110 
     
    115115 
    116116    def __repr__(self): 
    117         return "<%s.%s object=%r message=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.object, self.message, id(self)) 
     117        return "<{0}.{1} object={2!r} message={3!r} at {4:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.object, self.message, id(self)) 
    118118 
    119119    def __str__(self): 
    120         return "conflict in %r: %s" % (self.object, self.message) 
     120        return "conflict in {0!r}: {1}".format(self.object, self.message) 
    121121 
    122122 
     
    168168    def __xrepr__(self, mode): 
    169169        if mode == "header": 
    170             yield (astyle.style_default, "%s.%s" % (self.__class__.__module__, self.__class__.__name__)) 
     170            yield (astyle.style_default, "{0}.{1}".format(self.__class__.__module__, self.__class__.__name__)) 
    171171        else: 
    172172            yield (astyle.style_default, repr(self)) 
    173173 
    174174    def __repr__(self): 
    175         return "%s.%s(%s)" % (self.__class__.__module__, self.__class__.__name__, ", ".join("%s=%r" % item for item in self.iteritems())) 
     175        return "{0}.{1}({2})".format(self.__class__.__module__, self.__class__.__name__, ", ".join("{0}={1!r}".format(*item) for item in self.iteritems())) 
    176176 
    177177 
     
    215215            index = self._name2index[name.lower()] 
    216216        except KeyError: 
    217             raise AttributeError("'%s' object has no attribute %r" % (self.__class__.__name__, name)) 
     217            raise AttributeError("'{0}' object has no attribute {1!r}".format(self.__class__.__name__, name)) 
    218218        return tuple.__getitem__(self, index) 
    219219 
     
    262262    def __xrepr__(self, mode): 
    263263        if mode == "header": 
    264             yield (astyle.style_default, "%s.%s" % (self.__class__.__module__, self.__class__.__name__)) 
     264            yield (astyle.style_default, "{0}.{1}".format(self.__class__.__module__, self.__class__.__name__)) 
    265265        else: 
    266266            yield (astyle.style_default, repr(self)) 
    267267 
    268268    def __repr__(self): 
    269         return "<%s.%s %s at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, ", ".join("%s=%r" % item for item in self.iteritems()), id(self)) 
     269        return "<{0}.{1} {2} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, ", ".join("{0}={1!r}".format(*item) for item in self.iteritems()), id(self)) 
    270270 
    271271 
     
    302302 
    303303    def connectstring(self): 
    304         return "%s@%s" % (self.username, self.tnsentry) 
     304        return "{0}@{1}".format(self.username, self.tnsentry) 
    305305 
    306306    def __repr__(self): 
    307         return "<%s.%s object db=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.connectstring(), id(self)) 
     307        return "<{0}.{1} object db={2!r} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.connectstring(), id(self)) 
    308308 
    309309 
     
    334334 
    335335    def connectstring(self): 
    336         return "%s@%s" % (self.username, self.tnsentry) 
     336        return "{0}@{1}".format(self.username, self.tnsentry) 
    337337 
    338338    def cursor(self, readlobs=None): 
     
    344344 
    345345    def __repr__(self): 
    346         return "<%s.%s object db=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.connectstring(), id(self)) 
     346        return "<{0}.{1} object db={2!r} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.connectstring(), id(self)) 
    347347 
    348348    def __xrepr__(self, mode): 
    349349        if mode == "header" or mode=="footer": 
    350             yield (astyle.style_default, "oracle connection to %s" % self.connectstring()) 
     350            yield (astyle.style_default, "oracle connection to {0}".format(self.connectstring())) 
    351351        elif mode == "cell": 
    352352            yield (style_connection, self.connectstring()) 
     
    572572                    for rec2 in cursor.fetchall(): 
    573573                        # No dependency checks neccessary, but use ``do`` anyway 
    574                         for subobj in do(Comment("%s.%s" % (rec.table_name, rec2.column_name), rec.owner, self)): 
     574                        for subobj in do(Comment("{0}.{1}".format(rec.table_name, rec2.column_name), rec.owner, self)): 
    575575                            yield subobj 
    576576 
     
    652652                cls = Object.name2type[type] 
    653653            except KeyError: 
    654                 raise TypeError("type %s not supported" % type) 
     654                raise TypeError("type {0} not supported".format(type)) 
    655655            else: 
    656656                return cls(rec.object_name, rec.owner, self) 
     
    703703                cls = Object.name2type[type] 
    704704            except KeyError: 
    705                 raise TypeError("type %s not supported" % type) 
     705                raise TypeError("type {0} not supported".format(type)) 
    706706            else: 
    707707                return cls(rec.object_name, rec.owner, self) 
     
    786786 
    787787    def __repr__(self): 
    788         return "<%s.%s statement=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.statement, id(self)) 
     788        return "<{0}.{1} statement={2!r} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.statement, id(self)) 
    789789 
    790790 
     
    802802            if result: 
    803803                result.append(" || ") 
    804             result.append("'%s'" % "".join(current)) 
     804            result.append(u"'{0}'".format("".join(current))) 
    805805 
    806806    for c in value: 
    807807        if c == "'": 
    808             current.append("''") 
     808            current.append(u"''") 
    809809            shipcurrent() 
    810810        elif ord(c) < 32 or ord(c)>upper: 
     
    812812            current = [] 
    813813            if result: 
    814                 result.append(" || ") 
    815             result.append("chr(%d)" % ord(c)) 
     814                result.append(u" || ") 
     815            result.append(u"chr({0})".format(ord(c))) 
    816816        else: 
    817817            current.append(c) 
    818818            shipcurrent() 
    819819    shipcurrent(True) 
    820     return "".join(result) 
     820    return u"".join(result) 
    821821 
    822822 
     
    851851        (connection, cursor) = self.getcursor(connection) 
    852852        cursor.execute("select text from all_source where lower(type)=lower(:type) and owner=nvl(:owner, user) and name=:name order by line", type=self.__class__.type, owner=self.owner, name=self.name) 
    853         code = "\n".join((rec.text or "").rstrip() for rec in cursor) # sqlplus strips trailing spaces when executing SQL scripts, so we do that too 
     853        code = u"\n".join((rec.text or "").rstrip() for rec in cursor) # sqlplus strips trailing spaces when executing SQL scripts, so we do that too 
    854854        if not code: 
    855855            raise SQLObjectNotFoundError(self) 
    856         code = " ".join(code.split(None, 1)) # compress "PROCEDURE          FOO" 
     856        code = u" ".join(code.split(None, 1)) # compress "PROCEDURE          FOO" 
    857857        code = code.strip() 
    858858        type = self.__class__.type 
     
    860860        code = code.split(None, 1)[1] # drop our own name (as for triggers this includes the schema name) 
    861861        if self.owner is not None: 
    862             code = "create or replace %s %s.%s\n%s\n" % (type, self.owner, self.name, code) 
    863         else: 
    864             code = "create or replace %s %s\n%s\n" % (type, self.name, code) 
    865         if term: 
    866             code += "\n/\n" 
    867         else: 
    868             code += "\n" 
     862            code = u"create or replace {0} {1}.{2}\n{3}\n".format(type, self.owner, self.name, code) 
     863        else: 
     864            code = u"create or replace {0} {1}\n{2}\n".format(type, self.name, code) 
     865        if term: 
     866            code += u"\n/\n" 
     867        else: 
     868            code += u"\n" 
    869869        return code 
    870870 
    871871    def dropddl(self, connection=None, term=True): 
    872872        if self.owner is not None: 
    873             name = "%s.%s" % (self.owner, self.name) 
     873            name = u"{0}.{1}".format(self.owner, self.name) 
    874874        else: 
    875875            name = self.name 
    876         code = "drop %s %s" % (self.__class__.type, name) 
    877         if term: 
    878             code += ";\n" 
    879         else: 
    880             code += "\n" 
     876        code = u"drop {0} {1}".format(self.__class__.type, name) 
     877        if term: 
     878            code += u";\n" 
     879        else: 
     880            code += u"\n" 
    881881        return code 
    882882 
     
    884884    def fixname(cls, name, code): 
    885885        code = code.split(None, 5) 
    886         code = "create or replace %s %s\n%s" % (code[3], name, code[5]) 
     886        code = u"create or replace {0} {1}\n{2}".format(code[3], name, code[5]) 
    887887        return code 
    888888 
     
    892892    if owner is not None: 
    893893        if owner != owner.upper(): 
    894             parts.append('"%s"' % owner) 
     894            parts.append('"{0}"'.format(owner)) 
    895895        else: 
    896896            parts.append(owner) 
    897897    for part in name.split("."): 
    898898        if part != part.upper(): 
    899             parts.append('"%s"' % part) 
     899            parts.append('"{0}"'.format(part)) 
    900900        else: 
    901901            parts.append(part) 
     
    933933    def __repr__(self): 
    934934        if self.owner is not None: 
    935             return "%s.%s(%r, %r)" % (self.__class__.__module__, self.__class__.__name__, self.name, self.owner) 
    936         else: 
    937             return "%s.%s(%r)" % (self.__class__.__module__, self.__class__.__name__, self.name) 
     935            return "{0}.{1}({2!r}, {3!r})".format(self.__class__.__module__, self.__class__.__name__, self.name, self.owner) 
     936        else: 
     937            return "{0}.{1}({2!r})".format(self.__class__.__module__, self.__class__.__name__, self.name) 
    938938 
    939939    def __str__(self): 
    940940        if self.owner is not None: 
    941             return "%s(%s, %s)" % (self.__class__.__name__, self.name, self.owner) 
    942         else: 
    943             return "%s(%s)" % (self.__class__.__name__, self.name) 
     941            return "{0}({1}, {2})".format(self.__class__.__name__, self.name, self.owner) 
     942        else: 
     943            return "{0}({1})".format(self.__class__.__name__, self.name) 
    944944 
    945945    def __eq__(self, other): 
     
    11481148        if rec is None: 
    11491149            raise SQLObjectNotFoundError(self) 
    1150         code  = "create sequence %s\n" % self.getfullname() 
    1151         code += "\tincrement by %d\n" % rec.increment_by 
     1150        code  = "create sequence {0}\n".format(self.getfullname()) 
     1151        code += "\tincrement by {0}\n".format(rec.increment_by) 
    11521152        if copyvalue: 
    1153             code += "\tstart with %d\n" % (rec.last_number + rec.increment_by) 
    1154         else: 
    1155             code += "\tstart with %d\n" % rec.min_value 
    1156         code += "\tmaxvalue %s\n" % rec.max_value 
    1157         code += "\tminvalue %d\n" % rec.min_value 
    1158         code += "\t%scycle\n" % ["no", ""][rec.cycle_flag == "Y"] 
     1153            code += "\tstart with {0}\n".format(rec.last_number + rec.increment_by) 
     1154        else: 
     1155            code += "\tstart with {0}\n".format(rec.min_value) 
     1156        code += "\tmaxvalue {0}\n".format(rec.max_value) 
     1157        code += "\tminvalue {0}\n".format(rec.min_value) 
     1158        code += "\t{0}cycle\n".format("" if rec.cycle_flag == "Y" else "no") 
    11591159        if rec.cache_size: 
    1160             code += "\tcache %d\n" % rec.cache_size 
     1160            code += "\tcache {0}\n".format(rec.cache_size) 
    11611161        else: 
    11621162            code += "\tnocache\n" 
    1163         code += "\t%sorder" % ["no", ""][rec.order_flag == "Y"] 
     1163        code += "\t{0}order".format("" if rec.cycle_flag == "Y" else "no") 
    11641164        if term: 
    11651165            code += ";\n" 
     
    11781178 
    11791179    def dropddl(self, connection=None, term=True): 
    1180         code = "drop sequence %s" % self.getfullname() 
    1181         if term: 
    1182             code += ";\n" 
    1183         else: 
    1184             code += "\n" 
     1180        code = u"drop sequence {0}".format(self.getfullname()) 
     1181        if term: 
     1182            code += u";\n" 
     1183        else: 
     1184            code += u"\n" 
    11851185        return code 
    11861186 
     
    11881188    def fixname(cls, name, code): 
    11891189        code = code.split(None, 3) 
    1190         code = "create sequence %s\n%s" % (name, code[3]) 
     1190        code = u"create sequence {0}\n{1}".format(name, code[3]) 
    11911191        return code 
    11921192 
     
    12191219        ftype = "number" 
    12201220    elif ftype == "number" and fprec == 0: 
    1221         ftype = "number(%d)" % fsize 
     1221        ftype = "number({0})".format(fsize) 
    12221222    elif ftype == "number": 
    1223         ftype = "number(%d, %d)" % (fsize, fprec) 
     1223        ftype = "number({0}, {1})".format(fsize, fprec) 
    12241224    elif ftype == "raw": 
    1225         ftype = "raw(%d)" % rec.data_length 
     1225        ftype = "raw({0})".format(rec.data_length) 
    12261226    else: 
    12271227        if char_length != 0: 
    12281228            fsize = char_length 
    12291229        if fsize is not None: 
    1230             ftype += "(%d" % fsize 
     1230            ftype += "({0}".format(fsize) 
    12311231            if rec.char_used == "B": 
    12321232                ftype += " byte" 
     
    12341234                ftype += " char" 
    12351235            if fprec is not None: 
    1236                 ftype += ", %d" % fprec 
     1236                ftype += ", {0}".format(fprec) 
    12371237            ftype += ")" 
    12381238    return ftype 
     
    12591259        if not recs: 
    12601260            raise SQLObjectNotFoundError(self) 
    1261         code = ["create table %s\n(\n" % self.getfullname()] 
     1261        code = [u"create table {0}\n(\n".format(self.getfullname())] 
    12621262        for (i, rec) in enumerate(recs): 
    12631263            if i: 
    1264                 code.append(",\n") 
    1265             code.append("\t%s %s" % (rec.column_name, _columntype(rec))) 
     1264                code.append(u",\n") 
     1265            code.append(u"\t{0} {1}".format(rec.column_name, _columntype(rec))) 
    12661266            default = _columndefault(rec) 
    12671267            if default != "null": 
    1268                 code.append(" default %s" % default) 
     1268                code.append(u" default {0}".format(default)) 
    12691269            if rec.nullable == "N": 
    1270                 code.append(" not null") 
    1271         if term: 
    1272             code.append("\n);\n") 
    1273         else: 
    1274             code.append("\n)\n") 
    1275         return "".join(code) 
     1270                code.append(u" not null") 
     1271        if term: 
     1272            code.append(u"\n);\n") 
     1273        else: 
     1274            code.append(u"\n)\n") 
     1275        return u"".join(code) 
    12761276 
    12771277    def dropddl(self, connection=None, term=True): 
    12781278        if self.ismview(connection): 
    12791279            return "" 
    1280         code = "drop table %s" % self.getfullname() 
    1281         if term: 
    1282             code += ";\n" 
    1283         else: 
    1284             code += "\n" 
     1280        code = u"drop table {0}".format(self.getfullname()) 
     1281        if term: 
     1282            code += u";\n" 
     1283        else: 
     1284            code += u"\n" 
    12851285        return code 
    12861286 
     
    12881288    def fixname(cls, name, code): 
    12891289        code = code.split(None, 3) 
    1290         code = "create table %s\n%s" % (name, code[3]) 
     1290        code = u"create table {0}\n{1}".format(name, code[3]) 
    12911291        return code 
    12921292 
     
    13261326 
    13271327        for rec in cursor.fetchall(): 
    1328             yield Column("%s.%s" % (self.name, rec.column_name), self.owner, connection) 
     1328            yield Column("{0}.{1}".format(self.name, rec.column_name), self.owner, connection) 
    13291329 
    13301330    def iterrecords(self, connection=None): 
     
    13331333        """ 
    13341334        (connection, cursor) = self.getcursor(connection) 
    1335         query = "select * from %s" % self.getfullname() 
     1335        query = "select * from {0}".format(self.getfullname()) 
    13361336        cursor.execute(query) 
    13371337        return iter(cursor) 
     
    13441344        cursor.execute("select column_name from all_tab_columns where owner=nvl(:owner, user) and table_name=:name order by column_id", owner=self.owner, name=self.name) 
    13451345        for rec in cursor.fetchall(): 
    1346             yield Comment("%s.%s" % (self.name, rec.column_name), self.owner, connection) 
     1346            yield Comment("{0}.{1}".format(self.name, rec.column_name), self.owner, connection) 
    13471347 
    13481348    def iterconstraints(self, connection=None): 
     
    13951395    def fixname(cls, name, code): 
    13961396        code = code.split(None, 6) 
    1397         code = "alter table %s add constraint %s %s" % (code[2], name, code[6]) 
     1397        code = u"alter table {0} add constraint {1} {2}".format(code[2], name, code[6]) 
    13981398        return code 
    13991399 
     
    14171417        cursor.execute("select column_name from all_cons_columns where owner=nvl(:owner, user) and constraint_name=:name", owner=self.owner, name=self.name) 
    14181418        for r in cursor: 
    1419             yield Column(u"%s.%s" % (tablename, r.column_name)) 
     1419            yield Column(u"{0}.{1}".format(tablename, r.column_name)) 
    14201420 
    14211421    def createddl(self, connection=None, term=True): 
     
    14281428        tablename = getfullname(rec2.table_name, rec2.owner) 
    14291429        pkname = getfullname(self.name, None) 
    1430         code = "alter table %s add constraint %s primary key(%s)" % (tablename, pkname, ", ".join(r.column_name for r in cursor)) 
    1431         if term: 
    1432             code += ";\n" 
    1433         else: 
    1434             code += "\n" 
     1430        code = u"alter table {0} add constraint {1} primary key({2})".format(tablename, pkname, ", ".join(r.column_name for r in cursor)) 
     1431        if term: 
     1432            code += u";\n" 
     1433        else: 
     1434            code += u"\n" 
    14351435        return code 
    14361436 
     
    14411441        tablename = getfullname(rec.table_name, rec.owner) 
    14421442        pkname = getfullname(self.name, None) 
    1443         code = "alter table %s drop constraint %s" % (tablename, pkname) 
    1444         if term: 
    1445             code += ";\n" 
    1446         else: 
    1447             code += "\n" 
     1443        code = u"alter table {0} drop constraint {1}".format(tablename, pkname) 
     1444        if term: 
     1445            code += u";\n" 
     1446        else: 
     1447            code += u"\n" 
    14481448        return code 
    14491449 
     
    15131513        name = self.getfullname() 
    15141514        if row.comments: 
    1515             code = "comment on column %s is %s" % (name, formatstring(row.comments, latin1=True)) 
    1516         else: 
    1517             code = "comment on column %s is ''" % name 
    1518         if term: 
    1519             code += ";\n" 
    1520         else: 
    1521             code += "\n" 
     1515            code = u"comment on column {0} is {1}".format(name, formatstring(row.comments, latin1=True)) 
     1516        else: 
     1517            code = u"comment on column {0} is ''".format(name) 
     1518        if term: 
     1519            code += u";\n" 
     1520        else: 
     1521            code += u"\n" 
    15221522        return code 
    15231523 
     
    15291529    def fixname(cls, name, code): 
    15301530        code = code.split(None, 5) 
    1531         code = "comment on column %s is %s" % (name, code[5]) 
     1531        code = u"comment on column {0} is {1}".format(name, code[5]) 
    15321532        return code 
    15331533 
     
    15631563        fields1 = ", ".join(r.column_name for r in cursor) 
    15641564        cursor.execute("select table_name, column_name from all_cons_columns where owner=nvl(:owner, user) and constraint_name=:name order by position", owner=rec.r_owner, name=rec.r_constraint_name) 
    1565         fields2 = ", ".join("%s(%s)" % (getfullname(r.table_name, rec.r_owner), r.column_name) for r in cursor) 
     1565        fields2 = ", ".join("{0}({1})".format(getfullname(r.table_name, rec.r_owner), r.column_name) for r in cursor) 
    15661566        tablename = getfullname(rec.table_name, self.owner) 
    15671567        fkname = getfullname(self.name, None) 
    1568         code = "alter table %s add constraint %s foreign key (%s) references %s" % (tablename, fkname, fields1, fields2) 
    1569         if term: 
    1570             code += ";\n" 
    1571         else: 
    1572             code += "\n" 
     1568        code = u"alter table {0} add constraint {1} foreign key ({2}) references {3}".format(tablename, fkname, fields1, fields2) 
     1569        if term: 
     1570            code += u";\n" 
     1571        else: 
     1572            code += u"\n" 
    15731573        return code 
    15741574 
     
    15811581        tablename = getfullname(rec.table_name, self.owner) 
    15821582        fkname = getfullname(self.name, None) 
    1583         code = "alter table %s %s constraint %s" % (tablename, cmd, fkname) 
    1584         if term: 
    1585             code += ";\n" 
    1586         else: 
    1587             code += "\n" 
     1583        code = u"alter table {0} {1} constraint {2}".format(tablename, cmd, fkname) 
     1584        if term: 
     1585            code += u";\n" 
     1586        else: 
     1587            code += u"\n" 
    15881588        return code 
    15891589 
     
    16741674        indexname = self.getfullname() 
    16751675        if rec.uniqueness == "UNIQUE": 
    1676             unique = " unique" 
    1677         else: 
    1678             unique = "" 
     1676            unique = u" unique" 
     1677        else: 
     1678            unique = u"" 
    16791679        cursor.execute("select aie.column_expression, aic.column_name from all_ind_columns aic, all_ind_expressions aie where aic.table_owner=aie.table_owner(+) and aic.index_name=aie.index_name(+) and aic.column_position=aie.column_position(+) and aic.table_owner=nvl(:owner, user) and aic.index_name=:name order by aic.column_position", owner=self.owner, name=self.name) 
    1680         code = "create%s index %s on %s (%s)" % (unique, indexname, tablename, ", ".join(r.column_expression or r.column_name for r in cursor)) 
    1681         if term: 
    1682             code += ";\n" 
    1683         else: 
    1684             code += "\n" 
     1680        code = u"create{0} index {1} on {2} ({3})".format(unique, indexname, tablename, ", ".join(r.column_expression or r.column_name for r in cursor)) 
     1681        if term: 
     1682            code += u";\n" 
     1683        else: 
     1684            code += u"\n" 
    16851685        return code 
    16861686 
    16871687    def dropddl(self, connection=None, term=True): 
    16881688        if self.isconstraint(connection): 
    1689             return "" 
    1690         code = "drop index %s" % getfullname(self.name, self.owner) 
    1691         if term: 
    1692             code += ";\n" 
    1693         else: 
    1694             code += "\n" 
     1689            return u"" 
     1690        code = u"drop index {0}".format(getfullname(self.name, self.owner)) 
     1691        if term: 
     1692            code += u";\n" 
     1693        else: 
     1694            code += u"\n" 
    16951695        return code 
    16961696 
     
    16991699        if code.lower().startswith("create unique"): 
    17001700            code = code.split(None, 5) 
    1701             code = "create unique index %s %s" % (name, code[5]) 
     1701            code = u"create unique index {0} {1}".format(name, code[5]) 
    17021702        else: 
    17031703            code = code.split(None, 4) 
    1704             code = "create index %s %s" % (name, code[4]) 
     1704            code = u"create index {0} {1}".format(name, code[4]) 
    17051705        return code 
    17061706 
     
    17651765        uniquename = getfullname(self.name, None) 
    17661766        cursor.execute("select column_name from all_cons_columns where owner=nvl(:owner, user) and constraint_name=:name", owner=self.owner, name=self.name) 
    1767         code = "alter table %s add constraint %s unique(%s)" % (tablename, uniquename, ", ".join(r.column_name for r in cursor)) 
    1768         if term: 
    1769             code += ";\n" 
    1770         else: 
    1771             code += "\n" 
     1767        code = u"alter table {0} add constraint {1} unique({2})".format(tablename, uniquename, ", ".join(r.column_name for r in cursor)) 
     1768        if term: 
     1769            code += u";\n" 
     1770        else: 
     1771            code += u"\n" 
    17721772        return code 
    17731773 
     
    17801780        tablename = getfullname(rec.table_name, self.owner) 
    17811781        uniquename = getfullname(self.name, None) 
    1782         code = "alter table %s drop constraint %s" % (tablename, uniquename) 
    1783         if term: 
    1784             code += ";\n" 
    1785         else: 
    1786             code += "\n" 
     1782        code = u"alter table {0} drop constraint {1}".format(tablename, uniquename) 
     1783        if term: 
     1784            code += u";\n" 
     1785        else: 
     1786            code += u"\n" 
    17871787        return code 
    17881788 
     
    18561856        name = getfullname(self.name, owner) 
    18571857        name2 = getfullname(rec.table_name, rec.table_owner) 
    1858         code = "create or replace %ssynonym %s for %s" % (public, name, name2) 
     1858        code = u"create or replace {0}synonym {1} for {2}".format(public, name, name2) 
    18591859        if rec.db_link is not None: 
    1860             code += "@%s" % rec.db_link 
    1861         if term: 
    1862             code += ";\n" 
    1863         else: 
    1864             code += "\n" 
     1860            code += u"@{0}".format(rec.db_link) 
     1861        if term: 
     1862            code += u";\n" 
     1863        else: 
     1864            code += u"\n" 
    18651865        return code 
    18661866 
     
    18731873            public = "" 
    18741874        name = getfullname(self.name, owner) 
    1875         code = "drop %ssynonym %s" % (public, name) 
    1876         if term: 
    1877             code += ";\n" 
    1878         else: 
    1879             code += "\n" 
     1875        code = u"drop {0}synonym {1}".format(public, name) 
     1876        if term: 
     1877            code += u";\n" 
     1878        else: 
     1879            code += u"\n" 
    18801880        return code 
    18811881 
     
    18841884        if code.lower().startswith("create or replace public"): 
    18851885            code = code.split(None, 6) 
    1886             code = "create or replace public synonym %s %s" % (name, code[6]) 
     1886            code = u"create or replace public synonym {0} {1}".format(name, code[6]) 
    18871887        else: 
    18881888            code = code.split(None, 5) 
    1889             code = "create or replace synonym %s %s" % (name, code[5]) 
     1889            code = u"create or replace synonym {0} {1}".format(name, code[5]) 
    18901890        return code 
    18911891 
     
    19251925        if rec is None: 
    19261926            raise SQLObjectNotFoundError(self) 
    1927         code = "\n".join(line.rstrip() for line in rec.text.strip().splitlines()) # Strip trailing whitespace 
    1928         code = "create or replace force view %s as\n\t%s" % (self.getfullname(), code) 
    1929         if term: 
    1930             code += "\n/\n" 
    1931         else: 
    1932             code += "\n" 
     1927        code = u"\n".join(line.rstrip() for line in rec.text.strip().splitlines()) # Strip trailing whitespace 
     1928        code = u"create or replace force view {0} as\n\t{1}".format(self.getfullname(), code) 
     1929        if term: 
     1930            code += u"\n/\n" 
     1931        else: 
     1932            code += u"\n" 
    19331933        return code 
    19341934 
    19351935    def dropddl(self, connection=None, term=True): 
    1936         code = "drop view %s" % self.getfullname() 
    1937         if term: 
    1938             code += ";\n" 
    1939         else: 
    1940             code += "\n" 
     1936        code = u"drop view {0}".format(self.getfullname()) 
     1937        if term: 
     1938            code += u";\n" 
     1939        else: 
     1940            code += u"\n" 
    19411941        return code 
    19421942 
     
    19441944    def fixname(cls, name, code): 
    19451945        code = code.split(None, 6) 
    1946         code = "create or replace force view %s %s" % (name, code[6]) 
     1946        code = u"create or replace force view {0} {1}".format(name, code[6]) 
    19471947        return code 
    19481948 
    19491949    def iterrecords(self, connection=None): 
    19501950        (connection, cursor) = self.getcursor(connection) 
    1951         query = "select * from %s" % self.getfullname() 
     1951        query = "select * from {0}".format(self.getfullname()) 
    19521952        cursor.execute(query) 
    19531953        return iter(cursor) 
     
    19661966        if rec is None: 
    19671967            raise SQLObjectNotFoundError(self) 
    1968         code = "\n".join(line.rstrip() for line in rec.query.strip().splitlines()) # Strip trailing whitespace 
    1969         code = "create materialized view %s\nrefresh %s on %s as\n\t%s" % (self.getfullname(), rec.refresh_method, rec.refresh_mode, code) 
    1970         if term: 
    1971             code += "\n/\n" 
    1972         else: 
    1973             code += "\n" 
     1968        code = u"\n".join(line.rstrip() for line in rec.query.strip().splitlines()) # Strip trailing whitespace 
     1969        code = u"create materialized view {0}\nrefresh {1} on {2} as\n\t{3}".format(self.getfullname(), rec.refresh_method, rec.refresh_mode, code) 
     1970        if term: 
     1971            code += u"\n/\n" 
     1972        else: 
     1973            code += u"\n" 
    19741974        return code 
    19751975 
    19761976    def dropddl(self, connection=None, term=True): 
    1977         code = "drop materialized view %s" % self.getfullname() 
    1978         if term: 
    1979             code += ";\n" 
    1980         else: 
    1981             code += "\n" 
     1977        code = u"drop materialized view {0}".format(self.getfullname()) 
     1978        if term: 
     1979            code += u";\n" 
     1980        else: 
     1981            code += u"\n" 
    19821982        return code 
    19831983 
     
    19851985    def fixname(cls, name, code): 
    19861986        code = code.split(None, 4) 
    1987         code = "create materialized view %s %s" % (name, code[4]) 
     1987        code = u"create materialized view {0} {1}".format(name, code[4]) 
    19881988        return code 
    19891989 
     
    20112011        if rec is None: 
    20122012            raise SQLObjectNotFoundError(self) 
    2013         return "create or replace library %s as %r" % (self.getfullname(), rec.file_spec) 
     2013        return "create or replace library {0} as {1!r}".format(self.getfullname(), rec.file_spec) 
    20142014        if term: 
    20152015            code += ";\n" 
     
    20192019 
    20202020    def dropddl(self, connection=None, term=True): 
    2021         code = "drop library %s" % self.getfullname() 
    2022         if term: 
    2023             code += ";\n" 
    2024         else: 
    2025             code += "\n" 
     2021        code = u"drop library {0}".format(self.getfullname()) 
     2022        if term: 
     2023            code += u";\n" 
     2024        else: 
     2025            code += u"\n" 
    20262026        return code 
    20272027 
     
    20292029    def fixname(cls, name, code): 
    20302030        code = code.split(None, 5) 
    2031         code = "create or replace library %s %s" % (name, code[5]) 
     2031        code = u"create or replace library {0} {1}".format(name, code[5]) 
    20322032        return code 
    20332033 
     
    20462046 
    20472047    def __repr__(self): 
    2048         return "<%s.%s name=%r position=%r datatype=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, self.position, self.datatype, id(self)) 
     2048        return "<{0}.{1} name={2!r} position={3!r} datatype={4!r} at {5:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.name, self.position, self.datatype, id(self)) 
    20492049 
    20502050    def __xattrs__(self, mode="default"): 
     
    21042104 
    21052105        if len(args) > len(self._argsbypos): 
    2106             raise TypeError("too many parameters for %r: %d given, %d expected" % (self, len(args), len(self._argsbypos))) 
     2106            raise TypeError("too many parameters for {0!r}: {1} given, {2} expected".format(self, len(args), len(self._argsbypos))) 
    21072107 
    21082108        # Handle positional arguments 
     
    21142114            argname = argname.lower() 
    21152115            if argname in queryargs: 
    2116                 raise TypeError("duplicate argument for %r: %s" % (self, argname)) 
     2116                raise TypeError("duplicate argument for {0!r}: {1}".format(self, argname)) 
    21172117            try: 
    21182118                arginfo = self._argsbyname[argname] 
    21192119            except KeyError: 
    2120                 raise TypeError("unknown parameter for %r: %s" % (self, argname)) 
     2120                raise TypeError("unknown parameter for {0!r}: {1}".format(self, argname)) 
    21212121            queryargs[arginfo.name] = self._wraparg(cursor, arginfo, arg) 
    21222122 
     
    21352135                t = type(arg) 
    21362136        except KeyError: 
    2137             raise TypeError("can't handle parameter %s of type %s with value %r in %r" % (arginfo.name, arginfo.datatype, arg, self)) 
     2137            raise TypeError("can't handle parameter {0} of type {1} with value {2!r} in {3!r}".format(arginfo.name, arginfo.datatype, arg, self)) 
    21382138        if isinstance(arg, str) and len(arg) >= 4000: 
    21392139            t = BLOB 
     
    21972197            name = self.name 
    21982198        else: 
    2199             name = "%s.%s" % (self.owner, self.name) 
     2199            name = "{0}.{1}".format(self.owner, self.name) 
    22002200 
    22012201        queryargs = self._getargs(cursor, *args, **kwargs) 
    22022202 
    2203         query = "begin %s(%s); end;" % (name, ", ".join("%s=>:%s" % (name, name) for name in queryargs)) 
     2203        query = "begin {0}({1}); end;".format(name, ", ".join("{0}=>:{0}".format(name) for name in queryargs)) 
    22042204 
    22052205        cursor.execute(query, queryargs) 
     
    22282228            name = self.name 
    22292229        else: 
    2230             name = "%s.%s" % (self.owner, self.name) 
     2230            name = "{0}.{1}".format(self.owner, self.name) 
    22312231 
    22322232        queryargs = self._getargs(cursor, *args, **kwargs) 
     
    22372237        queryargs[returnvalue] = self._wraparg(cursor, self._returnvalue, None) 
    22382238 
    2239         query = "begin :%s := %s(%s); end;" % (returnvalue, name, ", ".join("%s=>:%s" % (name, name) for name in queryargs if name != returnvalue)) 
     2239        query = "begin :{0} := {1}({2}); end;".format(returnvalue, name, ", ".join("{0}=>:{0}".format(name) for name in queryargs if name != returnvalue)) 
    22402240 
    22412241        cursor.execute(query, queryargs) 
     
    22832283        (connection, cursor) = self.getcursor(connection) 
    22842284        cursor.execute("select text from all_source where type='JAVA SOURCE' and owner=nvl(:owner, user) and name=:name order by line", owner=self.owner, name=self.name) 
    2285         code = "\n".join((rec.text or "").rstrip() for rec in cursor) 
     2285        code = u"\n".join((rec.text or u"").rstrip() for rec in cursor) 
    22862286        code = code.strip() 
    22872287 
    2288         code = "create or replace and compile java source named %s as\n%s\n" % (self.getfullname(), code) 
    2289         if term: 
    2290             code += "/\n" 
     2288        code = u"create or replace and compile java source named {0} as\n{1}\n".format(self.getfullname(), code) 
     2289        if term: 
     2290            code += u"/\n" 
    22912291        return code 
    22922292 
    22932293    def dropddl(self, connection=None, term=True): 
    2294         code = "drop java source %s" % self.getfullname() 
    2295         if term: 
    2296             code += ";\n" 
    2297         else: 
    2298             code += "\n" 
     2294        code = u"drop java source {0}".format(self.getfullname()) 
     2295        if term: 
     2296            code += u";\n" 
     2297        else: 
     2298            code += u"\n" 
    22992299        return code 
    23002300 
     
    23022302    def fixname(cls, name, code): 
    23032303        code = code.split(None, 9) 
    2304         code = "create or replace and compile java source named %s %s" % (name, code[9]) 
     2304        code = u"create or replace and compile java source named {0} {1}".format(name, code[9]) 
    23052305        return code 
    23062306 
     
    23222322    def __repr__(self): 
    23232323        if self.owner is not None: 
    2324             return "%s.%s(%r, %r, %r, %r)" % (self.__class__.__module__, self.__class__.__name__, self.privilege, self.name, self.grantee, self.owner) 
    2325         else: 
    2326             return "%s.%s(%r, %r, %r)" % (self.__class__.__module__, self.__class__.__name__, self.privilege, self.name, self.grantee) 
     2324            return "{0}.{1}({2!r}, {3!r}, {4!r}, {5!r})".format(self.__class__.__module__, self.__class__.__name__, self.privilege, self.name, self.grantee, self.owner) 
     2325        else: 
     2326            return "{0}.{1}({2!r}, {3!r}, {4!r})".format(self.__class__.__module__, self.__class__.__name__, self.privilege, self.name, self.grantee) 
    23272327 
    23282328    def __str__(self): 
    23292329        if self.owner is not None: 
    2330             return "%s(%r, %r, %r, %r)" % (self.__class__.__name__, self.privilege, self.name, self.grantee, self.owner) 
    2331         else: 
    2332             return "%s(%r, %r, %r)" % (self.__class__.__name__, self.privilege, self.name, self.grantee) 
     2330            return "{0}({1!r}, {2!r}, {3!r}, {4!r})".format(self.__class__.__name__, self.privilege, self.name, self.grantee, self.owner) 
     2331        else: 
     2332            return "{0}({1!r}, {2!r}, {3!r})".format(self.__class__.__name__, self.privilege, self.name, self.grantee) 
    23332333 
    23342334    def getconnection(self, connection): 
     
    23972397        if grantee is None: 
    23982398            return "" 
    2399         code = "grant %s on %s to %s" % (self.privilege, self.name, grantee) 
    2400         if term: 
    2401             code += ";\n" 
     2399        code = u"grant {0} on {1} to {2}".format(self.privilege, self.name, grantee) 
     2400        if term: 
     2401            code += u";\n" 
    24022402        return code 
    24032403 
     
    24322432        rec = self._getcolumnrecord(cursor) 
    24332433        name = self.name.split(".") 
    2434         code = ["alter table %s add %s" % (getfullname(name[0], self.owner), getfullname(name[1], None))] 
    2435         code.append(" %s" % _columntype(rec)) 
     2434        code = [u"alter table {0} add {1}".format(getfullname(name[0], self.owner), getfullname(name[1], None))] 
     2435        code.append(" {0}".format(_columntype(rec))) 
    24362436        default = _columndefault(rec) 
    24372437        if default != "null": 
    2438             code.append(" default %s" % default) 
     2438            code.append(u" default {0}".format(default)) 
    24392439        if rec.nullable == "N": 
    2440             code.append(" not null") 
    2441         if term: 
    2442             code.append(";\n") 
    2443         else: 
    2444             code.append("\n") 
     2440            code.append(u" not null") 
     2441        if term: 
     2442            code.append(u";\n") 
     2443        else: 
     2444            code.append(u"\n") 
    24452445        return "".join(code) 
    24462446 
     
    24542454        name = self.name.split(".") 
    24552455 
    2456         code = ["alter table %s modify %s" % (getfullname(name[0], self.owner), getfullname(name[1], None))] 
     2456        code = [u"alter table {0} modify {1}".format(getfullname(name[0], self.owner), getfullname(name[1], None))] 
    24572457        # Has the type changed? 
    24582458        if recold.data_precision != recnew.data_precision or recold.data_length != recnew.data_length or recold.data_scale != recnew.data_scale or recold.char_length != recnew.char_length or recold.data_type != recnew.data_type or recold.data_type_owner != recnew.data_type_owner: 
     
    24712471                except ValueError: 
    24722472                    char_length = None 
    2473                 code.append(" %s" % _columntype(rec, data_precision=data_precision, data_scale=data_scale, char_length=char_length)) 
     2473                code.append(u" {0}".format(_columntype(rec, data_precision=data_precision, data_scale=data_scale, char_length=char_length))) 
    24742474            else: # The type has changed too 
    24752475                if recnew.data_type != rec.data_type or recnew.data_type_owner != rec.data_type_owner: 
     
    24812481                elif recnew.char_length != rec.char_length: 
    24822482                    raise ConflictError(self, "char_length unmergeable") 
    2483                 code.append(" %s" % _columntype(recnew)) 
     2483                code.append(u" {0}".format(_columntype(recnew))) 
    24842484 
    24852485        # Has the default changed? 
     
    24902490            if newdefault != default: 
    24912491                raise ConflictError(self, "default value unmergable") 
    2492             code.append(" default %s" % newdefault) 
     2492            code.append(u" default {0}".format(newdefault)) 
    24932493 
    24942494        # Check nullability 
    24952495        if recold.nullable != recnew.nullable: 
    24962496            if recnew.nullable == "N": 
    2497                 code.append(" not null") 
     2497                code.append(u" not null") 
    24982498            else: 
    2499                 code.append(" null") 
    2500  
    2501         if term: 
    2502             code.append(";\n") 
    2503         else: 
    2504             code.append("\n") 
     2499                code.append(u" null") 
     2500 
     2501        if term: 
     2502            code.append(u";\n") 
     2503        else: 
     2504            code.append(u"\n") 
    25052505 
    25062506        return "".join(code) 
     
    25092509        (connection, cursor) = self.getcursor(connection) 
    25102510        name = self.name.split(".") 
    2511         code = "alter table %s drop column %s" % (getfullname(name[0], self.owner), getfullname(name[1], None)) 
    2512         if term: 
    2513             code += ";\n" 
    2514         else: 
    2515             code += "\n" 
     2511        code = u"alter table {0} drop column {1}".format(getfullname(name[0], self.owner), getfullname(name[1], None)) 
     2512        if term: 
     2513            code += u";\n" 
     2514        else: 
     2515            code += u"\n" 
    25162516        return code 
    25172517 
     
    26102610    def _isroot(self, url): 
    26112611        path = url.path 
    2612         return len(path) == 0 or (len(path) == 1 and not path[0][0]) 
     2612        return len(path) == 0 or (len(path) == 1 and not path[0]) 
    26132613         
    26142614    def _istype(self, url): 
    26152615        path = url.path 
    2616         return len(path) == 1 or (len(path) == 2 and not path[1][0]) 
     2616        return len(path) == 1 or (len(path) == 2 and not path[1]) 
    26172617         
    26182618    def isdir(self, url): 
     
    26252625        if self.isdir(url): 
    26262626            return "application/octet-stream" 
    2627         return "text/x-oracle-%s" % url.path[0][0] 
     2627        return "text/x-oracle-{0}".format(url.path[0]) 
    26282628 
    26292629    def owner(self, url): 
     
    26352635        if self.isdir(url): 
    26362636            return bigbang 
    2637         type = url.path[0][0] 
    2638         name = url.path[1][0] 
     2637        type = url.path[0] 
     2638        name = url.path[1] 
    26392639        # FIXME: This isn't the correct time zone, but Oracle doesn't provide anything better 
    26402640        c = self.dbconnection.cursor() 
     
    26422642        row = c.fetchone() 
    26432643        if row is None: 
    2644             raise IOError(errno.ENOENT, "no such %s: %s" % (type, name)) 
     2644            raise IOError(errno.ENOENT, "no such {0}: {1}".format(type, name)) 
    26452645        return row[0]-datetime.timedelta(seconds=60*(row[1]*60+row[2])) 
    26462646 
     
    26482648        if self.isdir(url): 
    26492649            return bigbang 
    2650         type = url.path[0][0] 
    2651         name = url.path[1][0] 
     2650        type = url.path[0] 
     2651        name = url.path[1] 
    26522652        # FIXME: This isn't the correct time zone, but Oracle doesn't provide anything better 
    26532653        c = self.dbconnection.cursor() 
     
    26552655        row = c.fetchone() 
    26562656        if row is None: 
    2657             raise IOError(errno.ENOENT, "no such %s: %s" % (type, name)) 
     2657            raise IOError(errno.ENOENT, "no such {0}: {1}".format(type, name)) 
    26582658        return row[0]-datetime.timedelta(seconds=60*(row[1]*60+row[2])) 
    26592659 
     
    26732673                names = (name[0] for name in Object.name2type[type].iternames(self.dbconnection, "user") if name[1] is None) 
    26742674                if len(path) == 1: 
    2675                     result = [url_.URL("%s/%s" % (type, name)) for name in names] 
     2675                    result = [url_.URL("{0}/{1}".format(type, name)) for name in names] 
    26762676                else: 
    26772677                    result = [url_.URL(name) for name in names] 
    26782678        else: 
    2679             raise IOError(errno.ENOTDIR, "Not a directory: %s" % (url,)) 
     2679            raise IOError(errno.ENOTDIR, "Not a directory: {0}".format(url)) 
    26802680        if pattern is not None: 
    26812681            pattern = pattern.lower() 
     
    26932693 
    26942694    def __repr__(self): 
    2695         return "<%s.%s to %r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.connection.connectstring(), id(self)) 
     2695        return "<{0}.{1} to {2!r} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.connection.connectstring(), id(self)) 
    26962696 
    26972697 
     
    27082708        self.name = str(self.url) 
    27092709 
    2710         type = url.path[0][0] 
     2710        type = url.path[0] 
    27112711        if type not in Object.name2type: 
    2712             raise ValueError("don't know how to handle %r" % url) 
     2712            raise ValueError("don't know how to handle {0!r}".format(url)) 
    27132713        if "w" in self.mode: 
    27142714            self.stream = cStringIO.StringIO() 
    27152715        else: 
    2716             name = url.path[1][0] 
     2716            name = url.path[1] 
    27172717            code = Object.name2type[type](name.upper()).createddl(self.connection.dbconnection, term=False) 
    27182718            self.stream = cStringIO.StringIO(code.encode("utf-8")) 
     
    27412741            if "w" in self.mode: 
    27422742                c = self.connection.dbconnection.cursor() 
    2743                 type = Object.name2type[self.url.path[0][0]] 
    2744                 name = self.url.path[1][0] 
     2743                type = Object.name2type[self.url.path[0]] 
     2744                name = self.url.path[1] 
    27452745                code = self.stream.getvalue().decode("utf-8") 
    27462746                code = type.fixname(name, code) 
     
    27642764            userinfo = url.userinfo.split(":") 
    27652765            if len(userinfo) != 2: 
    2766                 raise ValueError("illegal userinfo %r" % url.userinfo) 
    2767             connection = connections[server] = OracleConnection(context, "%s/%s@%s" % (userinfo[0], userinfo[1], url.host)) 
     2766                raise ValueError("illegal userinfo {0!r}".format(url.userinfo)) 
     2767            connection = connections[server] = OracleConnection(context, "{0}/{1}@{2}".format(userinfo[0], userinfo[1], url.host)) 
    27682768        return (connection, kwargs) 
    27692769 
  • src/ll/orasql/scripts/oracreate.py

    r3732 r3893  
    2525    p = optparse.OptionParser(usage="usage: %prog [options] connectstring >output.sql") 
    2626    p.add_option("-v", "--verbose", dest="verbose", help="Give a progress report?", default=False, action="store_true") 
    27     p.add_option("-c", "--color", dest="color", help="Color output (%s)" % ", ".join(colors), default="auto", choices=colors) 
     27    p.add_option("-c", "--color", dest="color", help="Color output ({0})".format(", ".join(colors)), default="auto", choices=colors) 
    2828    p.add_option("-s", "--seqcopy", dest="seqcopy", help="copy sequence values?", default=False, action="store_true") 
    2929    p.add_option("-x", "--execute", metavar="CONNECTSTRING2", dest="execute", help="Execute in target database", type="str") 
     
    7575        if options.verbose: 
    7676            if options.execute: 
    77                 msg = astyle.style_default("oracreate.py: ", cs1, " -> ", cs2, ": fetching/creating #%d" % (i+1)) 
     77                msg = astyle.style_default("oracreate.py: ", cs1, " -> ", cs2, ": fetching/creating #{0}".format(i+1)) 
    7878            else: 
    79                 msg = astyle.style_default("oracreate.py: ", cs1, " fetching #%d" % (i+1)) 
     79                msg = astyle.style_default("oracreate.py: ", cs1, " fetching #{0}".format(i+1)) 
    8080            msg = astyle.style_default(msg, " ", s4object(str(obj))) 
    8181            if not keepobj: 
     
    9595                        if not options.ignore or "ORA-01013" in str(exc): 
    9696                            raise 
    97                         stderr.writeln("oracreate.py: ", s4error("%s: %s" % (exc.__class__.__name__, str(exc).strip()))) 
     97                        stderr.writeln("oracreate.py: ", s4error("{0}: {1}".format(exc.__class__.__name__, str(exc).strip()))) 
    9898                else: 
    9999                    stdout.writeln(ddl.encode(options.encoding)) 
  • src/ll/orasql/scripts/oradelete.py

    r3732 r3893  
    2626    p = optparse.OptionParser(usage="usage: %prog [options] connectstring >output.sql") 
    2727    p.add_option("-v", "--verbose", dest="verbose", help="Give a progress report?", default=False, action="store_true") 
    28     p.add_option("-c", "--color", dest="color", help="Color output (%s)" % ", ".join(colors), default="auto", choices=colors) 
     28    p.add_option("-c", "--color", dest="color", help="Color output ({0})".format(", ".join(colors)), default="auto", choices=colors) 
    2929    p.add_option("-s", "--sequences", dest="sequences", help="Should sequences be reset?", default=False, action="store_true") 
    3030    p.add_option("-x", "--execute", dest="execute", action="store_true", help="immediately execute the commands instead of printing them?") 
     
    5757        if options.verbose: 
    5858            msg = "truncating" if options.truncate else "deleting from" 
    59             msg = astyle.style_default("oradelete.py: ", cs, ": %s #%d " % (msg, i+1), s4object(str(obj))) 
     59            msg = astyle.style_default("oradelete.py: ", cs, ": {0} #{1} ".format(msg, i+1), s4object(str(obj))) 
    6060            stderr.writeln(msg) 
    6161 
     
    6464            try: 
    6565                if options.truncate: 
    66                     cursor.execute(u"truncate table %s" % obj.name) 
     66                    cursor.execute(u"truncate table {0}".format(obj.name)) 
    6767                else: 
    68                     cursor.execute(u"delete from %s" % obj.name) 
     68                    cursor.execute(u"delete from {0}".format(obj.name)) 
    6969            except orasql.DatabaseError, exc: 
    7070                if not options.ignore or "ORA-01013" in str(exc): 
    7171                    raise 
    72                 stderr.writeln("oradelete.py: ", s4error("%s: %s" % (exc.__class__, str(exc).strip()))) 
     72                stderr.writeln("oradelete.py: ", s4error("{0}: {1}".format(exc.__class__, str(exc).strip()))) 
    7373        else: 
    7474            if options.truncate: 
    75                 sql = u"truncate table %s;\n" % obj.name 
     75                sql = u"truncate table {0};\n".format(obj.name) 
    7676            else: 
    77                 sql = u"delete from %s;\n" % obj.name 
     77                sql = u"delete from {1};\n".format(obj.name) 
    7878            stdout.write(sql.encode(options.encoding)) 
    7979    if not options.truncate: 
     
    8484            # Progress report 
    8585            if options.verbose: 
    86                 msg = astyle.style_default("oradelete.py: ", cs, ": recreating #%d " % (i+1), s4object(str(obj))) 
     86                msg = astyle.style_default("oradelete.py: ", cs, ": recreating #{0} ".format(i+1), s4object(str(obj))) 
    8787                stderr.writeln(msg) 
    8888 
     
    9696                    if not options.ignore or "ORA-01013" in str(exc): 
    9797                        raise 
    98                     stderr.writeln("oradelete.py: ", s4error("%s: %s" % (exc.__class__, str(exc).strip()))) 
     98                    stderr.writeln("oradelete.py: ", s4error("{0}: {1}".format(exc.__class__, str(exc).strip()))) 
    9999            else: 
    100100                sql = obj.dropddl(term=True) + obj.createddl(term=True) 
  • src/ll/orasql/scripts/oradiff.py

    r3732 r3893  
    7373            self.compareline = " ".join(line.strip().split()) 
    7474        else: 
    75             raise ValueError("unknown blank value %r" % blank) 
     75            raise ValueError("unknown blank value {0!r}".format(blank)) 
    7676 
    7777    def __eq__(self, other): 
     
    8787def showudiff(out, obj, ddl1, ddl2, connection1, connection2, encoding="utf-8", context=3, timeformat="%c"): 
    8888    def header(prefix, style, connection): 
    89         return style("%s %r in %s: %s" % (prefix, obj, connection.connectstring(), gettimestamp(obj, connection, timeformat))) 
     89        return style("{0} {1!r} in {2}: {3}".format(prefix, obj, connection.connectstring(), gettimestamp(obj, connection, timeformat))) 
    9090 
    9191    started = False 
     
    9696            started = True 
    9797        (i1, i2, j1, j2) = group[0][1], group[-1][2], group[0][3], group[-1][4] 
    98         out.writeln(s4pos("@@ -%d,%d +%d,%d @@" % (i1+1, i2-i1, j1+1, j2-j1))) 
     98        out.writeln(s4pos("@@ -{0},{1} +{2},{3} @@".format(i1+1, i2-i1, j1+1, j2-j1))) 
    9999        for (tag, i1, i2, j1, j2) in group: 
    100100            if tag == "equal": 
    101101                for line in ddl1[i1:i2]: 
    102                     out.writeln((" %s" % line.originalline).encode(encoding)) 
     102                    out.writeln(" {0}".format(line.originalline).encode(encoding)) 
    103103                continue 
    104104            if tag == "replace" or tag == "delete": 
     
    116116    p = optparse.OptionParser(usage="usage: %prog [options] connectstring1 connectstring2") 
    117117    p.add_option("-v", "--verbose", dest="verbose", help="Give a progress report?", default=False, action="store_true") 
    118     p.add_option("-c", "--color", dest="color", help="Color output (%s)" % ", ".join(colors), default="auto", choices=colors) 
    119     p.add_option("-m", "--mode", dest="mode", help="Output mode (%s)" % ", ".join(modes), default="udiff", choices=modes) 
     118    p.add_option("-c", "--color", dest="color", help="Color output ({0})".format(", ".join(colors)), default="auto", choices=colors) 
     119    p.add_option("-m", "--mode", dest="mode", help="Output mode ({0})".format(", ".join(modes)), default="udiff", choices=modes) 
    120120    p.add_option("-n", "--context", dest="context", help="Number of context lines", type="int", default=2) 
    121121    p.add_option("-k", "--keepjunk", dest="keepjunk", help="Output objects with '$' or 'SYS_EXPORT_SCHEMA_' in their name?", default=False, action="store_true") 
    122     p.add_option("-b", "--blank", dest="blank", help="How to treat whitespace (%s)" % ", ".join(blanks), default="literal", choices=blanks) 
     122    p.add_option("-b", "--blank", dest="blank", help="How to treat whitespace ({0})".format(", ".join(blanks)), default="literal", choices=blanks) 
    123123    p.add_option("-e", "--encoding", dest="encoding", help="Encoding for output", default="utf-8") 
    124124 
     
    140140    connection2 = orasql.connect(args[1]) 
    141141 
     142    print connection1, connection2 
    142143    def fetch(connection): 
    143144        objects = set() 
     
    155156            keepdef = keep(obj) 
    156157            if options.verbose: 
    157                 msg = astyle.style_default("oradiff.py: ", cs(connection), ": fetching #%d " % (i+1), df(obj)) 
     158                msg = astyle.style_default("oradiff.py: ", cs(connection), ": fetching #{0} ".format(i+1), df(obj)) 
    158159                if not keepdef: 
    159160                    msg = astyle.style_default(msg, " ", s4warning("(skipped)")) 
     
    169170    for (i, obj) in enumerate(onlyin1): 
    170171        if options.verbose: 
    171             stderr.writeln("oradiff.py: only in ", cs(connection1), " #%d/%d " % (i+1, len(onlyin1)), df(obj)) 
     172            stderr.writeln("oradiff.py: only in ", cs(connection1), " #{0}/{1} ".format(i+1, len(onlyin1)), df(obj)) 
    172173        if options.mode == "brief": 
    173174            stdout.writeln(df(obj), ": only in ", cs(connection1)) 
    174175        elif options.mode == "full": 
    175             stdout.writeln(comment(df(obj), ": only in " % cs(connection1))) 
     176            stdout.writeln(comment(df(obj), ": only in ", cs(connection1))) 
    176177            ddl = obj.dropddl(connection1, term=True) 
    177178            if ddl: 
     
    184185    for (i, obj) in enumerate(onlyin2): 
    185186        if options.verbose: 
    186             stderr.writeln("oradiff.py: only in ", cs(connection2), " #%d/%d " % (i+1, len(onlyin2)), df(obj)) 
     187            stderr.writeln("oradiff.py: only in ", cs(connection2), " #{0}/{1} ".format(i+1, len(onlyin2)), df(obj)) 
    187188        if options.mode == "brief": 
    188189            stdout.writeln(df(obj), ": only in ", cs(connection2)) 
     
    199200    for (i, obj) in enumerate(common): 
    200201        if options.verbose: 
    201             stderr.writeln("oradiff.py: diffing #%d/%d " % (i+1, len(common)), df(obj)) 
     202            stderr.writeln("oradiff.py: diffing #{0}/{1} ".format(i+1, len(common)), df(obj)) 
    202203        ddl1 = obj.createddl(connection1) 
    203204        ddl2 = obj.createddl(connection2) 
  • src/ll/orasql/scripts/oradrop.py

    r3732 r3893  
    2626    p = optparse.OptionParser(usage="usage: %prog [options] connectstring >output.sql") 
    2727    p.add_option("-v", "--verbose", dest="verbose", help="Give a progress report?", default=False, action="store_true") 
    28     p.add_option("-c", "--color", dest="color", help="Color output (%s)" % ", ".join(colors), default="auto", choices=colors) 
    29     p.add_option("-f", "--fks", dest="fks", help="How should foreign keys from other schemas be treated (%s)?" % ", ".join(fks), default="disable", choices=fks) 
     28    p.add_option("-c", "--color", dest="color", help="Color output ({0})".format(", ".join(colors)), default="auto", choices=colors) 
     29    p.add_option("-f", "--fks", dest="fks", help="How should foreign keys from other schemas be treated ({0})?".format(", ".join(fks)), default="disable", choices=fks) 
    3030    p.add_option("-x", "--execute", dest="execute", action="store_true", help="immediately execute the commands instead of printing them?") 
    3131    p.add_option("-k", "--keepjunk", dest="keepjunk", help="Output objects with '$' in their name?", default=False, action="store_true") 
     
    8383        # Progress report 
    8484        if options.verbose: 
    85             msg = astyle.style_default("oradrop.py: ", cs, ": fetching #%d " % (i+1), s4object(str(obj))) 
     85            msg = astyle.style_default("oradrop.py: ", cs, ": fetching #{0} ".format(i+1), s4object(str(obj))) 
    8686            if action is not None: 
    87                 msg = astyle.style_default(msg, " ", s4warning("(%s)" % action)) 
     87                msg = astyle.style_default(msg, " ", s4warning("({0})".format(action))) 
    8888            stderr.writeln(msg) 
    8989 
     
    100100        for (i, (obj, ddl)) in enumerate(ddls): 
    101101            if options.verbose: 
    102                 stderr.writeln("oradrop.py: ", cs, ": dropping #%d/%d " % (i+1, len(ddls)), s4object(str(obj))) 
     102                stderr.writeln("oradrop.py: ", cs, ": dropping #{0}/{1} ".format(i+1, len(ddls)), s4object(str(obj))) 
    103103            try: 
    104104                cursor.execute(ddl) 
     
    106106                if not options.ignore or "ORA-01013" in str(exc): 
    107107                    raise 
    108                 stderr.writeln("oradrop.py: ", s4error("%s: %s" % (exc.__class__, str(exc).strip()))) 
     108                stderr.writeln("oradrop.py: ", s4error("{0}: {1}".format(exc.__class__, str(exc).strip()))) 
    109109 
    110110 
  • src/ll/orasql/scripts/orafind.py

    r3826 r3893  
    4141 
    4242def connid(name): 
    43     return s4connid("[%d]" % name) 
     43    return s4connid("[{0}]".format(name)) 
    4444 
    4545 
     
    6767                cls = s4action 
    6868            if count > 1: 
    69                 msg = "%d %ss %s" % (count, type, name) 
     69                msg = "{0} {1}s {2}".format(count, type, name) 
    7070            else: 
    71                 msg = "1 %s %s" % (type, name) 
     71                msg = "1 {0} {1}".format(type, name) 
    7272            out.write(cls(msg)) 
    7373    if first: 
     
    9292    p = optparse.OptionParser(usage="usage: %prog [options] connectstring searchstring [table] [table] ...") 
    9393    p.add_option("-v", "--verbose", dest="verbose", help="Give a progress report?", default=False, action="store_true") 
    94     p.add_option("-c", "--color", dest="color", help="Color output (%s)" % ", ".join(colors), default="auto", choices=colors) 
     94    p.add_option("-c", "--color", dest="color", help="Color output ({0})".format(", ".join(colors)), default="auto", choices=colors) 
    9595    p.add_option("-i", "--ignore-case", dest="ignorecase", help="Ignore case distinctions?", default=False, action="store_true") 
    9696    p.add_option("-r", "--read-lobs", dest="readlobs", help="Read LOBs when printing records?", default=False, action="store_true") 
     
    115115    if options.ignorecase: 
    116116        searchstring = searchstring.lower() 
    117     searchstring = "%%%s%%" % searchstring.replace("%", "%%") 
     117    searchstring = "%{0}%".format(searchstring.replace("%", "%%")) 
    118118    tablenames = [name.decode(options.encoding).lower() for name in args[2:]] 
    119119 
     
    133133                if datatype == "clob" or datatype.startswith("varchar2"): 
    134134                    if options.ignorecase: 
    135                         where.append("lower(%s) like :searchstring" % col.name) 
     135                        where.append("lower({0}) like :searchstring".format(col.name)) 
    136136                    else: 
    137                         where.append("%s like :searchstring" % col.name) 
     137                        where.append("{0} like :searchstring".format(col.name)) 
    138138            if not where: 
    139139                continue # no string columns 
    140             query = "select * from %s where %s" % (table.name, " or ".join(where)) 
     140            query = "select * from {0} where {1}".format(table.name, " or ".join(where)) 
    141141            c.execute(query, searchstring=searchstring) 
    142142            for r in c: 
  • src/ll/orasql/scripts/oragrant.py

    r3732 r3893  
    2525    p = optparse.OptionParser(usage="usage: %prog [options] connectstring >output.sql") 
    2626    p.add_option("-v", "--verbose", dest="verbose", help="Give a progress report?", default=False, action="store_true") 
    27     p.add_option("-c", "--color", dest="color", help="Color output (%s)" % ", ".join(colors), default="auto", choices=colors) 
     27    p.add_option("-c", "--color", dest="color", help="Color output ({0})".format(", ".join(colors)), default="auto", choices=colors) 
    2828    p.add_option("-x", "--execute", metavar="CONNECTSTRING2", dest="execute", help="Execute in target database", type="str") 
    2929    p.add_option("-k", "--keepjunk", dest="keepjunk", help="Output objects with '$' or 'SYS_EXPORT_SCHEMA_' in their name?", default=False, action="store_true") 
     
    7272        if options.verbose: 
    7373            if options.execute: 
    74                 msg = astyle.style_default("oragrant.py: ", cs1, " -> ", cs2, ": fetching/granting #%d" % (i+1)) 
     74                msg = astyle.style_default("oragrant.py: ", cs1, " -> ", cs2, ": fetching/granting #{0}".format(i+1)) 
    7575            else: 
    76                 msg = astyle.style_default("oragrant.py: ", cs1, " fetching #%d" % (i+1)) 
     76                msg = astyle.style_default("oragrant.py: ", cs1, " fetching #{0}".format(i+1)) 
    7777            msg = astyle.style_default(msg, " ", s4object(str(obj))) 
    7878            if not keepobj: 
     
    8989                        if not options.ignore or "ORA-01013" in str(exc): 
    9090                            raise 
    91                         stderr.writeln("oragrant.py: ", s4error("%s: %s" % (exc.__class__.__name__, str(exc).strip()))) 
     91                        stderr.writeln("oragrant.py: ", s4error("{0}: {1}".format(exc.__class__.__name__, str(exc).strip()))) 
    9292                else: 
    9393                    stdout.writeln(ddl.encode(options.encoding)) 
  • src/ll/orasql/scripts/oramerge.py

    r3732 r3893  
    4141 
    4242def connid(name): 
    43     return s4connid("[%d]" % name) 
     43    return s4connid("[{0}]".format(name)) 
    4444 
    4545 
     
    6767                cls = s4action 
    6868            if count > 1: 
    69                 msg = "%d %ss %s" % (count, type, name) 
    70             else: 
    71                 msg = "1 %s %s" % (type, name) 
     69                msg = "{0} {1}s {2}".format(count, type, name) 
     70            else: 
     71                msg = "1 {0} {1}".format(type, name) 
    7272            out.write(cls(msg)) 
    7373    if first: 
     
    9494    p = optparse.OptionParser(usage="usage: %prog [options] oldsourceconnectstring newsourceconnectstring destinationconnectstring") 
    9595    p.add_option("-v", "--verbose", dest="verbose", help="Give a progress report?", default=False, action="store_true") 
    96     p.add_option("-c", "--color", dest="color", help="Color output (%s)" % ", ".join(colors), default="auto", choices=colors) 
     96    p.add_option("-c", "--color", dest="color", help="Color output ({0})".format(", ".join(colors)), default="auto", choices=colors) 
    9797    p.add_option("-k", "--keepjunk", dest="keepjunk", help="Output objects with '$' in their name?", default=False, action="store_true") 
    9898    p.add_option("-e", "--encoding", dest="encoding", help="Encoding for output", default="utf-8") 
     
    122122            keep = ("$" not in obj.name and not obj.name.startswith("SYS_EXPORT_SCHEMA_")) or options.keepjunk 
    123123            if options.verbose: 
    124                 msg = astyle.style_default("oramerge.py: ", cs(connection), connid(name), " fetching #%d " % (i+1), df(obj)) 
     124                msg = astyle.style_default("oramerge.py: ", cs(connection), connid(name), " fetching #{0} ".format(i+1), df(obj)) 
    125125                if not keep: 
    126126                    msg += s4error(" (skipped)") 
     
    348348                                    stdout.writeln(line) 
    349349                            else: 
    350                                 raise OSError("Trouble from diff3: %d" % diffretcode) 
     350                                raise OSError("Trouble from diff3: {0}".format(diffretcode)) 
    351351                        finally: 
    352352                            os.remove(filename3) 
  • src/ll/scripts/ucp.py

    r3795 r3893  
    7070    p = optparse.OptionParser(usage="usage: %prog [options] source-file-url target-file-url\n   or: %prog [options] source-file-url(s) target-dir-url") 
    7171    p.add_option("-v", "--verbose", dest="verbose", help="Be verbose?", action="store_true", default=False) 
    72     p.add_option("-c", "--color", dest="color", help="Color output (%s)" % ", ".join(colors), default="auto", choices=colors) 
     72    p.add_option("-c", "--color", dest="color", help="Color output ({0})".format(", ".join(colors)), default="auto", choices=colors) 
    7373    p.add_option("-u", "--user", dest="user", help="user id or name for target files") 
    7474    p.add_option("-g", "--group", dest="group", help="group id or name for target files") 
  • src/ll/scripts/uls.py

    r3795 r3893  
    136136    def printall(base, url, one, long, recursive, human, spacing): 
    137137        if url.isdir(): 
    138             if url.path.segments[-1][0]: 
    139                 url.path.segments.append(("",)) 
     138            if url.path.segments[-1]: 
     139                url.path.segments.append("") 
    140140            if not long and not one: 
    141141                if recursive: 
     
    158158    colors = ("yes", "no", "auto") 
    159159    p = optparse.OptionParser(usage="usage: %prog [options] [url] [url] ...") 
    160     p.add_option("-c", "--color", dest="color", help="Color output (%s)" % ", ".join(colors), default="auto", choices=colors) 
     160    p.add_option("-c", "--color", dest="color", help="Color output ([{0}])".format(", ".join(colors)), default="auto", choices=colors) 
    161161    p.add_option("-1", "--one", dest="one", help="One entry per line?", action="store_true") 
    162162    p.add_option("-l", "--long", dest="long", help="Long format?", action="store_true") 
  • src/ll/sisyphus.py

    r3825 r3893  
    6565            sisyphus.Job.__init__(self, 180, name="Fetch") 
    6666            self.url = "http://www.python.org/" 
    67             self.tmpname = "Fetch_Tmp_%d.html" % os.getpid() 
     67            self.tmpname = "Fetch_Tmp_{0}.html".format(os.getpid()) 
    6868            self.officialname = "Python.html" 
    6969 
    7070        def execute(self): 
    71             self.logProgress("fetching data from %r" % self.url) 
     71            self.logProgress("fetching data from {0!r}".format(self.url)) 
    7272            data = urllib.urlopen(self.url).read() 
    7373            datasize = len(data) 
    74             self.logProgress("writing file %r (%d bytes)" % (self.tmpname, datasize)) 
     74            self.logProgress("writing file {0!r} ({1} bytes)".format(self.tmpname, datasize)) 
    7575            open(self.tmpname, "wb").write(data) 
    76             self.logProgress("renaming file %r to %r" % (self.tmpname, self.officialname)) 
     76            self.logProgress("renaming file {0!r} to {1!r}".format(self.tmpname, self.officialname)) 
    7777            os.rename(self.tmpname, self.officialname) 
    78             self.logLoop("cached %r as %r (%d bytes)" % (self.url, self.officialname, datasize)) 
     78            self.logLoop("cached {0!r} as {1!r} ({2} bytes)".format(self.url, self.officialname, datasize)) 
    7979 
    8080    if __name__=="__main__": 
     
    106106    (rest, mins) = divmod(rest, 60) 
    107107    rest += timedelta.days*24 
    108     return "%d:%02d:%06.3f" % (rest, mins, secs+timedelta.microseconds/1000000.) 
     108    return "{0:d}:{1:02d}:{2:06.3f}".format(rest, mins, secs+timedelta.microseconds/1000000.) 
    109109 
    110110 
     
    150150        now = datetime.datetime.now() 
    151151        pid = os.getpid() 
    152         prefix = "[pid=%d][%s]=[t+%s]" % (pid, _formattime(now), _formattimedelta(now-self.starttime)) 
     152        prefix = "[pid={0}][{1}]=[t+{2}]".format(pid, _formattime(now), _formattimedelta(now-self.starttime)) 
    153153 
    154154        self.__open() 
    155155        for text in texts: 
    156             if isinstance(text, str): 
    157                 pass 
    158             elif isinstance(text, unicode): 
    159                 text = text.encode(self.encoding, "replace") 
    160             elif isinstance(text, Exception): 
     156            if isinstance(text, Exception): 
    161157                tb = "\n" + "".join(traceback.format_tb(sys.exc_info()[-1])) 
    162                 text = "%s%s: %s" % (tb, text.__class__.__name__, text) 
    163             else: 
     158                text = "{0}{1.__class__.__name__}: {1}".format(tb, text) 
     159            elif not isinstance(text, basestring): 
    164160                text = pprint.pformat(text) 
    165161            lines = text.splitlines() 
     
    167163                del lines[-1] 
    168164            for line in lines: 
    169                 self.file.write("%s %s\n" % (prefix, line)) 
     165                line = "{0} {1}\n".format(prefix, line)) 
     166                if isinstance(line, unicode): 
     167                    line = line.encode(self.encoding, "replace") 
     168                self.file.write(line) 
    170169 
    171170 
     
    182181    """ 
    183182 
    184     pidfilenametemplate = "~/run/%s.pid" 
    185     loopfilenametemplate = "~/log/%s_loop.log" 
    186     errorfilenametemplate = "~/log/%s_error.log" 
    187     progressfilenametemplate = "~/log/%s_progress.log" 
     183    pidfilenametemplate = "~/run/{name}.pid" 
     184    loopfilenametemplate = "~/log/{name}_loop.log" 
     185    errorfilenametemplate = "~/log/{name}_error.log" 
     186    progressfilenametemplate = "~/log/{name}_progress.log" 
    188187 
    189188    def __init__(self, maxruntime=0, name=None, raiseerrors=False, printkills=False): 
     
    215214        self.printkills = printkills 
    216215        self.pidfilewritten = False 
    217         self.pidfilename = url.File(self.pidfilenametemplate % self.name) 
    218         self.loopLogfile = LogFile(self.loopfilenametemplate % self.name) 
    219         self.errorLogfile = LogFile(self.errorfilenametemplate % self.name) 
    220         self.progressLogfile = LogFile(self.progressfilenametemplate % self.name, mode="w") 
     216        self.pidfilename = url.File(self.pidfilenametemplate.format(name=self.name)) 
     217        self.loopLogfile = LogFile(self.loopfilenametemplate.format(name=self.name)) 
     218        self.errorLogfile = LogFile(self.errorfilenametemplate.format(name=self.name)) 
     219        self.progressLogfile = LogFile(self.progressfilenametemplate.format(name=self.name), mode="w") 
    221220 
    222221    def __writepid(self): 
     
    303302                file.close() 
    304303                self.__writepid() 
    305                 self.logProgress("ignoring bogus pid file %s (invalid content)" % self.pidfilename) 
     304                self.logProgress("ignoring bogus pid file {0} (invalid content)".format(self.pidfilename)) 
    306305            else: 
    307306                file.close() 
     
    313312                        raise 
    314313                    self.__writepid() 
    315                     msg = "ignoring bogus pid file %s (process with pid %d doesn't exist)" % (self.pidfilename, pid) 
     314                    msg = "ignoring bogus pid file {0} (process with pid {1} doesn't exist)".format(self.pidfilename, pid) 
    316315                    self.logError(msg) 
    317316                else: 
     
    323322                                raise 
    324323                        self.__writepid() 
    325                         msg = "killed previous job running with pid %d (ran %s seconds; %s allowed); here we go" % (pid, _formattimedelta(self.starttime-lastmodified), _formattimedelta(self.maxruntime)) 
     324                        msg = "killed previous job running with pid {0} (ran {1} seconds; {2} allowed); here we go".format(pid, _formattimedelta(self.starttime-lastmodified), _formattimedelta(self.maxruntime)) 
    326325                        self.logError(msg) 
    327326                        if self.printkills: 
    328327                            print msg 
    329328                    else: 
    330                         msg = "Job still running (for %s; %s allowed; started on %s) with pid %d (according to %s)" % (_formattimedelta(self.starttime-lastmodified), _formattimedelta(self.maxruntime), _formattime(lastmodified), pid, self.pidfilename) 
     329                        msg = "Job still running (for {0}; {1} allowed; started on {2}) with pid {3} (according to {4})".format(_formattimedelta(self.starttime-lastmodified), _formattimedelta(self.maxruntime), _formattime(lastmodified), pid, self.pidfilename) 
    331330                        self.logErrorOnly(msg) 
    332331                        return # Return without calling :meth:`execute` 
     
    336335        except (Exception, KeyboardInterrupt), exc: 
    337336            self.logError(exc) # log the error 
    338             self.logLoop("failed with %s(%s)" % (exc.__class__.__name__, exc)) # log the error to the loop log too, because the job probably didn't have a chance to do it. 
     337            self.logLoop("failed with {0.__class__.__name__}({0})".format(exc)) # log the error to the loop log too, because the job probably didn't have a chance to do it. 
    339338            self.failed() 
    340339            if self.raiseerrors or isinstance(exc, KeyboardInterrupt): # Really exit 
  • src/ll/spark.py

    r3485 r3893  
    8282 
    8383    def error(self, s, pos): 
    84         print "Lexical error at position %s" % pos 
     84        print "Lexical error at position {0}".format(pos) 
    8585        raise SystemExit 
    8686 
     
    263263 
    264264    def error(self, token): 
    265         print "Syntax error at or near `%s' token" % token 
     265        print "Syntax error at or near '{0}' token".format(token) 
    266266        raise SystemExit 
    267267 
  • src/ll/toxicc.py

    r3691 r3893  
    182182            if current: 
    183183                if nchar: 
    184                     yield u"N'%s'" % u"".join(current) 
     184                    yield u"N'{0}'".format(u"".join(current)) 
    185185                else: 
    186                     yield u"'%s'" % u"".join(current) 
     186                    yield u"'{0}'".format(u"".join(current)) 
    187187                current = [] 
    188             yield u"chr(%d)" % ord(c) 
     188            yield u"chr({0})".format(ord(c)) 
    189189        else: 
    190190            if c == u"'": 
     
    193193            if len(current) > 1000: 
    194194                if nchar: 
    195                     yield u"N'%s'" % u"".join(current) 
     195                    yield u"N'{0}'".format(u"".join(current)) 
    196196                else: 
    197                     yield u"'%s'" % u"".join(current) 
     197                    yield u"'{0}'".format(u"".join(current)) 
    198198                current = [] 
    199199    if current: 
    200200        if nchar: 
    201             yield u"N'%s'" % u"".join(current) 
     201            yield u"N'{0}'".format(u"".join(current)) 
    202202        else: 
    203             yield u"'%s'" % u"".join(current) 
     203            yield u"'{0}'".format(u"".join(current)) 
    204204 
    205205 
     
    231231        else: 
    232232            # Treat unknown PIs as text 
    233             foundsql.append((-1, u"<?%s %s?>" % (t, s))) 
     233            foundsql.append((-1, u"<?{0} {1}?>".format(t, s))) 
    234234 
    235235    result = [] 
    236236    if foundargs: 
    237         result.append(u"(\n\t%s\n)\n" % u",\n\t".join(foundargs)) 
     237        result.append(u"(\n\t{0}\n)\n".format(u",\n\t".join(foundargs))) 
    238238    plaintype = foundtype 
    239239    if u"(" in plaintype: 
     
    241241    isclob = plaintype.lower() in ("clob", "nclob") 
    242242    if not foundproc: 
    243         result.append(u"return %s\n" % plaintype) 
     243        result.append(u"return {0}\n".format(plaintype)) 
    244244    result.append(u"as\n") 
    245245    if not foundproc: 
    246         result.append(u"\tc_out %s;\n" % foundtype) 
     246        result.append(u"\tc_out {0};\n".format(foundtype)) 
    247247    if foundvars: 
    248         result.append(u"\t%s\n" % u"".join(foundvars)) 
     248        result.append(u"\t{0}\n".format(u"".join(foundvars))) 
    249249    nchar = foundtype.lower().startswith(u"n") 
    250250    if isclob: 
    251251        for arg in (u"clob", u"varchar2"): 
    252             result.append(u"\tprocedure write(p_text in %s%s)\n" % (plaintype.rstrip(u"clob"), arg)) 
     252            result.append(u"\tprocedure write(p_text in {0}{1})\n".format(plaintype.rstrip(u"clob"), arg)) 
    253253            result.append(u"\tas\n") 
    254254            result.append(u"\t\tbegin\n") 
     
    268268            for s in _stringifyoracle(string, nchar): 
    269269                if isclob: 
    270                     result.append(u"\twrite(%s);\n" % s) 
     270                    result.append(u"\twrite({0});\n".format(s)) 
    271271                else: 
    272                     result.append(u"\tc_out := c_out || %s;\n" % s) 
     272                    result.append(u"\tc_out := c_out || {0};\n".format(s)) 
    273273        elif mode == 0: 
    274274            result.append(string) 
     
    276276        else: # mode == 1 
    277277            if isclob: 
    278                 result.append(u"\twrite(%s);\n" % string) 
     278                result.append(u"\twrite({0});\n".format(string)) 
    279279            else: 
    280                 result.append(u"\tc_out := c_out || %s;\n" % string) 
     280                result.append(u"\tc_out := c_out || {0};\n".format(string)) 
    281281    if not foundproc: 
    282282        result.append(u"\treturn c_out;\n") 
     
    312312        else: 
    313313            # Treat unknown PIs as text 
    314             foundsql.append((-1, "<?%s %s?>" % (t, s))) 
     314            foundsql.append((-1, "<?{0} {1}?>".format(t, s))) 
    315315 
    316316    result = [] 
    317317    if foundargs: 
    318         result.append("(\n\t%s\n)\n" % u",\n\t".join(foundargs)) 
    319     if not foundproc: 
    320         result.append("returns %s\n" % foundtype) 
     318        result.append("(\n\t{0}\n)\n".format(u",\n\t".join(foundargs))) 
     319    if not foundproc: 
     320        result.append("returns {0}\n".format(foundtype)) 
    321321    result.append("as\n") 
    322322    result.append("begin\n") 
    323323    if not foundproc: 
    324         result.append("\tdeclare @c_out %s;\n" % foundtype) 
     324        result.append("\tdeclare @c_out {0};\n".format(foundtype)) 
    325325        result.append("\tset @c_out = '';\n") 
    326326    if foundvars: 
    327         result.append("\t%s\n" % u"".join(foundvars)) 
     327        result.append("\t{0}\n".format(u"".join(foundvars))) 
    328328    for (mode, string) in foundsql: 
    329329        if mode == -1: 
    330             string = "'%s'" % string.replace("'", "''") 
    331             result.append("\tset @c_out = @c_out + %s;\n" % string) 
     330            string = "'{0}'" .format(string.replace("'", "''")) 
     331            result.append("\tset @c_out = @c_out + {0};\n".format(string)) 
    332332        elif mode == 0: 
    333333            result.append(string) 
    334334            result.append("\n") 
    335335        else: # mode == 1 
    336             result.append("\tset @c_out = @c_out + set @c_out = @c_out + convert(varchar, isnull(%s, ''));\n" % string) 
     336            result.append("\tset @c_out = @c_out + set @c_out = @c_out + convert(varchar, isnull({0}, ''));\n".format(string)) 
    337337    if not foundproc: 
    338338        result.append("\treturn @c_out;\n") 
     
    352352    elif mode == "sqlserver": 
    353353        return _compile_sqlserver(string) 
    354     raise ValueError("unknown mode %r" % mode) 
     354    raise ValueError("unknown mode {0!r}".format(mode)) 
    355355 
    356356 
     
    390390        } 
    391391    else: 
    392         raise ValueError("unknown mode %r" % mode) 
     392        raise ValueError("unknown mode {0!r}".format(mode)) 
    393393    indent = 0 
    394394    firstafteras = False 
     
    405405                pre = -1 
    406406            indent = max(0, indent+pre) 
    407             newlines.append("%s%s" % ("\t"*indent, line)) 
     407            newlines.append("{0}{1}".format("\t"*indent, line)) 
    408408            indent = max(0, indent+post) 
    409409            if prefix == "as": 
  • src/ll/ul4c.py

    r3873 r3893  
    8484 
    8585    def __repr__(self): 
    86         return "<%s.%s %s at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self, id(self)) 
     86        return "<{0}.{1} {2} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self, id(self)) 
    8787 
    8888    def pos(self): 
     
    9595    def __str__(self): 
    9696        (line, col) = self.pos() 
    97         return "%r at %d (line %d, col %d)" % (self.tag, self.starttag+1, line, col) 
     97        return "{0!r} at {1} (line {2}, col {3})".format(self.tag, self.starttag+1, line, col) 
    9898 
    9999 
     
    111111 
    112112    def __repr__(self): 
    113         return "<%s.%s in %s at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.location, id(self)) 
     113        return "<{0}.{1} in {2} at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, self.location, id(self)) 
    114114 
    115115    def __str__(self): 
     
    124124        module = exc.__class__.__module__ 
    125125        if module != "exceptions": 
    126             name = "%s.%s" % (module, name) 
    127         return "%s %s %s" % (name, " ".join("in %s:" % location for location in path), exc) 
     126            name = "{0}.{1}".format(module, name) 
     127        return "{0} {1} {2}".format(name, " ".join("in {0}:".format(location) for location in path), exc) 
    128128 
    129129 
     
    135135 
    136136    def __str__(self): 
    137         return "Unmatched input %r" % self.input 
     137        return "Unmatched input {0!r}".format(self.input) 
    138138 
    139139 
     
    143143 
    144144    def __str__(self): 
    145         return "Lexical error near %r" % str(self.token) 
     145        return "Lexical error near {0!r}".format(str(self.token)) 
    146146 
    147147 
     
    179179 
    180180    def __str__(self): 
    181         return "function %r unknown" % self.funcname 
     181        return "function {0!r} unknown".format(self.funcname) 
    182182 
    183183 
     
    193193 
    194194    def __str__(self): 
    195         return "method %r unknown" % self.methname 
     195        return "method {0!r} unknown".format(self.methname) 
    196196 
    197197 
     
    205205 
    206206    def __str__(self): 
    207         return "opcode %r unknown" % self.opcode 
     207        return "opcode {0!r} unknown".format(self.opcode) 
    208208 
    209209 
     
    472472 
    473473    def __repr__(self): 
    474         v = ["<", self.__class__.__name__, " code=%r" % self.code] 
     474        v = ["<", self.__class__.__name__, " code={0!r}".format(self.code)] 
    475475        for attrname in ("r1", "r2", "r3", "r4", "r5", "arg"): 
    476476            attr = getattr(self, attrname) 
    477477            if attr is not None: 
    478                 v.append(" %s=%r" % (attrname, attr)) 
     478                v.append(" {0}={1!r}".format(attrname, attr)) 
    479479        if self.code is None: 
    480             v.append(" text=%r" % self.location.code) 
    481         v.append(" at 0x%x>" % id(self)) 
     480            v.append(" text={0!r}".format(self.location.code)) 
     481        v.append(" at {0:#x}>".format(id(self))) 
    482482        return "".join(v) 
    483483 
    484484    def __str__(self): 
    485         if self.code is None: 
    486             return "print %r" % self.location.code 
    487         elif self.code == "print": 
    488             return "print r%r" % self.r1 
    489         elif self.code == "printx": 
    490             return "print xmlescape(r%r)" % self.r1 
    491         elif self.code == "loadnone": 
    492             return "r%r = None" % self.r1 
    493         elif self.code == "loadfalse": 
    494             return "r%r = False" % self.r1 
    495         elif self.code == "loadtrue": 
    496             return "r%r = True" % self.r1 
    497         elif self.code == "loadstr": 
    498             return "r%r = %r" % (self.r1, self.arg) 
    499         elif self.code == "loadint": 
    500             return "r%r = %s" % (self.r1, self.arg) 
    501         elif self.code == "loadfloat": 
    502             return "r%r = %s" % (self.r1, self.arg) 
    503         elif self.code == "loaddate": 
    504             return "r%r = %s" % (self.r1, self.arg) 
    505         elif self.code == "loadcolor": 
    506             return "r%r = #%s" % (self.r1, self.arg) 
    507         elif self.code == "buildlist": 
    508             return "r%r = []" % (self.r1) 
    509         elif self.code == "builddict": 
    510             return "r%r = {}" % (self.r1) 
    511         elif self.code == "addlist": 
    512             return "r%r.append(r%r)" % (self.r1, self.r2) 
    513         elif self.code == "adddict": 
    514             return "r%r[r%r] = r%r" % (self.r1, self.r2, self.r3) 
    515         elif self.code == "updatedict": 
    516             return "r%r.update(r%r)" % (self.r1, self.r2) 
    517         elif self.code == "loadvar": 
    518             return "r%r = vars[%r]" % (self.r1, self.arg) 
    519         elif self.code == "storevar": 
    520             return "vars[%r] = r%r" % (self.arg, self.r1) 
    521         elif self.code == "addvar": 
    522             return "vars[%r] += r%r" % (self.arg, self.r1) 
    523         elif self.code == "subvar": 
    524             return "vars[%r] -= r%r" % (self.arg, self.r1) 
    525         elif self.code == "mulvar": 
    526             return "vars[%r] *= r%r" % (self.arg, self.r1) 
    527         elif self.code == "truedivvar": 
    528             return "vars[%r] /= r%r" % (self.arg, self.r1) 
    529         elif self.code == "floordivvar": 
    530             return "vars[%r] //= r%r" % (self.arg, self.r1) 
    531         elif self.code == "modvar": 
    532             return "vars[%r] %%= r%r" % (self.arg, self.r1) 
    533         elif self.code == "delvar": 
    534             return "del vars[%r]" % self.arg 
    535         elif self.code == "for": 
    536             return "for r%r in r%r" % (self.r1, self.r2) 
    537         elif self.code == "endfor": 
    538             return "endfor" 
    539         elif self.code == "break": 
    540             return "break" 
    541         elif self.code == "continue": 
    542             return "continue" 
    543         elif self.code == "if": 
    544             return "if r%r" % self.r1 
    545         elif self.code == "else": 
    546             return "else" 
    547         elif self.code == "endif": 
    548             return "endif" 
    549         elif self.code == "getattr": 
    550             return "r%r = getattr(r%r, %r)" % (self.r1, self.r2, self.arg) 
    551         elif self.code == "getitem": 
    552             return "r%r = r%r[r%r]" % (self.r1, self.r2, self.r3) 
    553         elif self.code == "getslice1": 
    554             return "r%r = r%r[r%r:]" % (self.r1, self.r2, self.r3) 
    555         elif self.code == "getslice2": 
    556             return "r%r = r%r[:r%r]" % (self.r1, self.r2, self.r3) 
    557         elif self.code == "getslice12": 
    558             return "r%r = r%r[r%r:r%r]" % (self.r1, self.r2, self.r3, self.r4) 
    559         elif self.code == "not": 
    560             return "r%r = not r%r" % (self.r1, self.r2) 
    561         elif self.code == "eq": 
    562             return "r%r = r%r == r%r" % (self.r1, self.r2, self.r3) 
    563         elif self.code == "ne": 
    564             return "r%r = r%r != r%r" % (self.r1, self.r2, self.r3) 
    565         elif self.code == "lt": 
    566             return "r%r = r%r < r%r" % (self.r1, self.r2, self.r3) 
    567         elif self.code == "le": 
    568             return "r%r = r%r <= r%r" % (self.r1, self.r2, self.r3) 
    569         elif self.code == "gt": 
    570             return "r%r = r%r > r%r" % (self.r1, self.r2, self.r3) 
    571         elif self.code == "ge": 
    572             return "r%r = r%r >= r%r" % (self.r1, self.r2, self.r3) 
    573         elif self.code == "contains": 
    574             return "r%r = r%r in r%r" % (self.r1, self.r2, self.r3) 
    575         elif self.code == "notcontains": 
    576             return "r%r = r%r not in r%r" % (self.r1, self.r2, self.r3) 
    577         elif self.code == "add": 
    578             return "r%r = r%r + r%r" % (self.r1, self.r2, self.r3) 
    579         elif self.code == "sub": 
    580             return "r%r = r%r - r%r" % (self.r1, self.r2, self.r3) 
    581         elif self.code == "mul": 
    582             return "r%r = r%r * r%r" % (self.r1, self.r2, self.r3) 
    583         elif self.code == "floordiv": 
    584             return "r%r = r%r // r%r" % (self.r1, self.r2, self.r3) 
    585         elif self.code == "truediv": 
    586             return "r%r = r%r / r%r" % (self.r1, self.r2, self.r3) 
    587         elif self.code == "and": 
    588             return "r%r = r%r and r%r" % (self.r1, self.r2, self.r3) 
    589         elif self.code == "or": 
    590             return "r%r = r%r or r%r" % (self.r1, self.r2, self.r3) 
    591         elif self.code == "mod": 
    592             return "r%r = r%r %% r%r" % (self.r1, self.r2, self.r3) 
    593         elif self.code == "neg": 
    594             return "r%r = -r%r" % (self.r1, self.r2) 
    595         elif self.code == "callfunc0": 
    596             return "r%r = %s()" % (self.r1, self.arg) 
    597         elif self.code == "callfunc1": 
    598             return "r%r = %s(r%r)" % (self.r1, self.arg, self.r2) 
    599         elif self.code == "callfunc2": 
    600             return "r%r = %s(r%r, r%r)" % (self.r1, self.arg, self.r2, self.r3) 
    601         elif self.code == "callfunc3": 
    602             return "r%r = %s(r%r, r%r, r%r)" % (self.r1, self.arg, self.r2, self.r3, self.r4) 
    603         elif self.code == "callfunc4": 
    604             return "r%r = %s(r%r, r%r, r%r, r%r)" % (self.r1, self.arg, self.r2, self.r3, self.r4, self.r5) 
    605         elif self.code == "callmeth0": 
    606             return "r%r = r%r.%s()" % (self.r1, self.r2, self.arg) 
    607         elif self.code == "callmeth1": 
    608             return "r%r = r%r.%s(r%r)" % (self.r1, self.r2, self.arg, self.r3) 
    609         elif self.code == "callmeth2": 
    610             return "r%r = r%r.%s(r%r, r%r)" % (self.r1, self.r2, self.arg, self.r3, self.r4) 
    611         elif self.code == "callmeth3": 
    612             return "r%r = r%r.%s(r%r, r%r, r%r)" % (self.r1, self.r2, self.arg, self.r3, self.r4, self.r5) 
    613         elif self.code == "callmethkw": 
    614             return "r%r = r%r.%s(**r%r)" % (self.r1, self.r2, self.arg, self.r3) 
    615         elif self.code == "render": 
    616             return "render r%r(r%r)" % (self.r1, self.r2) 
    617         elif self.code == "def": 
    618             return "def %s(vars)" % self.arg 
    619         elif self.code == "enddef": 
    620             return "endfor" 
    621         else: 
     485        formats = { 
     486            None: "print {op.location.code!r}", 
     487            "print": "print r{op.r1!r}", 
     488            "printx": "print xmlescape(r{op.r1!r})", 
     489            "loadnone": "r{op.r1!r} = None", 
     490            "loadfalse": "r{op.r1!r} = False", 
     491            "loadtrue": "r{op.r1!r} = True", 
     492            "loadstr": "r{op.r1!r} = {op.r2!r}", 
     493            "loadint": "r{op.r1!r} = {op.arg}", 
     494            "loadfloat": "r{op.r1!r} = {op.arg}", 
     495            "loaddate": "r{op.r1!r} = {op.arg}", 
     496            "loadcolor": "r{op.r1!r} = #{op.arg}", 
     497            "buildlist": "r{op.r1!r} = []", 
     498            "builddict": "r{op.r1!r} = {{}}", 
     499            "addlist": "r{op.r1!r}.append(r{op.r2!r})", 
     500            "adddict": "r{op.r1!r}[r{op.r2!r}] = r{op.r3!r}", 
     501            "updatedict": "r{op.r1!r}.update(r{op.r2!r})", 
     502            "loadvar": "r{op.r1!r} = vars[{op.arg!r}]", 
     503            "storevar": "vars[{op.arg!r}] = r{op.r1!r}", 
     504            "addvar": "vars[{op.arg!r}] += r{op.r1!r}", 
     505            "subvar": "vars[{op.arg!r}] -= r{op.r1!r}", 
     506            "mulvar": "vars[{op.arg!r}] *= r{op.r1!r}", 
     507            "truedivvar": "vars[{op.arg!r}] /= r{op.r1!r}", 
     508            "floordivvar": "vars[{op.arg!r}] //= r{op.r1!r}", 
     509            "modvar": "vars[{op.arg!r}] %= r{op.r1!r}", 
     510            "delvar": "del vars[{op.arg!r}]", 
     511            "for": "for r{op.r1!r} in r{op.r2!r}", 
     512            "endfor": "endfor", 
     513            "break": "break", 
     514            "continue": "continue", 
     515            "if": "if r{op.r1!r}", 
     516            "else": "else", 
     517            "endif": "endif", 
     518            "getattr": "r{op.r1!r} = getattr(r{op.r2!r}, {op.arg!r})", 
     519            "getitem": "r{op.r1!r} = r{op.r2!r}[r{op.r3!r}]", 
     520            "getslice1": "r{op.r1!r} = r{op.r2!r}[r{op.r3!r}:]", 
     521            "getslice2": "r{op.r1!r} = r{op.r2!r}[:r{op.r3!r}]", 
     522            "getslice12": "r{op.r1!r} = r{op.r2!r}[r{op.r3!r}:r{op.r4!r}]", 
     523            "not": "r{op.r1!r} = not r{op.r2!r}", 
     524            "eq": "r{op.r1!r} = r{op.r2!r} == r{op.r3!r}", 
     525            "ne": "r{op.r1!r} = r{op.r2!r} != r{op.r3!r}", 
     526            "lt": "r{op.r1!r} = r{op.r2!r} < r{op.r3!r}", 
     527            "le": "r{op.r1!r} = r{op.r2!r} <= r{op.r3!r}", 
     528            "gt": "r{op.r1!r} = r{op.r2!r} > r{op.r3!r}", 
     529            "ge": "r{op.r1!r} = r{op.r2!r} >= r{op.r3!r}", 
     530            "contains": "r{op.r1!r} = r{op.r2!r} in r{op.r3!r}", 
     531            "notcontains": "r{op.r1!r} = r{op.r2!r} not in r{op.r3!r}", 
     532            "add": "r{op.r1!r} = r{op.r2!r} + r{op.r3!r}", 
     533            "sub": "r{op.r1!r} = r{op.r2!r} - r{op.r3!r}", 
     534            "mul": "r{op.r1!r} = r{op.r2!r} * r{op.r3!r}", 
     535            "floordiv": "r{op.r1!r} = r{op.r2!r} // r{op.r3!r}", 
     536            "truediv": "r{op.r1!r} = r{op.r2!r} / r{op.r3!r}", 
     537            "and": "r{op.r1!r} = r{op.r2!r} and r{op.r3!r}", 
     538            "or": "r{op.r1!r} = r{op.r2!r} or r{op.r3!r}", 
     539            "mod": "r{op.r1!r} = r{op.r2!r} % r{op.r3!r}", 
     540            "neg":"r{op.r1!r} = -r{op.r2!r}", 
     541            "callfunc0": "r{op.r1!r} = {op.arg}()", 
     542            "callfunc1": "r{op.r1!r} = {op.arg}(r{op.r2!r})", 
     543            "callfunc2": "r{op.r1!r} = {op.arg}(r{op.r2!r}, r{op.r3!r})", 
     544            "callfunc3": "r{op.r1!r} = {op.arg}(r{op.r2!r}, r{op.r3!r}, r{op.r4!r})", 
     545            "callfunc4": "r{op.r1!r} = {op.arg}(r{op.r2!r}, r{op.r3!r}, r{op.r4!r}, r{op.r5!r})", 
     546            "callmeth0": "r{op.r1!r} = r{op.r2!r}.{op.arg}()", 
     547            "callmeth1": "r{op.r1!r} = r{op.r2!r}.{op.arg}(r{op.r3!r})", 
     548            "callmeth2": "r{op.r1!r} = r{op.r2!r}.{op.arg}(r{op.r3!r}, r{op.r4!r})", 
     549            "callmeth3": "r{op.r1!r} = r{op.r3!r}.{op.arg}(r{op.r3!r}, r{op.r4!r}, r{op.r5!r})", 
     550            "callmethkw": "r{op.r1!r} = r{op.r2!r}.{op.arg}(**r{op.r3!r})", 
     551            "render": "render r{op.r1!r}(r{op.r2!r})", 
     552            "def": "def {op.arg}(vars)", 
     553            "enddef": "endfor", 
     554        } 
     555        try: 
     556            return formats[self.code].format(op=self) 
     557        except KeyError: 
    622558            raise UnknownOpcodeError(self.code) 
    623559 
     
    672608                    return i 
    673609                else: 
    674                     raise ValueError("invalid terminator, expected %r, got %r" % (term, c)) 
     610                    raise ValueError("invalid terminator, expected {0!r}, got {1!r}".format(term, c)) 
    675611 
    676612        def _readstr(term): 
     
    687623                    return None 
    688624                else: 
    689                     raise ValueError("invalid terminator, expected %r, got %r" % (term, c)) 
     625                    raise ValueError("invalid terminator, expected {0!r}, got {1!r}".format(term, c)) 
    690626            s = stream.read(i) 
    691627            if len(s) != i: 
     
    700636                return int(c) 
    701637            else: 
    702                 raise ValueError("invalid register spec %r" % c) 
     638                raise ValueError("invalid register spec {0!r}".format(c)) 
    703639 
    704640        def _readcr(): 
    705641            c = stream.read(1) 
    706642            if c != "\n": 
    707                 raise ValueError("invalid linefeed %r" % c) 
     643                raise ValueError("invalid linefeed {0!r}".format(c)) 
    708644 
    709645        self = cls() 
     
    712648        header = header.rstrip() 
    713649        if header != "ul4": 
    714             raise ValueError("invalid header, expected 'ul4', got %r" % header) 
     650            raise ValueError("invalid header, expected 'ul4', got {0!r}".format(header)) 
    715651        version = stream.readline() 
    716652        version = version.rstrip() 
    717653        if version != self.version: 
    718             raise ValueError("invalid version, expected %r, got %r" % (self.version, version)) 
     654            raise ValueError("invalid version, expected {0!r}, got {1!r}".format(self.version, version)) 
    719655        self.startdelim = _readstr(u"<") 
    720656        _readcr() 
     
    742678                location = Location(self.source, _readstr("="), _readint("("), _readint(")"), _readint("{"), _readint("}")) 
    743679            else: 
    744                 raise ValueError("invalid location spec %r" % locspec) 
     680                raise ValueError("invalid location spec {0!r}".format(locspec)) 
    745681            _readcr() 
    746682            count -= 1 
     
    772708                yield string 
    773709 
    774         yield "ul4\n%s\n" % self.version 
     710        yield "ul4\n{0}\n".format(self.version) 
    775711        for p in _writestr("<", self.startdelim): yield p 
    776712        yield "\n" 
     
    817753 
    818754    def _pythonsource_line(self, location, line): 
    819         self.lines.append("%s%s" % ("\t"*self.indent, line)) 
     755        self.lines.append("{0}{1}".format("\t"*self.indent, line)) 
    820756        if self.lastlocation is not location or not self.locations: 
    821757            self.locations.append((location.type, location.starttag, location.endtag, location.startcode, location.endcode)) 
     
    824760 
    825761    def _pythonsource_dispatch_None(self, opcode): 
    826         self._pythonsource_line(opcode.location, "yield %r" % opcode.location.code) 
     762        self._pythonsource_line(opcode.location, "yield {0!r}".format(opcode.location.code)) 
    827763    def _pythonsource_dispatch_loadstr(self, opcode): 
    828         self._pythonsource_line(opcode.location, "r%d = %r" % (opcode.r1, opcode.arg)) 
     764        self._pythonsource_line(opcode.location, "r{op.r1:d} = {op.arg!r}".format(op=opcode)) 
    829765    def _pythonsource_dispatch_loadint(self, opcode): 
    830         self._pythonsource_line(opcode.location, "r%d = %s" % (opcode.r1, opcode.arg)) 
     766        self._pythonsource_line(opcode.location, "r{op.r1:d} = {op.arg}".format(op=opcode)) 
    831767    def _pythonsource_dispatch_loadfloat(self, opcode): 
    832         self._pythonsource_line(opcode.location, "r%d = %s" % (opcode.r1, opcode.arg)) 
     768        self._pythonsource_line(opcode.location, "r{op.r1:d} = {op.arg}".format(op=opcode)) 
    833769    def _pythonsource_dispatch_loadnone(self, opcode): 
    834         self._pythonsource_line(opcode.location, "r%d = None" % opcode.r1) 
     770        self._pythonsource_line(opcode.location, "r{op.r1:d} = None".format(op=opcode)) 
    835771    def _pythonsource_dispatch_loadfalse(self, opcode): 
    836         self._pythonsource_line(opcode.location, "r%d = False" % opcode.r1) 
     772        self._pythonsource_line(opcode.location, "r{op.r1:d} = False".format(op=opcode)) 
    837773    def _pythonsource_dispatch_loadtrue(self, opcode): 
    838         self._pythonsource_line(opcode.location, "r%d = True" % opcode.r1) 
     774        self._pythonsource_line(opcode.location, "r{op.r1:d} = True".format(op=opcode)) 
    839775    def _pythonsource_dispatch_loaddate(self, opcode): 
    840         self._pythonsource_line(opcode.location, "r%d = datetime.datetime(%s)" % (opcode.r1, ", ".join(str(int(p)) for p in datesplitter.split(opcode.arg)))) 
     776        self._pythonsource_line(opcode.location, "r{op.r1:d} = datetime.datetime({date})".format(op=opcode, date=", ".join(str(int(p)) for p in datesplitter.split(opcode.arg)))) 
    841777    def _pythonsource_dispatch_loadcolor(self, opcode): 
    842         self._pythonsource_line(opcode.location, "r%d = color.Color(0x%s, 0x%s, 0x%s, 0x%s)" % (opcode.r1, opcode.arg[:2], opcode.arg[2:4], opcode.arg[4:6], opcode.arg[6:])) 
     778        self._pythonsource_line(opcode.location, "r{op.r1:d} = color.Color(0x{r}, 0x{g}, 0x{b}, 0x{a})".format(op=opcode, r=opcode.arg[:2], g=opcode.arg[2:4], b=opcode.arg[4:6], a=opcode.arg[6:])) 
    843779    def _pythonsource_dispatch_buildlist(self, opcode): 
    844         self._pythonsource_line(opcode.location, "r%d = []" % opcode.r1) 
     780        self._pythonsource_line(opcode.location, "r{op.r1:d} = []".format(op=opcode)) 
    845781    def _pythonsource_dispatch_builddict(self, opcode): 
    846         self._pythonsource_line(opcode.location, "r%d = {}" % opcode.r1) 
     782        self._pythonsource_line(opcode.location, "r{op.r1:d} = {{}}".format(op=opcode)) 
    847783    def _pythonsource_dispatch_addlist(self, opcode): 
    848         self._pythonsource_line(opcode.location, "r%d.append(r%d)" % (opcode.r1, opcode.r2)) 
     784        self._pythonsource_line(opcode.location, "r{op.r1:d}.append(r{op.r2:d})".format(op=opcode)) 
    849785    def _pythonsource_dispatch_adddict(self, opcode): 
    850         self._pythonsource_line(opcode.location, "r%d[r%d] = r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     786        self._pythonsource_line(opcode.location, "r{op.r1:d}[r{op.r2:d}] = r{op.r3:d}".format(op=opcode)) 
    851787    def _pythonsource_dispatch_updatedict(self, opcode): 
    852         self._pythonsource_line(opcode.location, "r%d.update(r%d)" % (opcode.r1, opcode.r2)) 
     788        self._pythonsource_line(opcode.location, "r{op.r1:d}.update(r{op.r2:d})".format(op=opcode)) 
    853789    def _pythonsource_dispatch_loadvar(self, opcode): 
    854         self._pythonsource_line(opcode.location, "r%d = variables[%r]" % (opcode.r1, opcode.arg)) 
     790        self._pythonsource_line(opcode.location, "r{op.r1:d} = variables[{op.arg!r}]".format(op=opcode)) 
    855791    def _pythonsource_dispatch_storevar(self, opcode): 
    856         self._pythonsource_line(opcode.location, "variables[%r] = r%d" % (opcode.arg, opcode.r1)) 
     792        self._pythonsource_line(opcode.location, "variables[{op.arg!r}] = r{op.r1:d}".format(op=opcode)) 
    857793    def _pythonsource_dispatch_addvar(self, opcode): 
    858         self._pythonsource_line(opcode.location, "variables[%r] += r%d" % (opcode.arg, opcode.r1)) 
     794        self._pythonsource_line(opcode.location, "variables[{op.arg!r}] += r{op.r1:d}".format(op=opcode)) 
    859795    def _pythonsource_dispatch_subvar(self, opcode): 
    860         self._pythonsource_line(opcode.location, "variables[%r] -= r%d" % (opcode.arg, opcode.r1)) 
     796        self._pythonsource_line(opcode.location, "variables[{op.arg!r}] -= r{op.r1:d}".format(op=opcode)) 
    861797    def _pythonsource_dispatch_mulvar(self, opcode): 
    862         self._pythonsource_line(opcode.location, "variables[%r] *= r%d" % (opcode.arg, opcode.r1)) 
     798        self._pythonsource_line(opcode.location, "variables[{op.arg!r}] *= r{op.r1:d}".format(op=opcode)) 
    863799    def _pythonsource_dispatch_truedivvar(self, opcode): 
    864         self._pythonsource_line(opcode.location, "variables[%r] /= r%d" % (opcode.arg, opcode.r1)) 
     800        self._pythonsource_line(opcode.location, "variables[{op.arg!r}] /= r{op.r1:d}".format(op=opcode)) 
    865801    def _pythonsource_dispatch_floordivvar(self, opcode): 
    866         self._pythonsource_line(opcode.location, "variables[%r] //= r%d" % (opcode.arg, opcode.r1)) 
     802        self._pythonsource_line(opcode.location, "variables[{op.arg!r}] //= r{op.r1:d}".format(op=opcode)) 
    867803    def _pythonsource_dispatch_modvar(self, opcode): 
    868         self._pythonsource_line(opcode.location, "variables[%r] %%= r%d" % (opcode.arg, opcode.r1)) 
     804        self._pythonsource_line(opcode.location, "variables[{op.arg!r}] %= r{op.r1:d}".format(op=opcode)) 
    869805    def _pythonsource_dispatch_delvar(self, opcode): 
    870         self._pythonsource_line(opcode.location, "del variables[%r]" % opcode.arg) 
     806        self._pythonsource_line(opcode.location, "del variables[{op.arg!r}]".format(op=opcode)) 
    871807    def _pythonsource_dispatch_getattr(self, opcode): 
    872         self._pythonsource_line(opcode.location, "r%d = r%d[%r]" % (opcode.r1, opcode.r2, opcode.arg)) 
     808        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}[{op.arg!r}]".format(op=opcode)) 
    873809    def _pythonsource_dispatch_getitem(self, opcode): 
    874         self._pythonsource_line(opcode.location, "r%d = r%d[r%d]" % (opcode.r1, opcode.r2, opcode.r3)) 
     810        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}[r{op.r3:d}]".format(op=opcode)) 
    875811    def _pythonsource_dispatch_getslice12(self, opcode): 
    876         self._pythonsource_line(opcode.location, "r%d = r%d[r%d:r%d]" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     812        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}[r{op.r3:d}:r{op.r4:d}]".format(op=opcode)) 
    877813    def _pythonsource_dispatch_getslice1(self, opcode): 
    878         self._pythonsource_line(opcode.location, "r%d = r%d[r%d:]" % (opcode.r1, opcode.r2, opcode.r3)) 
     814        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}[r{op.r3:d}:]".format(op=opcode)) 
    879815    def _pythonsource_dispatch_getslice2(self, opcode): 
    880         self._pythonsource_line(opcode.location, "r%d = r%d[:r%d]" % (opcode.r1, opcode.r2, opcode.r3)) 
     816        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}[:r{op.r3:d}]".format(op=opcode)) 
    881817    def _pythonsource_dispatch_print(self, opcode): 
    882         self._pythonsource_line(opcode.location, "if r%d is not None: yield unicode(r%d)" % (opcode.r1, opcode.r1)) 
     818        self._pythonsource_line(opcode.location, "if r{op.r1:d} is not None: yield unicode(r{op.r1:d})".format(op=opcode)) 
    883819    def _pythonsource_dispatch_printx(self, opcode): 
    884         self._pythonsource_line(opcode.location, "if r%d is not None: yield xmlescape(unicode(r%d))" % (opcode.r1, opcode.r1)) 
     820        self._pythonsource_line(opcode.location, "if r{op.r1:d} is not None: yield xmlescape(unicode(r{op.r1:d}))".format(op=opcode)) 
    885821    def _pythonsource_dispatch_for(self, opcode): 
    886         self._pythonsource_line(opcode.location, "for r%d in r%d:" % (opcode.r1, opcode.r2)) 
     822        self._pythonsource_line(opcode.location, "for r{op.r1:d} in r{op.r2:d}:".format(op=opcode)) 
    887823        self.indent += 1 
    888824    def _pythonsource_dispatch_endfor(self, opcode): 
     
    894830        self._pythonsource_line(opcode.location, "continue") 
    895831    def _pythonsource_dispatch_not(self, opcode): 
    896         self._pythonsource_line(opcode.location, "r%d = not r%d" % (opcode.r1, opcode.r2)) 
     832        self._pythonsource_line(opcode.location, "r{op.r1:d} = not r{op.r2:d}".format(op=opcode)) 
    897833    def _pythonsource_dispatch_neg(self, opcode): 
    898         self._pythonsource_line(opcode.location, "r%d = -r%d" % (opcode.r1, opcode.r2)) 
     834        self._pythonsource_line(opcode.location, "r{op.r1:d} = -r{op.r2:d}".format(op=opcode)) 
    899835    def _pythonsource_dispatch_contains(self, opcode): 
    900         self._pythonsource_line(opcode.location, "r%d = r%d in r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     836        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} in r{op.r3:d}".format(op=opcode)) 
    901837    def _pythonsource_dispatch_notcontains(self, opcode): 
    902         self._pythonsource_line(opcode.location, "r%d = r%d not in r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     838        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} not in r{op.r3:d}".format(op=opcode)) 
    903839    def _pythonsource_dispatch_eq(self, opcode): 
    904         self._pythonsource_line(opcode.location, "r%d = r%d == r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     840        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} == r{op.r3:d}".format(op=opcode)) 
    905841    def _pythonsource_dispatch_ne(self, opcode): 
    906         self._pythonsource_line(opcode.location, "r%d = r%d != r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     842        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} != r{op.r3:d}".format(op=opcode)) 
    907843    def _pythonsource_dispatch_lt(self, opcode): 
    908         self._pythonsource_line(opcode.location, "r%d = r%d < r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     844        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} < r{op.r3:d}".format(op=opcode)) 
    909845    def _pythonsource_dispatch_le(self, opcode): 
    910         self._pythonsource_line(opcode.location, "r%d = r%d <= r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     846        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} <= r{op.r3:d}".format(op=opcode)) 
    911847    def _pythonsource_dispatch_gt(self, opcode): 
    912         self._pythonsource_line(opcode.location, "r%d = r%d > r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     848        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} > r{op.r3:d}".format(op=opcode)) 
    913849    def _pythonsource_dispatch_ge(self, opcode): 
    914         self._pythonsource_line(opcode.location, "r%d = r%d >= r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     850        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} >= r{op.r3:d}".format(op=opcode)) 
    915851    def _pythonsource_dispatch_add(self, opcode): 
    916         self._pythonsource_line(opcode.location, "r%d = r%d + r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     852        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} + r{op.r3:d}".format(op=opcode)) 
    917853    def _pythonsource_dispatch_sub(self, opcode): 
    918         self._pythonsource_line(opcode.location, "r%d = r%d - r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     854        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} - r{op.r3:d}".format(op=opcode)) 
    919855    def _pythonsource_dispatch_mul(self, opcode): 
    920         self._pythonsource_line(opcode.location, "r%d = r%d * r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     856        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} * r{op.r3:d}".format(op=opcode)) 
    921857    def _pythonsource_dispatch_floordiv(self, opcode): 
    922         self._pythonsource_line(opcode.location, "r%d = r%d // r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     858        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} // r{op.r3:d}".format(op=opcode)) 
    923859    def _pythonsource_dispatch_truediv(self, opcode): 
    924         self._pythonsource_line(opcode.location, "r%d = r%d / r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     860        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} / r{op.r3:d}".format(op=opcode)) 
    925861    def _pythonsource_dispatch_and(self, opcode): 
    926         self._pythonsource_line(opcode.location, "r%d = r%d and r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     862        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} and r{op.r3:d}".format(op=opcode)) 
    927863    def _pythonsource_dispatch_or(self, opcode): 
    928         self._pythonsource_line(opcode.location, "r%d = r%d or r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     864        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} or r{op.r3:d}".format(op=opcode)) 
    929865    def _pythonsource_dispatch_mod(self, opcode): 
    930         self._pythonsource_line(opcode.location, "r%d = r%d %% r%d" % (opcode.r1, opcode.r2, opcode.r3)) 
     866        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} % r{op.r3:d}".format(op=opcode)) 
    931867    def _pythonsource_dispatch_callfunc0(self, opcode): 
    932868        try: 
    933             getattr(self, "_pythonsource_dispatch_callfunc0_%s" % opcode.arg)(opcode) 
     869            getattr(self, "_pythonsource_dispatch_callfunc0_{op.arg}".format(op=opcode))(opcode) 
    934870        except AttributeError: 
    935871            raise UnknownFunctionError(opcode.arg) 
    936872    def _pythonsource_dispatch_callfunc1(self, opcode): 
    937873        try: 
    938             getattr(self, "_pythonsource_dispatch_callfunc1_%s" % opcode.arg)(opcode) 
     874            getattr(self, "_pythonsource_dispatch_callfunc1_{op.arg}".format(op=opcode))(opcode) 
    939875        except AttributeError: 
    940876            raise UnknownFunctionError(opcode.arg) 
    941877    def _pythonsource_dispatch_callfunc2(self, opcode): 
    942878        try: 
    943             getattr(self, "_pythonsource_dispatch_callfunc2_%s" % opcode.arg)(opcode) 
     879            getattr(self, "_pythonsource_dispatch_callfunc2_{op.arg}".format(op=opcode))(opcode) 
    944880        except AttributeError: 
    945881            raise UnknownFunctionError(opcode.arg) 
    946882    def _pythonsource_dispatch_callfunc3(self, opcode): 
    947883        try: 
    948             getattr(self, "_pythonsource_dispatch_callfunc3_%s" % opcode.arg)(opcode) 
     884            getattr(self, "_pythonsource_dispatch_callfunc3_{op.arg}".format(op=opcode))(opcode) 
    949885        except AttributeError: 
    950886            raise UnknownFunctionError(opcode.arg) 
    951887    def _pythonsource_dispatch_callfunc4(self, opcode): 
    952888        try: 
    953             getattr(self, "_pythonsource_dispatch_callfunc4_%s" % opcode.arg)(opcode) 
     889            getattr(self, "_pythonsource_dispatch_callfunc4_{op.arg}".format(op=opcode))(opcode) 
    954890        except AttributeError: 
    955891            raise UnknownFunctionError(opcode.arg) 
    956892    def _pythonsource_dispatch_callmeth0(self, opcode): 
    957893        if opcode.arg in ("split", "rsplit", "strip", "lstrip", "rstrip", "upper", "lower", "capitalize", "isoformat", "r", "g", "b", "a", "hls", "hlsa", "hsv", "hsva", "lum"): 
    958             self._pythonsource_line(opcode.location, "r%d = r%d.%s()" % (opcode.r1, opcode.r2, opcode.arg)) 
     894            self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}.{op.arg}()".format(op=opcode)) 
    959895        elif opcode.arg == "items": 
    960             self._pythonsource_line(opcode.location, "r%d = r%d.iteritems()" % (opcode.r1, opcode.r2)) 
     896            self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}.iteritems()".format(op=opcode)) 
    961897        elif opcode.arg == "render": 
    962             self._pythonsource_line(opcode.location, 'r%d = "".join(r%d())' % (opcode.r1, opcode.r2)) 
     898            self._pythonsource_line(opcode.location, 'r{op.r1:d} = "".join(r{op.r2:d}())'.format(op=opcode)) 
    963899        else: 
    964900            raise UnknownMethodError(opcode.arg) 
    965901    def _pythonsource_dispatch_callmeth1(self, opcode): 
    966902        if opcode.arg in ("split", "rsplit", "strip", "lstrip", "rstrip", "startswith", "endswith", "find", "get", "withlum", "witha"): 
    967             self._pythonsource_line(opcode.location, "r%d = r%d.%s(r%d)" % (opcode.r1, opcode.r2, opcode.arg, opcode.r3)) 
     903            self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}.{op.arg}(r{op.r3:d})".format(op=opcode)) 
    968904        elif opcode.arg == "join": 
    969             self._pythonsource_line(opcode.location, "r%d = r%d.join(unicode(x) for x in r%d)" % (opcode.r1, opcode.r2, opcode.r3)) 
     905            self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}.join(unicode(x) for x in r{op.r3:d})".format(op=opcode)) 
    970906        elif opcode.arg == "format": 
    971             self._pythonsource_line(opcode.location, "r%d = r%d.__format__(r%d)" % (opcode.r1, opcode.r2, opcode.r3)) 
     907            self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}.__format__(r{op.r3:d})".format(op=opcode)) 
    972908        else: 
    973909            raise UnknownMethodError(opcode.arg) 
    974910    def _pythonsource_dispatch_callmeth2(self, opcode): 
    975911        if opcode.arg in ("split", "rsplit", "find", "replace", "get"): 
    976             self._pythonsource_line(opcode.location, "r%d = r%d.%s(r%d, r%d)" % (opcode.r1, opcode.r2, opcode.arg, opcode.r3, opcode.r4)) 
     912            self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}.{op.arg}(r{op.r3:d}, r{op.r4:d})".format(op=opcode)) 
    977913        else: 
    978914            raise UnknownMethodError(opcode.arg) 
    979915    def _pythonsource_dispatch_callmeth3(self, opcode): 
    980916        if opcode.arg == "find": 
    981             self._pythonsource_line(opcode.location, "r%d = r%d.%s(r%d, r%d, r%d)" % (opcode.r1, opcode.r2, opcode.arg, opcode.r3, opcode.r4, opcode.r5)) 
     917            self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d}.{op.arg}(r{op.r3:d}, r{op.r4:d}, r{op.r5:d})".format(op=opcode)) 
    982918        else: 
    983919            raise UnknownMethodError(opcode.arg) 
    984920    def _pythonsource_dispatch_callmethkw(self, opcode): 
    985921        if opcode.arg == "render": 
    986             self._pythonsource_line(opcode.location, 'r%d = "".join(r%d(**dict((key.encode("utf-8"), value) for (key, value) in r%d.iteritems())))' % (opcode.r1, opcode.r2, opcode.r3)) 
     922            self._pythonsource_line(opcode.location, 'r{op.r1:d} = "".join(r{op.r2:d}(**dict((key.encode("utf-8"), value) for (key, value) in r{op.r3:d}.iteritems())))'.format(op=opcode)) # FIXME: This can be simplified in Python 3.0 where strings are unicode 
    987923        else: 
    988924            raise UnknownMethodError(opcode.arg) 
    989925    def _pythonsource_dispatch_if(self, opcode): 
    990         self._pythonsource_line(opcode.location, "if r%d:" % (opcode.r1)) 
     926        self._pythonsource_line(opcode.location, "if r{op.r1:d}:".format(op=opcode)) 
    991927        self.indent += 1 
    992928    def _pythonsource_dispatch_else(self, opcode): 
     
    1019955        self._pythonsource_line(opcode.location, "raise newexc") 
    1020956        self.indent -= 2 
    1021         self._pythonsource_line(opcode.location, "variables[%r] = _" % defopcode.arg) 
     957        self._pythonsource_line(opcode.location, "variables[{op.arg!r}] = _".format(op=defopcode)) 
    1022958    def _pythonsource_dispatch_render(self, opcode): 
    1023         self._pythonsource_line(opcode.location, 'for chunk in r%d(**dict((key.encode("utf-8"), value) for (key, value) in r%d.iteritems())): yield chunk' % (opcode.r1, opcode.r2)) 
     959        self._pythonsource_line(opcode.location, 'for chunk in r{op.r1:d}(**dict((key.encode("utf-8"), value) for (key, value) in r{op.r2:d}.iteritems())): yield chunk'.format(op=opcode)) 
    1024960    def _pythonsource_dispatch_callfunc0_now(self, opcode): 
    1025         self._pythonsource_line(opcode.location, "r%d = datetime.datetime.now()" % opcode.r1) 
     961        self._pythonsource_line(opcode.location, "r{op.r1:d} = datetime.datetime.now()".format(op=opcode)) 
    1026962    def _pythonsource_dispatch_callfunc0_vars(self, opcode): 
    1027         self._pythonsource_line(opcode.location, "r%d = variables" % opcode.r1) 
     963        self._pythonsource_line(opcode.location, "r{op.r1:d} = variables".format(op=opcode)) 
    1028964    def _pythonsource_dispatch_callfunc1_xmlescape(self, opcode): 
    1029         self._pythonsource_line(opcode.location, "r%d = xmlescape(unicode(r%d)) if r%d is not None else u''" % (opcode.r1, opcode.r2, opcode.r2)) 
     965        self._pythonsource_line(opcode.location, "r{op.r1:d} = xmlescape(unicode(r{op.r2:d})) if r{op.r2:d} is not None else u''".format(op=opcode)) 
    1030966    def _pythonsource_dispatch_callfunc1_csv(self, opcode): 
    1031         self._pythonsource_line(opcode.location, "r%d = ul4c._csv(r%d)" % (opcode.r1, opcode.r2)) 
     967        self._pythonsource_line(opcode.location, "r{op.r1:d} = ul4c._csv(r{op.r2:d})".format(op=opcode)) 
    1032968    def _pythonsource_dispatch_callfunc1_json(self, opcode): 
    1033         self._pythonsource_line(opcode.location, "r%d = json.dumps(r%d)" % (opcode.r1, opcode.r2)) 
     969        self._pythonsource_line(opcode.location, "r{op.r1:d} = json.dumps(r{op.r2:d})".format(op=opcode)) 
    1034970    def _pythonsource_dispatch_callfunc1_str(self, opcode): 
    1035         self._pythonsource_line(opcode.location, "r%d = unicode(r%d) if r%d is not None else u''" % (opcode.r1, opcode.r2, opcode.r2)) 
     971        self._pythonsource_line(opcode.location, "r{op.r1:d} = unicode(r{op.r2:d}) if r{op.r2:d} is not None else u''".format(op=opcode)) 
    1036972    def _pythonsource_dispatch_callfunc1_int(self, opcode): 
    1037         self._pythonsource_line(opcode.location, "r%d = int(r%d)" % (opcode.r1, opcode.r2)) 
     973        self._pythonsource_line(opcode.location, "r{op.r1:d} = int(r{op.r2:d})".format(op=opcode)) 
    1038974    def _pythonsource_dispatch_callfunc1_float(self, opcode): 
    1039         self._pythonsource_line(opcode.location, "r%d = float(r%d)" % (opcode.r1, opcode.r2)) 
     975        self._pythonsource_line(opcode.location, "r{op.r1:d} = float(r{op.r2:d})".format(op=opcode)) 
    1040976    def _pythonsource_dispatch_callfunc1_bool(self, opcode): 
    1041         self._pythonsource_line(opcode.location, "r%d = bool(r%d)" % (opcode.r1, opcode.r2)) 
     977        self._pythonsource_line(opcode.location, "r{op.r1:d} = bool(r{op.r2:d})".format(op=opcode)) 
    1042978    def _pythonsource_dispatch_callfunc1_len(self, opcode): 
    1043         self._pythonsource_line(opcode.location, "r%d = len(r%d)" % (opcode.r1, opcode.r2)) 
     979        self._pythonsource_line(opcode.location, "r{op.r1:d} = len(r{op.r2:d})".format(op=opcode)) 
    1044980    def _pythonsource_dispatch_callfunc1_enumerate(self, opcode): 
    1045         self._pythonsource_line(opcode.location, "r%d = enumerate(r%d)" % (opcode.r1, opcode.r2)) 
     981        self._pythonsource_line(opcode.location, "r{op.r1:d} = enumerate(r{op.r2:d})".format(op=opcode)) 
    1046982    def _pythonsource_dispatch_callfunc1_isnone(self, opcode): 
    1047         self._pythonsource_line(opcode.location, "r%d = r%d is None" % (opcode.r1, opcode.r2)) 
     983        self._pythonsource_line(opcode.location, "r{op.r1:d} = r{op.r2:d} is None".format(op=opcode)) 
    1048984    def _pythonsource_dispatch_callfunc1_isstr(self, opcode): 
    1049         self._pythonsource_line(opcode.location, "r%d = isinstance(r%d, basestring)" % (opcode.r1, opcode.r2)) 
     985        self._pythonsource_line(opcode.location, "r{op.r1:d} = isinstance(r{op.r2:d}, basestring)".format(op=opcode)) 
    1050986    def _pythonsource_dispatch_callfunc1_isint(self, opcode): 
    1051         self._pythonsource_line(opcode.location, "r%d = isinstance(r%d, (int, long)) and not isinstance(r%d, bool)" % (opcode.r1, opcode.r2, opcode.r2)) 
     987        self._pythonsource_line(opcode.location, "r{op.r1:d} = isinstance(r{op.r2:d}, (int, long)) and not isinstance(r{op.r2:d}, bool)".format(op=opcode)) 
    1052988    def _pythonsource_dispatch_callfunc1_isfloat(self, opcode): 
    1053         self._pythonsource_line(opcode.location, "r%d = isinstance(r%d, float)" % (opcode.r1, opcode.r2)) 
     989        self._pythonsource_line(opcode.location, "r{op.r1:d} = isinstance(r{op.r2:d}, float)".format(op=opcode)) 
    1054990    def _pythonsource_dispatch_callfunc1_isbool(self, opcode): 
    1055         self._pythonsource_line(opcode.location, "r%d = isinstance(r%d, bool)" % (opcode.r1, opcode.r2)) 
     991        self._pythonsource_line(opcode.location, "r{op.r1:d} = isinstance(r{op.r2:d}, bool)".format(op=opcode)) 
    1056992    def _pythonsource_dispatch_callfunc1_isdate(self, opcode): 
    1057         self._pythonsource_line(opcode.location, "r%d = isinstance(r%d, datetime.datetime)" % (opcode.r1, opcode.r2)) 
     993        self._pythonsource_line(opcode.location, "r{op.r1:d} = isinstance(r{op.r2:d}, datetime.datetime)".format(op=opcode)) 
    1058994    def _pythonsource_dispatch_callfunc1_islist(self, opcode): 
    1059         self._pythonsource_line(opcode.location, "r%d = isinstance(r%d, (list, tuple)) and not isinstance(r%d, color.Color)" % (opcode.r1, opcode.r2, opcode.r2)) 
     995        self._pythonsource_line(opcode.location, "r{op.r1:d} = isinstance(r{op.r2:d}, (list, tuple)) and not isinstance(r{op.r2:d}, color.Color)".format(op=opcode)) 
    1060996    def _pythonsource_dispatch_callfunc1_isdict(self, opcode): 
    1061         self._pythonsource_line(opcode.location, "r%d = isinstance(r%d, dict)" % (opcode.r1, opcode.r2)) 
     997        self._pythonsource_line(opcode.location, "r{op.r1:d} = isinstance(r{op.r2:d}, dict)".format(op=opcode)) 
    1062998    def _pythonsource_dispatch_callfunc1_istemplate(self, opcode): 
    1063         self._pythonsource_line(opcode.location, "r%d = hasattr(r%d, '__call__')" % (opcode.r1, opcode.r2)) # this supports normal generators too 
     999        self._pythonsource_line(opcode.location, "r{op.r1:d} = hasattr(r{op.r2:d}, '__call__')".format(op=opcode)) # this supports normal generators too 
    10641000    def _pythonsource_dispatch_callfunc1_iscolor(self, opcode): 
    1065         self._pythonsource_line(opcode.location, "r%d = isinstance(r%d, color.Color)" % (opcode.r1, opcode.r2)) 
     1001        self._pythonsource_line(opcode.location, "r{op.r1:d} = isinstance(r{op.r2:d}, color.Color)".format(op=opcode)) 
    10661002    def _pythonsource_dispatch_callfunc1_repr(self, opcode): 
    1067         self._pythonsource_line(opcode.location, "r%d = ul4c._repr(r%d)" % (opcode.r1, opcode.r2)) 
     1003        self._pythonsource_line(opcode.location, "r{op.r1:d} = ul4c._repr(r{op.r2:d})".format(op=opcode)) 
    10681004    def _pythonsource_dispatch_callfunc1_get(self, opcode): 
    1069         self._pythonsource_line(opcode.location, "r%d = variables.get(r%d)" % (opcode.r1, opcode.r2)) 
     1005        self._pythonsource_line(opcode.location, "r{op.r1:d} = variables.get(r{op.r2:d})".format(op=opcode)) 
    10701006    def _pythonsource_dispatch_callfunc1_chr(self, opcode): 
    1071         self._pythonsource_line(opcode.location, "r%d = unichr(r%d)" % (opcode.r1, opcode.r2)) 
     1007        self._pythonsource_line(opcode.location, "r{op.r1:d} = unichr(r{op.r2:d})".format(op=opcode)) 
    10721008    def _pythonsource_dispatch_callfunc1_ord(self, opcode): 
    1073         self._pythonsource_line(opcode.location, "r%d = ord(r%d)" % (opcode.r1, opcode.r2)) 
     1009        self._pythonsource_line(opcode.location, "r{op.r1:d} = ord(r{op.r2:d})".format(op=opcode)) 
    10741010    def _pythonsource_dispatch_callfunc1_hex(self, opcode): 
    1075         self._pythonsource_line(opcode.location, "r%d = hex(r%d)" % (opcode.r1, opcode.r2)) 
     1011        self._pythonsource_line(opcode.location, "r{op.r1:d} = hex(r{op.r2:d})".format(op=opcode)) 
    10761012    def _pythonsource_dispatch_callfunc1_oct(self, opcode): 
    1077         self._pythonsource_line(opcode.location, "r%d = ul4c._oct(r%d)" % (opcode.r1, opcode.r2)) 
     1013        self._pythonsource_line(opcode.location, "r{op.r1:d} = ul4c._oct(r{op.r2:d})".format(op=opcode)) 
    10781014    def _pythonsource_dispatch_callfunc1_bin(self, opcode): 
    1079         self._pythonsource_line(opcode.location, "r%d = bin(r%d)" % (opcode.r1, opcode.r2)) 
     1015        self._pythonsource_line(opcode.location, "r{op.r1:d} = bin(r{op.r2:d})".format(op=opcode)) 
    10801016    def _pythonsource_dispatch_callfunc1_sorted(self, opcode): 
    1081         self._pythonsource_line(opcode.location, "r%d = sorted(r%d)" % (opcode.r1, opcode.r2)) 
     1017        self._pythonsource_line(opcode.location, "r{op.r1:d} = sorted(r{op.r2:d})".format(op=opcode)) 
    10821018    def _pythonsource_dispatch_callfunc1_range(self, opcode): 
    1083         self._pythonsource_line(opcode.location, "r%d = xrange(r%d)" % (opcode.r1, opcode.r2)) 
     1019        self._pythonsource_line(opcode.location, "r{op.r1:d} = xrange(r{op.r2:d})".format(op=opcode)) 
    10841020    def _pythonsource_dispatch_callfunc1_type(self, opcode): 
    1085         self._pythonsource_line(opcode.location, "r%d = ul4c._type(r%d)" % (opcode.r1, opcode.r2)) 
     1021        self._pythonsource_line(opcode.location, "r{op.r1:d} = ul4c._type(r{op.r2:d})".format(op=opcode)) 
    10861022    def _pythonsource_dispatch_callfunc1_reversed(self, opcode): 
    1087         self._pythonsource_line(opcode.location, "r%d = reversed(r%d)" % (opcode.r1, opcode.r2)) 
     1023        self._pythonsource_line(opcode.location, "r{op.r1:d} = reversed(r{op.r2:d})".format(op=opcode)) 
    10881024    def _pythonsource_dispatch_callfunc2_range(self, opcode): 
    1089         self._pythonsource_line(opcode.location, "r%d = xrange(r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3)) 
     1025        self._pythonsource_line(opcode.location, "r{op.r1:d} = xrange(r{op.r2:d}, r{op.r3:d})".format(op=opcode)) 
    10901026    def _pythonsource_dispatch_callfunc2_get(self, opcode): 
    1091         self._pythonsource_line(opcode.location, "r%d = variables.get(r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3)) 
     1027        self._pythonsource_line(opcode.location, "r{op.r1:d} = variables.get(r{op.r2:d}, r{op.r3:d})".format(op=opcode)) 
    10921028    def _pythonsource_dispatch_callfunc2_zip(self, opcode): 
    1093         self._pythonsource_line(opcode.location, "r%d = itertools.izip(r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3)) 
     1029        self._pythonsource_line(opcode.location, "r{op.r1:d} = itertools.izip(r{op.r2:d}, r{op.r3:d})".format(op=opcode)) 
    10941030    def _pythonsource_dispatch_callfunc2_int(self, opcode): 
    1095         self._pythonsource_line(opcode.location, "r%d = int(r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3)) 
     1031        self._pythonsource_line(opcode.location, "r{op.r1:d} = int(r{op.r2:d}, r{op.r3:d})".format(op=opcode)) 
    10961032    def _pythonsource_dispatch_callfunc3_range(self, opcode): 
    1097         self._pythonsource_line(opcode.location, "r%d = xrange(r%d, r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     1033        self._pythonsource_line(opcode.location, "r{op.r1:d} = xrange(r{op.r2:d}, r{op.r3:d}, r{op.r4:d})".format(op=opcode)) 
    10981034    def _pythonsource_dispatch_callfunc3_zip(self, opcode): 
    1099         self._pythonsource_line(opcode.location, "r%d = itertools.izip(r%d, r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     1035        self._pythonsource_line(opcode.location, "r{op.r1:d} = itertools.izip(r{op.r2:d}, r{op.r3:d}, r{op.r4:d})".format(op=opcode)) 
    11001036    def _pythonsource_dispatch_callfunc3_rgb(self, opcode): 
    1101         self._pythonsource_line(opcode.location, "r%d = color.Color.fromrgb(r%d, r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     1037        self._pythonsource_line(opcode.location, "r{op.r1:d} = color.Color.fromrgb(r{op.r2:d}, r{op.r3:d}, r{op.r4:d})".format(op=opcode)) 
    11021038    def _pythonsource_dispatch_callfunc3_hls(self, opcode): 
    1103         self._pythonsource_line(opcode.location, "r%d = color.Color.fromhls(r%d, r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     1039        self._pythonsource_line(opcode.location, "r{op.r1:d} = color.Color.fromhls(r{op.r2:d}, r{op.r3:d}, r{op.r4:d})".format(op=opcode)) 
    11041040    def _pythonsource_dispatch_callfunc3_hsv(self, opcode): 
    1105         self._pythonsource_line(opcode.location, "r%d = color.Color.fromhsv(r%d, r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     1041        self._pythonsource_line(opcode.location, "r{op.r1:d} = color.Color.fromhsv(r{op.r2:d}, r{op.r3:d}, r{op.r4:d})".format(op=opcode)) 
    11061042    def _pythonsource_dispatch_callfunc4_rgb(self, opcode): 
    1107         self._pythonsource_line(opcode.location, "r%d = color.Color.fromrgb(r%d, r%d, r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
     1043        self._pythonsource_line(opcode.location, "r{op.r1:d} = color.Color.fromrgb(r{op.r2:d}, r{op.r3:d}, r{op.r4:d}, r{op.r5:d})".format(op=opcode)) 
    11081044    def _pythonsource_dispatch_callfunc4_hls(self, opcode): 
    1109         self._pythonsource_line(opcode.location, "r%d = color.Color.fromhls(r%d, r%d, r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
     1045        self._pythonsource_line(opcode.location, "r{op.r1:d} = color.Color.fromhls(r{op.r2:d}, r{op.r3:d}, r{op.r4:d}, r{op.r5:d})".format(op=opcode)) 
    11101046    def _pythonsource_dispatch_callfunc4_hsv(self, opcode): 
    1111         self._pythonsource_line(opcode.location, "r%d = color.Color.fromhsv(r%d, r%d, r%d, r%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
     1047        self._pythonsource_line(opcode.location, "r{op.r1:d} = color.Color.fromhsv(r{op.r2:d}, r{op.r3:d}, r{op.r4:d}, r{op.r5:d})".format(op=opcode)) 
    11121048 
    11131049    def pythonsource(self, function=None): 
     
    11251061 
    11261062        if function is not None: 
    1127             self._pythonsource_line(self.lastlocation, "def %s(**variables):" % function) 
     1063            self._pythonsource_line(self.lastlocation, "def {0}(**variables):".format(function)) 
    11281064            self.indent += 1 
    11291065            self.lines2locs = [] # We initialize startline one line below, which restarts the counter 
     
    11311067        self._pythonsource_line(self.lastlocation, "__1__") 
    11321068        self._pythonsource_line(self.lastlocation, "__2__") 
    1133         self._pythonsource_line(self.lastlocation, "source = %r" % self.source) 
     1069        self._pythonsource_line(self.lastlocation, "source = {0!r}".format(self.source)) 
    11341070        self._pythonsource_line(self.lastlocation, 'variables = dict((key.decode("utf-8"), value) for (key, value) in variables.iteritems())') # FIXME: This can be dropped in Python 3.0 where strings are unicode 
    11351071        self._pythonsource_line(self.lastlocation, "r0 = r1 = r2 = r3 = r4 = r5 = r6 = r7 = r8 = r9 = None") 
     
    11411077            for opcode in self.opcodes: 
    11421078                try: 
    1143                     getattr(self, "_pythonsource_dispatch_%s" % opcode.code)(opcode) 
     1079                    getattr(self, "_pythonsource_dispatch_{0}".format(opcode.code))(opcode) 
    11441080                except AttributeError: 
    11451081                    raise UnknownOpcodeError(opcode.code) 
     
    11561092        self._pythonsource_line(self.lastlocation, "raise newexc") 
    11571093        locoffset = 1+int(self.lines[0].strip() != "__1__") 
    1158         self.lines[locoffset] = self.lines[locoffset].replace("__1__", "locations = %r" % (tuple(self.locations),)) 
    1159         self.lines[locoffset+1] = self.lines[locoffset+1].replace("__2__", "lines2locs = %r" % (tuple(self.lines2locs),)) 
     1094        self.lines[locoffset] = self.lines[locoffset].replace("__1__", "locations = {0!r}".format(tuple(self.locations))) 
     1095        self.lines[locoffset+1] = self.lines[locoffset+1].replace("__2__", "lines2locs = {0!r}".format(tuple(self.lines2locs))) 
    11601096        result = "\n".join(self.lines) 
    11611097        del self.lastopcode 
     
    12071143                i -= 1 
    12081144            if opcode.code in ("endif", "endfor", "enddef"): 
    1209                 yield "%s}" % (i*indent) 
     1145                yield "{0}}}".format(i*indent) 
    12101146            elif opcode.code in ("for", "if", "def"): 
    1211                 yield "%s%s {" % (i*indent, opcode) 
     1147                yield "{0}{1} {{".format(i*indent, opcode) 
    12121148            elif opcode.code == "else": 
    1213                 yield "%s} else {" % (i*indent) 
     1149                yield "{0}}} else {{".format(i*indent) 
    12141150            else: 
    1215                 yield "%s%s" % (i*indent, opcode) 
     1151                yield "{0}{1}".format(i*indent, opcode) 
    12161152            if opcode.code in ("for", "if", "else", "def"): 
    12171153                i += 1 
     
    12251161        or non-tag text. It will be called by :meth:`_compile` internally. 
    12261162        """ 
    1227         pattern = u"%s(printx|print|code|for|if|elif|else|end|break|continue|render|def|note)(\s*((.|\\n)*?)\s*)?%s" % (re.escape(startdelim), re.escape(enddelim)) 
     1163        pattern = u"{0}(printx|print|code|for|if|elif|else|end|break|continue|render|def|note)(\s*((.|\\n)*?)\s*)?{1}".format(re.escape(startdelim), re.escape(enddelim)) 
    12281164        pos = 0 
    12291165        for match in re.finditer(pattern, source): 
     
    13321268                                raise BlockError("enddef doesn't match any def") 
    13331269                        else: 
    1334                             raise BlockError("illegal end value %r" % code) 
     1270                            raise BlockError("illegal end value {0!r}".format(code)) 
    13351271                    last = stack.pop() 
    13361272                    if last[0] == "if": 
     
    13581294                    stack.append(("def", location)) 
    13591295                else: # Can't happen 
    1360                     raise ValueError("unknown tag %r" % location.type) 
     1296                    raise ValueError("unknown tag {0!r}".format(location.type)) 
    13611297            except Exception, exc: 
    13621298                newexc = Error(location) # FIXME: use ``raise ... from`` in Python 3.0 
     
    13771313 
    13781314    def __repr__(self): 
    1379         return "<%s.%s object with %d opcodes at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, len(self.opcodes), id(self)) 
     1315        return "<{0}.{1} object with {2} opcodes at {3:#x}>".format(self.__class__.__module__, self.__class__.__name__, len(self.opcodes), id(self)) 
    13801316 
    13811317 
     
    13981334 
    13991335    def __repr__(self): 
    1400         return "%s(%r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.type) 
     1336        return "{0}({1!r}, {2!r}, {3!r})".format(self.__class__.__name__, self.start, self.end, self.type) 
    14011337 
    14021338    def __str__(self): 
     
    14201356 
    14211357    def __repr__(self): 
    1422         return "%s(%r, %r)" % (self.__class__.__name__, self.start, self.end) 
     1358        return "{0}({1!r}, {2!r})".format(self.__class__.__name__, self.start, self.end) 
    14231359 
    14241360    def compile(self, template): 
    14251361        r = template._allocreg() 
    1426         template.opcode("load%s" % self.type, r1=r) 
     1362        template.opcode("load{0}".format(self.type), r1=r) 
    14271363        return r 
    14281364 
     
    14491385 
    14501386    def __repr__(self): 
    1451         return "%s(%r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.value) 
     1387        return "{0}({1!r}, {2!r}, {3!r})".format(self.__class__.__name__, self.start, self.end, self.value) 
    14521388 
    14531389    def compile(self, template): 
    14541390        r = template._allocreg() 
    1455         template.opcode("load%s" % self.type, r1=r, arg=unicode(self.value)) 
     1391        template.opcode("load{0}".format(self.type), r1=r, arg=unicode(self.value)) 
    14561392        return r 
    14571393 
     
    14661402    def compile(self, template): 
    14671403        r = template._allocreg() 
    1468         template.opcode("load%s" % self.type, r1=r, arg=repr(self.value)) 
     1404        template.opcode("load{0}".format(self.type), r1=r, arg=repr(self.value)) 
    14691405        return r 
    14701406 
     
    14791415    def compile(self, template): 
    14801416        r = template._allocreg() 
    1481         template.opcode("load%s" % self.type, r1=r, arg=self.value.isoformat()) 
     1417        template.opcode("load{0}".format(self.type), r1=r, arg=self.value.isoformat()) 
    14821418        return r 
    14831419 
     
    14881424    def compile(self, template): 
    14891425        r = template._allocreg() 
    1490         template.opcode("load%s" % self.type, r1=r, arg="%02x%02x%02x%02x" % self.value) 
     1426        template.opcode("load{0}".format(self.type), r1=r, arg="{0:02x}{1:02x}{2:02x}{3:02x}".format(*self.value)) 
    14911427        return r 
    14921428 
     
    14981434 
    14991435    def __repr__(self): 
    1500         return "%s(%r, %r, %s)" % (self.__class__.__name__, self.start, self.end, repr(self.items)[1:-1]) 
     1436        return "{0}({1!r}, {2!r}, {3!r})".format(self.__class__.__name__, self.start, self.end, repr(self.items)[1:-1]) 
    15011437 
    15021438    def compile(self, template): 
     
    15161452 
    15171453    def __repr__(self): 
    1518         return "%s(%r, %r, %s)" % (self.__class__.__name__, self.start, self.end, repr(self.items)[1:-1]) 
     1454        return "{0}({1!r}, {2!r}, {3!r})".format(self.__class__.__name__, self.start, self.end, repr(self.items)[1:-1]) 
    15191455 
    15201456    def compile(self, template): 
     
    15441480 
    15451481    def __repr__(self): 
    1546         return "%s(%r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.name) 
     1482        return "{0}({1!r}, {2!r}, {3!r})".format(self.__class__.__name__, self.start, self.end, self.name) 
    15471483 
    15481484    def compile(self, template): 
     
    15591495 
    15601496    def __repr__(self): 
    1561         return "%s(%r, %r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.iter, self.cont) 
     1497        return "{0}({1!r}, {2!r}, {3!r}, {4!r})".format(self.__class__.__name__, self.start, self.end, self.iter, self.cont) 
    15621498 
    15631499    def compile(self, template): 
     
    15851521 
    15861522    def __repr__(self): 
    1587         return "%s(%r, %r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.obj, self.attr) 
     1523        return "{0}({1!r}, {2!r}, {3!r}, {4!r})".format(self.__class__.__name__, self.start, self.end, self.obj, self.attr) 
    15881524 
    15891525    def compile(self, template): 
     
    16011537 
    16021538    def __repr__(self): 
    1603         return "%s(%r, %r, %r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.obj, self.index1, self.index2) 
     1539        return "{0}({1!r}, {2!r}, {3!r}, {4!r}, {5!r})".format(self.__class__.__name__, self.start, self.end, self.obj, self.index1, self.index2) 
    16041540 
    16051541    def compile(self, template): 
     
    16211557 
    16221558    def __repr__(self): 
    1623         return "%s(%r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.obj) 
     1559        return "{0}({1!r}, {2!r}, {3!r})".format(self.__class__.__name__, self.start, self.end, self.obj) 
    16241560 
    16251561    def compile(self, template): 
     
    16461582 
    16471583    def __repr__(self): 
    1648         return "%s(%r, %r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.obj1, self.obj2) 
     1584        return "{0}({1!r}, {2!r}, {3!r}, {4!r})".format(self.__class__.__name__, self.start, self.end, self.obj1, self.obj2) 
    16491585 
    16501586    def compile(self, template): 
     
    17411677 
    17421678    def __repr__(self): 
    1743         return "%s(%r, %r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.name, self.value) 
     1679        return "{0}({1!r}, {2!r}, {3!r}, {4!r})".format(self.__class__.__name__, self.start, self.end, self.name, self.value) 
    17441680 
    17451681    def compile(self, template): 
     
    17831719 
    17841720    def __repr__(self): 
    1785         return "%s(%r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.name) 
     1721        return "{0}({1!r}, {2!r}, {3!r})".format(self.__class__.__name__, self.start, self.end, self.name) 
    17861722 
    17871723    def compile(self, template): 
     
    17971733    def __repr__(self): 
    17981734        if self.args: 
    1799             return "%s(%r, %r, %r, %s)" % (self.__class__.__name__, self.start, self.end, self.name, repr(self.args)[1:-1]) 
     1735            return "{0}({1!r}, {2!r}, {3!r}, {4})".format(self.__class__.__name__, self.start, self.end, self.name, repr(self.args)[1:-1]) 
    18001736        else: 
    1801             return "%s(%r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.name) 
     1737            return "{0}({1!r}, {2!r}, {3!r})".format(self.__class__.__name__, self.start, self.end, self.name) 
    18021738 
    18031739    def compile(self, template): 
     
    18071743            return r 
    18081744        elif len(self.args) > 4: 
    1809             raise ValueError("%d function arguments not supported" % len(self.args)) 
     1745            raise ValueError("{0} function arguments not supported".format(len(self.args))) 
    18101746        else: 
    18111747            rs = [arg.compile(template) for arg in self.args] 
    1812             template.opcode("callfunc%d" % len(self.args), rs[0], *rs, **dict(arg=self.name.name)) # FIXME: Replace **dict(arg=) with arg= in Python 2.6? 
     1748            template.opcode("callfunc{0}".format(len(self.args)), rs[0], *rs, **dict(arg=self.name.name)) # FIXME: Replace **dict(arg=) with arg= in Python 2.6? 
    18131749            for i in xrange(1, len(self.args)): 
    18141750                template._freereg(rs[i]) 
     
    18251761    def __repr__(self): 
    18261762        if self.args: 
    1827             return "%s(%r, %r, %r, %r, %s)" % (self.__class__.__name__, self.start, self.end, self.name, self.obj, repr(self.args)[1:-1]) 
     1763            return "{0}({1!r}, {2!r}, {3!r}, {4!r}, {5})".format(self.__class__.__name__, self.start, self.end, self.name, self.obj, repr(self.args)[1:-1]) 
    18281764        else: 
    1829             return "%s(%r, %r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.name, self.obj) 
     1765            return "{0}({1!r}, {2!r}, {3!r}, {4!r})".format(self.__class__.__name__, self.start, self.end, self.name, self.obj) 
    18301766 
    18311767    def compile(self, template): 
    18321768        if len(self.args) > 3: 
    1833             raise ValueError("%d method arguments not supported" % len(self.args)) 
     1769            raise ValueError("{0} method arguments not supported".format(len(self.args))) 
    18341770        ro = self.obj.compile(template) 
    18351771        rs = [arg.compile(template) for arg in self.args] 
    1836         template.opcode("callmeth%d" % len(self.args), ro, ro, *rs, **dict(arg=self.name.name)) 
     1772        template.opcode("callmeth{0}".format(len(self.args)), ro, ro, *rs, **dict(arg=self.name.name)) 
    18371773        for r in rs: 
    18381774            template._freereg(r) 
     
    18481784 
    18491785    def __repr__(self): 
    1850         return "%s(%r, %r, %r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.name, self.obj, self.args) 
     1786        return "{0}({1!r}, {2!r}, {3!r}, {4!r}, {5!r})".format(self.__class__.__name__, self.start, self.end, self.name, self.obj, self.args) 
    18511787 
    18521788    def compile(self, template): 
     
    18791815 
    18801816    def __repr__(self): 
    1881         return "%s(%r, %r, %r, %s)" % (self.__class__.__name__, self.start, self.end, self.template, repr(self.variables)[1:-1]) 
     1817        return "{0}({1!r}, {2!r}, {3!r}, {4})".format(self.__class__.__name__, self.start, self.end, self.template, repr(self.variables)[1:-1]) 
    18821818 
    18831819    def compile(self, template): 
     
    21192055            return Color(start, end, value) 
    21202056        else: 
    2121             raise TypeError("can't convert %r" % value) 
     2057            raise TypeError("can't convert {0!r}".format(value)) 
    21222058 
    21232059    # To implement operator precedence, each expression rule has the precedence in its name. The highest precedence is 11 for atomic expressions. 
     
    25342470    elif isinstance(obj, color.Color): 
    25352471        if obj[3] == 0xff: 
    2536             s = "#%02x%02x%02x" % (obj[0], obj[1], obj[2]) 
     2472            s = "#{0:02x}{1:02x}{2:02x}".format(obj[0], obj[1], obj[2]) 
    25372473            if s[1]==s[2] and s[3]==s[4] and s[5]==s[6]: 
    2538                 return "#%s%s%s" % (s[1], s[3], s[5]) 
     2474                return "#{0}{1}{2}".format(s[1], s[3], s[5]) 
    25392475            return s 
    25402476        else: 
    2541             s = "#%02x%02x%02x%02x" % obj 
     2477            s = "#{0:02x}{1:02x}{2:02x}{3:02x}".format(*obj) 
    25422478            if s[1]==s[2] and s[3]==s[4] and s[5]==s[6] and s[7]==s[8]: 
    2543                 return "#%s%s%s%s" % (s[1], s[3], s[5], s[7]) 
     2479                return "#{0}{1}{2}{4}".format(s[1], s[3], s[5], s[7]) 
    25442480            return s 
    25452481    elif isinstance(obj, list): 
    2546         return u"[%s]" % u", ".join(_repr(item) for item in obj) 
     2482        return u"[{0}]".format(u", ".join(_repr(item) for item in obj)) 
    25472483    elif isinstance(obj, dict): 
    2548         return u"{%s}" % u", ".join(u"%s: %s" % (_repr(key), _repr(value)) for (key, value) in obj.iteritems()) 
     2484        return u"{{0}}".format(u", ".join(u"{0}: {1}".format(_repr(key), _repr(value)) for (key, value) in obj.iteritems())) 
    25492485    else: 
    25502486        return unicode(repr(obj)) 
     
    25722508        obj = _repr(obj) 
    25732509    if any(c in obj for c in ',"\n'): 
    2574         return u'"%s"' % obj.replace('"', '""') 
     2510        return u'"{0}"'.format(obj.replace('"', '""')) 
    25752511    return obj 
    25762512 
  • src/ll/url.py

    r3891 r3893  
    9090    :var:`dt` is a :class:`datetime.datetime` object in UTC. 
    9191    """ 
    92     return "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (weekdayname[dt.weekday()], dt.day, monthname[dt.month], dt.year, dt.hour, dt.minute, dt.second) 
     92    return "{1}, {0.day:02d} {2:3} {0.year:4} {0.hour:02}:{0.minute:02}:{0.second:02} GMT".format(dt, weekdayname[dt.weekday()], monthname[dt.month]) 
    9393 
    9494 
     
    151151                values.sort() 
    152152            for value in values: 
    153                 res.append("%s=%s" % (_escape(name, querysafe), _escape(value, querysafe))) 
     153                res.append("{0}={1}".format(_escape(name, querysafe), _escape(value, querysafe))) 
    154154        return "&".join(res) 
    155155    else: 
     
    353353        Return the MIME headers for the file/resource :var:`url`. 
    354354        """ 
    355         return mimetools.Message( 
    356             cStringIO.StringIO( 
    357                 "Content-Type: %s\nContent-Length: %d\nLast-modified: %s\n" % 
    358                 (self.mimetype(url), self.size(url), httpdate(self.mdate(url))) 
    359             ) 
    360         ) 
     355        return mimetools.Message(cStringIO.StringIO("Content-Type: {0}\nContent-Length: {1}\nLast-modified: {2}\n".format(self.mimetype(url), self.size(url), httpdate(self.mdate(url))))) 
    361356 
    362357    @misc.notimplemented 
     
    862857        def _url2filename(self, url): 
    863858            if url.scheme != "ssh": 
    864                 raise ValueError("URL %r is not an ssh URL" % url) 
     859                raise ValueError("URL {0!r} is not an ssh URL".format(url)) 
    865860            filename = str(url.path) 
    866861            if filename.startswith("/~"): 
     
    998993 
    999994        def __repr__(self): 
    1000             return "<%s.%s to %r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.server, id(self)) 
     995            return "<{0.__class__.__module__}.{0.__class__.__name__} to {0.server!r} at {1:#x}>".format(self, id(self)) 
    1001996 
    1002997 
     
    10191014    def open(self, url, mode="rb", headers=None, data=None): 
    10201015        if mode != "rb": 
    1021             raise NotImplementedError("mode %r not supported" % mode) 
     1016            raise NotImplementedError("mode {0!r} not supported".format(mode)) 
    10221017        return URLResource(url, headers=headers, data=data) 
    10231018 
     
    10401035        URL('file:/home/andreas/') 
    10411036    """ 
    1042     return Dir("~%s" % user, scheme) 
     1037    return Dir("~{0}".format(user), scheme) 
    10431038 
    10441039 
     
    11991194 
    12001195    def __repr__(self): 
    1201         if self.closed: 
    1202             state = "closed" 
    1203         else: 
    1204             state = "open" 
    1205         return "<%s %s.%s %r, mode %r at 0x%x>" % (state, self.__class__.__module__, self.__class__.__name__, self.name, self.mode, id(self)) 
     1196        return "<{0}{1.__class__.__module__}.{1.__class__.__name__} {1.name}, mode {1.mode} at {2:#x}>".format("closed" if self.closed else "open", self, id(self)) 
    12061197 
    12071198 
     
    13221313    def __init__(self, url, mode="rb", headers=None, data=None): 
    13231314        if "w" in mode: 
    1324             raise ValueError("writing mode %r not supported" % mode) 
     1315            raise ValueError("writing mode {0!r} not supported".format(mode)) 
    13251316        self.url = URL(url) 
    13261317        self.name = str(self.url) 
     
    14861477 
    14871478    def __repr__(self): 
    1488         return "<%s instance scheme=%r usehierarchy=%r useserver=%r usefrag=%r at 0x%x>" % (self.__class__.__name__, self.scheme, self.usehierarchy, self.useserver, self.usefrag, id(self)) 
     1479        return "<{0.__class__.__name__} instance scheme={0.scheme!r} usehierarchy={0.usehierarchy!r} useserver={0.useserver!r} usefrag={0.usefrag!r} at {1:#x}>".format(self, id(self)) 
    14891480 
    14901481 
     
    16041595 
    16051596    def __repr__(self): 
    1606         return "Path(%r)" % self._path 
     1597        return "Path({0!r})".format(self._path) 
    16071598 
    16081599    def __str__(self): 
     
    20582049                # check if the scheme only has allowed characters 
    20592050                if not self._checkscheme(scheme): 
    2060                     raise ValueError("Illegal scheme char in scheme %r" % (scheme, )) 
     2051                    raise ValueError("Illegal scheme char in scheme {0!r}".format(scheme)) 
    20612052                self._scheme = scheme 
    20622053            self.reg = schemereg.get(scheme, defaultreg) 
     
    21192110                hostport = _escape(self.host, safe) 
    21202111                if self.port is not None: 
    2121                     hostport += ":%d" % self.port 
     2112                    hostport += ":{0}".format(self.port) 
    21222113                return hostport 
    21232114            else: 
     
    25972588 
    25982589    def __repr__(self): 
    2599         return "URL(%r)" % self.url 
     2590        return "URL({0!r})".format(self.url) 
    26002591 
    26012592    def __nonzero__(self): 
     
    27042695    def _checklocal(self): 
    27052696        if not self.islocal(): 
    2706             raise ValueError("URL %r is not local" % self) 
     2697            raise ValueError("URL {0!r} is not local".format(self)) 
    27072698 
    27082699    def local(self): 
  • src/ll/xist/css.py

    r3884 r3893  
    187187                    (1, 0, 0, 0), 
    188188                    xfind.IsSelector(node), 
    189                     cssutils.parseString(u"*{%s}" % style).cssRules[0].style # parse the style out of the style attribute 
     189                    cssutils.parseString(u"*{{{0}}}".format(style)).cssRules[0].style # parse the style out of the style attribute 
    190190                ) 
    191191 
     
    205205                        styles[prop.name] = (count, prop.cssText) 
    206206                        count += 1 
    207             style = " ".join("%s;" % value for (count, value) in sorted(styles.itervalues())) 
     207            style = " ".join("{0};".format(value) for (count, value) in sorted(styles.itervalues())) 
    208208            if style: 
    209209                path[-1].attrs["style"] = style 
     
    232232                index = int(index) 
    233233            except ValueError: 
    234                 raise ValueError("illegal argument %r" % index) 
     234                raise ValueError("illegal argument {0!r}".format(index)) 
    235235            else: 
    236236                if index < 1: 
     
    262262                index = int(index) 
    263263            except ValueError: 
    264                 raise ValueError("illegal argument %r" % index) 
     264                raise ValueError("illegal argument {0!r}".format(index)) 
    265265            else: 
    266266                if index < 1: 
     
    304304 
    305305    def __str__(self): 
    306         return "%s(%r)" % (self.__class__.__name__, self.attributename) 
     306        return "{0}({1!r})".format(self.__class__.__name__, self.attributename) 
    307307 
    308308 
     
    326326 
    327327    def __str__(self): 
    328         return "%s(%r, %r)" % (self.__class__.__name__, self.attributename, self.attributevalue) 
     328        return "{0}({1!r}, {2!r})".format(self.__class__.__name__, self.attributename, self.attributevalue) 
    329329 
    330330 
     
    350350 
    351351    def __str__(self): 
    352         return "%s(%r, %r)" % (self.__class__.__name__, self.attributename, self.attributevalue) 
     352        return "{0}({1!r}, {2!r})".format(self.__class__.__name__, self.attributename, self.attributevalue) 
    353353 
    354354 
     
    486486 
    487487    def __str__(self): 
    488         return "%s()" % self.__class__.__name__ 
     488        return "{0}()".format(self.__class__.__name__) 
    489489 
    490490 
     
    494494 
    495495    def __str__(self): 
    496         return "%s()" % self.__class__.__name__ 
     496        return "{0}()".format(self.__class__.__name__) 
    497497 
    498498 
     
    529529 
    530530    def __str__(self): 
    531         return "%s(%r)" % (self.__class__.__name__, self.value) 
     531        return "{0}({1!r})".format(self.__class__.__name__, self.value) 
    532532 
    533533 
     
    636636 
    637637    def __str__(self): 
    638         return "%s(%s, %s)" % (self.__class__.__name__, self.left, self.right) 
     638        return "{0}({1}, {2})".format(self.__class__.__name__, self.left, self.right) 
    639639 
    640640 
     
    657657 
    658658    def __str__(self): 
    659         return "%s(%s, %s)" % (self.__class__.__name__, self.left, self.right) 
     659        return "{0}({1}, {2})".format(self.__class__.__name__, self.left, self.right) 
    660660 
    661661 
     
    697697        if prefixes is not None: 
    698698            prefixes = dict((key, xsc.nsname(value)) for (key, value) in prefixes.iteritems()) 
    699             selectors = "%s\n%s{}" % ("\n".join("@namespace %s %r;" % (key if key is not None else "", value) for (key, value) in prefixes.iteritems()), selectors) 
     699            selectors = "{0}\n{1}{{}}".format("\n".join("@namespace {0} {1!r};".format(key if key is not None else "", value) for (key, value) in prefixes.iteritems()), selectors) 
    700700        else: 
    701             selectors = "%s{}" % selectors 
     701            selectors = "{0}{{}}".format(selectors) 
    702702        for rule in cssutils.CSSParser().parseString(selectors).cssRules: 
    703703            if isinstance(rule, css.CSSStyleRule): 
     
    711711        selectors = [selectors] 
    712712    else: 
    713         raise TypeError("can't handle %r" % type(selectors)) 
     713        raise TypeError("can't handle {0!r}".format(type(selectors))) 
    714714    orcombinators = [] 
    715715    for selector in selectors: 
     
    761761                        rule.selectors.append(_function2class[v.lstrip(":").rstrip("(")]()) 
    762762                    except KeyError: 
    763                         raise ValueError("unknown function %s" % v) 
     763                        raise ValueError("unknown function {0}".format(v)) 
    764764                    rule.function = v 
    765765                else: 
     
    767767                        rule.selectors.append(_pseudoname2class[v.lstrip(":")]()) 
    768768                    except KeyError: 
    769                         raise ValueError("unknown pseudo-class %s" % v) 
     769                        raise ValueError("unknown pseudo-class {0}".format(v)) 
    770770            elif t == "NUMBER": 
    771771                # can only appear in a function => set the function value 
  • src/ll/xist/ns/code.py

    r3691 r3893  
    7070    def funcify(self, name=u"__"): 
    7171        self.indent() 
    72         self.lines.insert(0, [u"", u"def %s(converter):" % name]) 
     72        self.lines.insert(0, [u"", u"def {0}(converter):".format(name)]) 
    7373 
    7474    def asstring(self): 
  • src/ll/xist/ns/detox.py

    r3691 r3893  
    203203 
    204204    lines = [ 
    205         "# generated by %s on %s UTC" % (__file__, datetime.datetime.utcnow()), 
     205        "# generated by {0} on {1} UTC".format(__file__, datetime.datetime.utcnow()), 
    206206        "", 
    207207        "from ll.misc import xmlescape as __detox_xmlescape__", 
     
    211211    def endscope(action): 
    212212        if not stack: 
    213             raise SyntaxError("can't end %s scope: no active scope" % (action or "unnamed")) 
     213            raise SyntaxError("can't end {0} scope: no active scope".format(action or "unnamed")) 
    214214        if action and action != stack[-1][0]: 
    215             raise SyntaxError("can't end %s scope: active scope is: %s %s" % (action, stack[-1][0], stack[-1][1])) 
     215            raise SyntaxError("can't end {0} scope: active scope is: {1} {2}".format(action, stack[-1][0], stack[-1][1])) 
    216216        return stack.pop() 
    217217 
     
    220220            # ignore output outside of functions 
    221221            if stackoutput and stackoutput[-1]: 
    222                 lines.append("%syield %r" % (len(stack)*indent, s)) 
     222                lines.append("{0}yield {1!r}".format(len(stack)*indent, s)) 
    223223        elif t == "expr": 
    224224            # ignore output outside of functions 
    225225            if stackoutput and stackoutput[-1]: 
    226                 lines.append("%syield %s" % (len(stack)*indent, s)) 
     226                lines.append("{0}yield {1!r}".format(len(stack)*indent, s)) 
    227227        elif t == "textexpr": 
    228228            # ignore output outside of functions 
    229229            if stackoutput and stackoutput[-1]: 
    230                 lines.append("%syield __detox_xmlescape__(%s)" % (len(stack)*indent, s)) 
     230                lines.append("{0}yield __detox_xmlescape__({1})".format(len(stack)*indent, s)) 
    231231        elif t == "attrexpr": 
    232232            # ignore output outside of functions 
    233233            if stackoutput and stackoutput[-1]: 
    234                 lines.append("%syield __detox_xmlescape__(%s)" % (len(stack)*indent, s)) 
     234                lines.append("{0}yield __detox_xmlescape__({1})".format(len(stack)*indent, s)) 
    235235        elif t == "code": 
    236             lines.append("%s%s" % (len(stack)*indent, s)) 
     236            lines.append("{0}{1}".format(len(stack)*indent, s)) 
    237237        elif t == "def": 
    238238            lines.append("") 
    239             lines.append("%sdef %s:" % (len(stack)*indent, s)) 
     239            lines.append("{0}def {1}:".format(len(stack)*indent, s)) 
    240240            stack.append((t, s)) 
    241241            stackoutput.append(True) 
    242242        elif t == "class": 
    243243            lines.append("") 
    244             lines.append("%sclass %s:" % (len(stack)*indent, s)) 
     244            lines.append("{0}class {1}:".format(len(stack)*indent, s)) 
    245245            stack.append((t, s)) 
    246246            stackoutput.append(False) 
    247247        elif t == "for": 
    248             lines.append("%sfor %s:" % (len(stack)*indent, s)) 
     248            lines.append("{0}for {1}:".format(len(stack)*indent, s)) 
    249249            stack.append((t, s)) 
    250250        elif t == "while": 
    251             lines.append("%swhile %s:" % (len(stack)*indent, s)) 
     251            lines.append("{0}while {1}:".format(len(stack)*indent, s)) 
    252252            stack.append((t, s)) 
    253253        elif t == "if": 
    254             lines.append("%sif %s:" % (len(stack)*indent, s)) 
     254            lines.append("{0}if {1}:".format(len(stack)*indent, s)) 
    255255            stack.append((t, s)) 
    256256        elif t == "else": 
    257             lines.append("%selse:" % ((len(stack)-1)*indent)) 
     257            lines.append("{0}else:".format((len(stack)-1)*indent)) 
    258258        elif t == "elif": 
    259             lines.append("%selif %s:" % ((len(stack)-1)*indent, s)) 
     259            lines.append("{0}elif {1}:".format((len(stack)-1)*indent, s)) 
    260260        elif t == "end": 
    261261            scope = endscope(s) 
     
    265265            # ignore output outside of functions 
    266266            if stackoutput and stackoutput[-1]: 
    267                 s = "<?%s %s?>" % (t, s) 
    268                 lines.append("%syield %r" % (len(stack)*indent, s)) 
     267                s = "<?{0} {1}?>".format(t, s) 
     268                lines.append("{0}yield {1!r}".format(len(stack)*indent, s)) 
    269269    if stack: 
    270         raise SyntaxError("unclosed scopes remaining: %s" % ", ".join(scope[0] for scope in stack)) 
     270        raise SyntaxError("unclosed scopes remaining: {0}".format(", ".join(scope[0] for scope in stack))) 
    271271    return "\n".join(lines) 
    272272 
    273273 
    274274def xml2mod(source, name=None, filename="<string>", store=False, loader=None): 
    275     name = name or "ll.xist.ns.detox.sandbox_%x" % (hash(filename) + sys.maxint + 1) 
     275    name = name or "ll.xist.ns.detox.sandbox_{0:x}".format(hash(filename) + sys.maxint + 1) 
    276276    module = types.ModuleType(name) 
    277277    module.__file__ = filename 
  • src/ll/xist/ns/doc.py

    r3866 r3893  
    5252 
    5353    if inspect.ismethod(thing): 
    54         base = "METHOD-DOCSTRING(%s.%s.%s)" % (_getmodulename(thing), thing.im_class.__name__, thing.__name__) 
     54        base = "METHOD-DOCSTRING({0}.{1.im_class.__name__}.{1.__name__})".format(_getmodulename(thing), thing) 
    5555    elif isinstance(thing, property): 
    56         base = "PROPERTY-DOCSTRING(%s.%s)" % (_getmodulename(thing), "unknown") 
     56        base = "PROPERTY-DOCSTRING({0}.{1})".format(_getmodulename(thing), "unknown") 
    5757    elif inspect.isfunction(thing): 
    58         base = "FUNCTION-DOCSTRING(%s.%s)" % (_getmodulename(thing), thing.__name__) 
     58        base = "FUNCTION-DOCSTRING({0}.{1.__name__})".format(_getmodulename(thing), thing) 
    5959    elif inspect.isclass(thing): 
    60         base = "CLASS-DOCSTRING(%s.%s)" % (_getmodulename(thing), thing.__name__) 
     60        base = "CLASS-DOCSTRING({0}.{1.__name__})".format(_getmodulename(thing), thing) 
    6161    elif inspect.ismodule(thing): 
    62         base = "MODULE-DOCSTRING(%s)" % _getmodulename(thing) 
     62        base = "MODULE-DOCSTRING({0})".format(_getmodulename(thing)) 
    6363    else: 
    6464        base = "DOCSTRING" 
     
    106106        return node 
    107107    else: 
    108         raise ValueError("unsupported __docformat__ %r" % format) 
     108        raise ValueError("unsupported __docformat__ {0!r}".format(format)) 
    109109 
    110110 
     
    393393 
    394394        def indent(self): 
    395             return u"%.1fcm" % (0.7*self.indentcount) 
     395            return u"{0:.1f}cm".format(0.7*self.indentcount) 
    396396 
    397397        def labelindent(self): 
    398             return u"%.1fcm" % (0.7*self.indentcount-0.4) 
     398            return u"{0:.1f}cm".format(0.7*self.indentcount-0.4) 
    399399 
    400400    def convert(self, converter): 
     
    409409            return self.convert_fo(converter) 
    410410        else: 
    411             raise ValueError("unknown conversion target %r" % target) 
     411            raise ValueError("unknown conversion target {0!r}".format(target)) 
    412412 
    413413    def convert_doc(self, converter): 
     
    965965                if context.firstheaderlevel is None: 
    966966                    context.firstheaderlevel = level 
    967                 e = getattr(converter.target, "h%d" % (context.firstheaderlevel+level), converter.target.h6)(self.content) 
     967                e = getattr(converter.target, "h{0}".format(context.firstheaderlevel+level), converter.target.h6)(self.content) 
    968968            else: 
    969                 raise ValueError("unknown node %r on the stack" % context.stack[-1]) 
     969                raise ValueError("unknown node {0!r} on the stack".format(context.stack[-1])) 
    970970        else: 
    971971            context.firstheaderlevel = 0 
     
    10101010        #if "id" in self.attrs: 
    10111011        #   e.append(target.a(name=self.attrs.id, id=self.attrs.id)) 
    1012         hclass = getattr(target, u"h%d" % level, target.h6) 
     1012        hclass = getattr(target, u"h{0}".format(level), target.h6) 
    10131013        for t in ts: 
    10141014            e.append(hclass(t.content)) 
     
    11511151            label = u"\u2022" 
    11521152        elif type=="ol": 
    1153             label = "%d." % context.lists[-1][1] 
     1153            label = "{0}.".format(context.lists[-1][1]) 
    11541154        context.indentcount += 1 
    11551155        if self[block]: # Do we have a block in our content? 
  • src/ll/xist/ns/html.py

    r3884 r3893  
    260260                        self.attrs, 
    261261                        http_equiv=u"Content-Type", 
    262                         content=(contenttype, u"; ", u"; ".join(u"%s=%s" % option for option in options.items())) 
     262                        content=(contenttype, u"; ", u"; ".join(u"{0}={1}".format(*option) for option in options.items())) 
    263263                    ) 
    264264                    return node.publish(publisher) # return a generator-iterator 
     
    13681368    options = [ 
    13691369        "-dump 1", 
    1370         "-dump-charset %s" % encoding, 
    1371         "-dump-width %d" % width, 
     1370        "-dump-charset {0}".format(encoding), 
     1371        "-dump-width {0}".format(width), 
    13721372        "-force-html", 
    13731373        "-no-home", 
     
    13791379    text = node.bytes(encoding=encoding) 
    13801380 
    1381     cmd = "elinks %s" % " ".join(options) 
     1381    cmd = "elinks {0}".format(" ".join(options)) 
    13821382    p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True) 
    13831383    p.stdin.write(text) 
  • src/ll/xist/ns/htmlspecials.py

    r3884 r3893  
    133133            e = target.img(self.attrs.convert(converter)) 
    134134        else: 
    135             raise ValueError("unknown conversion target %r" % target) 
     135            raise ValueError("unknown conversion target {0!r}".format(target)) 
    136136        src = self[u"src"].convert(converter).forInput(converter.root) 
    137137        e._addimagesizeattributes(src, u"width", u"height") 
     
    150150        target = converter.target 
    151151        if not issubclass(target, (ihtml, html)): 
    152             raise ValueError("unknown conversion target %r" % target) 
     152            raise ValueError("unknown conversion target {0!r}".format(target)) 
    153153        e = target.img(self.attrs.withoutnames(u"color")) 
    154154        src = self.attrs.src.convert(converter).forInput(converter.root) 
  • src/ll/xist/ns/ihtml.py

    r3691 r3893  
    386386                        self.attrs, 
    387387                        http_equiv=u"Content-Type", 
    388                         content=(contenttype, u"; ", u"; ".join(u"%s=%s" % option for option in options.items())) 
     388                        content=(contenttype, u"; ", u"; ".join(u"{0}={1}".format(*option) for option in options.items())) 
    389389                    ) 
    390390                    return node.publish(publisher) # return a generator-iterator 
  • src/ll/xist/ns/jsp.py

    r3779 r3893  
    157157                node = self.__class__( 
    158158                    self.attrs, 
    159                     contentType=(contenttype, u"; ", u"; ".join("%s=%s" % option for option in options.items())), 
     159                    contentType=(contenttype, u"; ", u"; ".join("{0}={1}".format(*option) for option in options.items())), 
    160160                    pageEncoding=encoding 
    161161                ) 
     
    186186            except KeyError: 
    187187                oc = ord(c) 
    188                 v.append("\\u%04x" % oc if oc >= 128 else c) 
    189         return '"%s"' % "".join(s) 
     188                v.append("\\u{0:04x}".format(oc) if oc >= 128 else c) 
     189        return '"{0}"'.format("".join(s)) 
    190190 
    191191    def make_literal(content): 
     
    193193 
    194194    def make_scriptlet(content): 
    195         line = "%s%s\n" % ("\t"*indent, content) 
     195        line = "{0}{1}\n".format("\t"*indent, content) 
    196196        if result and isinstance(result[-1], scriptlet): 
    197             result[-1] += "%s%s\n" % ("\t"*indent, content) 
     197            result[-1] += "{0}{1}\n".format("\t"*indent, content) 
    198198        else: 
    199             result.append(scriptlet("\n%s%s\n" % ("\t"*indent, content))) 
     199            result.append(scriptlet("\n{0}{1}\n".format("\t"*indent, content))) 
    200200 
    201201    varcounter = 0 # Used to number loop iterators and local templates 
     
    207207    width = len(str(len(lines)+1)) 
    208208    for (i, line) in enumerate(lines): 
    209         make_scriptlet("// %*d %s" % (width, i+1, line)) 
     209        make_scriptlet("// %{1:{0}} {2}".format(width, i+1, line)) 
    210210 
    211211    make_scriptlet("//@@@ BEGIN template code") 
    212212 
    213213    for i in xrange(10): 
    214         make_scriptlet("Object r%d = null;" % i) 
     214        make_scriptlet("Object r{0} = null;".format(i)) 
    215215 
    216216    defs = [] 
     
    221221            (line, col) = lastloc.pos() 
    222222            tag = lastloc.tag 
    223             make_scriptlet("// Location %d (line %d, col %d): %s" % (lastloc.starttag+1, line, col, repr(tag)[1+isinstance(tag, unicode):-1])) 
     223            make_scriptlet("// Location {0} (line {1}, col {2}): {3}".format(lastloc.starttag+1, line, col, repr(tag)[1+isinstance(tag, unicode):-1])) 
    224224        if opcode.code is None: 
    225225            make_literal(opcode.location.code) 
    226226        elif opcode.code == "loadstr": 
    227             make_scriptlet('r%d = %s;' % (opcode.r1, _string(opcode.arg))) 
     227            make_scriptlet('r{op.r1} = {arg};'.format(op=opcode, arg=_string(opcode.arg))) 
    228228        elif opcode.code == "loadint": 
    229             make_scriptlet("r%d = new Integer(%s);" % (opcode.r1, opcode.arg)) 
     229            make_scriptlet("r{op.r1} = new Integer({op.arg});".format(op=opcode)) 
    230230        elif opcode.code == "loadfloat": 
    231             make_scriptlet("r%d = new Double(%s);" % (opcode.r1, opcode.arg)) 
     231            make_scriptlet("r{op.r1} = new Double({op.arg});".format(op=opcode)) 
    232232        elif opcode.code == "loadnone": 
    233             make_scriptlet("r%d = null;" % opcode.r1) 
     233            make_scriptlet("r{op.r1} = null;".format(op=opcode)) 
    234234        elif opcode.code == "loadfalse": 
    235             make_scriptlet("r%d = Boolean.FALSE;" % opcode.r1) 
     235            make_scriptlet("r{op.r1} = Boolean.FALSE;".format(op=opcode)) 
    236236        elif opcode.code == "loadtrue": 
    237             make_scriptlet("r%d = Boolean.TRUE;" % opcode.r1) 
     237            make_scriptlet("r{op.r1} = Boolean.TRUE;".format(op=opcode)) 
    238238        elif opcode.code == "loaddate": 
    239             make_scriptlet("r%d = com.livinglogic.ul4.Utils.isoDateFormatter.parse(%s);" % (opcode.r1, _string(opcode.arg))) 
     239            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.isoDateFormatter.parse({arg});".format(op=opcode, arg=_string(opcode.arg))) 
    240240        elif opcode.code == "loadcolor": 
    241             make_scriptlet("r%d = new com.livinglogic.ul4.Color(0x%s, 0x%s, 0x%s, 0x%s)" % (opcode.r1, opcode.arg[:2], opcode.arg[2:4], opcode.arg[4:6], opcode.arg[6:])) 
     241            make_scriptlet("r{op.r1} = new com.livinglogic.ul4.Color(0x{r}, 0x{g}, 0x{b}, 0x{b})".format(op=opcode, r=opcode.arg[:2], g=opcode.arg[2:4], b=opcode.arg[4:6], a=opcode.arg[6:])) 
    242242        elif opcode.code == "buildlist": 
    243             make_scriptlet("r%d = new java.util.ArrayList();" % opcode.r1) 
     243            make_scriptlet("r{op.r1} = new java.util.ArrayList();".format(op=opcode)) 
    244244        elif opcode.code == "builddict": 
    245             make_scriptlet("r%d = new java.util.HashMap();" % opcode.r1) 
     245            make_scriptlet("r{op.r1} = new java.util.HashMap();".format(op=opcode)) 
    246246        elif opcode.code == "addlist": 
    247             make_scriptlet("((java.util.List)r%d).add(r%d)" % (opcode.r1, opcode.r2)) 
     247            make_scriptlet("((java.util.List)r{op.r1}).add(r{op.r2})".format(op=opcode)) 
    248248        elif opcode.code == "adddict": 
    249             make_scriptlet("((java.util.Map)r%d).put(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     249            make_scriptlet("((java.util.Map)r{op.r1}).put(r{op.r2}, r{op.r3});".format(op=opcode)) 
    250250        elif opcode.code == "updatedict": 
    251             make_scriptlet("((java.util.Map)r%d).putAll((java.util.Map)r%d);" % (opcode.r1, opcode.r2)) 
     251            make_scriptlet("((java.util.Map)r{op.r1}).putAll((java.util.Map)r{op.r2});".format(op=opcode)) 
    252252        elif opcode.code == "loadvar": 
    253             make_scriptlet("r%d = %s.get(%s);" % (opcode.r1, variables, _string(opcode.arg))) 
     253            make_scriptlet("r{op.r1} = {var}.get({arg});".format(op=opcode, var=variables, arg=_string(opcode.arg))) 
    254254        elif opcode.code == "storevar": 
    255             make_scriptlet("%s.put(%s, r%d);" % (variables, _string(opcode.arg), opcode.r1)) 
     255            make_scriptlet("{var}.put({arg}, r{op.r1});".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    256256        elif opcode.code == "addvar": 
    257             name = _string(opcode.arg) 
    258             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.add(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     257            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.add({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    259258        elif opcode.code == "subvar": 
    260             name = _string(opcode.arg) 
    261             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.sub(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     259            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.sub({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    262260        elif opcode.code == "mulvar": 
    263             name = _string(opcode.arg) 
    264             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.mul(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     261            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.mul({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    265262        elif opcode.code == "truedivvar": 
    266             name = _string(opcode.arg) 
    267             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.truediv(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     263            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.truediv({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    268264        elif opcode.code == "floordivvar": 
    269265            name = _string(opcode.arg) 
    270             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.floordiv(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     266            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.floordiv({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    271267        elif opcode.code == "modvar": 
    272             name = _string(opcode.arg) 
    273             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.mod(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     268            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.mod({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    274269        elif opcode.code == "delvar": 
    275             make_scriptlet("%s.remove(%s);" % (variables, _string(opcode.arg))) 
     270            make_scriptlet("{var}.remove({arg});".format(var=variables, arg=_string(opcode.arg))) 
    276271        elif opcode.code == "getattr": 
    277             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getItem(r%d, %s);" % (opcode.r1, opcode.r2, _string(opcode.arg))) 
     272            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getItem(r{op.r2}, {arg});".format(op=opcode, arg=_string(opcode.arg))) 
    278273        elif opcode.code == "getitem": 
    279             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getItem(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     274            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getItem(r{op.r2}, r{op.r3});".format(op=opcode)) 
    280275        elif opcode.code == "getslice12": 
    281             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getSlice(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     276            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getSlice(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    282277        elif opcode.code == "getslice1": 
    283             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getSlice(r%d, r%d, null);" % (opcode.r1, opcode.r2, opcode.r3)) 
     278            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getSlice(r{op.r2}, r{op.r3}, null);".format(op=opcode)) 
    284279        elif opcode.code == "getslice2": 
    285             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getSlice(r%d, null, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     280            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getSlice(r{op.r2}, null, r{op.r3});".format(op=opcode)) 
    286281        elif opcode.code == "print": 
    287             make_scriptlet("out.write(org.apache.commons.lang.ObjectUtils.toString(r%d));" % opcode.r1) 
     282            make_scriptlet("out.write(org.apache.commons.lang.ObjectUtils.toString(r{op.r1}));".format(op=opcode)) 
    288283        elif opcode.code == "printx": 
    289             make_scriptlet("out.write(com.livinglogic.ul4.Utils.xmlescape(org.apache.commons.lang.ObjectUtils.toString(r%d)));" % opcode.r1) 
     284            make_scriptlet("out.write(com.livinglogic.ul4.Utils.xmlescape(r{op.r1}));".format(op=opcode)) 
    290285        elif opcode.code == "for": 
    291286            varcounter += 1 
    292             make_scriptlet("for (java.util.Iterator iterator%d = com.livinglogic.ul4.Utils.iterator(r%d); iterator%d.hasNext();)" % (varcounter, opcode.r2, varcounter)) 
     287            make_scriptlet("for (java.util.Iterator iterator{count} = com.livinglogic.ul4.Utils.iterator(r{op.r1}); iterator{count}.hasNext();)".format(op=opcode, count=varcounter)) 
    293288            make_scriptlet("{") 
    294289            indent += 1 
    295             make_scriptlet("r%d = iterator%d.next();" % (opcode.r1, varcounter)) 
     290            make_scriptlet("r{op.r1} = iterator{count}.next();".format(op=opcode, count=varcounter)) 
    296291        elif opcode.code == "endfor": 
    297292            indent -= 1 
     
    299294        elif opcode.code == "def": 
    300295            varcounter += 1 
    301             make_scriptlet("com.livinglogic.ul4.JSPTemplate template%d = new com.livinglogic.ul4.JSPTemplate()" % varcounter) 
     296            make_scriptlet("com.livinglogic.ul4.JSPTemplate template{count} = new com.livinglogic.ul4.JSPTemplate()".format(count=varcounter)) 
    302297            make_scriptlet("{") 
    303298            indent += 1 
     
    314309            make_scriptlet("};") 
    315310            (arg, variables) = defs.pop() 
    316             make_scriptlet("%s.put(%s, template%d);" % (variables, _string(arg), varcounter)) 
     311            make_scriptlet("{var}.put({arg}, template{count});".format(var=variables, arg=_string(arg), countr=varcounter)) 
    317312        elif opcode.code == "break": 
    318313            make_scriptlet("break;") 
     
    320315            make_scriptlet("continue;") 
    321316        elif opcode.code == "not": 
    322             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getBool(r%d) ? Boolean.FALSE : Boolean.TRUE;" % (opcode.r1, opcode.r2)) 
     317            make_scriptlet("r{op.r1} = !com.livinglogic.ul4.Utils.getBool(r{op.r2});".format(op=opcode)) 
    323318        elif opcode.code == "neg": 
    324             make_scriptlet("r%d = com.livinglogic.ul4.Utils.neg(r%d);" % (opcode.r1, opcode.r2)) 
     319            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.neg(r{op.r2});".format(op=opcode)) 
    325320        elif opcode.code == "contains": 
    326             make_scriptlet("r%d = com.livinglogic.ul4.Utils.contains(r%d, r%d) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r3)) 
     321            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.contains(r{op.r2}, r{op.r3});".format(op=opcode)) 
    327322        elif opcode.code == "notcontains": 
    328             make_scriptlet("r%d = com.livinglogic.ul4.Utils.contains(r%d, r%d) ? Boolean.FALSE : Boolean.TRUE;" % (opcode.r1, opcode.r2, opcode.r3)) 
     323            make_scriptlet("r{op.r1} = !com.livinglogic.ul4.Utils.contains(r{op.r2}, r{op.r3});".format(op=opcode)) 
    329324        elif opcode.code == "eq": 
    330             make_scriptlet("r%d = org.apache.commons.lang.ObjectUtils.equals(r%d, r%d) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r3)) 
     325            make_scriptlet("r{op.r1} = org.apache.commons.lang.ObjectUtils.equals(r{op.r2}, r{op.r3});".format(op=opcode)) 
    331326        elif opcode.code == "ne": 
    332             make_scriptlet("r%d = org.apache.commons.lang.ObjectUtils.equals(r%d, r%d) ? Boolean.FALSE : Boolean.TRUE;" % (opcode.r1, opcode.r2, opcode.r3)) 
     327            make_scriptlet("r{op.r1} = !org.apache.commons.lang.ObjectUtils.equals(r{op.r2}, r{op.r3});".format(op=opcode)) 
    333328        elif opcode.code == "lt": 
    334             make_scriptlet("r%d = com.livinglogic.ul4.Utils.lt(r%d, r%d) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r3)) 
     329            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.lt(r{op.r2}, r{op.r3});".format(op=opcode)) 
    335330        elif opcode.code == "le": 
    336             make_scriptlet("r%d = com.livinglogic.ul4.Utils.le(r%d, r%d) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r3)) 
     331            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.le(r{op.r2}, r{op.r3});".format(op=opcode)) 
    337332        elif opcode.code == "gt": 
    338             make_scriptlet("r%d = com.livinglogic.ul4.Utils.le(r%d, r%d) ? Boolean.FALSE : Boolean.TRUE;" % (opcode.r1, opcode.r2, opcode.r3)) 
     333            make_scriptlet("r{op.r1} = !com.livinglogic.ul4.Utils.le(r{op.r2}, r{op.r3});".format(op=opcode)) 
    339334        elif opcode.code == "ge": 
    340             make_scriptlet("r%d = com.livinglogic.ul4.Utils.lt(r%d, r%d) ? Boolean.FALSE : Boolean.TRUE;" % (opcode.r1, opcode.r2, opcode.r3)) 
     335            make_scriptlet("r{op.r1} = !com.livinglogic.ul4.Utils.lt(r{op.r2}, r{op.r3});".format(op=opcode)) 
    341336        elif opcode.code == "add": 
    342             make_scriptlet("r%d = com.livinglogic.ul4.Utils.add(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     337            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.add(r{op.r2}, r{op.r3});".format(op=opcode)) 
    343338        elif opcode.code == "sub": 
    344             make_scriptlet("r%d = com.livinglogic.ul4.Utils.sub(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     339            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.sub(r{op.r2}, r{op.r3});".format(op=opcode)) 
    345340        elif opcode.code == "mul": 
    346             make_scriptlet("r%d = com.livinglogic.ul4.Utils.mul(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     341            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.mul(r{op.r2}, r{op.r3});".format(op=opcode)) 
    347342        elif opcode.code == "floordiv": 
    348             make_scriptlet("r%d = com.livinglogic.ul4.Utils.floordiv(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     343            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.floordiv(r{op.r2}, r{op.r3});".format(op=opcode)) 
    349344        elif opcode.code == "truediv": 
    350             make_scriptlet("r%d = com.livinglogic.ul4.Utils.truediv(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     345            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.truediv(r{op.r2}, r{op.r3});".format(op=opcode)) 
    351346        elif opcode.code == "and": 
    352             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getBool(r%d) ? r%d : r%d;" % (opcode.r1, opcode.r3, opcode.r2, opcode.r3)) 
     347            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getBool(r{op.r3}) ? r{op.r2} : r{op.r3};".format(op=opcode)) 
    353348        elif opcode.code == "or": 
    354             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getBool(r%d) ? r%d : r%d;" % (opcode.r1, opcode.r2, opcode.r2, opcode.r3)) 
     349            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getBool(r{op.r2}) ? r{op.r2} : r{op.r3};".format(op=opcode)) 
    355350        elif opcode.code == "mod": 
    356             make_scriptlet("r%d = com.livinglogic.ul4.Utils.mod(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     351            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.mod(r{op.r2}, r{op.r3});".format(op=opcode)) 
    357352        elif opcode.code == "callfunc0": 
    358353            if opcode.arg == "now": 
    359                 make_scriptlet("r%d = new java.util.Date();" % opcode.r1) 
     354                make_scriptlet("r{op.r1} = new java.util.Date();".format(op=opcode)) 
    360355            elif opcode.arg == "vars": 
    361                 make_scriptlet("r%d = %s;" % (opcode.r1, variables)) 
     356                make_scriptlet("r{op.r1} = {var};".format(op=opcode, var=variables)) 
    362357            else: 
    363358                raise ul4c.UnknownFunctionError(opcode.arg) 
    364359        elif opcode.code == "callfunc1": 
    365360            if opcode.arg == "xmlescape": 
    366                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.xmlescape(r%d);" % (opcode.r1, opcode.r2)) 
     361                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.xmlescape(r{op.r2});".format(op=opcode)) 
    367362            elif opcode.arg == "csv": 
    368                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.csv(r%d);" % (opcode.r1, opcode.r2)) 
     363                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.csv(r{op.r2});".format(op=opcode)) 
    369364            elif opcode.arg == "str": 
    370                 make_scriptlet("r%d = org.apache.commons.lang.ObjectUtils.toString(r%d);" % (opcode.r1, opcode.r2)) 
     365                make_scriptlet("r{op.r1} = org.apache.commons.lang.ObjectUtils.toString(r{op.r2});".format(op=opcode)) 
    371366            elif opcode.arg == "repr": 
    372                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.repr(r%d);" % (opcode.r1, opcode.r2)) 
     367                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.repr(r{op.r2});".format(op=opcode)) 
    373368            elif opcode.arg == "int": 
    374                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.toInteger(r%d);" % (opcode.r1, opcode.r2)) 
     369                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.toInteger(r{op.r2});".format(op=opcode)) 
    375370            elif opcode.arg == "float": 
    376                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.toFloat(r%d);" % (opcode.r1, opcode.r2)) 
     371                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.toFloat(r{op.r2});".format(op=opcode)) 
    377372            elif opcode.arg == "bool": 
    378                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.getBool(r%d) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2)) 
     373                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getBool(r{op.r2});".format(op=opcode)) 
    379374            elif opcode.arg == "len": 
    380                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.length(r%d);" % (opcode.r1, opcode.r2)) 
     375                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.length(r{op.r2});".format(op=opcode)) 
    381376            elif opcode.arg == "enumerate": 
    382                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.enumerate(r%d);" % (opcode.r1, opcode.r2)) 
     377                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.enumerate(r{op.r2});".format(op=opcode)) 
    383378            elif opcode.arg == "isnone": 
    384                 make_scriptlet("r%d = (r%d == null) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2)) 
     379                make_scriptlet("r{op.r1} = (r{op.r2} == null);".format(op=opcode)) 
    385380            elif opcode.arg == "isstr": 
    386                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof String)) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r2)) 
     381                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof String));".format(op=opcode)) 
    387382            elif opcode.arg == "isint": 
    388                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof Integer)) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r2)) 
     383                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof Integer));".format(op=opcode)) 
    389384            elif opcode.arg == "isfloat": 
    390                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof Double)) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r2)) 
     385                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof Double));".format(op=opcode)) 
    391386            elif opcode.arg == "isbool": 
    392                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof Boolean)) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r2)) 
     387                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof Boolean));".format(op=opcode)) 
    393388            elif opcode.arg == "isdate": 
    394                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof java.util.Date)) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r2)) 
     389                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof java.util.Date));".format(op=opcode)) 
    395390            elif opcode.arg == "islist": 
    396                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof java.util.List)) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r2)) 
     391                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof java.util.List));".format(op=opcode)) 
    397392            elif opcode.arg == "isdict": 
    398                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof java.util.Map)) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r2)) 
     393                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof java.util.Map));".format(op=opcode)) 
    399394            elif opcode.arg == "istemplate": 
    400                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof com.livinglogic.ul4.Template)) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r2)) 
     395                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof com.livinglogic.ul4.Template));".format(op=opcode)) 
    401396            elif opcode.arg == "iscolor": 
    402                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof com.livinglogic.ul4.Color)) ? Boolean.TRUE : Boolean.FALSE;" % (opcode.r1, opcode.r2, opcode.r2)) 
     397                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof com.livinglogic.ul4.Color));".format(op=opcode)) 
    403398            elif opcode.arg == "chr": 
    404                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.chr(r%d);" % (opcode.r1, opcode.r2)) 
     399                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.chr(r{op.r2});".format(op=opcode)) 
    405400            elif opcode.arg == "ord": 
    406                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.ord(r%d);" % (opcode.r1, opcode.r2)) 
     401                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.ord(r{op.r2});".format(op=opcode)) 
    407402            elif opcode.arg == "hex": 
    408                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.hex(r%d);" % (opcode.r1, opcode.r2)) 
     403                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.hex(r{op.r2});".format(op=opcode)) 
    409404            elif opcode.arg == "oct": 
    410                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.oct(r%d);" % (opcode.r1, opcode.r2)) 
     405                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.oct(r{op.r2});".format(op=opcode)) 
    411406            elif opcode.arg == "bin": 
    412                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.bin(r%d);" % (opcode.r1, opcode.r2)) 
     407                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.bin(r{op.r2});".format(op=opcode)) 
    413408            elif opcode.arg == "sorted": 
    414                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.sorted(r%d);" % (opcode.r1, opcode.r2)) 
     409                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.sorted(r{op.r2});".format(op=opcode)) 
    415410            elif opcode.arg == "range": 
    416                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.range(r%d);" % (opcode.r1, opcode.r2)) 
     411                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.range(r{op.r2});".format(op=opcode)) 
    417412            elif opcode.arg == "type": 
    418                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.type(r%d);" % (opcode.r1, opcode.r2)) 
     413                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.type(r{op.r2});".format(op=opcode)) 
    419414            elif opcode.arg == "get": 
    420                 make_scriptlet("r%d = %s.get(r%d);" % (opcode.r1, variables, opcode.r2)) 
     415                make_scriptlet("r{op.r1} = {var}.get(r{op.r2});".format(op=opcode, var=variables)) 
    421416            elif opcode.arg == "json": 
    422                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.json(r%d);" % (opcode.r1, opcode.r2)) 
     417                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.json(r{op.r2});".format(op=opcode)) 
    423418            elif opcode.arg == "reversed": 
    424                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.reversed(r%d);" % (opcode.r1, opcode.r2)) 
     419                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.reversed(r{op.r2});".format(op=opcode)) 
    425420            else: 
    426421                raise ul4c.UnknownFunctionError(opcode.arg) 
    427422        elif opcode.code == "callfunc2": 
    428423            if opcode.arg == "range": 
    429                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.range(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     424                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.range(r{op.r2}, r{op.r3});".format(op=opcode)) 
    430425            elif opcode.arg == "get": 
    431                 make_scriptlet("r%d = %s.containsKey(r%d) ? %s.get(r%d) : r%d;" % (opcode.r1, variables, opcode.r2, variables, opcode.r2, opcode.r3)) 
     426                make_scriptlet("r{op.r1} = {var}.containsKey(r{op.r2}) ? {var}.get(r{op.r2}) : r{op.r3};".format(op=opcode.r1, var=variables)) 
    432427            elif opcode.arg == "zip": 
    433                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.zip(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     428                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.zip(r{op.r2}, r{op.r3});".format(op=opcode)) 
    434429            else: 
    435430                raise ul4c.UnknownFunctionError(opcode.arg) 
    436431        elif opcode.code == "callfunc3": 
    437432            if opcode.arg == "range": 
    438                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.range(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     433                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.range(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    439434            elif opcode.arg == "zip": 
    440                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.zip(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     435                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.zip(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    441436            elif opcode.arg == "rgb": 
    442                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rgb(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     437                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rgb(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    443438            elif opcode.arg == "hls": 
    444                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.hls(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     439                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.hls(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    445440            elif opcode.arg == "hsv": 
    446                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.hsv(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     441                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.hsv(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    447442            else: 
    448443                raise ul4c.UnknownFunctionError(opcode.arg) 
    449444        elif opcode.code == "callfunc4": 
    450445            if opcode.arg == "rgb": 
    451                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rgb(r%d, r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
     446                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rgb(r{op.r2}, r{op.r3}, r{op.r4}, r{op.5});".format(op=opcode)) 
    452447            elif opcode.arg == "hls": 
    453                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.hls(r%d, r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
     448                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.hls(r{op.r2}, r{op.r3}, r{op.r4}, r{op.5});".format(op=opcode)) 
    454449            elif opcode.arg == "hsv": 
    455                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.hsv(r%d, r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
     450                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.hsv(r{op.r2}, r{op.r3}, r{op.r4}, r{op.5});".format(op=opcode)) 
    456451            else: 
    457452                raise ul4c.UnknownFunctionError(opcode.arg) 
    458453        elif opcode.code == "callmeth0": 
    459454            if opcode.arg == "split": 
    460                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.split(r%d);" % (opcode.r1, opcode.r2)) 
     455                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.split(r{op.r2});".format(op=opcode)) 
    461456            elif opcode.arg == "strip": 
    462                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.strip(r%d);" % (opcode.r1, opcode.r2)) 
     457                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.strip(r{op.r2});".format(op=opcode)) 
    463458            elif opcode.arg == "lstrip": 
    464                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.lstrip(r%d);" % (opcode.r1, opcode.r2)) 
     459                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.lstrip(r{op.r2});".format(op=opcode)) 
    465460            elif opcode.arg == "rstrip": 
    466                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rstrip(r%d);" % (opcode.r1, opcode.r2)) 
     461                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rstrip(r{op.r2});".format(op=opcode)) 
    467462            elif opcode.arg == "upper": 
    468                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.upper(r%d);" % (opcode.r1, opcode.r2)) 
     463                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.upper(r{op.r2});".format(op=opcode)) 
    469464            elif opcode.arg == "lower": 
    470                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.lower(r%d);" % (opcode.r1, opcode.r2)) 
     465                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.lower(r{op.r2});".format(op=opcode)) 
    471466            elif opcode.arg == "capitalize": 
    472                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.capitalize(r%d);" % (opcode.r1, opcode.r2)) 
     467                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.capitalize(r{op.r2});".format(op=opcode)) 
    473468            elif opcode.arg == "items": 
    474                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.items(r%d);" % (opcode.r1, opcode.r2)) 
     469                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.items(r{op.r2});".format(op=opcode)) 
    475470            elif opcode.arg == "isoformat": 
    476                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.isoformat(r%d);" % (opcode.r1, opcode.r2)) 
     471                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.isoformat(r{op.r2});".format(op=opcode)) 
    477472            elif opcode.arg == "r": 
    478                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).r();" % (opcode.r1, opcode.r2)) 
     473                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).r();".format(op=opcode)) 
    479474            elif opcode.arg == "g": 
    480                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).g();" % (opcode.r1, opcode.r2)) 
     475                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).g();".format(op=opcode)) 
    481476            elif opcode.arg == "b": 
    482                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).b();" % (opcode.r1, opcode.r2)) 
     477                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).b();".format(op=opcode)) 
    483478            elif opcode.arg == "a": 
    484                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).a();" % (opcode.r1, opcode.r2)) 
     479                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).a();".format(op=opcode)) 
    485480            elif opcode.arg == "hls": 
    486                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).hls();" % (opcode.r1, opcode.r2)) 
     481                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).hls();".format(op=opcode)) 
    487482            elif opcode.arg == "hlsa": 
    488                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).hlsa();" % (opcode.r1, opcode.r2)) 
     483                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).hlsa();".format(op=opcode)) 
    489484            elif opcode.arg == "hsv": 
    490                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).hsv();" % (opcode.r1, opcode.r2)) 
     485                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).hsv();".format(op=opcode)) 
    491486            elif opcode.arg == "hsva": 
    492                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).hsva();" % (opcode.r1, opcode.r2)) 
     487                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).hsva();".format(op=opcode)) 
    493488            elif opcode.arg == "lum": 
    494                 make_scriptlet("r%d = new Double(((com.livinglogic.ul4.Color)r%d).lum());" % (opcode.r1, opcode.r2)) 
     489                make_scriptlet("r{op.r1} = new Double(((com.livinglogic.ul4.Color)r{op.r2}).lum());".format(op=opcode)) 
    495490            else: 
    496491                raise ul4c.UnknownMethodError(opcode.arg) 
    497492        elif opcode.code == "callmeth1": 
    498493            if opcode.arg == "split": 
    499                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.split(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     494                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.split(r{op.r2}, r{op.r3});".format(op=opcode)) 
    500495            elif opcode.arg == "rsplit": 
    501                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rsplit(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     496                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rsplit(r{op.r2}, r{op.r3});".format(op=opcode)) 
    502497            elif opcode.arg == "strip": 
    503                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.strip(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     498                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.strip(r{op.r2}, r{op.r3});".format(op=opcode)) 
    504499            elif opcode.arg == "lstrip": 
    505                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.lstrip(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     500                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.lstrip(r{op.r2}, r{op.r3});".format(op=opcode)) 
    506501            elif opcode.arg == "rstrip": 
    507                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rstrip(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     502                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rstrip(r{op.r2}, r{op.r3});".format(op=opcode)) 
    508503            elif opcode.arg == "startswith": 
    509                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.startswith(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     504                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.startswith(r{op.r2}, r{op.r3});".format(op=opcode)) 
    510505            elif opcode.arg == "endswith": 
    511                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.endswith(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     506                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.endswith(r{op.r2}, r{op.r3});".format(op=opcode)) 
    512507            elif opcode.arg == "find": 
    513                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.find(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     508                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.find(r{op.r2}, r{op.r3});".format(op=opcode)) 
    514509            elif opcode.arg == "rfind": 
    515                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rfind(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     510                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rfind(r{op.r2}, r{op.r3});".format(op=opcode)) 
    516511            elif opcode.arg == "format": 
    517                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.format(r%d, r%d, defaultLocale);" % (opcode.r1, opcode.r2, opcode.r3)) 
     512                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.format(r{op.r2}, r{op.r3}, defaultLocale);".format(op=opcode)) 
    518513            elif opcode.arg == "get": 
    519                 make_scriptlet("r%d = ((java.util.Map)r%d).get(r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     514                make_scriptlet("r{op.r1} = ((java.util.Map)r{op.r2}).get(r{op.r3});".format(op=opcode))