Changeset 679:d91e7970b3ea in livinglogic.python.www for site

Show
Ignore:
Timestamp:
03/17/12 15:34:52 (7 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Convert to Python 3 and add ll.ul4on documentation.

Location:
site
Files:
2 modified
1 copied

Legend:

Unmodified
Added
Removed
  • site/Python_xmlns.py

    r677 r679  
    1 # -*- coding: iso-8859-1 -*- 
    2  
    3  
    4 from __future__ import with_statement 
     1# -*- coding: utf-8 -*- 
     2 
    53 
    64import sys, types, inspect 
     
    103101 
    104102    def __getitem__(self, index): 
    105         if isinstance(index, (int, long)): 
     103        if isinstance(index, int): 
    106104            return self.getChildByIndex(index) 
    107         elif isinstance(index, basestring): 
     105        elif isinstance(index, str): 
    108106            if index=="": 
    109107                index = [] 
     
    113111            result = self 
    114112            for i in index: 
    115                 if isinstance(i, (int, long)): 
     113                if isinstance(i, int): 
    116114                    result = result.getChildByIndex(i) 
    117                 elif isinstance(i, basestring): 
     115                elif isinstance(i, str): 
    118116                    result = result.getChildByName(i) 
    119117                else: 
     
    168166        self.hint = None 
    169167        self.description = None 
    170         for (k, v) in attrs.items(): 
     168        for (k, v) in list(attrs.items()): 
    171169            if k=="crumb": 
    172170                self.crumb = v 
     
    186184                self.hint = v 
    187185            elif k=="description": 
    188                 self.description = u" ".join(v.strip().split()) 
     186                self.description = " ".join(v.strip().split()) 
    189187            else: 
    190188                raise ValueError("unknown keyword %s" % k) 
     
    239237 
    240238 
    241 pages = XISTPage(u"python", 
    242     PythonSourcePage(u"xist", 
    243         XISTPage(u"examples", 
    244             crumb=u"Examples", 
    245             title=(abbr.xist(), u" examples · Python software · LivingLogic AG"), 
    246             header=(abbr.xist(), u" examples"), 
    247             subheader=(u"An introduction to ", abbr.xist(), u" by examples"), 
    248             url=u"root:xist/Examples.html", 
     239pages = XISTPage("python", 
     240    PythonSourcePage("xist", 
     241        XISTPage("examples", 
     242            crumb="Examples", 
     243            title=(abbr.xist(), " examples · Python software · LivingLogic AG"), 
     244            header=(abbr.xist(), " examples"), 
     245            subheader=("An introduction to ", abbr.xist(), " by examples"), 
     246            url="root:xist/Examples.html", 
    249247            localkeywords=[], 
    250             hint=u"Parsing/creating/modifying XML; Traversing XML trees" 
    251         ), 
    252         XISTPage(u"howto", 
    253             crumb=u"Howto", 
    254             title=(abbr.xist(), u" howto · Python software · LivingLogic AG"), 
    255             header=(abbr.xist(), u" howto"), 
    256             subheader=(u"A quick tour of ", abbr.xist()), 
    257             url=u"root:xist/Howto.html", 
     248            hint="Parsing/creating/modifying XML; Traversing XML trees" 
     249        ), 
     250        XISTPage("howto", 
     251            crumb="Howto", 
     252            title=(abbr.xist(), " howto · Python software · LivingLogic AG"), 
     253            header=(abbr.xist(), " howto"), 
     254            subheader=("A quick tour of ", abbr.xist()), 
     255            url="root:xist/Howto.html", 
    258256            localkeywords=[], 
    259             hint=(u"Explains parsing/generating XML files, XML transformations via ", abbr.xist(), " classes and other basic concepts.") 
    260         ), 
    261         XISTPage(u"searching", 
    262             crumb=u"Searching", 
    263             title=(u"Searching ", abbr.xist(), u" trees · Python software · LivingLogic AG"), 
    264             header=("Searching ", abbr.xist(), u" trees"), 
     257            hint=("Explains parsing/generating XML files, XML transformations via ", abbr.xist(), " classes and other basic concepts.") 
     258        ), 
     259        XISTPage("searching", 
     260            crumb="Searching", 
     261            title=("Searching ", abbr.xist(), " trees · Python software · LivingLogic AG"), 
     262            header=("Searching ", abbr.xist(), " trees"), 
    265263            subheader=("Searching, tree traversal, xfind and ", abbr.css(), " selectors"), 
    266             url=u"root:xist/Searching.html", 
     264            url="root:xist/Searching.html", 
    267265            localkeywords=["searching", "traversal", "xfind", "css"], 
    268             hint=(u"How to iterate through ", abbr.xist(), " trees"), 
    269         ), 
    270         XISTPage(u"transformation", 
    271             crumb=u"Transformation", 
    272             title=("Transforming ", abbr.xist(), u" trees · Python software · LivingLogic AG"), 
    273             header=("Transforming ", abbr.xist(), u" trees"), 
     266            hint=("How to iterate through ", abbr.xist(), " trees"), 
     267        ), 
     268        XISTPage("transformation", 
     269            crumb="Transformation", 
     270            title=("Transforming ", abbr.xist(), " trees · Python software · LivingLogic AG"), 
     271            header=("Transforming ", abbr.xist(), " trees"), 
    274272            subheader=("The ", doc.func("mapped"), " function, sorting, etc."), 
    275             url=u"root:xist/Transformation.html", 
     273            url="root:xist/Transformation.html", 
    276274            localkeywords=[], 
    277             hint=(u"How to transform ", abbr.xist(), " trees"), 
    278         ), 
    279         XISTPage(u"advanced", 
    280             crumb=u"Advanced topics", 
    281             title=("Advanced ", abbr.xist(), u" · Python software · LivingLogic AG"), 
     275            hint=("How to transform ", abbr.xist(), " trees"), 
     276        ), 
     277        XISTPage("advanced", 
     278            crumb="Advanced topics", 
     279            title=("Advanced ", abbr.xist(), " · Python software · LivingLogic AG"), 
    282280            header=("Advanced ", abbr.xist()), 
    283281            subheader="Converter contexts, pool chaining, namespace extensions, conversion targets, validation", 
    284             url=u"root:xist/Advanced.html", 
     282            url="root:xist/Advanced.html", 
    285283            localkeywords=[], 
    286             hint=u"Pool chaining, converter contexts, validation" 
    287         ), 
    288         XISTPage(u"misc", 
    289             crumb=u"Miscellaneous", 
    290             title=(abbr.xist(), u" miscellaneous · Python software · LivingLogic AG"), 
    291             header=(abbr.xist(), u" miscellaneous"), 
    292             subheader=(abbr.url(), u"s, pretty printing, image sizes, embedding Python code"), 
    293             url=u"root:xist/Misc.html", 
     284            hint="Pool chaining, converter contexts, validation" 
     285        ), 
     286        XISTPage("misc", 
     287            crumb="Miscellaneous", 
     288            title=(abbr.xist(), " miscellaneous · Python software · LivingLogic AG"), 
     289            header=(abbr.xist(), " miscellaneous"), 
     290            subheader=(abbr.url(), "s, pretty printing, image sizes, embedding Python code"), 
     291            url="root:xist/Misc.html", 
    294292            localkeywords=[], 
    295             hint=(u"Explains various odds and ends of ", abbr.xist()), 
    296         ), 
    297         PythonSourcePage(u"xsc", 
    298             crumb=u"xsc", 
    299             title=(abbr.xist(), u".xsc · Python software · LivingLogic AG"), 
    300             header=(abbr.xist(), u".xsc"), 
    301             subheader=(abbr.xist(), u" core classes"), 
    302             url=u"root:xist/xsc/index.html", 
    303             hint=(abbr.xist(), u" core classes"), 
    304         ), 
    305         PythonSourcePage(u"ns", 
    306             PythonSourcePage(u"html", 
    307                 crumb=u"html", 
    308                 title=(abbr.xist(), u".ns.html · Python software · LivingLogic AG"), 
    309                 header=(abbr.xist(), u".ns.html"), 
    310                 subheader=(u"Module implementing ", abbr.html(), u" 4.01 (with additions)"), 
    311                 url=u"root:xist/ns/html/index.html", 
    312                 hint=u"HTML namespace", 
    313             ), 
    314             PythonSourcePage(u"xml", 
    315                 crumb=u"xml", 
    316                 title=(abbr.xist(), u".ns.xml · Python software · LivingLogic AG"), 
    317                 header=(abbr.xist(), u".ns.xml"), 
    318                 subheader=(u"Module for global attributes from the ", abbr.xml(), u" namespace"), 
    319                 url=u"root:xist/ns/xml/index.html", 
    320                 hint=u"Namespace implementing global XML attributes", 
    321             ), 
    322             PythonSourcePage(u"wml", 
    323                 crumb=u"wml", 
    324                 title=(abbr.xist(), u".ns.wml · Python software · LivingLogic AG"), 
    325                 header=(abbr.xist(), u".ns.wml"), 
    326                 subheader=(u"Module implementing ", abbr.wml(), u" 1.3"), 
    327                 url=u"root:xist/ns/wml/index.html", 
    328                 hint=u"WML 1.3 namespace", 
    329             ), 
    330             PythonSourcePage(u"ihtml", 
    331                 crumb=u"ihtml", 
    332                 title=(abbr.xist(), u".ns.ihtml · Python software · LivingLogic AG"), 
    333                 header=(abbr.xist(), u".ns.ihtml"), 
    334                 subheader=(u"Module module implementing i-mode compatible ", abbr.html()), 
    335                 url=u"root:xist/ns/ihtml/index.html", 
    336                 hint=u"Namespace implementing i-mode compatible HTML", 
    337             ), 
    338             PythonSourcePage(u"docbook", 
    339                 crumb=u"docbook", 
    340                 title=(abbr.xist(), u".ns.docbook · Python software · LivingLogic AG"), 
    341                 header=(abbr.xist(), u".ns.docbook"), 
    342                 subheader=u"Namespace module implementing DocBook 4.3", 
    343                 url=u"root:xist/ns/docbook/index.html", 
    344                 hint=u"Namespace implementing DocBook 4.3", 
    345             ), 
    346             PythonSourcePage(u"svg", 
    347                 crumb=u"svg", 
    348                 title=(abbr.xist(), u".ns.svg · Python software · LivingLogic AG"), 
    349                 header=(abbr.xist(), u".ns.svg"), 
    350                 subheader=(u"Namespace module implementing ", abbr.svg(), u" 1.0"), 
    351                 url=u"root:xist/ns/svg/index.html", 
    352                 hint=u"Namespace implementing SVG 1.0", 
    353             ), 
    354             PythonSourcePage(u"abbr", 
    355                 crumb=u"abbr", 
    356                 title=(abbr.xist(), u".ns.abbr · Python software · LivingLogic AG"), 
    357                 header=(abbr.xist(), u".ns.abbr"), 
    358                 subheader=u"Namespace module containing many abbreviation entities", 
    359                 url=u"root:xist/ns/abbr/index.html", 
    360                 hint=u"Namespace containing abbreviation entities", 
    361             ), 
    362             PythonSourcePage(u"code", 
    363                 crumb=u"code", 
    364                 title=(abbr.xist(), u".ns.code · Python software · LivingLogic AG"), 
    365                 header=(abbr.xist(), u".ns.code"), 
    366                 subheader=(u"Namespace module for embedding Python code in ", abbr.xml()), 
    367                 url=u"root:xist/ns/code/index.html", 
    368                 hint=u"Namespace for embedding Python code in XML", 
    369             ), 
    370             PythonSourcePage(u"form", 
    371                 crumb=u"form", 
    372                 title=(abbr.xist(), u".ns.form · Python software · LivingLogic AG"), 
    373                 header=(abbr.xist(), u".ns.form"), 
    374                 subheader=u"Namespace module implementing form related elements", 
    375                 url=u"root:xist/ns/form/index.html", 
    376                 hint=u"Namespace implementing form related elements", 
    377             ), 
    378             PythonSourcePage(u"php", 
    379                 crumb=u"php", 
    380                 title=(abbr.xist(), u".ns.php · Python software · LivingLogic AG"), 
    381                 header=(abbr.xist(), u".ns.php"), 
    382                 subheader=(u"Namespace module for PHP processing instructions"), 
    383                 url=u"root:xist/ns/php/index.html", 
    384                 hint=u"Namespace for PHP processing instructions", 
    385             ), 
    386             PythonSourcePage(u"jsp", 
    387                 crumb=u"jsp", 
    388                 title=(abbr.xist(), u".ns.jsp · Python software · LivingLogic AG"), 
    389                 header=(abbr.xist(), u".ns.jsp"), 
    390                 subheader=(u"Namespace module for embedding ", abbr.jsp(), u" code as processing instructions"), 
    391                 url=u"root:xist/ns/jsp/index.html", 
    392                 hint=u"Namespace for JSP code as processing instructions", 
    393             ), 
    394             PythonSourcePage(u"meta", 
    395                 crumb=u"meta", 
    396                 title=(abbr.xist(), u".ns.meta · Python software · LivingLogic AG"), 
    397                 header=(abbr.xist(), u".ns.meta"), 
    398                 subheader=u"Namespace module containing meta information elements", 
    399                 url=u"root:xist/ns/meta/index.html", 
    400                 hint=u"Namespace containing meta information elements", 
    401             ), 
    402             PythonSourcePage(u"ruby", 
    403                 crumb=u"ruby", 
    404                 title=(abbr.xist(), u".ns.ruby · Python software · LivingLogic AG"), 
    405                 header=(abbr.xist(), u".ns.ruby"), 
    406                 subheader=u"Namespace implementing the W3C ruby draft", 
    407                 url=u"root:xist/ns/ruby/index.html", 
    408                 hint=u"Namespace implementing the W3C ruby draft", 
    409             ), 
    410             PythonSourcePage(u"specials", 
    411                 crumb=u"specials", 
    412                 title=(abbr.xist(), u".ns.specials · Python software · LivingLogic AG"), 
    413                 header=(abbr.xist(), u".ns.specials"), 
    414                 subheader=u"Common useful elements", 
    415                 url=u"root:xist/ns/specials/index.html", 
    416                 hint=u"Common useful elements", 
    417             ), 
    418             PythonSourcePage(u"htmlspecials", 
    419                 crumb=u"htmlspecials", 
    420                 title=(abbr.xist(), u".ns.htmlspecials · Python software · LivingLogic AG"), 
    421                 header=(abbr.xist(), u".ns.htmlspecials"), 
    422                 subheader=(u"Common useful elements for ", abbr.html(), u" generation"), 
    423                 url=u"root:xist/ns/htmlspecials/index.html", 
    424                 hint=u"Common useful elements for HTML generation", 
    425             ), 
    426             PythonSourcePage(u"doc", 
    427                 crumb=u"doc", 
    428                 title=(abbr.xist(), u".ns.doc · Python software · LivingLogic AG"), 
    429                 header=(abbr.xist(), u".ns.doc"), 
    430                 subheader=u"Namespace module for automated documentation generation", 
    431                 url=u"root:xist/ns/doc/index.html", 
    432                 hint=u"Namespace for automated documentation generation", 
    433             ), 
    434             PythonSourcePage(u"kid", 
    435                 crumb=u"kid", 
    436                 title=(abbr.xist(), u".ns.kid · Python software · LivingLogic AG"), 
    437                 header=(abbr.xist(), u".ns.kid"), 
    438                 subheader=u"Namespace module for Kid templates", 
    439                 url=u"root:xist/ns/kid/index.html", 
    440                 hint=u"Namespace for Kid templates", 
    441             ), 
    442             PythonSourcePage(u"detox", 
    443                 crumb=u"detox", 
    444                 title=(abbr.xist(), u".ns.detox · Python software · LivingLogic AG"), 
    445                 header=(abbr.xist(), u".ns.detox"), 
    446                 subheader=(abbr.xist(), u" based Python templating language"), 
    447                 url=u"root:xist/ns/detox/index.html", 
    448                 hint=u"Namespace for detox templates", 
    449             ), 
    450             PythonSourcePage(u"toxic", 
    451                 crumb=u"toxic", 
    452                 title=(abbr.xist(), u".ns.toxic · Python software · LivingLogic AG"), 
    453                 header=(abbr.xist(), u".ns.toxic"), 
    454                 subheader=(u"Generate Oracle functions from PL/SQL embedded in ", abbr.xml()), 
    455                 url=u"root:xist/ns/toxic/index.html", 
    456                 localkeywords=[u"Oracle", u"user defined function", u"PL/SQL", u"XML", u"HTML", u"processing instruction", u"PI", u"embed"], 
    457                 hint=u"Embed PL/SQL in XIST XML", 
    458                 description=u""" 
     293            hint=("Explains various odds and ends of ", abbr.xist()), 
     294        ), 
     295        PythonSourcePage("xsc", 
     296            crumb="xsc", 
     297            title=(abbr.xist(), ".xsc · Python software · LivingLogic AG"), 
     298            header=(abbr.xist(), ".xsc"), 
     299            subheader=(abbr.xist(), " core classes"), 
     300            url="root:xist/xsc/index.html", 
     301            hint=(abbr.xist(), " core classes"), 
     302        ), 
     303        PythonSourcePage("ns", 
     304            PythonSourcePage("html", 
     305                crumb="html", 
     306                title=(abbr.xist(), ".ns.html · Python software · LivingLogic AG"), 
     307                header=(abbr.xist(), ".ns.html"), 
     308                subheader=("Module implementing ", abbr.html(), " 4.01 (with additions)"), 
     309                url="root:xist/ns/html/index.html", 
     310                hint="HTML namespace", 
     311            ), 
     312            PythonSourcePage("xml", 
     313                crumb="xml", 
     314                title=(abbr.xist(), ".ns.xml · Python software · LivingLogic AG"), 
     315                header=(abbr.xist(), ".ns.xml"), 
     316                subheader=("Module for global attributes from the ", abbr.xml(), " namespace"), 
     317                url="root:xist/ns/xml/index.html", 
     318                hint="Namespace implementing global XML attributes", 
     319            ), 
     320            PythonSourcePage("wml", 
     321                crumb="wml", 
     322                title=(abbr.xist(), ".ns.wml · Python software · LivingLogic AG"), 
     323                header=(abbr.xist(), ".ns.wml"), 
     324                subheader=("Module implementing ", abbr.wml(), " 1.3"), 
     325                url="root:xist/ns/wml/index.html", 
     326                hint="WML 1.3 namespace", 
     327            ), 
     328            PythonSourcePage("ihtml", 
     329                crumb="ihtml", 
     330                title=(abbr.xist(), ".ns.ihtml · Python software · LivingLogic AG"), 
     331                header=(abbr.xist(), ".ns.ihtml"), 
     332                subheader=("Module module implementing i-mode compatible ", abbr.html()), 
     333                url="root:xist/ns/ihtml/index.html", 
     334                hint="Namespace implementing i-mode compatible HTML", 
     335            ), 
     336            PythonSourcePage("docbook", 
     337                crumb="docbook", 
     338                title=(abbr.xist(), ".ns.docbook · Python software · LivingLogic AG"), 
     339                header=(abbr.xist(), ".ns.docbook"), 
     340                subheader="Namespace module implementing DocBook 4.3", 
     341                url="root:xist/ns/docbook/index.html", 
     342                hint="Namespace implementing DocBook 4.3", 
     343            ), 
     344            PythonSourcePage("svg", 
     345                crumb="svg", 
     346                title=(abbr.xist(), ".ns.svg · Python software · LivingLogic AG"), 
     347                header=(abbr.xist(), ".ns.svg"), 
     348                subheader=("Namespace module implementing ", abbr.svg(), " 1.0"), 
     349                url="root:xist/ns/svg/index.html", 
     350                hint="Namespace implementing SVG 1.0", 
     351            ), 
     352            PythonSourcePage("abbr", 
     353                crumb="abbr", 
     354                title=(abbr.xist(), ".ns.abbr · Python software · LivingLogic AG"), 
     355                header=(abbr.xist(), ".ns.abbr"), 
     356                subheader="Namespace module containing many abbreviation entities", 
     357                url="root:xist/ns/abbr/index.html", 
     358                hint="Namespace containing abbreviation entities", 
     359            ), 
     360            PythonSourcePage("code", 
     361                crumb="code", 
     362                title=(abbr.xist(), ".ns.code · Python software · LivingLogic AG"), 
     363                header=(abbr.xist(), ".ns.code"), 
     364                subheader=("Namespace module for embedding Python code in ", abbr.xml()), 
     365                url="root:xist/ns/code/index.html", 
     366                hint="Namespace for embedding Python code in XML", 
     367            ), 
     368            PythonSourcePage("form", 
     369                crumb="form", 
     370                title=(abbr.xist(), ".ns.form · Python software · LivingLogic AG"), 
     371                header=(abbr.xist(), ".ns.form"), 
     372                subheader="Namespace module implementing form related elements", 
     373                url="root:xist/ns/form/index.html", 
     374                hint="Namespace implementing form related elements", 
     375            ), 
     376            PythonSourcePage("php", 
     377                crumb="php", 
     378                title=(abbr.xist(), ".ns.php · Python software · LivingLogic AG"), 
     379                header=(abbr.xist(), ".ns.php"), 
     380                subheader=("Namespace module for PHP processing instructions"), 
     381                url="root:xist/ns/php/index.html", 
     382                hint="Namespace for PHP processing instructions", 
     383            ), 
     384            PythonSourcePage("jsp", 
     385                crumb="jsp", 
     386                title=(abbr.xist(), ".ns.jsp · Python software · LivingLogic AG"), 
     387                header=(abbr.xist(), ".ns.jsp"), 
     388                subheader=("Namespace module for embedding ", abbr.jsp(), " code as processing instructions"), 
     389                url="root:xist/ns/jsp/index.html", 
     390                hint="Namespace for JSP code as processing instructions", 
     391            ), 
     392            PythonSourcePage("meta", 
     393                crumb="meta", 
     394                title=(abbr.xist(), ".ns.meta · Python software · LivingLogic AG"), 
     395                header=(abbr.xist(), ".ns.meta"), 
     396                subheader="Namespace module containing meta information elements", 
     397                url="root:xist/ns/meta/index.html", 
     398                hint="Namespace containing meta information elements", 
     399            ), 
     400            PythonSourcePage("ruby", 
     401                crumb="ruby", 
     402                title=(abbr.xist(), ".ns.ruby · Python software · LivingLogic AG"), 
     403                header=(abbr.xist(), ".ns.ruby"), 
     404                subheader="Namespace implementing the W3C ruby draft", 
     405                url="root:xist/ns/ruby/index.html", 
     406                hint="Namespace implementing the W3C ruby draft", 
     407            ), 
     408            PythonSourcePage("specials", 
     409                crumb="specials", 
     410                title=(abbr.xist(), ".ns.specials · Python software · LivingLogic AG"), 
     411                header=(abbr.xist(), ".ns.specials"), 
     412                subheader="Common useful elements", 
     413                url="root:xist/ns/specials/index.html", 
     414                hint="Common useful elements", 
     415            ), 
     416            PythonSourcePage("htmlspecials", 
     417                crumb="htmlspecials", 
     418                title=(abbr.xist(), ".ns.htmlspecials · Python software · LivingLogic AG"), 
     419                header=(abbr.xist(), ".ns.htmlspecials"), 
     420                subheader=("Common useful elements for ", abbr.html(), " generation"), 
     421                url="root:xist/ns/htmlspecials/index.html", 
     422                hint="Common useful elements for HTML generation", 
     423            ), 
     424            PythonSourcePage("doc", 
     425                crumb="doc", 
     426                title=(abbr.xist(), ".ns.doc · Python software · LivingLogic AG"), 
     427                header=(abbr.xist(), ".ns.doc"), 
     428                subheader="Namespace module for automated documentation generation", 
     429                url="root:xist/ns/doc/index.html", 
     430                hint="Namespace for automated documentation generation", 
     431            ), 
     432            PythonSourcePage("kid", 
     433                crumb="kid", 
     434                title=(abbr.xist(), ".ns.kid · Python software · LivingLogic AG"), 
     435                header=(abbr.xist(), ".ns.kid"), 
     436                subheader="Namespace module for Kid templates", 
     437                url="root:xist/ns/kid/index.html", 
     438                hint="Namespace for Kid templates", 
     439            ), 
     440            PythonSourcePage("detox", 
     441                crumb="detox", 
     442                title=(abbr.xist(), ".ns.detox · Python software · LivingLogic AG"), 
     443                header=(abbr.xist(), ".ns.detox"), 
     444                subheader=(abbr.xist(), " based Python templating language"), 
     445                url="root:xist/ns/detox/index.html", 
     446                hint="Namespace for detox templates", 
     447            ), 
     448            PythonSourcePage("toxic", 
     449                crumb="toxic", 
     450                title=(abbr.xist(), ".ns.toxic · Python software · LivingLogic AG"), 
     451                header=(abbr.xist(), ".ns.toxic"), 
     452                subheader=("Generate Oracle functions from PL/SQL embedded in ", abbr.xml()), 
     453                url="root:xist/ns/toxic/index.html", 
     454                localkeywords=["Oracle", "user defined function", "PL/SQL", "XML", "HTML", "processing instruction", "PI", "embed"], 
     455                hint="Embed PL/SQL in XIST XML", 
     456                description=""" 
    459457                toxic is an XIST namespace that can be used for generating Oracle 
    460458                database functions that return XML strings. This is done by 
     
    463461                """, 
    464462            ), 
    465             PythonSourcePage(u"rng", 
    466                 crumb=u"rng", 
    467                 title=(abbr.xist(), u".ns.rng · Python software · LivingLogic AG"), 
    468                 header=(abbr.xist(), u".ns.rng"), 
    469                 subheader=u"Namespace module for Relax NG", 
    470                 url=u"root:xist/ns/rng/index.html", 
    471                 hint=u"Namespace for Relax NG", 
    472             ), 
    473             PythonSourcePage(u"rss091", 
    474                 crumb=u"rss091", 
    475                 title=(abbr.xist(), u".ns.rss091 · Python software · LivingLogic AG"), 
    476                 header=(abbr.xist(), u".ns.rss091"), 
    477                 subheader=u"Namespace module for RSS 0.91", 
    478                 url=u"root:xist/ns/rss091/index.html", 
    479                 hint=u"Namespace for RSS 0.91", 
    480             ), 
    481             PythonSourcePage(u"rss20", 
    482                 crumb=u"rss20", 
    483                 title=(abbr.xist(), u".ns.rss20 · Python software · LivingLogic AG"), 
    484                 header=(abbr.xist(), u".ns.rss20"), 
    485                 subheader=u"Namespace module for RSS 2.0", 
    486                 url=u"root:xist/ns/rss20/index.html", 
    487                 hint=u"Namespace for RSS 2.0", 
    488             ), 
    489             PythonSourcePage(u"atom", 
    490                 crumb=u"atom", 
    491                 title=(abbr.xist(), u".ns.atom · Python software · LivingLogic AG"), 
    492                 header=(abbr.xist(), u".ns.atom"), 
    493                 subheader=u"Namespace module for Atom 1.0", 
    494                 url=u"root:xist/ns/atom/index.html", 
    495                 hint=u"Namespace for Atom 1.0", 
    496             ), 
    497             PythonSourcePage(u"struts_html", 
    498                 crumb=u"struts_html", 
    499                 title=(abbr.xist(), u"ns.struts_html · Python software · LivingLogic AG"), 
    500                 header=(abbr.xist(), u".ns.struts_html"), 
    501                 subheader=(u"Mamespace module implementing the the Struts ", abbr.html(), u" tags"), 
    502                 url=u"root:xist/ns/struts_html/index.html", 
    503                 hint=u"Namespace for Jakarta Struts HTML tags", 
    504             ), 
    505             PythonSourcePage(u"struts_config", 
    506                 crumb=u"struts_config", 
    507                 title=(abbr.xist(), u".ns.struts_config · Python software · LivingLogic AG"), 
    508                 header=(abbr.xist(), u".ns.struts_config"), 
    509                 subheader=u"Namespace module for Struts configuration files", 
    510                 url=u"root:xist/ns/struts_config/index.html", 
    511                 hint=u"Namespace for Jakarta Struts configuration file tags", 
    512             ), 
    513             crumb=u"ns", 
    514             title=(abbr.xist(), u".ns"), 
    515             header=(abbr.xist(), u".ns"), 
    516             subheader=u"Subpackage containing namespace modules", 
    517             url=u"root:xist/ns/index.html", 
    518             hint=u"Package containing namespace modules", 
    519         ), 
    520         PythonSourcePage(u"parse", 
    521             crumb=u"parse", 
    522             title=(abbr.xist(), u".parse · Python software · LivingLogic AG"), 
    523             header=(abbr.xist(), u".parse"), 
    524             subheader=(u"Tools for parsing ", abbr.xml(), " from various sources"), 
    525             url=u"root:xist/parse/index.html", 
    526             hint=u"Parsing XML", 
    527         ), 
    528         PythonSourcePage(u"present", 
    529             crumb=u"present", 
    530             title=(abbr.xist(), u".present · Python software · LivingLogic AG"), 
    531             header=(abbr.xist(), u".present"), 
    532             subheader=u"Module with classes for printing trees", 
    533             url=u"root:xist/present/index.html", 
    534             hint=u"Screen output of XML trees", 
    535         ), 
    536         PythonSourcePage(u"sims", 
    537             crumb=u"sims", 
    538             title=(abbr.xist(), u".sims · Python software · LivingLogic AG"), 
    539             header=(abbr.xist(), u".sims"), 
    540             subheader=u"Simple schema validation", 
    541             url=u"root:xist/sims/index.html", 
    542             hint=u"Simple schema validation", 
    543         ), 
    544         PythonSourcePage(u"xfind", 
    545             crumb=u"xfind", 
    546             title=(abbr.xist(), u".xfind · Python software · LivingLogic AG"), 
    547             header=(abbr.xist(), u".xfind"), 
    548             subheader=u"Tree iteration and filtering", 
    549             url=u"root:xist/xfind/index.html", 
    550             hint=u"Tree iteration and filtering", 
    551         ), 
    552         PythonSourcePage(u"css", 
    553             crumb=u"css", 
    554             title=(abbr.xist(), u".css · Python software · LivingLogic AG"), 
    555             header=(abbr.xist(), u".css"), 
     463            PythonSourcePage("rng", 
     464                crumb="rng", 
     465                title=(abbr.xist(), ".ns.rng · Python software · LivingLogic AG"), 
     466                header=(abbr.xist(), ".ns.rng"), 
     467                subheader="Namespace module for Relax NG", 
     468                url="root:xist/ns/rng/index.html", 
     469                hint="Namespace for Relax NG", 
     470            ), 
     471            PythonSourcePage("rss091", 
     472                crumb="rss091", 
     473                title=(abbr.xist(), ".ns.rss091 · Python software · LivingLogic AG"), 
     474                header=(abbr.xist(), ".ns.rss091"), 
     475                subheader="Namespace module for RSS 0.91", 
     476                url="root:xist/ns/rss091/index.html", 
     477                hint="Namespace for RSS 0.91", 
     478            ), 
     479            PythonSourcePage("rss20", 
     480                crumb="rss20", 
     481                title=(abbr.xist(), ".ns.rss20 · Python software · LivingLogic AG"), 
     482                header=(abbr.xist(), ".ns.rss20"), 
     483                subheader="Namespace module for RSS 2.0", 
     484                url="root:xist/ns/rss20/index.html", 
     485                hint="Namespace for RSS 2.0", 
     486            ), 
     487            PythonSourcePage("atom", 
     488                crumb="atom", 
     489                title=(abbr.xist(), ".ns.atom · Python software · LivingLogic AG"), 
     490                header=(abbr.xist(), ".ns.atom"), 
     491                subheader="Namespace module for Atom 1.0", 
     492                url="root:xist/ns/atom/index.html", 
     493                hint="Namespace for Atom 1.0", 
     494            ), 
     495            PythonSourcePage("struts_html", 
     496                crumb="struts_html", 
     497                title=(abbr.xist(), "ns.struts_html · Python software · LivingLogic AG"), 
     498                header=(abbr.xist(), ".ns.struts_html"), 
     499                subheader=("Mamespace module implementing the the Struts ", abbr.html(), " tags"), 
     500                url="root:xist/ns/struts_html/index.html", 
     501                hint="Namespace for Jakarta Struts HTML tags", 
     502            ), 
     503            PythonSourcePage("struts_config", 
     504                crumb="struts_config", 
     505                title=(abbr.xist(), ".ns.struts_config · Python software · LivingLogic AG"), 
     506                header=(abbr.xist(), ".ns.struts_config"), 
     507                subheader="Namespace module for Struts configuration files", 
     508                url="root:xist/ns/struts_config/index.html", 
     509                hint="Namespace for Jakarta Struts configuration file tags", 
     510            ), 
     511            crumb="ns", 
     512            title=(abbr.xist(), ".ns"), 
     513            header=(abbr.xist(), ".ns"), 
     514            subheader="Subpackage containing namespace modules", 
     515            url="root:xist/ns/index.html", 
     516            hint="Package containing namespace modules", 
     517        ), 
     518        PythonSourcePage("parse", 
     519            crumb="parse", 
     520            title=(abbr.xist(), ".parse · Python software · LivingLogic AG"), 
     521            header=(abbr.xist(), ".parse"), 
     522            subheader=("Tools for parsing ", abbr.xml(), " from various sources"), 
     523            url="root:xist/parse/index.html", 
     524            hint="Parsing XML", 
     525        ), 
     526        PythonSourcePage("present", 
     527            crumb="present", 
     528            title=(abbr.xist(), ".present · Python software · LivingLogic AG"), 
     529            header=(abbr.xist(), ".present"), 
     530            subheader="Module with classes for printing trees", 
     531            url="root:xist/present/index.html", 
     532            hint="Screen output of XML trees", 
     533        ), 
     534        PythonSourcePage("sims", 
     535            crumb="sims", 
     536            title=(abbr.xist(), ".sims · Python software · LivingLogic AG"), 
     537            header=(abbr.xist(), ".sims"), 
     538            subheader="Simple schema validation", 
     539            url="root:xist/sims/index.html", 
     540            hint="Simple schema validation", 
     541        ), 
     542        PythonSourcePage("xfind", 
     543            crumb="xfind", 
     544            title=(abbr.xist(), ".xfind · Python software · LivingLogic AG"), 
     545            header=(abbr.xist(), ".xfind"), 
     546            subheader="Tree iteration and filtering", 
     547            url="root:xist/xfind/index.html", 
     548            hint="Tree iteration and filtering", 
     549        ), 
     550        PythonSourcePage("css", 
     551            crumb="css", 
     552            title=(abbr.xist(), ".css · Python software · LivingLogic AG"), 
     553            header=(abbr.xist(), ".css"), 
    556554            subheader=(abbr.css(), " related funtions"), 
    557             url=u"root:xist/css/index.html", 
    558             hint=u"CSS related functions", 
    559         ), 
    560         PythonSourcePage(u"scripts", 
    561             PythonSourcePage(u"dtd2xsc", 
    562                 crumb=u"dtd2xsc", 
    563                 title=u"ll.xist.scripts.dtd2xsc · Python software · LivingLogic AG", 
    564                 header=u"ll.xist.scripts.dtd2xsc", 
    565                 subheader=u"Script for converting DTDs to XIST namespaces", 
    566                 url=u"root:xist/scripts/dtd2xsc.html", 
    567                 inheritablekeywords=[u"DTD"], 
    568                 hint=u"Script for converting DTDs to XIST namespaces", 
    569                 description=u""" 
     555            url="root:xist/css/index.html", 
     556            hint="CSS related functions", 
     557        ), 
     558        PythonSourcePage("scripts", 
     559            PythonSourcePage("dtd2xsc", 
     560                crumb="dtd2xsc", 
     561                title="ll.xist.scripts.dtd2xsc · Python software · LivingLogic AG", 
     562                header="ll.xist.scripts.dtd2xsc", 
     563                subheader="Script for converting DTDs to XIST namespaces", 
     564                url="root:xist/scripts/dtd2xsc.html", 
     565                inheritablekeywords=["DTD"], 
     566                hint="Script for converting DTDs to XIST namespaces", 
     567                description=""" 
    570568                dtd2xsc creates a skeleton XIST namespace module from one or more DTDs. 
    571569                """, 
    572570            ), 
    573             PythonSourcePage(u"xml2xsc", 
    574                 crumb=u"xml2xsc", 
    575                 title=u"ll.xist.scripts.xml2xsc · Python software · LivingLogic AG", 
    576                 header=u"ll.xist.scripts.xml2xsc", 
    577                 subheader=u"Script for creating an XIST namespace from XML files", 
    578                 url=u"root:xist/scripts/xml2xsc.html", 
    579                 inheritablekeywords=[u"XML"], 
    580                 hint=u"Script for creating an XIST namespace from XML files", 
    581                 description=u""" 
     571            PythonSourcePage("xml2xsc", 
     572                crumb="xml2xsc", 
     573                title="ll.xist.scripts.xml2xsc · Python software · LivingLogic AG", 
     574                header="ll.xist.scripts.xml2xsc", 
     575                subheader="Script for creating an XIST namespace from XML files", 
     576                url="root:xist/scripts/xml2xsc.html", 
     577                inheritablekeywords=["XML"], 
     578                hint="Script for creating an XIST namespace from XML files", 
     579                description=""" 
    582580                xml2xsc creates a skeleton XIST namespace module from several XML files. 
    583581                """, 
    584582            ), 
    585             PythonSourcePage(u"tld2xsc", 
    586                 crumb=u"tld2xsc", 
    587                 title=u"ll.xist.scripts.tld2xsc · Python software · LivingLogic AG", 
    588                 header=u"ll.xist.scripts.tld2xsc", 
    589                 subheader=u"Script for converting a Java tag library description XML file to an XIST namespace", 
    590                 url=u"root:xist/scripts/tld2xsc.html", 
    591                 inheritablekeywords=[u"TLD", "Java", "taglib"], 
    592                 hint=u"Script for converting a Java tag library description XML file to an XIST namespace", 
    593                 description=u""" 
     583            PythonSourcePage("tld2xsc", 
     584                crumb="tld2xsc", 
     585                title="ll.xist.scripts.tld2xsc · Python software · LivingLogic AG", 
     586                header="ll.xist.scripts.tld2xsc", 
     587                subheader="Script for converting a Java tag library description XML file to an XIST namespace", 
     588                url="root:xist/scripts/tld2xsc.html", 
     589                inheritablekeywords=["TLD", "Java", "taglib"], 
     590                hint="Script for converting a Java tag library description XML file to an XIST namespace", 
     591                description=""" 
    594592                tld2xsc creates a skeleton XIST namespace from a Java tag library description XML file. 
    595593                """, 
    596594            ), 
    597             PythonSourcePage(u"doc2txt", 
    598                 crumb=u"doc2txt", 
    599                 title=u"ll.xist.scripts.doc2txt · Python software · LivingLogic AG", 
    600                 header=u"ll.xist.scripts.doc2txt", 
    601                 subheader=u"Script for creating a plain text file from an XIST doc XML file", 
    602                 url=u"root:xist/scripts/doc2txt.html", 
    603                 inheritablekeywords=[u"doc"], 
    604                 hint=u"Script for creating a plain text file from an XIST doc XML file", 
    605                 description=u""" 
     595            PythonSourcePage("doc2txt", 
     596                crumb="doc2txt", 
     597                title="ll.xist.scripts.doc2txt · Python software · LivingLogic AG", 
     598                header="ll.xist.scripts.doc2txt", 
     599                subheader="Script for creating a plain text file from an XIST doc XML file", 
     600                url="root:xist/scripts/doc2txt.html", 
     601                inheritablekeywords=["doc"], 
     602                hint="Script for creating a plain text file from an XIST doc XML file", 
     603                description=""" 
    606604                doc2txt creates a plain text file from a XML file using XISTs doc 
    607605                XML vocabulary. 
    608606                """, 
    609607            ), 
    610             PythonSourcePage(u"uhpp", 
    611                 crumb=u"uhpp", 
    612                 title=u"ll.xist.scripts.uhpp · Python software · LivingLogic AG", 
    613                 header=u"ll.xist.scripts.uhpp", 
    614                 subheader=u"Script for pretty printing HTML", 
    615                 url=u"root:xist/scripts/uhpp.html", 
    616                 inheritablekeywords=[u"HTML", "pretty print"], 
    617                 hint=u"Script for pretty printing HTML", 
    618                 description=u""" 
     608            PythonSourcePage("uhpp", 
     609                crumb="uhpp", 
     610                title="ll.xist.scripts.uhpp · Python software · LivingLogic AG", 
     611                header="ll.xist.scripts.uhpp", 
     612                subheader="Script for pretty printing HTML", 
     613                url="root:xist/scripts/uhpp.html", 
     614                inheritablekeywords=["HTML", "pretty print"], 
     615                hint="Script for pretty printing HTML", 
     616                description=""" 
    619617                uhpp pretty prints HTML. 
    620618                """, 
    621619            ), 
    622             crumb=u"scripts", 
    623             title=u"ll.xist.scripts · Python software · LivingLogic AG", 
    624             header=u"ll.xist.scripts", 
    625             subheader=u"Scripts for text conversion and creating XIST namespaces", 
    626             url=u"root:xist/scripts/index.html", 
    627             inheritablekeywords=[u"script", "XIST"], 
    628             localkeywords=[u"xnd", "namespace"], 
    629             hint=u"Scripts for text conversion and creating XIST namespaces", 
    630             description=u""" 
     620            crumb="scripts", 
     621            title="ll.xist.scripts · Python software · LivingLogic AG", 
     622            header="ll.xist.scripts", 
     623            subheader="Scripts for text conversion and creating XIST namespaces", 
     624            url="root:xist/scripts/index.html", 
     625            inheritablekeywords=["script", "XIST"], 
     626            localkeywords=["xnd", "namespace"], 
     627            hint="Scripts for text conversion and creating XIST namespaces", 
     628            description=""" 
    631629            ll.xist.scripts is a Python package that contains the scripts dtd2xsc, 
    632630            xml2xsc, tld2xsc and doc2txt. 
    633631            """, 
    634632        ), 
    635         XISTPage(u"history", 
    636             XISTPage(u"old", 
    637                 crumb=u"Old history", 
    638                 title=u"Old history · Python software · LivingLogic AG", 
    639                 header=u"Old history", 
    640                 subheader=u"The history before distribution restructuring", 
    641                 url=u"root:xist/OldHistory.html", 
    642                 localkeywords=[u"history", u"changes", u"version"], 
    643                 hint=(u"Old ChangeLog for modules merged into ", abbr.xist()), 
    644             ), 
    645             crumb=u"History", 
    646             title=(abbr.xist(), u" history · Python software · LivingLogic AG"), 
    647             header=(abbr.xist(), u" history"), 
    648             subheader=u"The development history", 
    649             url=u"root:xist/History.html", 
    650             localkeywords=[u"history", u"changes", u"version"], 
     633        XISTPage("history", 
     634            XISTPage("old", 
     635                crumb="Old history", 
     636                title="Old history · Python software · LivingLogic AG", 
     637                header="Old history", 
     638                subheader="The history before distribution restructuring", 
     639                url="root:xist/OldHistory.html", 
     640                localkeywords=["history", "changes", "version"], 
     641                hint=("Old ChangeLog for modules merged into ", abbr.xist()), 
     642            ), 
     643            crumb="History", 
     644            title=(abbr.xist(), " history · Python software · LivingLogic AG"), 
     645            header=(abbr.xist(), " history"), 
     646            subheader="The development history", 
     647            url="root:xist/History.html", 
     648            localkeywords=["history", "changes", "version"], 
    651649            hint=("ChangeLog for ", abbr.xist()), 
    652650        ), 
    653         XISTPage(u"installation", 
    654             crumb=u"Installation", 
    655             title=(abbr.xist(), u" requirements and installation · Python software · LivingLogic AG"), 
    656             header=(abbr.xist(), u" installation"), 
    657             subheader=u"Requirements, installation and configuration", 
    658             url=u"root:xist/Installation.html", 
    659             localkeywords=[u"installation", u"distutils"], 
     651        XISTPage("installation", 
     652            crumb="Installation", 
     653            title=(abbr.xist(), " requirements and installation · Python software · LivingLogic AG"), 
     654            header=(abbr.xist(), " installation"), 
     655            subheader="Requirements, installation and configuration", 
     656            url="root:xist/Installation.html", 
     657            localkeywords=["installation", "distutils"], 
    660658            hint=("How to install and configure ", abbr.xist()), 
    661659        ), 
    662         XISTPage(u"migration", 
    663             XISTPage(u"old", 
    664                 crumb=u"Old migration info", 
    665                 title=u"Old migration info · Python software · LivingLogic AG", 
    666                 header=u"Old migration info", 
    667                 subheader=u"Migration infomation for old versions before distribution restructuring", 
    668                 url=u"root:xist/OldMigration.html", 
    669                 localkeywords=[u"history", u"changes", u"version"], 
    670                 hint=u"Old migration info", 
    671             ), 
    672             crumb=u"Migration", 
    673             title=(abbr.xist(), u" migration guide · Python software · LivingLogic AG"), 
    674             header=(abbr.xist(), u" migration"), 
    675             subheader=(u"How to update your code to new versions of ", abbr.xist()), 
    676             url=u"root:xist/Migration.html", 
     660        XISTPage("migration", 
     661            XISTPage("old", 
     662                crumb="Old migration info", 
     663                title="Old migration info · Python software · LivingLogic AG", 
     664                header="Old migration info", 
     665                subheader="Migration infomation for old versions before distribution restructuring", 
     666                url="root:xist/OldMigration.html", 
     667                localkeywords=["history", "changes", "version"], 
     668                hint="Old migration info", 
     669            ), 
     670            crumb="Migration", 
     671            title=(abbr.xist(), " migration guide · Python software · LivingLogic AG"), 
     672            header=(abbr.xist(), " migration"), 
     673            subheader=("How to update your code to new versions of ", abbr.xist()), 
     674            url="root:xist/Migration.html", 
    677675            localkeywords=[], 
    678             hint=(u"How to update your code to new versions of ", abbr.xist()), 
    679         ), 
    680         XISTPage(u"mailinglists", 
    681             crumb=u"Mailing lists", 
    682             title=(abbr.xist(), u" mailing lists · Python software · LivingLogic AG"), 
    683             header=(abbr.xist(), u" mailing lists"), 
    684             subheader=u"How to subscribe to the mailing lists", 
    685             url=u"root:xist/Mailinglists.html", 
    686             localkeywords=[u"mailing list", u"list", u"posting", u"discussion", u"announcement"], 
    687             hint=(u"How to subscribe to the ", abbr.xist(), " mailing lists"), 
     676            hint=("How to update your code to new versions of ", abbr.xist()), 
     677        ), 
     678        XISTPage("mailinglists", 
     679            crumb="Mailing lists", 
     680            title=(abbr.xist(), " mailing lists · Python software · LivingLogic AG"), 
     681            header=(abbr.xist(), " mailing lists"), 
     682            subheader="How to subscribe to the mailing lists", 
     683            url="root:xist/Mailinglists.html", 
     684            localkeywords=["mailing list", "list", "posting", "discussion", "announcement"], 
     685            hint=("How to subscribe to the ", abbr.xist(), " mailing lists"), 
    688686        ), 
    689687        crumb="ll.xist", 
    690         title=(abbr.xist(), u" · Python software · LivingLogic AG"), 
     688        title=(abbr.xist(), " · Python software · LivingLogic AG"), 
    691689        header=abbr.xist(), 
    692         subheader=(u"An extensible ", abbr.html(), u"/", abbr.xml(), u" generator"), 
    693         url=u"root:xist/index.html", 
    694         inheritablekeywords=[abbr.xist(), abbr.xml(), u"transformation", abbr.xsl(), u"hsc"], 
    695         hint=u"An extensible XML/HTML generator", 
    696         description=u""" 
     690        subheader=("An extensible ", abbr.html(), "/", abbr.xml(), " generator"), 
     691        url="root:xist/index.html", 
     692        inheritablekeywords=[abbr.xist(), abbr.xml(), "transformation", abbr.xsl(), "hsc"], 
     693        hint="An extensible XML/HTML generator", 
     694        description=""" 
    697695        XIST is an extensible HTML/XML generator written in Python. XIST is also a 
    698696        DOM parser (built on top of SAX2) with a very simple and pythonesque tree 
     
    702700        """, 
    703701    ), 
    704     PythonSourcePage(u"ul4", 
    705         XISTPage(u"howto", 
    706             crumb=u"Howto", 
    707             title=u"ll.ul4c howto · Python software · LivingLogic AG", 
    708             header=u"ll.ul4c documentation", 
    709             subheader=u"How to use UL4", 
    710             url=u"root:ul4c/Howto.html", 
     702    PythonSourcePage("ul4", 
     703        XISTPage("howto", 
     704            crumb="Howto", 
     705            title="ll.ul4c howto · Python software · LivingLogic AG", 
     706            header="ll.ul4c documentation", 
     707            subheader="How to use UL4", 
     708            url="root:ul4c/Howto.html", 
    711709            localkeywords=[], 
    712             hint=u"How to use UL4", 
    713         ), 
    714         crumb=u"ll.ul4c", 
    715         title=u"ll.ul4c · Python software · LivingLogic AG", 
    716         header=u"ll.ul4c", 
    717         subheader=(u"Crossplatform templating language"), 
    718         url=u"root:ul4c/index.html", 
    719         hint=u"A templating language", 
    720         description=u""" 
     710            hint="How to use UL4", 
     711        ), 
     712        crumb="ll.ul4c", 
     713        title="ll.ul4c · Python software · LivingLogic AG", 
     714        header="ll.ul4c", 
     715        subheader=("Crossplatform templating language"), 
     716        url="root:ul4c/index.html", 
     717        hint="A templating language", 
     718        description=""" 
    721719        ll.ul4c provides a crossplatform templating language. 
    722720        """, 
    723721    ), 
    724     PythonSourcePage(u"url", 
    725         XISTPage(u"howto", 
    726             crumb=u"Howto", 
    727             title=u"ll.url howto · Python software · LivingLogic AG", 
    728             header=u"ll.url documentation", 
    729             subheader=u"Special features of URL", 
    730             url=u"root:url/Howto.html", 
     722    PythonSourcePage("ul4on", 
     723        crumb="ll.ul4on", 
     724        title="ll.ul4on · Python software · LivingLogic AG", 
     725        header="ll.ul4on", 
     726        subheader=("Lightweight machine-readable object serialization"), 
     727        url="root:ul4on/index.html", 
     728        hint="Lightweight machine-readable object serialization", 
     729        description=""" 
     730        ll.ul4on provides functions for reading and writing a lightweight 
     731        machine-readable object serialization 
     732        """, 
     733    ), 
     734    PythonSourcePage("url", 
     735        XISTPage("howto", 
     736            crumb="Howto", 
     737            title="ll.url howto · Python software · LivingLogic AG", 
     738            header="ll.url documentation", 
     739            subheader="Special features of URL", 
     740            url="root:url/Howto.html", 
    731741            localkeywords=[], 
    732             hint=u"Special features of URL", 
    733         ), 
    734         crumb=u"ll.url", 
    735         title=u"ll.url · Python software · LivingLogic AG", 
    736         header=u"ll.url", 
    737         subheader=(u"Module implementing ", abbr.url(), u"s"), 
    738         url=u"root:url/index.html", 
    739         hint=u"RFC 2396 compliant URLs", 
    740         description=u""" 
     742            hint="Special features of URL", 
     743        ), 
     744        crumb="ll.url", 
     745        title="ll.url · Python software · LivingLogic AG", 
     746        header="ll.url", 
     747        subheader=("Module implementing ", abbr.url(), "s"), 
     748        url="root:url/index.html", 
     749        hint="RFC 2396 compliant URLs", 
     750        description=""" 
    741751        ll.url is a Python module that provides classes for parsing and 
    742752        constructing RFC 2396 compliant URLs. 
    743753        """, 
    744754    ), 
    745     PythonSourcePage(u"make", 
    746         crumb=u"ll.make", 
    747         title=u"ll.make · Python software · LivingLogic AG", 
    748         header=u"ll.make", 
    749         subheader=u"Object oriented make replacement", 
    750         url=u"root:make/index.html", 
    751         localkeywords=[u"make", u"build", u"dependencies", u"development", u"target"], 
    752         hint=u"Object oriented make replacement", 
    753         description=u""" 
     755    PythonSourcePage("make", 
     756        crumb="ll.make", 
     757        title="ll.make · Python software · LivingLogic AG", 
     758        header="ll.make", 
     759        subheader="Object oriented make replacement", 
     760        url="root:make/index.html", 
     761        localkeywords=["make", "build", "dependencies", "development", "target"], 
     762        hint="Object oriented make replacement", 
     763        description=""" 
    754764        ll.make is a Python module that provides an object oriented make replacement. 
    755765        Like make it allows you to specify dependencies between files and actions 
     
    760770        """, 
    761771    ), 
    762     PythonSourcePage(u"daemon", 
    763         crumb=u"ll.daemon", 
    764         title=u"ll.daemon · Python software · LivingLogic AG", 
    765         header=u"ll.daemon", 
    766         subheader=u"Forking daemon processes with Python", 
    767         url=u"root:daemon/index.html", 
    768         inheritablekeywords=[u"daemon", u"fork", u"process"], 
    769         hint=u"Forking daemon processes", 
    770         description=u""" 
     772    PythonSourcePage("daemon", 
     773        crumb="ll.daemon", 
     774        title="ll.daemon · Python software · LivingLogic AG", 
     775        header="ll.daemon", 
     776        subheader="Forking daemon processes with Python", 
     777        url="root:daemon/index.html", 
     778        inheritablekeywords=["daemon", "fork", "process"], 
     779        hint="Forking daemon processes", 
     780        description=""" 
    771781        ll.daemon is a Python module that can be used on UNIX to fork a daemon process. 
    772782        """, 
    773783    ), 
    774     PythonSourcePage(u"sisyphus", 
    775         crumb=u"ll.sisyphus", 
    776         title=u"ll.sisyphus · Python software · LivingLogic AG", 
    777         header=u"ll.sisyphus", 
    778         subheader=u"Writing cron jobs with Python", 
    779         url=u"root:sisyphus/index.html", 
    780         inheritablekeywords=[u"packages", u"Sisyphus", u"cron", u"job"], 
    781         hint=u"Writing cron jobs with Python", 
    782         description=u""" 
     784    PythonSourcePage("sisyphus", 
     785        crumb="ll.sisyphus", 
     786        title="ll.sisyphus · Python software · LivingLogic AG", 
     787        header="ll.sisyphus", 
     788        subheader="Writing cron jobs with Python", 
     789        url="root:sisyphus/index.html", 
     790        inheritablekeywords=["packages", "Sisyphus", "cron", "job"], 
     791        hint="Writing cron jobs with Python", 
     792        description=""" 
    783793        ll.sisyphus is a Python module that simplifies writing Python scripts 
    784794        that run as cron jobs. 
    785795        """, 
    786796    ), 
    787     PythonSourcePage(u"color", 
    788         crumb=u"ll.color", 
    789         title=u"ll.color · Python software · LivingLogic AG", 
    790         header=u"ll.color", 
    791         subheader=u"RGB color values and color model conversion", 
    792         url=u"root:color/index.html", 
    793         localkeywords=[u"RGB", u"red", u"green", u"blue", u"HSV", u"HSB", u"HSL", u"HLS", u"hue", u"saturation", u"value", u"brightness", u"luminance"], 
    794         hint=u"RGB color values and color model conversion", 
    795         description=u""" 
     797    PythonSourcePage("color", 
     798        crumb="ll.color", 
     799        title="ll.color · Python software · LivingLogic AG", 
     800        header="ll.color", 
     801        subheader="RGB color values and color model conversion", 
     802        url="root:color/index.html", 
     803        localkeywords=["RGB", "red", "green", "blue", "HSV", "HSB", "HSL", "HLS", "hue", "saturation", "value", "brightness", "luminance"], 
     804        hint="RGB color values and color model conversion", 
     805        description=""" 
    796806        ll.color is a Python module that provides classes and functions for handling 
    797807        RGB color values. This includes the ability to convert between different 
     
    800810        """, 
    801811    ), 
    802     PythonSourcePage(u"misc", 
    803         crumb=u"ll.misc", 
    804         title=u"ll.misc · Python software · LivingLogic AG", 
    805         header=u"ll.misc", 
    806         subheader=u"Miscellaneous utility functions and classes", 
    807         url=u"root:misc/index.html", 
    808         localkeywords=[u"utilities", u"decorator", u"property", u"module", u"namespace"], 
    809         hint=u"Misc utility functions and classes", 
    810         description=u""" 
     812    PythonSourcePage("misc", 
     813        crumb="ll.misc", 
     814        title="ll.misc · Python software · LivingLogic AG", 
     815        header="ll.misc", 
     816        subheader="Miscellaneous utility functions and classes", 
     817        url="root:misc/index.html", 
     818        localkeywords=["utilities", "decorator", "property", "module", "namespace"], 
     819        hint="Misc utility functions and classes", 
     820        description=""" 
    811821        ll.misc provides serveral utility classes and functions. 
    812822        """, 
    813823    ), 
    814     PythonSourcePage(u"orasql", 
    815         PythonSourcePage(u"scripts", 
    816             PythonSourcePage(u"oracreate", 
    817                 crumb=u"oracreate", 
    818                 title=u"ll.orasql.scripts.oracreate · Python software · LivingLogic AG", 
    819                 header=u"ll.orasql.scripts.oracreate", 
    820                 subheader=u"Script for printing an Oracle schema definition", 
    821                 url=u"root:orasql/scripts/oracreate.html", 
     824    PythonSourcePage("orasql", 
     825        PythonSourcePage("scripts", 
     826            PythonSourcePage("oracreate", 
     827                crumb="oracreate", 
     828                title="ll.orasql.scripts.oracreate · Python software · LivingLogic AG", 
     829                header="ll.orasql.scripts.oracreate", 
     830                subheader="Script for printing an Oracle schema definition", 
     831                url="root:orasql/scripts/oracreate.html", 
    822832                inheritablekeywords=["DDL"], 
    823                 hint=u"Script for printing an Oracle schema definition", 
    824                 description=u""" 
     833                hint="Script for printing an Oracle schema definition", 
     834                description=""" 
    825835                oracreate is a script for printing an Oracle schema definition. 
    826836                """, 
    827837            ), 
    828             PythonSourcePage(u"oradrop", 
    829                 crumb=u"oradrop", 
    830                 title=u"ll.orasql.scripts.oradrop · Python software · LivingLogic AG", 
    831                 header=u"ll.orasql.scripts.oradrop", 
    832                 subheader=u"Script for deleting an Oracle schema definition", 
    833                 url=u"root:orasql/scripts/oradrop.html", 
     838            PythonSourcePage("oradrop", 
     839                crumb="oradrop", 
     840                title="ll.orasql.scripts.oradrop · Python software · LivingLogic AG", 
     841                header="ll.orasql.scripts.oradrop", 
     842                subheader="Script for deleting an Oracle schema definition", 
     843                url="root:orasql/scripts/oradrop.html", 
    834844                inheritablekeywords=["DDL"], 
    835                 hint=u"Script for deleting an Oracle schema definition", 
    836                 description=u""" 
     845                hint="Script for deleting an Oracle schema definition", 
     846                description=""" 
    837847                oradrop is a script for deleting an Oracle schema definition. 
    838848                """, 
    839849            ), 
    840             PythonSourcePage(u"oradelete", 
    841                 crumb=u"oradelete", 
    842                 title=u"ll.orasql.scripts.oradelete · Python software · LivingLogic AG", 
    843                 header=u"ll.orasql.scripts.oradelete", 
    844                 subheader=u"Script for deleting all records from all tables in an Oracle database", 
    845                 url=u"root:orasql/scripts/oradelete.html", 
     850            PythonSourcePage("oradelete", 
     851                crumb="oradelete", 
     852                title="ll.orasql.scripts.oradelete · Python software · LivingLogic AG", 
     853                header="ll.orasql.scripts.oradelete", 
     854                subheader="Script for deleting all records from all tables in an Oracle database", 
     855                url="root:orasql/scripts/oradelete.html", 
    846856                inheritablekeywords=["delete"], 
    847                 hint=u"Script for deleting all records from all tables in an Oracle database", 
    848                 description=u""" 
     857                hint="Script for deleting all records from all tables in an Oracle database", 
     858                description=""" 
    849859                oradelete is a script for deleting all records from all tables in an 
    850860                Oracle database. 
    851861                """, 
    852862            ), 
    853             PythonSourcePage(u"oragrant", 
    854                 crumb=u"oragrant", 
    855                 title=u"ll.orasql.scripts.oragrant · Python software · LivingLogic AG", 
    856                 header=u"ll.orasql.scripts.oragrant", 
    857                 subheader=u"Script for printing access permissions for an Oracle database", 
    858                 url=u"root:orasql/scripts/oragrant.html", 
     863            PythonSourcePage("oragrant", 
     864                crumb="oragrant", 
     865                title="ll.orasql.scripts.oragrant · Python software · LivingLogic AG", 
     866                header="ll.orasql.scripts.oragrant", 
     867                subheader="Script for printing access permissions for an Oracle database", 
     868                url="root:orasql/scripts/oragrant.html", 
    859869                inheritablekeywords=["grant"], 
    860                 hint=u"Script for printing access permissions for an Oracle database", 
    861                 description=u""" 
     870                hint="Script for printing access permissions for an Oracle database", 
     871                description=""" 
    862872                orafind is a script for printing access permissions for an Oracle database. 
    863873                """, 
    864874            ), 
    865             PythonSourcePage(u"orafind", 
    866                 crumb=u"orafind", 
    867                 title=u"ll.orasql.scripts.orafind · Python software · LivingLogic AG", 
    868                 header=u"ll.orasql.scripts.orafind", 
    869                 subheader=u"Script for finding records in an Oracle database", 
    870                 url=u"root:orasql/scripts/orafind.html", 
     875            PythonSourcePage("orafind", 
     876                crumb="orafind", 
     877                title="ll.orasql.scripts.orafind · Python software · LivingLogic AG", 
     878                header="ll.orasql.scripts.orafind", 
     879                subheader="Script for finding records in an Oracle database", 
     880                url="root:orasql/scripts/orafind.html", 
    871881                inheritablekeywords=["find", "regexp", "regular expression"], 
    872                 hint=u"Script for finding records in an Oracle database", 
    873                 description=u""" 
     882                hint="Script for finding records in an Oracle database", 
     883                description=""" 
    874884                orafind is a script for finding records in an Oracle database. 
    875885                """, 
    876886            ), 
    877             PythonSourcePage(u"oradiff", 
    878                 crumb=u"oradiff", 
    879                 title=u"ll.orasql.scripts.oradiff · Python software · LivingLogic AG", 
    880                 header=u"ll.orasql.scripts.oradiff", 
    881                 subheader=u"Script for diffing two Oracle database schemas", 
    882                 url=u"root:orasql/scripts/oradiff.html", 
     887            PythonSourcePage("oradiff", 
     888                crumb="oradiff", 
     889                title="ll.orasql.scripts.oradiff · Python software · LivingLogic AG", 
     890                header="ll.orasql.scripts.oradiff", 
     891                subheader="Script for diffing two Oracle database schemas", 
     892                url="root:orasql/scripts/oradiff.html", 
    883893                inheritablekeywords=["diff"], 
    884                 hint=u"Script for diffing two Oracle database schemas", 
    885                 description=u""" 
     894                hint="Script for diffing two Oracle database schemas", 
     895                description=""" 
    886896                oradiff is a script for finding the differences between to Oracle 
    887897                database schemas. 
    888898                """, 
    889899            ), 
    890             PythonSourcePage(u"oramerge", 
    891                 crumb=u"oramerge", 
    892                 title=u"ll.orasql.scripts.oramerge · Python software · LivingLogic AG", 
    893                 header=u"ll.orasql.scripts.oramerge", 
    894                 subheader=u"Script for merging Oracle database schemas", 
    895                 url=u"root:orasql/scripts/oramerge.html", 
     900            PythonSourcePage("oramerge", 
     901                crumb="oramerge", 
     902                title="ll.orasql.scripts.oramerge · Python software · LivingLogic AG", 
     903                header="ll.orasql.scripts.oramerge", 
     904                subheader="Script for merging Oracle database schemas", 
     905                url="root:orasql/scripts/oramerge.html", 
    896906                inheritablekeywords=["merge"], 
    897                 hint=u"Script for merging Oracle database schemas", 
    898                 description=u""" 
     907                hint="Script for merging Oracle database schemas", 
     908                description=""" 
    899909                oramerge is a script that can be used for merging the changes between 
    900910                two Oracle database schemas into a third one. 
    901911                """, 
    902912            ), 
    903             crumb=u"scripts", 
    904             title=u"ll.orasql.scripts · Python software · LivingLogic AG", 
    905             header=u"ll.orasql.scripts", 
    906             subheader=u"Scripts for working with Oracle databases", 
    907             url=u"root:orasql/scripts/index.html", 
    908             inheritablekeywords=[u"script"], 
    909             localkeywords=[u"xnd", "namespace"], 
    910             hint=u"Scripts for working with Oracle databases", 
    911             description=u""" 
     913            crumb="scripts", 
     914            title="ll.orasql.scripts · Python software · LivingLogic AG", 
     915            header="ll.orasql.scripts", 
     916            subheader="Scripts for working with Oracle databases", 
     917            url="root:orasql/scripts/index.html", 
     918            inheritablekeywords=["script"], 
     919            localkeywords=["xnd", "namespace"], 
     920            hint="Scripts for working with Oracle databases", 
     921            description=""" 
    912922            ll.orasql.scripts is a Python package that contains the scripts oracreate, 
    913923            oradrop, oradelete, orafind, oradiff and oramerge. 
    914924            """, 
    915925        ), 
    916         XISTPage(u"history", 
    917             crumb=u"History", 
    918             title=u"ll.orasql history · Python software · LivingLogic AG", 
    919             header=u"ll.orasql history", 
    920             subheader=u"The development history", 
    921             url=u"root:orasql/History.html", 
    922             localkeywords=[u"packages", u"history", u"changes", u"version"], 
    923             hint=(u"ChangeLog for ", doc.mod("ll.orasql")), 
    924         ), 
    925         XISTPage(u"installation", 
    926             crumb=u"Installation", 
    927             title=u"ll.orasql installation · Python software · LivingLogic AG", 
    928             header=u"ll.orasql installation", 
    929             subheader=u"Requirements and installation", 
    930             url=u"root:orasql/Installation.html", 
    931             localkeywords=[u"installation", u"distutils"], 
    932             hint=(u"How to install ", doc.mod("ll.orasql")), 
    933         ), 
    934         crumb=u"ll.orasql", 
    935         title=u"ll.orasql · Python software · LivingLogic AG", 
    936         header=u"ll.orasql", 
    937         subheader=(u"Utilities for working with ", doc.mod("cx_Oracle")), 
    938         url=u"root:orasql/index.html", 
    939         inheritablekeywords=[u"Oracle", u"cx_Oracle"], 
    940         hint=u"Utilities for cx_Oracle", 
    941         description=u""" 
     926        XISTPage("history", 
     927            crumb="History", 
     928            title="ll.orasql history · Python software · LivingLogic AG", 
     929            header="ll.orasql history", 
     930            subheader="The development history", 
     931            url="root:orasql/History.html", 
     932            localkeywords=["packages", "history", "changes", "version"], 
     933            hint=("ChangeLog for ", doc.mod("ll.orasql")), 
     934        ), 
     935        XISTPage("installation", 
     936            crumb="Installation", 
     937            title="ll.orasql installation · Python software · LivingLogic AG", 
     938            header="ll.orasql installation", 
     939            subheader="Requirements and installation", 
     940            url="root:orasql/Installation.html", 
     941            localkeywords=["installation", "distutils"], 
     942            hint=("How to install ", doc.mod("ll.orasql")), 
     943        ), 
     944        crumb="ll.orasql", 
     945        title="ll.orasql · Python software · LivingLogic AG", 
     946        header="ll.orasql", 
     947        subheader=("Utilities for working with ", doc.mod("cx_Oracle")), 
     948        url="root:orasql/index.html", 
     949        inheritablekeywords=["Oracle", "cx_Oracle"], 
     950        hint="Utilities for cx_Oracle", 
     951        description=""" 
    942952        ll.orasql is a Python module that provides utilities for working with cx_Oracle: 
    943953        It allows calling Oracle procedures via keyword arguments and it wraps the 
     
    945955        """, 
    946956    ), 
    947     PythonSourcePage(u"nightshade", 
    948         XISTPage(u"history", 
    949             crumb=u"History", 
    950             title=u"ll.nightshade history · Python software · LivingLogic AG", 
    951             header=u"ll.nightshade history", 
    952             subheader=u"The development history", 
    953             url=u"root:nightshade/History.html", 
    954             localkeywords=[u"packages", u"history", u"changes", u"version"], 
    955             hint=(u"ChangeLog for ", doc.mod("ll.nightshade")), 
    956         ), 
    957         XISTPage(u"installation", 
    958             crumb=u"Installation", 
    959             title=u"ll.nightshade installation · Python software · LivingLogic AG", 
    960             header=u"ll.nightshade installation", 
    961             subheader=u"Requirements and installation", 
    962             url=u"root:nightshade/Installation.html", 
    963             localkeywords=[u"installation", u"distutils"], 
    964             hint=(u"How to install ", doc.mod("ll.nightshade")), 
    965         ), 
    966         XISTPage(u"migration", 
    967             crumb=u"Migration", 
    968             title=(u"nightshade migration guide · Python software · LivingLogic AG"), 
    969             header=(u"nightshade migration"), 
    970             subheader=(u"How to update your code to new versions of nightshade"), 
    971             url=u"root:nightshade/Migration.html", 
     957    PythonSourcePage("nightshade", 
     958        XISTPage("history", 
     959            crumb="History", 
     960            title="ll.nightshade history · Python software · LivingLogic AG", 
     961            header="ll.nightshade history", 
     962            subheader="The development history", 
     963            url="root:nightshade/History.html", 
     964            localkeywords=["packages", "history", "changes", "version"], 
     965            hint=("ChangeLog for ", doc.mod("ll.nightshade")), 
     966        ), 
     967        XISTPage("installation", 
     968            crumb="Installation", 
     969            title="ll.nightshade installation · Python software · LivingLogic AG", 
     970            header="ll.nightshade installation", 
     971            subheader="Requirements and installation", 
     972            url="root:nightshade/Installation.html", 
     973            localkeywords=["installation", "distutils"], 
     974            hint=("How to install ", doc.mod("ll.nightshade")), 
     975        ), 
     976        XISTPage("migration", 
     977            crumb="Migration", 
     978            title=("nightshade migration guide · Python software · LivingLogic AG"), 
     979            header=("nightshade migration"), 
     980            subheader=("How to update your code to new versions of nightshade"), 
     981            url="root:nightshade/Migration.html", 
    972982            localkeywords=[], 
    973             hint=u"How to update your code to new versions of nightshade", 
    974         ), 
    975         crumb=u"ll.nightshade", 
    976         title=u"ll.nightshade · Python software · LivingLogic AG", 
    977         header=u"ll.nightshade", 
    978         subheader=u"Serving the output of Oracle functions/procedures with CherryPy", 
    979         url=u"root:nightshade/index.html", 
    980         localkeywords=[u"Oracle", u"cx_Oracle"], 
    981         hint=u"Serve the output of Oracle functions/procedures with CherryPy", 
    982         description=u""" 
     983            hint="How to update your code to new versions of nightshade", 
     984        ), 
     985        crumb="ll.nightshade", 
     986        title="ll.nightshade · Python software · LivingLogic AG", 
     987        header="ll.nightshade", 
     988        subheader="Serving the output of Oracle functions/procedures with CherryPy", 
     989        url="root:nightshade/index.html", 
     990        localkeywords=["Oracle", "cx_Oracle"], 
     991        hint="Serve the output of Oracle functions/procedures with CherryPy", 
     992        description=""" 
    983993        ll.orasql is a Python module that provides utilities for working with cx_Oracle: 
    984994        It allows calling Oracle procedures via keyword arguments and it wraps the 
     
    986996        """, 
    987997    ), 
    988     PythonSourcePage(u"scripts", 
    989         PythonSourcePage(u"db2ul4", 
    990             crumb=u"db2ul4", 
    991             title=u"ll.scripts.db2ul4 · Python software · LivingLogic AG", 
    992             header=u"ll.scripts.db2ul4", 
    993             subheader=u"Script for rendering UL4 templates with database content", 
    994             url=u"root:scripts/db2ul4.html", 
    995             inheritablekeywords=[u"UL4", "template", "database"], 
    996             hint=u"Script for rendering UL4 templates with database content", 
    997             description=u""" 
     998    PythonSourcePage("scripts", 
     999        PythonSourcePage("db2ul4", 
     1000            crumb="db2ul4", 
     1001            title="ll.scripts.db2ul4 · Python software · LivingLogic AG", 
     1002            header="ll.scripts.db2ul4", 
     1003            subheader="Script for rendering UL4 templates with database content", 
     1004            url="root:scripts/db2ul4.html", 
     1005            inheritablekeywords=["UL4", "template", "database"], 
     1006            hint="Script for rendering UL4 templates with database content", 
     1007            description=""" 
    9981008            db2ul4 renders an UL4 template. The available template variables 
    9991009            allow system command and database access. Supported databases are 
     
    10011011            """, 
    10021012        ), 
    1003         PythonSourcePage(u"uls", 
    1004             crumb=u"uls", 
    1005             title=u"ll.scripts.uls · Python software · LivingLogic AG", 
    1006             header=u"ll.scripts.uls", 
    1007             subheader=u"Script for listing directory contents of URLs", 
    1008             url=u"root:scripts/uls.html", 
    1009             inheritablekeywords=[u"uls"], 
    1010             hint=u"Script for listing directory contents of URLs", 
    1011             description=u""" 
     1013        PythonSourcePage("uls", 
     1014            crumb="uls", 
     1015            title="ll.scripts.uls · Python software · LivingLogic AG", 
     1016            header="ll.scripts.uls", 
     1017            subheader="Script for listing directory contents of URLs", 
     1018            url="root:scripts/uls.html", 
     1019            inheritablekeywords=["uls"], 
     1020            hint="Script for listing directory contents of URLs", 
     1021            description=""" 
    10121022            uls is a script that lists directory contents. It is an URL-enabled version 
    10131023            of the ls system command. Via ll.url and ll.orasql uls supports 
     
    10151025            """, 
    10161026        ), 
    1017         PythonSourcePage(u"ucp", 
    1018             crumb=u"ucp", 
    1019             title=u"ll.scripts.ucp · Python software · LivingLogic AG", 
    1020             header=u"ll.scripts.ucp", 
    1021             subheader=u"Script for copying files/directories", 
    1022             url=u"root:scripts/ucp.html", 
    1023             inheritablekeywords=[u"ucp"], 
    1024             hint=u"Script for copying files/directories", 
    1025             description=u""" 
     1027        PythonSourcePage("ucp", 
     1028            crumb="ucp", 
     1029            title="ll.scripts.ucp · Python software · LivingLogic AG", 
     1030            header="ll.scripts.ucp", 
     1031            subheader="Script for copying files/directories", 
     1032            url="root:scripts/ucp.html", 
     1033            inheritablekeywords=["ucp"], 
     1034            hint="Script for copying files/directories", 
     1035            description=""" 
    10261036            ucp is a script that copies files/directory contents. It is an URL-enabled 
    10271037            version of the cp system command. Via ll.url and ll.orasql ucp supports 
     
    10291039            """, 
    10301040        ), 
    1031         PythonSourcePage(u"ucat", 
    1032             crumb=u"ucat", 
    1033             title=u"ll.scripts.ucat · Python software · LivingLogic AG", 
    1034             header=u"ll.scripts.ucat", 
    1035             subheader=u"Script for printing files", 
    1036             url=u"root:scripts/ucat.html", 
    1037             inheritablekeywords=[u"ucat"], 
    1038             hint=u"Script for printing files", 
    1039             description=u""" 
     1041        PythonSourcePage("ucat", 
     1042            crumb="ucat", 
     1043            title="ll.scripts.ucat · Python software · LivingLogic AG", 
     1044            header="ll.scripts.ucat", 
     1045            subheader="Script for printing files", 
     1046            url="root:scripts/ucat.html", 
     1047            inheritablekeywords=["ucat"], 
     1048            hint="Script for printing files", 
     1049            description=""" 
    10401050            ucat is a script that prints files. It is an URL-enabled version of 
    10411051            the cat system command. Via ll.url and ll.orasql ucat supports 
     
    10431053            """, 
    10441054        ), 
    1045         crumb=u"ll.scripts", 
    1046         title=u"ll.scripts · Python software · LivingLogic AG", 
    1047         header=u"ll.scripts", 
    1048         subheader=u"Scripts for rendering UL4 templates and working with URLs", 
    1049         url=u"root:scripts/index.html", 
    1050         inheritablekeywords=[u"script"], 
    1051         localkeywords=[u"UL4", "template", "URL", "db2ul4", "uls", "ucp", "ucat"], 
    1052         hint=u"Scripts for UL4 template rendering and URL handling", 
    1053         description=u""" 
     1055        crumb="ll.scripts", 
     1056        title="ll.scripts · Python software · LivingLogic AG", 
     1057        header="ll.scripts", 
     1058        subheader="Scripts for rendering UL4 templates and working with URLs", 
     1059        url="root:scripts/index.html", 
     1060        inheritablekeywords=["script"], 
     1061        localkeywords=["UL4", "template", "URL", "db2ul4", "uls", "ucp", "ucat"], 
     1062        hint="Scripts for UL4 template rendering and URL handling", 
     1063        description=""" 
    10541064        ll.scripts is a Python package that contains the scripts db2ul4, ucls, 
    10551065        ucp and ucat. 
    10561066        """, 
    10571067    ), 
    1058     PythonSourcePage(u"aplora", 
    1059         XISTPage(u"history", 
    1060             crumb=u"History", 
    1061             title=u"Aplora history · Python software · LivingLogic AG", 
    1062             header=u"Aplora history", 
    1063             subheader=u"The development history", 
    1064             url=u"root:aplora/History.html", 
    1065             localkeywords=[u"packages", u"history", u"changes", u"version"], 
    1066             hint=(u"ChangeLog for ", doc.mod("aplora")), 
    1067         ), 
    1068         XISTPage(u"installation", 
    1069             crumb=u"Installation", 
    1070             title=u"Aplora requirements, installation and configuration · Python software · LivingLogic AG", 
    1071             header=u"Aplora installation", 
    1072             subheader=u"Requirements, installation and configuration", 
    1073             url=u"root:aplora/Installation.html", 
    1074             localkeywords=[u"installation", u"distutils"], 
    1075             hint=(u"How to install ", doc.mod("aplora")), 
    1076         ), 
    1077         crumb=u"Aplora", 
    1078         title=u"Aplora · Python software · LivingLogic AG", 
    1079         header=u"Aplora", 
    1080         subheader=(u"Logging Apache ", abbr.http(), u" requests to an Oracle database"), 
    1081         url=u"root:aplora/index.html", 
    1082         localkeywords=[u"make", u"build", u"dependencies", u"development", u"target"], 
    1083         hint=u"Logging Apache HTTP requests to an Oracle database", 
    1084         description=u""" 
     1068    PythonSourcePage("aplora", 
     1069        XISTPage("history", 
     1070            crumb="History", 
     1071            title="Aplora history · Python software · LivingLogic AG", 
     1072            header="Aplora history", 
     1073            subheader="The development history", 
     1074            url="root:aplora/History.html", 
     1075            localkeywords=["packages", "history", "changes", "version"], 
     1076            hint=("ChangeLog for ", doc.mod("aplora")), 
     1077        ), 
     1078        XISTPage("installation", 
     1079            crumb="Installation", 
     1080            title="Aplora requirements, installation and configuration · Python software · LivingLogic AG", 
     1081            header="Aplora installation", 
     1082            subheader="Requirements, installation and configuration", 
     1083            url="root:aplora/Installation.html", 
     1084            localkeywords=["installation", "distutils"], 
     1085            hint=("How to install ", doc.mod("aplora")), 
     1086        ), 
     1087        crumb="Aplora", 
     1088        title="Aplora · Python software · LivingLogic AG", 
     1089        header="Aplora", 
     1090        subheader=("Logging Apache ", abbr.http(), " requests to an Oracle database"), 
     1091        url="root:aplora/index.html", 
     1092        localkeywords=["make", "build", "dependencies", "development", "target"], 
     1093        hint="Logging Apache HTTP requests to an Oracle database", 
     1094        description=""" 
    10851095        ll-aplora is a script that can be used with Apaches piped logging facility 
    10861096        to log HTTP request to an Oracle database. 
    10871097        """, 
    10881098    ), 
    1089     PythonSourcePage(u"pycoco", 
    1090         XISTPage(u"history", 
    1091             crumb=u"History", 
    1092             title=u"Pycoco history · Python software · LivingLogic AG", 
    1093             header=u"Pycoco history", 
    1094             subheader=u"The development history", 
    1095             url=u"root:pycoco/History.html", 
    1096             localkeywords=[u"packages", u"history", u"changes", u"version"], 
    1097             hint=(u"ChangeLog for", doc.mod("pycoco")), 
    1098         ), 
    1099         XISTPage(u"installation", 
    1100             crumb=u"Installation", 
    1101             title=u"Pycoco requirements, installation and configuration · Python software · LivingLogic AG", 
    1102             header=u"Pycoco installation", 
    1103             subheader=u"Requirements, installation and configuration", 
    1104             url=u"root:pycoco/Installation.html", 
    1105             localkeywords=[u"installation", u"distutils"], 
    1106             hint=(u"How to install ", doc.mod("pycoco")), 
    1107         ), 
    1108         crumb=u"Pycoco", 
    1109         title=u"Pycoco · Python software · LivingLogic AG", 
    1110         header=u"Pycoco", 
    1111         subheader=(u"Python code coverage report"), 
    1112         url=u"root:pycoco/index.html", 
    1113         localkeywords=[u"test", u"Python", "code coverage"], 
    1114         hint=u"Python code coverage", 
    1115         description=u""" 
     1099    PythonSourcePage("pycoco", 
     1100        XISTPage("history", 
     1101            crumb="History", 
     1102            title="Pycoco history · Python software · LivingLogic AG", 
     1103            header="Pycoco history", 
     1104            subheader="The development history", 
     1105            url="root:pycoco/History.html", 
     1106            localkeywords=["packages", "history", "changes", "version"], 
     1107            hint=("ChangeLog for", doc.mod("pycoco")), 
     1108        ), 
     1109        XISTPage("installation", 
     1110            crumb="Installation", 
     1111            title="Pycoco requirements, installation and configuration · Python software · LivingLogic AG", 
     1112            header="Pycoco installation", 
     1113            subheader="Requirements, installation and configuration", 
     1114            url="root:pycoco/Installation.html", 
     1115            localkeywords=["installation", "distutils"], 
     1116            hint=("How to install ", doc.mod("pycoco")), 
     1117        ), 
     1118        crumb="Pycoco", 
     1119        title="Pycoco · Python software · LivingLogic AG", 
     1120        header="Pycoco", 
     1121        subheader=("Python code coverage report"), 
     1122        url="root:pycoco/index.html", 
     1123        localkeywords=["test", "Python", "code coverage"], 
     1124        hint="Python code coverage", 
     1125        description=""" 
    11161126        A script that can be used to generate code coverage info 
    11171127        for the Python source code. 
    11181128        """, 
    11191129    ), 
    1120     XISTPage(u"download", 
    1121         crumb=u"Download", 
    1122         title=u"Download · Python software · LivingLogic AG", 
     1130    XISTPage("download", 
     1131        crumb="Download", 
     1132        title="Download · Python software · LivingLogic AG", 
    11231133        header="Downloads", 
    1124         subheader=u"All versions for download", 
    1125         url=u"root:Download.html", 
    1126         localkeywords=[u"download", u"file", u"archive"], 
    1127         hint=u"Links to Windows and Linux, source and binary distributions", 
    1128     ), 
    1129     XISTPage(u"source", 
    1130         crumb=u"Source code", 
    1131         title=u"Source code · Python software · LivingLogic AG", 
    1132         header=u"Source code", 
    1133         subheader=(u"Access to the Mercurial repositories"), 
    1134         url=u"root:Source.html", 
    1135         localkeywords=[u"Mercurial", u"development", u"repository"], 
    1136         hint=u"Access to the Mercurial repositories", 
    1137         description=u""" 
     1134        subheader="All versions for download", 
     1135        url="root:Download.html", 
     1136        localkeywords=["download", "file", "archive"], 
     1137        hint="Links to Windows and Linux, source and binary distributions", 
     1138    ), 
     1139    XISTPage("source", 
     1140        crumb="Source code", 
     1141        title="Source code · Python software · LivingLogic AG", 
     1142        header="Source code", 
     1143        subheader=("Access to the Mercurial repositories"), 
     1144        url="root:Source.html", 
     1145        localkeywords=["Mercurial", "development", "repository"], 
     1146        hint="Access to the Mercurial repositories", 
     1147        description=""" 
    11381148        Provides a link to the Mercurial repositories for all 
    11391149        Open Source Python projects by LivingLogic. 
    11401150        """ 
    11411151    ), 
    1142     crumb=u"Python software", 
    1143     title=u"Python software · LivingLogic AG", 
    1144     header=u"Python packages", 
    1145     subheader=u"Python packages and modules by LivingLogic", 
    1146     url=u"root:index.html", 
    1147     inheritablekeywords=[u"Living", u"Logic", u"LivingLogic", u"Bayreuth", u"Python"], 
    1148     localkeywords=[u"packages", abbr.xist(), u"sisyphus", u"toxic", u"orasql"], 
    1149     hint=u"list of projects", 
    1150     description=u""" 
     1152    crumb="Python software", 
     1153    title="Python software · LivingLogic AG", 
     1154    header="Python packages", 
     1155    subheader="Python packages and modules by LivingLogic", 
     1156    url="root:index.html", 
     1157    inheritablekeywords=["Living", "Logic", "LivingLogic", "Bayreuth", "Python"], 
     1158    localkeywords=["packages", abbr.xist(), "sisyphus", "toxic", "orasql"], 
     1159    hint="list of projects", 
     1160    description=""" 
    11511161    LivingLogic provides several Open Source Python packages: 
    11521162    XIST, ll-url, ll-make, ll-color, ll-sisyphus, ll-toxic, ll-ul4, ll-orasql 
     
    11631173    def convert(self, converter): 
    11641174        if "ref" in self.attrs: 
    1165             page = pages[unicode(self.attrs.ref.convert(converter))] 
     1175            page = pages[str(self.attrs.ref.convert(converter))] 
    11661176        else: 
    11671177            page = pages 
     
    12101220        href = ("http://ftp.livinglogic.de/", u.relative(self.base)) 
    12111221        if target.xmlns == doc.xmlns: 
    1212             e = target.li(target.a(unicode(name), href=href), " (", type,")") 
     1222            e = target.li(target.a(str(name), href=href), " (", type,")") 
    12131223        else: 
    12141224            e = html.tr( 
    1215                 html.td(html.a(unicode(name), href=href, title=("Download ", href)), class_="file"), 
     1225                html.td(html.a(str(name), href=href, title=("Download ", href)), class_="file"), 
    12161226                html.td(type, class_="type"), 
    12171227                html.td(u.size(), class_="size"), 
     
    13261336        while page is not None: 
    13271337            if page is context.page: 
    1328                 e.insert(0, html.span(page.crumb, class_=u"here")) 
     1338                e.insert(0, html.span(page.crumb, class_="here")) 
    13291339            else: 
    13301340                e.insert(0, pageref(page.crumb, ref=page.getPathString())) 
    1331             e.insert(0, u"\xa0\u203a\xa0") 
     1341            e.insert(0, "\xa0\u203a\xa0") 
    13321342            page = page.parent 
    1333         e.insert(0, html.a(u"Home", href=u"http://www.livinglogic.de/", hreflang=u"de", title=u"The company homepage (in german)")) 
     1343        e.insert(0, html.a("Home", href="http://www.livinglogic.de/", hreflang="de", title="The company homepage (in german)")) 
    13341344        return e 
    13351345 
     
    13381348        target = converter.target 
    13391349        context = converter[self] 
    1340         context.path = unicode(self["path"].convert(converter)) 
     1350        context.path = str(self["path"].convert(converter)) 
    13411351        context.page = pages[context.path] 
    13421352        if target.xmlns == doc.xmlns: 
     
    13461356        else: 
    13471357            with xsc.build(): 
    1348                 with xsc.Frag(xml.XML(), u"\n", target.DocTypeXHTML10transitional(), u"\n") as e: 
    1349                     with target.html(xml.Attrs(lang=u"en"), lang=u"en"): 
     1358                with xsc.Frag(xml.XML(), "\n", target.DocTypeXHTML10transitional(), "\n") as e: 
     1359                    with target.html(xml.Attrs(lang="en"), lang="en"): 
    13501360                        with target.head(): 
    13511361                            +meta.contenttype() 
    1352                             +target.title(unicode(xsc.Frag(context.page.title).convert(converter))) 
     1362                            +target.title(str(xsc.Frag(context.page.title).convert(converter))) 
    13531363                            if context.page.keywords: 
    13541364                                +meta.keywords(xsc.Frag(*context.page.keywords).withsep(", ")) 
    13551365                            if context.page.description is not None: 
    13561366                                +meta.description(context.page.description) 
    1357                             +meta.stylesheet(href="root:main_screen.css", media=u"screen, projection, tv") 
    1358                             +meta.stylesheet(href="root:main_print.css", media=u"print") 
    1359                             +meta.author(name=u"Walter Dörwald", email=u"walter.doerwald@livinglogic.de") 
    1360                             icbm = u"49.9550; 11.5909" 
    1361                             +html.meta(name=u"icbm", content=icbm) 
    1362                             +html.meta(name=u"geo.position", content=icbm) 
    1363                             +html.meta(name=u"geo.placename", content=u"Bayreuth, Germany, Europe") 
    1364                             +html.meta(name=u"geo.region", content=u"DE-BY") 
    1365                             +html.meta(name=u"DC.title", content=context.page.title) 
    1366                             +html.link(rel=u"icon", href=u"root:images/favicon.gif", type=u"image/gif") 
     1367                            +meta.stylesheet(href="root:main_screen.css", media="screen, projection, tv") 
     1368                            +meta.stylesheet(href="root:main_print.css", media="print") 
     1369                            +meta.author(name="Walter Dörwald", email="walter.doerwald@livinglogic.de") 
     1370                            icbm = "49.9550; 11.5909" 
     1371                            +html.meta(name="icbm", content=icbm) 
     1372                            +html.meta(name="geo.position", content=icbm) 
     1373                            +html.meta(name="geo.placename", content="Bayreuth, Germany, Europe") 
     1374                            +html.meta(name="geo.region", content="DE-BY") 
     1375                            +html.meta(name="DC.title", content=context.page.title) 
     1376                            +html.link(rel="icon", href="root:images/favicon.gif", type="image/gif") 
    13671377                            top = context.page.getRoot() 
    13681378                            if top is not None and top != context.page: 
     
    13981408                                    with html.tr(valign="middle"): 
    13991409                                        +html.td(self._crumbs(context), class_="crumbs") 
    1400                                         +html.td(xsc.Frag(context.page.alternates()).withsep(u"\xa0\xb7\xa0"), align="right", class_="alternate") 
     1410                                        +html.td(xsc.Frag(context.page.alternates()).withsep("\xa0\xb7\xa0"), align="right", class_="alternate") 
    14011411                            with html.div(class_="body"): 
    14021412                                +html.div(self._links(context), class_="links") 
  • site/m.py

    r678 r679  
    6464            f1 = self.add(make.FileAction(srcdir/id)) 
    6565            f2 = self.add(make.FileAction(builddir/id, f1)) 
    66             f3 = self.add(make.FileAction(installdir/id, f2).chmod(0644)) 
     66            f3 = self.add(make.FileAction(installdir/id, f2).chmod(0o644)) 
    6767            if aux: 
    6868                auxFiles.append(f2) 
     
    7373            f1 = self.add(make.FileAction(xistdir/id)) 
    7474            f2 = self.add(make.FileAction(builddir/id, f1)) 
    75             f3 = self.add(make.FileAction(installdir/id, f2).chmod(0644)) 
     75            f3 = self.add(make.FileAction(installdir/id, f2).chmod(0o644)) 
    7676            auxFiles.append(f2) 
    7777            build.addinputs(f2) 
     
    258258                    collect.addinputs(*mods) 
    259259                    mod2 = self.add(make.FileAction(builddir/(path + "_module.py"), mods[0])) 
    260                     mod3 = self.add(make.FileAction(installdir/(path + "_module.py"), mod2).chmod(0644)) 
     260                    mod3 = self.add(make.FileAction(installdir/(path + "_module.py"), mod2).chmod(0o644)) 
    261261                    build.addinputs(mod2) 
    262262                    install.addinputs(mod3) 
     
    279279                pagesrcid = id 
    280280                f2 = self.add(make.FileAction(builddir/pagesrcid, f)) 
    281                 f3 = self.add(make.FileAction(installdir/pagesrcid, f2).chmod(0644)) 
     281                f3 = self.add(make.FileAction(installdir/pagesrcid, f2).chmod(0o644)) 
    282282                build.addinputs(f2) 
    283283                install.addinputs(f3) 
     
    302302                    ) 
    303303                ).callattr("conv", target=html) 
    304                 t2 = make.CallAction(html.astext, t2) 
     304                t2 = make.CallAction(html.astext, t2).callattr("encode", "utf-8") 
    305305                t2 = make.FileAction(builddir/txtid, t2) 
    306306 
    307                 t3 = self.add(make.FileAction(installdir/txtid, t2).chmod(0644)) 
     307                t3 = self.add(make.FileAction(installdir/txtid, t2).chmod(0o644)) 
    308308                build.addinputs(t2) 
    309309                install.addinputs(t3) 
  • site/ul4on/index.htmlxsc

    r627 r679  
    11<?xml version='1.0' encoding='utf-8'?> 
    2 <py:page path="ul4" xmlns:py="http://xmlns.livinglogic.de/Python"> 
     2<py:page path="ul4on" xmlns:py="http://xmlns.livinglogic.de/Python"> 
    33<?pyeval 
    4     from ll import ul4c 
     4    from ll import ul4on 
    55    from ll.xist.ns import doc 
    6     return doc.explain(ul4c) 
     6    return doc.explain(ul4on) 
    77?> 
    88</py:page>