Implemented the required command actions for supporting development of Pyramid projects.

Tue, 28 Aug 2012 17:15:21 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 28 Aug 2012 17:15:21 +0200
changeset 2
e691c51ab655
parent 1
012c492a9bd6
child 3
76c45d31d462

Implemented the required command actions for supporting development of Pyramid projects.

.hgignore file | annotate | diff | comparison | revisions
PluginProjectPyramid.py file | annotate | diff | comparison | revisions
PluginPyramid.e4p file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/Chameleon-2.9.2.api file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/Chameleon-2.9.2.bas file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/Mako-0.7.2.api file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/Mako-0.7.bas file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/MarkupSafe-0.15.api file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/MarkupSafe-0.bas file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/PasteDeploy-1.5.0.api file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/PasteDeploy-1.5.bas file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/Pyramid-1.3.3.api file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/Pyramid-1.3.bas file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/Translationstring-1.1.api file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/Translationstring-1.bas file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/Venusian-1.0a6.api file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/Venusian-1.bas file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/WebOb-1.2.2.api file | annotate | diff | comparison | revisions
ProjectPyramid/APIs/WebOb-1.2.bas file | annotate | diff | comparison | revisions
ProjectPyramid/ConfigurationPage/PyramidPage.py file | annotate | diff | comparison | revisions
ProjectPyramid/ConfigurationPage/PyramidPage.ui file | annotate | diff | comparison | revisions
ProjectPyramid/ConfigurationPage/__init__.py file | annotate | diff | comparison | revisions
ProjectPyramid/CreateParametersDialog.py file | annotate | diff | comparison | revisions
ProjectPyramid/CreateParametersDialog.ui file | annotate | diff | comparison | revisions
ProjectPyramid/DistributionTypeSelectionDialog.py file | annotate | diff | comparison | revisions
ProjectPyramid/DistributionTypeSelectionDialog.ui file | annotate | diff | comparison | revisions
ProjectPyramid/FormSelectionDialog.py file | annotate | diff | comparison | revisions
ProjectPyramid/FormSelectionDialog.ui file | annotate | diff | comparison | revisions
ProjectPyramid/Project.py file | annotate | diff | comparison | revisions
ProjectPyramid/PyramidDialog.py file | annotate | diff | comparison | revisions
ProjectPyramid/PyramidDialog.ui file | annotate | diff | comparison | revisions
ProjectPyramid/i18n/pyramid_de.qm file | annotate | diff | comparison | revisions
ProjectPyramid/i18n/pyramid_de.ts file | annotate | diff | comparison | revisions
ProjectPyramid/icons/pyramid.png file | annotate | diff | comparison | revisions
ProjectPyramid/icons/pyramid64.png file | annotate | diff | comparison | revisions
__init__.py file | annotate | diff | comparison | revisions
--- a/.hgignore	Mon Aug 20 17:54:44 2012 +0200
+++ b/.hgignore	Tue Aug 28 17:15:21 2012 +0200
@@ -15,3 +15,4 @@
 glob:tmp
 glob:__pycache__
 glob:**.DS_Store
+glob:Ui_*.py
--- a/PluginProjectPyramid.py	Mon Aug 20 17:54:44 2012 +0200
+++ b/PluginProjectPyramid.py	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,355 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Pyramid project plugin.
+"""
+
+import os
+import glob
+import fnmatch
+
+from PyQt4.QtCore import QCoreApplication, QObject, QTranslator
+##from PyQt4.QtGui import QApplication
+
+from E5Gui.E5Application import e5App
+
+import Preferences
+
+from Globals import isWindowsPlatform, isMacPlatform
+
+from Project.ProjectBrowser import SourcesBrowserFlag, FormsBrowserFlag, \
+    TranslationsBrowserFlag, OthersBrowserFlag
+
+from ProjectPyramid.Project import Project
+
+# Start-of-Header
+name = "Pyramid Project Plugin"
+author = "Detlev Offenbach <detlev@die-offenbachs.de>"
+autoactivate = True
+deactivateable = True
+version = "0.1.0"
+className = "ProjectPyramidPlugin"
+packageName = "ProjectPyramid"
+shortDescription = "Project support for Pyramid projects."
+longDescription = """This plugin implements project support for Pyramid projects."""
+needsRestart = False
+pyqtApi = 2
+# End-of-Header
+
+error = ""
+
+pyramidPluginObject = None
+
+def createPyramidPage(configDlg):
+    """
+    Module function to create the Pyramid configuration page.
+    
+    @return reference to the configuration page
+    """
+    global pyramidPluginObject
+    from ProjectPyramid.ConfigurationPage.PyramidPage import PyramidPage
+    page = PyramidPage(pyramidPluginObject)
+    return page
+    
+def getConfigData():
+    """
+    Module function returning data as required by the configuration dialog.
+    
+    @return dictionary containing the relevant data
+    """
+    if e5App().getObject("UserInterface").versionIsNewer('5.0.99', '20120101'):
+        return {
+            "pyramidPage" : \
+                [QCoreApplication.translate("ProjectPyramidPlugin", "Pyramid"), 
+                 os.path.join("ProjectPyramid", "icons", 
+                              "pyramid.png"),
+                 createPyramidPage, None, None],
+        }
+    else:
+        return {}
+
+def apiFiles(language):
+    """
+    Module function to return the API files made available by this plugin.
+    
+    @return list of API filenames (list of string)
+    """
+    if language in ["Python3",  "Python2"]:
+        apisDir = \
+            os.path.join(os.path.dirname(__file__), "ProjectPyramid", "APIs")
+        apis = glob.glob(os.path.join(apisDir, '*.api'))
+    else:
+        apis = []
+    return apis
+
+def prepareUninstall():
+    """
+    Module function to prepare for an uninstallation.
+    """
+    pyramid = ProjectPyramidPlugin(None)
+    pyramid.prepareUninstall()
+
+
+class ProjectPyramidPlugin(QObject):
+    """
+    Class implementing the Pyramid project plugin.
+    """
+    lexerAssociations = {
+        "*.mako": "Pygments|HTML+Mako", 
+        "*.pt": "Pygments|HTML+Genshi", 
+        "*.txt": "Pygments|Genshi", 
+        "*.html": "Pygments|HTML+Genshi", 
+        "*.htm": "Pygments|HTML+Genshi", 
+    }
+    
+    def __init__(self, ui):
+        """
+        Constructor
+        
+        @param ui reference to the user interface object (UI.UserInterface)
+        """
+        QObject.__init__(self, ui)
+        self.__ui = ui
+        self.__initialize()
+        
+        # TODO: get rid of the consoles
+        self.__defaults = {
+            "VirtualEnvironmentPy2" : "", 
+            "VirtualEnvironmentPy3" : "", 
+            "Python2ConsoleType": "python", 
+            "Python3ConsoleType": "python", 
+            "ServerPort": 0, 
+            "PyramidDocUrl": "http://docs.pylonsproject.org/en/latest/docs/pyramid.html", 
+        }
+        if isWindowsPlatform():
+            self.__defaults["ConsoleCommandNoClose"] = "cmd.exe /k"
+            self.__defaults["ConsoleCommand"] = "cmd.exe /c"
+        elif isMacPlatform():
+            self.__defaults["ConsoleCommandNoClose"] = "xterm -hold -e"
+            self.__defaults["ConsoleCommand"] = "xterm -e"
+        else:
+            self.__defaults["ConsoleCommandNoClose"] = "konsole --noclose -e"
+            self.__defaults["ConsoleCommand"] = "konsole -e"
+        
+        self.__translator = None
+        self.__loadTranslator()
+    
+    def __initialize(self):
+        """
+        Private slot to (re)initialize the plugin.
+        """
+        self.__object = None
+        
+        self.__mainAct = None
+        self.__mainMenu = None
+        
+        self.__e5project = e5App().getObject("Project")
+    
+    def __checkVersions(self):
+        """
+        Private function to check that the eric5 version is ok.
+        
+        @return flag indicating version is ok (boolean)
+        """
+        global error
+        
+        if self.__ui.versionIsNewer('5.0.99', '20120101'):
+            error = ""
+        else:
+            error = self.trUtf8("eric5 version is too old, {0}, {1} or newer needed.")\
+                .format("5.1.0", "20120101")
+            return False
+        
+        return True
+    
+    def activate(self):
+        """
+        Public method to activate this plugin.
+        
+        @return tuple of None and activation status (boolean)
+        """
+        if not self.__checkVersions():
+            return None, False
+        
+        global pyramidPluginObject
+        pyramidPluginObject = self
+        
+        self.__object = Project(self, self.__ui)
+        self.__object.initActions()
+        e5App().registerPluginObject("ProjectPyramid", self.__object)
+        
+        self.__mainMenu = self.__object.initMenu()
+        
+        self.__e5project.registerProjectType("Pyramid", self.trUtf8("Pyramid"), 
+            self.fileTypesCallback, 
+            lexerAssociationCallback = self.lexerAssociationCallback, 
+            binaryTranslationsCallback = self.binaryTranslationsCallback)
+        Preferences.setProjectBrowserFlagsDefault("Pyramid", 
+            SourcesBrowserFlag | \
+            FormsBrowserFlag | \
+            TranslationsBrowserFlag | \
+            OthersBrowserFlag,
+        )
+        
+        if self.__e5project.isOpen():
+            self.__projectOpened()
+            self.__object.projectOpenedHooks()
+        
+        e5App().getObject("Project").projectOpened.connect(self.__projectOpened)
+        e5App().getObject("Project").projectClosed.connect(self.__projectClosed)
+        e5App().getObject("Project").newProject.connect(self.__projectOpened)
+        
+        e5App().getObject("Project").projectOpenedHooks.connect(
+            self.__object.projectOpenedHooks)
+        e5App().getObject("Project").projectClosedHooks.connect(
+                     self.__object.projectClosedHooks)
+        e5App().getObject("Project").newProjectHooks.connect(
+                     self.__object.projectOpenedHooks)
+        
+        return None, True
+    
+    def deactivate(self):
+        """
+        Public method to deactivate this plugin.
+        """
+        e5App().unregisterPluginObject("ProjectPyramid")
+        
+        e5App().getObject("Project").projectOpened.disconnect(self.__projectOpened)
+        e5App().getObject("Project").projectClosed.disconnect(self.__projectClosed)
+        e5App().getObject("Project").newProject.disconnect(self.__projectOpened)
+        
+        e5App().getObject("Project").projectOpenedHooks.disconnect(
+            self.__object.projectOpenedHooks)
+        e5App().getObject("Project").projectClosedHooks.disconnect(
+            self.__object.projectClosedHooks)
+        e5App().getObject("Project").newProjectHooks.disconnect(
+            self.__object.projectOpenedHooks)
+        
+        self.__e5project.unregisterProjectType("Pyramid")
+        
+        self.__object.projectClosedHooks()
+        self.__projectClosed()
+        
+        self.__initialize()
+    
+    def __loadTranslator(self):
+        """
+        Private method to load the translation file.
+        """
+        if self.__ui is not None:
+            loc = self.__ui.getLocale()
+            if loc and loc != "C":
+                locale_dir = \
+                    os.path.join(os.path.dirname(__file__), "ProjectPyramid", "i18n")
+                translation = "pyramid_%s" % loc
+                translator = QTranslator(None)
+                loaded = translator.load(translation, locale_dir)
+                if loaded:
+                    self.__translator = translator
+                    e5App().installTranslator(self.__translator)
+                else:
+                    print("Warning: translation file '{0}' could not be loaded.".format(
+                        translation))
+                    print("Using default.")
+    
+    def __projectOpened(self):
+        """
+        Private slot to handle the projectOpened signal.
+        """
+        if self.__e5project.getProjectType() == "Pyramid":
+            projectAct = self.__ui.getMenuBarAction("project")
+            actions = self.__ui.menuBar().actions()
+            insertAct = actions[actions.index(projectAct) + 1]
+            self.__mainAct = self.__ui.menuBar().insertMenu(insertAct, self.__mainMenu)
+    
+    def __projectClosed(self):
+        """
+        Private slot to handle the projectClosed signal.
+        """
+        if self.__mainAct is not None:
+            self.__ui.menuBar().removeAction(self.__mainAct)
+            self.__mainAct = None
+            self.__object.projectClosed()
+    
+    def fileTypesCallback(self):
+        """
+        Public method get the filetype associations of the Pyramid project type.
+        
+        @return dictionary with file type associations
+        """
+        if self.__e5project.getProjectType() == "Pyramid":
+            fileTypes = {
+                "*.mako": "FORMS", 
+                "*.mak": "FORMS", 
+                "*.pt": "FORMS", 
+                "*.html": "FORMS", 
+                "*.htm": "FORMS", 
+                "*.js": "SOURCES",
+                "*.pot": "TRANSLATIONS", 
+                "*.po": "TRANSLATIONS", 
+                "*.mo": "TRANSLATIONS", 
+            }
+        else:
+            fileTypes = {}
+        return fileTypes
+    
+    def lexerAssociationCallback(self, filename):
+        """
+        Public method to get the lexer association of the Pyramid project type for
+        a file.
+        
+        @param filename name of the file (string)
+        @return name of the lexer (string) (Pygments lexers are prefixed with 'Pygments|')
+        """
+        for pattern, language in self.lexerAssociations.items():
+            if fnmatch.fnmatch(filename, pattern):
+                return language
+        
+        return ""
+    
+    def binaryTranslationsCallback(self, filename):
+        """
+        Public method to determine the filename of a compiled translation file
+        given the translation source file.
+        
+        @param filename name of the translation source file (string)
+        @return name of the binary translation file (string)
+        """
+        if filename.endswith(".po"):
+            filename = filename.replace(".po", ".mo")
+        return filename
+    
+    def getPreferences(self, key):
+        """
+        Public method to retrieve the various settings.
+        
+        @param key the key of the value to get
+        @param prefClass preferences class used as the storage area
+        @return the requested setting
+        """
+        if key == "ServerPort":
+            return int(Preferences.Prefs.settings.value("Pyramid/" + key,
+                self.__defaults[key]))
+        else:
+            return Preferences.Prefs.settings.value("Pyramid/" + key,
+                self.__defaults[key])
+    
+    def setPreferences(self, key, value):
+        """
+        Public method to store the various settings.
+        
+        @param key the key of the setting to be set (string)
+        @param value the value to be set
+        @param prefClass preferences class used as the storage area
+        """
+        Preferences.Prefs.settings.setValue("Pyramid/" + key, value)
+    
+    def prepareUninstall(self):
+        """
+        Public method to prepare for an uninstallation.
+        """
+        Preferences.removeProjectBrowserFlags("Pyramid")
+        Preferences.Prefs.settings.remove("Pyramid")
--- a/PluginPyramid.e4p	Mon Aug 20 17:54:44 2012 +0200
+++ b/PluginPyramid.e4p	Tue Aug 28 17:15:21 2012 +0200
@@ -10,17 +10,53 @@
   <Version>0.1</Version>
   <Author>Detlev Offenbach</Author>
   <Email>detlev@die-offenbachs.de</Email>
+  <TranslationPattern>ProjectPyramid/i18n/pyramid_%language%.ts</TranslationPattern>
   <Eol index="1"/>
   <Sources>
     <Source>__init__.py</Source>
     <Source>PluginProjectPyramid.py</Source>
+    <Source>ProjectPyramid/__init__.py</Source>
+    <Source>ProjectPyramid/ConfigurationPage/__init__.py</Source>
+    <Source>ProjectPyramid/ConfigurationPage/Ui_PyramidPage.py</Source>
+    <Source>ProjectPyramid/ConfigurationPage/PyramidPage.py</Source>
+    <Source>ProjectPyramid/Project.py</Source>
+    <Source>ProjectPyramid/FormSelectionDialog.py</Source>
+    <Source>ProjectPyramid/CreateParametersDialog.py</Source>
+    <Source>ProjectPyramid/PyramidDialog.py</Source>
+    <Source>ProjectPyramid/DistributionTypeSelectionDialog.py</Source>
   </Sources>
-  <Forms/>
-  <Translations/>
+  <Forms>
+    <Form>ProjectPyramid/ConfigurationPage/PyramidPage.ui</Form>
+    <Form>ProjectPyramid/FormSelectionDialog.ui</Form>
+    <Form>ProjectPyramid/CreateParametersDialog.ui</Form>
+    <Form>ProjectPyramid/PyramidDialog.ui</Form>
+    <Form>ProjectPyramid/DistributionTypeSelectionDialog.ui</Form>
+  </Forms>
+  <Translations>
+    <Translation>ProjectPyramid/i18n/pyramid_de.ts</Translation>
+    <Translation>ProjectPyramid/i18n/pyramid_de.qm</Translation>
+  </Translations>
   <Resources/>
   <Interfaces/>
   <Others>
     <Other>.hgignore</Other>
+    <Other>ProjectPyramid/APIs/Chameleon-2.9.2.api</Other>
+    <Other>ProjectPyramid/APIs/Chameleon-2.9.2.bas</Other>
+    <Other>ProjectPyramid/APIs/Mako-0.7.2.api</Other>
+    <Other>ProjectPyramid/APIs/Mako-0.7.bas</Other>
+    <Other>ProjectPyramid/APIs/MarkupSafe-0.15.api</Other>
+    <Other>ProjectPyramid/APIs/MarkupSafe-0.bas</Other>
+    <Other>ProjectPyramid/APIs/PasteDeploy-1.5.0.api</Other>
+    <Other>ProjectPyramid/APIs/PasteDeploy-1.5.bas</Other>
+    <Other>ProjectPyramid/APIs/Pyramid-1.3.3.api</Other>
+    <Other>ProjectPyramid/APIs/Pyramid-1.3.bas</Other>
+    <Other>ProjectPyramid/APIs/Translationstring-1.1.api</Other>
+    <Other>ProjectPyramid/APIs/Translationstring-1.bas</Other>
+    <Other>ProjectPyramid/APIs/Venusian-1.0a6.api</Other>
+    <Other>ProjectPyramid/APIs/Venusian-1.bas</Other>
+    <Other>ProjectPyramid/APIs/WebOb-1.2.2.api</Other>
+    <Other>ProjectPyramid/APIs/WebOb-1.2.bas</Other>
+    <Other>ProjectPyramid/icons/pyramid.png</Other>
   </Others>
   <MainScript>PluginProjectPyramid.py</MainScript>
   <Vcs>
@@ -140,5 +176,6 @@
     <FiletypeAssociation pattern="*.ts" type="TRANSLATIONS"/>
     <FiletypeAssociation pattern="*.ui" type="FORMS"/>
     <FiletypeAssociation pattern="*.ui.h" type="FORMS"/>
+    <FiletypeAssociation pattern="Ui_*.py" type="__IGNORE__"/>
   </FiletypeAssociations>
 </Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/Chameleon-2.9.2.api	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,588 @@
+ast24.AST._attributes?8
+ast24.AST._fields?8
+ast24.AST?1(*args, **kwargs)
+ast24.ExceptHandler._fields?8
+ast24.NodeVisitor.generic_visit?4(node)
+ast24.NodeVisitor.visit?4(node)
+ast24._fix?5(node, lineno, col_offset)
+ast24.fix_missing_locations?4(node)
+ast24.iter_child_nodes?4(node)
+ast24.iter_fields?4(node)
+ast24.walk?4(node)
+astutil.ASTCodeGenerator._change_indent?5(delta)
+astutil.ASTCodeGenerator._f?5(node)
+astutil.ASTCodeGenerator._new_line?5()
+astutil.ASTCodeGenerator._process_slice?5()
+astutil.ASTCodeGenerator._write?5(s)
+astutil.ASTCodeGenerator.binary_operators?7
+astutil.ASTCodeGenerator.bool_operators?7
+astutil.ASTCodeGenerator.comparison_operators?7
+astutil.ASTCodeGenerator.flush?4()
+astutil.ASTCodeGenerator.unary_operators?7
+astutil.ASTCodeGenerator.visit?4(node)
+astutil.ASTCodeGenerator.visit_Assert?4(node)
+astutil.ASTCodeGenerator.visit_Assign?4(node)
+astutil.ASTCodeGenerator.visit_Attribute?4(node)
+astutil.ASTCodeGenerator.visit_AugAssign?4(node)
+astutil.ASTCodeGenerator.visit_BinOp?4(node)
+astutil.ASTCodeGenerator.visit_BoolOp?4(node)
+astutil.ASTCodeGenerator.visit_Break?4(node)
+astutil.ASTCodeGenerator.visit_Call?4(node)
+astutil.ASTCodeGenerator.visit_ClassDef?4(node)
+astutil.ASTCodeGenerator.visit_Compare?4(node)
+astutil.ASTCodeGenerator.visit_Continue?4(node)
+astutil.ASTCodeGenerator.visit_Delete?4(node)
+astutil.ASTCodeGenerator.visit_Dict?4(node)
+astutil.ASTCodeGenerator.visit_ExceptHandler?4(node)
+astutil.ASTCodeGenerator.visit_Exec?4(node)
+astutil.ASTCodeGenerator.visit_Expr?4(node)
+astutil.ASTCodeGenerator.visit_Expression?4(node)
+astutil.ASTCodeGenerator.visit_For?4(node)
+astutil.ASTCodeGenerator.visit_FunctionDef?4(node)
+astutil.ASTCodeGenerator.visit_GeneratorExp?4(node)
+astutil.ASTCodeGenerator.visit_Global?4(node)
+astutil.ASTCodeGenerator.visit_If?4(node)
+astutil.ASTCodeGenerator.visit_IfExp?4(node)
+astutil.ASTCodeGenerator.visit_Import?4(node)
+astutil.ASTCodeGenerator.visit_ImportFrom?4(node)
+astutil.ASTCodeGenerator.visit_Interactive?7
+astutil.ASTCodeGenerator.visit_Lambda?4(node)
+astutil.ASTCodeGenerator.visit_List?4(node)
+astutil.ASTCodeGenerator.visit_ListComp?4(node)
+astutil.ASTCodeGenerator.visit_Module?4(node)
+astutil.ASTCodeGenerator.visit_Name?4(node)
+astutil.ASTCodeGenerator.visit_Num?4(node)
+astutil.ASTCodeGenerator.visit_Pass?4(node)
+astutil.ASTCodeGenerator.visit_Print?4(node)
+astutil.ASTCodeGenerator.visit_Raise?4(node)
+astutil.ASTCodeGenerator.visit_Repr?4(node)
+astutil.ASTCodeGenerator.visit_Return?4(node)
+astutil.ASTCodeGenerator.visit_Set?4(node)
+astutil.ASTCodeGenerator.visit_Str?4(node)
+astutil.ASTCodeGenerator.visit_Subscript?4(node)
+astutil.ASTCodeGenerator.visit_Suite?7
+astutil.ASTCodeGenerator.visit_Try?4(node)
+astutil.ASTCodeGenerator.visit_TryExcept?4(node)
+astutil.ASTCodeGenerator.visit_TryFinally?4(node)
+astutil.ASTCodeGenerator.visit_Tuple?4(node)
+astutil.ASTCodeGenerator.visit_UnaryOp?4(node)
+astutil.ASTCodeGenerator.visit_While?4(node)
+astutil.ASTCodeGenerator.visit_With?4(node)
+astutil.ASTCodeGenerator.visit_Yield?4(node)
+astutil.ASTCodeGenerator.visit_alias?4(node)
+astutil.ASTCodeGenerator.visit_arg?4(node)
+astutil.ASTCodeGenerator.visit_arguments?4(node)
+astutil.ASTCodeGenerator.visit_excepthandler?7
+astutil.ASTCodeGenerator.with_parens?4()
+astutil.ASTCodeGenerator?1(tree)
+astutil.AnnotationAwareVisitor.apply_transform?4(node)
+astutil.AnnotationAwareVisitor.visit?4(node)
+astutil.Builtin._fields?8
+astutil.Builtin.ctx?7
+astutil.Comment._fields?8
+astutil.Comment.space?7
+astutil.Comment.stmt?7
+astutil.ItemLookupOnAttributeErrorVisitor.visit_Attribute?4(node)
+astutil.ItemLookupOnAttributeErrorVisitor?1(transform)
+astutil.NameLookupRewriteVisitor.visit_FunctionDef?4(node)
+astutil.NameLookupRewriteVisitor.visit_Lambda?4(node)
+astutil.NameLookupRewriteVisitor.visit_Name?4(node)
+astutil.NameLookupRewriteVisitor.visit_alias?4(node)
+astutil.NameLookupRewriteVisitor?1(transform)
+astutil.Node._fields?8
+astutil.Node?1(*args, **kwargs)
+astutil.Static._fields?8
+astutil.Static.name?7
+astutil.Symbol._fields?8
+astutil.annotated?4(value)
+astutil.copy?4(source, target)
+astutil.delete?4(name)
+astutil.load?4(name)
+astutil.marker?4(name)
+astutil.node_annotations?7
+astutil.param?4(name)
+astutil.parse?4(source, mode='eval')
+astutil.store?4(name)
+astutil.subscript?4(name, value, ctx)
+astutil.swap?4(root, replacement, name)
+astutil.walk_names?4(target, mode)
+benchmark.BIGTABLE_ZPT?7
+benchmark.Benchmarks._chameleon?5(**kwargs)
+benchmark.Benchmarks._getContext?5(contexts=None, **kwcontexts)
+benchmark.Benchmarks._pt_getEngineContext?5()
+benchmark.Benchmarks._zope?5()
+benchmark.Benchmarks.chameleon_cook_and_render?4()
+benchmark.Benchmarks.setUp?4()
+benchmark.Benchmarks.table?7
+benchmark.Benchmarks.test_bigtable?4()
+benchmark.Benchmarks.test_compilation?4()
+benchmark.Benchmarks.test_hello_world?4()
+benchmark.Benchmarks.test_i18n?4()
+benchmark.Benchmarks.test_many_strings?4()
+benchmark.Benchmarks.zope_cook_and_render?4()
+benchmark.END?7
+benchmark.HELLO_WORLD_ZPT?7
+benchmark.I18N_ZPT?7
+benchmark.MANY_STRINGS_ZPT?7
+benchmark.START?7
+benchmark.TAG?7
+benchmark.ZopeI18NContext.translate?4(msgid, domain=None, context=None, mapping=None, default=None)
+benchmark.benchmark?4(title)
+benchmark.bigtable_python_stream?4(table=None, renderer=None)
+benchmark.bigtable_python_stream_with_filter?4(table=None, renderer=None)
+benchmark.bigtable_python_tokens?4(table=None, renderer=None)
+benchmark.decorator?4(f)
+benchmark.re_amp?7
+benchmark.start?4()
+benchmark.stream_output?4(stream)
+benchmark.timing?4(func, *args, **kwargs)
+benchmark.uppercase_filter?4(stream)
+benchmark.wrapper?4(*args)
+benchmark.yield_stream?4(table=None)
+benchmark.yield_tokens?4(table=None)
+benchmark.yield_tokens_dict_version?4(**kwargs)
+codegen.TemplateCodeGenerator.define?4(name, node)
+codegen.TemplateCodeGenerator.names?7
+codegen.TemplateCodeGenerator.require?4(value)
+codegen.TemplateCodeGenerator.visit?4(node)
+codegen.TemplateCodeGenerator.visit_Builtin?4(node)
+codegen.TemplateCodeGenerator.visit_Comment?4(node)
+codegen.TemplateCodeGenerator.visit_Module?4(node)
+codegen.TemplateCodeGenerator.visit_Static?4(node)
+codegen.TemplateCodeGenerator.visit_Symbol?4(node)
+codegen.TemplateCodeGenerator?1(tree)
+codegen.Visitor.expr?7
+codegen.Visitor.visit_Name?4(node)
+codegen.reverse_builtin_map?7
+codegen.template?4(function, mode='exec', **kw)
+codegen.wrapper?4(*vargs, **kwargs)
+compiler.COMPILER_INTERNALS_OR_DISALLOWED?7
+compiler.Compiler._enter_assignment?5(names)
+compiler.Compiler._get_translation_identifiers?5(name)
+compiler.Compiler._leave_assignment?5(names)
+compiler.Compiler.defaults?7
+compiler.Compiler.exceptions?7
+compiler.Compiler.global_builtins?7
+compiler.Compiler.lock?7
+compiler.Compiler.visit?4(node)
+compiler.Compiler.visit_Alias?4(node)
+compiler.Compiler.visit_Assignment?4(node)
+compiler.Compiler.visit_Attribute?4(node)
+compiler.Compiler.visit_Cache?4(node)
+compiler.Compiler.visit_CodeBlock?4(node)
+compiler.Compiler.visit_Condition?4(node)
+compiler.Compiler.visit_Content?4(node)
+compiler.Compiler.visit_Context?4(node)
+compiler.Compiler.visit_Define?4(node)
+compiler.Compiler.visit_DefineSlot?4(node)
+compiler.Compiler.visit_Domain?4(node)
+compiler.Compiler.visit_Element?4(node)
+compiler.Compiler.visit_End?4(node)
+compiler.Compiler.visit_Interpolation?4(node)
+compiler.Compiler.visit_Macro?4(node)
+compiler.Compiler.visit_MacroProgram?4(node)
+compiler.Compiler.visit_Module?4(node)
+compiler.Compiler.visit_Name?4(node)
+compiler.Compiler.visit_Omit?4(node)
+compiler.Compiler.visit_OnError?4(node)
+compiler.Compiler.visit_Repeat?4(node)
+compiler.Compiler.visit_Sequence?4(node)
+compiler.Compiler.visit_Start?4(node)
+compiler.Compiler.visit_Text?4(node)
+compiler.Compiler.visit_Translate?4(node)
+compiler.Compiler.visit_UseExternalMacro?4(node)
+compiler.Compiler.visit_UseInternalMacro?4(node)
+compiler.Compiler?1(engine_factory, node, builtins={}, strict=True)
+compiler.ExpressionCompiler.assign_bool?4(target, s)
+compiler.ExpressionCompiler.assign_text?4(target)
+compiler.ExpressionCompiler.assign_value?4(target)
+compiler.ExpressionCompiler?1(compiler, engine)
+compiler.ExpressionEngine._convert_bool?5(target, s)
+compiler.ExpressionEngine._convert_text?5(target)
+compiler.ExpressionEngine.compiler?4(engine, result_type=None, *args)
+compiler.ExpressionEngine.get_compiler?4(expression, string)
+compiler.ExpressionEngine.parse?4(string)
+compiler.ExpressionEngine.supported_char_escape_set?7
+compiler.ExpressionEngine?1(parser, char_escape=(), default=None, default_marker=None)
+compiler.ExpressionEvaluator?1(engine, builtins)
+compiler.ExpressionTransform.loads_symbol?7
+compiler.ExpressionTransform.translate?4(expression, target)
+compiler.ExpressionTransform.visit_Boolean?4(node, target)
+compiler.ExpressionTransform.visit_Builtin?4(node, target)
+compiler.ExpressionTransform.visit_Default?4(node, target)
+compiler.ExpressionTransform.visit_Equality?4(node, target)
+compiler.ExpressionTransform.visit_Identity?4(node, target)
+compiler.ExpressionTransform.visit_Interpolation?4(node, target)
+compiler.ExpressionTransform.visit_Negate?4(node, target)
+compiler.ExpressionTransform.visit_Static?4(node, target)
+compiler.ExpressionTransform.visit_Substitution?4(node, target)
+compiler.ExpressionTransform.visit_Translate?4(node, target)
+compiler.ExpressionTransform.visit_Value?4(node, target)
+compiler.ExpressionTransform?1(engine_factory, cache, visitor, strict=True)
+compiler.Interpolator.braces_optional_regex?7
+compiler.Interpolator.braces_required_regex?7
+compiler.Interpolator?1(expression, braces_required, translate=False)
+compiler.NameTransform?1(builtins, aliases, internals)
+compiler.RE_MANGLE?7
+compiler.RE_NAME?7
+compiler.emit_bool?4(target, s, default_marker=None, default=None)
+compiler.emit_convert?4(target, encoded=byte_string, str=unicode_string, long=long, type=type, default_marker=None, default=None)
+compiler.emit_convert_and_escape?4(target, quote=None, quote_entity=None, str=unicode_string, long=long, type=type, encoded=byte_string, default_marker=None, default=None)
+compiler.emit_node?4(node)
+compiler.emit_node_if_non_trivial?4(node)
+compiler.emit_translate?4(target, msgid, default=None)
+compiler.identifier?4(prefix, suffix=None)
+compiler.load_econtext?4(name)
+compiler.log?7
+compiler.mangle?4(string)
+compiler.set_error?4(token, exception)
+compiler.store_econtext?4(name)
+compiler.store_rcontext?4(name)
+compiler.try_except_wrap?4(stmts, token)
+config.AUTO_RELOAD?7
+config.DEBUG_MODE?7
+config.EAGER_PARSING?7
+config.SOURCE_EXPRESSION_MARKER_LENGTH?7
+config.TRUE?7
+config.log?7
+config.path?7
+exc.ExceptionFormatter?1(errors, econtext, rcontext)
+exc.TemplateError?1(msg, token)
+exc.compute_source_marker?4(line, column, expression, size)
+exc.ellipsify?4(string, limit)
+exc.reconstruct_exc?4(cls, state)
+i18n.NAME_RE?7
+i18n.WHITELIST?7
+i18n._interp_regex?8
+i18n.fast_translate?4(msgid, domain=None, mapping=None, context=None, target_language=None, default=None)
+i18n.parse_attributes?4(attrs, xml=True)
+i18n.replace?4(match)
+interfaces.ITALESIterator.Letter?4()
+interfaces.ITALESIterator.Roman?4()
+interfaces.ITALESIterator.end?4()
+interfaces.ITALESIterator.even?4()
+interfaces.ITALESIterator.index?4()
+interfaces.ITALESIterator.item?4()
+interfaces.ITALESIterator.length?4()
+interfaces.ITALESIterator.letter?4()
+interfaces.ITALESIterator.number?4()
+interfaces.ITALESIterator.odd?4()
+interfaces.ITALESIterator.parity?4()
+interfaces.ITALESIterator.roman?4()
+interfaces.ITALESIterator.start?4()
+interfaces.ITALExpressionErrorInfo.lineno?7
+interfaces.ITALExpressionErrorInfo.offset?7
+interfaces.ITALExpressionErrorInfo.type?7
+interfaces.ITALExpressionErrorInfo.value?7
+interfaces.ITALIterator.next?4()
+loader.TemplateLoader.default_extension?7
+loader._load?5(self, base, filename)
+loader.abspath_from_asset_spec?4(spec)
+loader.abspath_from_asset_spec?4(spec, f=abspath_from_asset_spec)
+loader.bind?4(self, cls)
+loader.build?4(self, source, filename)
+loader.cache?4(func)
+loader.get?4(self, filename)
+loader.get?4(self, name)
+loader.load?4(self, *args, **kwargs)
+loader.load?4(self, spec, cls=None)
+loader.log?7
+metal.WHITELIST?7
+namespaces.I18N_NS?7
+namespaces.METAL_NS?7
+namespaces.META_NS?7
+namespaces.PY_NS?7
+namespaces.TAL_NS?7
+namespaces.XHTML_NS?7
+namespaces.XI_NS?7
+namespaces.XMLNS_NS?7
+namespaces.XML_NS?7
+nodes.Alias.local?7
+nodes.Assignment._fields?8
+nodes.Attribute._fields?8
+nodes.Boolean._fields?8
+nodes.Cache._fields?8
+nodes.CodeBlock._fields?8
+nodes.Condition._fields?8
+nodes.Content._fields?8
+nodes.Context._fields?8
+nodes.Default._fields?8
+nodes.Define._fields?8
+nodes.DefineSlot._fields?8
+nodes.Domain._fields?8
+nodes.Element._fields?8
+nodes.End._fields?8
+nodes.Equality._fields?8
+nodes.FillSlot._fields?8
+nodes.Identity._fields?8
+nodes.Interpolation._fields?8
+nodes.Macro._fields?8
+nodes.Module._fields?8
+nodes.Name._fields?8
+nodes.Negate._fields?8
+nodes.OnError._fields?8
+nodes.Program._fields?8
+nodes.Repeat._fields?8
+nodes.Sequence._fields?8
+nodes.Start._fields?8
+nodes.Substitution._fields?8
+nodes.Substitution.default?7
+nodes.Text._fields?8
+nodes.Translate._fields?8
+nodes.UseExternalMacro._fields?8
+nodes.UseInternalMacro._fields?8
+nodes.Value._fields?8
+parser.ElementParser.parse?4(token)
+parser.ElementParser.visit_cdata?4(kind, token)
+parser.ElementParser.visit_comment?4(kind, token)
+parser.ElementParser.visit_default?4(kind, token)
+parser.ElementParser.visit_empty_tag?4(kind, token)
+parser.ElementParser.visit_end_tag?4(kind, token)
+parser.ElementParser.visit_processing_instruction?4(kind, token)
+parser.ElementParser.visit_start_tag?4(kind, token)
+parser.ElementParser.visit_text?4(kind, token)
+parser.ElementParser?1(stream, default_namespaces)
+parser.groupdict?4(m, token)
+parser.groups?4(m, token)
+parser.identify?4(string)
+parser.log?7
+parser.match_cdata?7
+parser.match_comment?7
+parser.match_declaration?7
+parser.match_processing_instruction?7
+parser.match_single_attribute?7
+parser.match_tag?4(token, regex=match_tag_prefix_and_name)
+parser.match_tag_prefix_and_name?7
+parser.match_xml_declaration?7
+parser.parse_tag?4(token, namespace)
+parser.substitute?4(regex, repl, token)
+parser.unpack_attributes?4(attributes, namespace, default)
+parser.update_namespace?4(attributes, namespace)
+program.ElementProgram.DEFAULT_NAMESPACES?7
+program.ElementProgram.tokenizers?7
+program.ElementProgram.visit?4(kind, args)
+program.ElementProgram?1(source, mode="xml", filename=None)
+py25.exec_?4(code, globs=None, locs=None)
+py25.lookup_attr?4(obj, key)
+py25.next?4(iter)
+py26.lookup_attr?4(obj, key)
+tal.ATTR_RE?7
+tal.DEFINE_RE?7
+tal.ENTITY_RE?7
+tal.ErrorInfo?1(err, position=(None, None))
+tal.NAME?7
+tal.RepeatDict?1(d)
+tal.RepeatItem.Letter?4()
+tal.RepeatItem.Roman?4(rnvalues=(
+                    (1000, 'M'), (900, 'CM'), (500, 'D'), (400, 'CD'), (100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'), (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')))
+tal.RepeatItem._letter?5(base=ord('a'), radix=26)
+tal.RepeatItem.end?4()
+tal.RepeatItem.even?4()
+tal.RepeatItem.index?4()
+tal.RepeatItem.letter?7
+tal.RepeatItem.next?4()
+tal.RepeatItem.number?4()
+tal.RepeatItem.odd?4()
+tal.RepeatItem.roman?4()
+tal.RepeatItem.start?4()
+tal.RepeatItem?1(iterator, length)
+tal.SUBST_RE?7
+tal.WHITELIST?7
+tal.parse_attributes?4(clause)
+tal.parse_defines?4(clause)
+tal.parse_substitution?4(clause)
+tal.prepare_attributes?4(attrs, dyn_attributes, i18n_attributes, ns_attributes, drop_ns)
+tal.split_parts?4(arg)
+tales.ExistsExpr.exceptions?7
+tales.ExistsExpr?1(expression)
+tales.ExpressionParser?1(factories, default)
+tales.IdentityExpr?1(expression)
+tales.ImportExpr.re_dotted?7
+tales.ImportExpr?1(expression)
+tales.NotExpr?1(expression)
+tales.PathExpr.translate?4(expression, target)
+tales.ProxyExpr?1(name, *args)
+tales.PythonExpr.parse?4(string)
+tales.PythonExpr.transform?7
+tales.PythonExpr.translate?4(expression, target)
+tales.SimpleCompiler._assign_value_and_coerce?5(target, builtin)
+tales.SimpleCompiler.assign_text?4(target)
+tales.SimpleCompiler.assign_value?4(target)
+tales.SimpleCompiler?1(compiler, engine)
+tales.SimpleEngine.expression?7
+tales.SimpleEngine.parse?4(string)
+tales.SimpleEngine?1(expression=None)
+tales.StringExpr?1(expression, braces_required=False)
+tales.StructureExpr.wrapper_class?7
+tales.StructureExpr?1(expression)
+tales.TalesExpr.exceptions?7
+tales.TalesExpr.translate?4(expression, target)
+tales.TalesExpr?1(expression)
+tales.match_prefix?7
+tales.re_continuation?7
+tales.resolve_global?4(value)
+tales.split_parts?7
+tales.test?4(expression, engine=None, **env)
+tales.transform_attribute?4(node)
+template.BaseTemplate._compile?5(program, builtins)
+template.BaseTemplate._cook?5(body, digest, builtins)
+template.BaseTemplate._cooked?8
+template.BaseTemplate._digest?5(body)
+template.BaseTemplate._get_module_name?5(digest)
+template.BaseTemplate._make?5(body, builtins)
+template.BaseTemplate.builtins?7
+template.BaseTemplate.cook?4(body)
+template.BaseTemplate.cook_check?4()
+template.BaseTemplate.debug?7
+template.BaseTemplate.default_encoding?7
+template.BaseTemplate.engine?7
+template.BaseTemplate.extra_builtins?7
+template.BaseTemplate.filename?7
+template.BaseTemplate.keep_body?4()
+template.BaseTemplate.keep_source?4()
+template.BaseTemplate.loader?7
+template.BaseTemplate.output_stream_factory?7
+template.BaseTemplate.parse?4(body)
+template.BaseTemplate.render?4(**__kw)
+template.BaseTemplate.strict?7
+template.BaseTemplate.write?4(body)
+template.BaseTemplate?1(body=None, **config)
+template.BaseTemplateFile._get_filename?5()
+template.BaseTemplateFile._get_module_name?5(digest)
+template.BaseTemplateFile._set_filename?5(filename)
+template.BaseTemplateFile.auto_reload?7
+template.BaseTemplateFile.cook_check?4()
+template.BaseTemplateFile.filename?7
+template.BaseTemplateFile.mtime?4()
+template.BaseTemplateFile.read?4()
+template.BaseTemplateFile?1(filename, auto_reload=None, **config)
+template._make_module_loader?5()
+template.log?7
+template.pkg_digest?7
+tokenize.Token.location?4()
+tokenize.Token.lstrip?4(*args)
+tokenize.Token.replace?4(*args)
+tokenize.Token.rstrip?4(*args)
+tokenize.Token.split?4(*args)
+tokenize.Token.strip?4(*args)
+tokenize.a?7
+tokenize.collector?7
+tokenize.iter_text?4(body, filename=None)
+tokenize.iter_xml?4(body, filename=None)
+tokenize.re_markup_only_spe?7
+tokenize.re_xml_spe?7
+tokenize.recollector.add?4(name, reg)
+tokenize.recollector?1()
+utils.ASTProxy.aliases?7
+utils.ASTProxy.byte_string?7
+utils.ASTProxy.chr?7
+utils.ASTProxy.decode_string?7
+utils.ASTProxy.encode_string?7
+utils.ASTProxy.native_string?7
+utils.ASTProxy.raise_with_traceback?4(tb)
+utils.ASTProxy.safe_native?4(encoding='utf-8')
+utils.ASTProxy.string_type?7
+utils.ASTProxy.unicode_string?7
+utils.DebuggingOutputStream.append?4(value)
+utils.ListDictProxy.get?4(key)
+utils.ListDictProxy?1(l)
+utils.RE_ENCODING?7
+utils.RE_META?7
+utils.Scope.copy?4()
+utils.Scope.set_local?7
+utils.Scope.vars?4()
+utils._concat?8
+utils._has_encoding?5(encoding)
+utils._resolve_dotted?5(name, module=None)
+utils._xml_decl?8
+utils._xml_prefixes?8
+utils.ast?7
+utils.char2entity?4(c)
+utils.create_formatted_exception?4(exc, cls, formatter)
+utils.decode_htmlentities?4(string)
+utils.descriptorint?1(function)
+utils.descriptorstr?1(function)
+utils.detect_encoding?4(body, default_encoding)
+utils.entity_re?7
+utils.format_kwargs?4(kwargs)
+utils.join?4(stream)
+utils.limit_string?4(s, max_length=53)
+utils.log?7
+utils.mangle?4(filename)
+utils.module_cache?7
+utils.read_bytes?4(body, default_encoding)
+utils.read_encoded?4(data)
+utils.read_xml_encoding?4(body)
+utils.resolve_dotted?4(dotted)
+utils.substitute_entity?4(match, n2cp=htmlentitydefs.name2codepoint)
+utils.text_?4(s, encoding='latin-1', errors='strict')
+utils.unescape?4(string)
+utils.version?7
+utils.xml_prefixes?7
+zpt.loader.TemplateLoader.default_format?7
+zpt.loader.TemplateLoader.formats?7
+zpt.loader.TemplateLoader.load?4(filename, format=None)
+zpt.loader.TemplateLoader?1(*args, **kwargs)
+zpt.program.MacroProgram.DEFAULT_NAMESPACES?7
+zpt.program.MacroProgram.DROP_NS?7
+zpt.program.MacroProgram.VARIABLE_BLACKLIST?7
+zpt.program.MacroProgram._check_attributes?5(namespace, ns)
+zpt.program.MacroProgram._create_attributes_nodes?5(prepared, I18N_ATTRIBUTES)
+zpt.program.MacroProgram._create_static_attributes?5(prepared)
+zpt.program.MacroProgram._interpolation_enabled?8
+zpt.program.MacroProgram._last?8
+zpt.program.MacroProgram._make_content_node?5(expression, default, key, translate)
+zpt.program.MacroProgram._maybe_trim?5(string)
+zpt.program.MacroProgram._pop_defaults?5(kwargs, *attributes)
+zpt.program.MacroProgram._whitespace?8
+zpt.program.MacroProgram.boolean_attributes?7
+zpt.program.MacroProgram.default_marker?7
+zpt.program.MacroProgram.escape?7
+zpt.program.MacroProgram.implicit_i18n_attributes?7
+zpt.program.MacroProgram.implicit_i18n_translate?7
+zpt.program.MacroProgram.macros?4()
+zpt.program.MacroProgram.name?7
+zpt.program.MacroProgram.trim_attribute_space?7
+zpt.program.MacroProgram.visit_cdata?4(node)
+zpt.program.MacroProgram.visit_comment?4(node)
+zpt.program.MacroProgram.visit_default?4(node)
+zpt.program.MacroProgram.visit_element?4(start, end, children)
+zpt.program.MacroProgram.visit_processing_instruction?4(node)
+zpt.program.MacroProgram.visit_start_tag?4(start)
+zpt.program.MacroProgram.visit_text?4(node)
+zpt.program.MacroProgram?1(*args, **kwargs)
+zpt.program.missing?7
+zpt.program.re_trim?7
+zpt.program.skip?4(node)
+zpt.program.validate_attributes?4(attributes, namespace, whitelist)
+zpt.program.wrap?4(node, *wrappers)
+zpt.template.Macro?1(render)
+zpt.template.Macros.names?4()
+zpt.template.Macros?1(template)
+zpt.template.PageTemplate._builtins?5()
+zpt.template.PageTemplate.boolean_attributes?7
+zpt.template.PageTemplate.builtins?4()
+zpt.template.PageTemplate.decode?4()
+zpt.template.PageTemplate.default_expression?7
+zpt.template.PageTemplate.encoding?7
+zpt.template.PageTemplate.engine?4()
+zpt.template.PageTemplate.expression_parser?4()
+zpt.template.PageTemplate.expression_types?7
+zpt.template.PageTemplate.implicit_i18n_attributes?7
+zpt.template.PageTemplate.implicit_i18n_translate?7
+zpt.template.PageTemplate.include?4(*args, **kwargs)
+zpt.template.PageTemplate.literal_false?7
+zpt.template.PageTemplate.mode?7
+zpt.template.PageTemplate.parse?4(body)
+zpt.template.PageTemplate.render?4(encoding=None, translate=None, **vars)
+zpt.template.PageTemplate.translate?4(**kwargs)
+zpt.template.PageTemplate.translate?7
+zpt.template.PageTemplate.trim_attribute_space?7
+zpt.template.PageTemplate?1(body, **config)
+zpt.template.PageTemplateFile._builtins?5()
+zpt.template.PageTemplateFile.expression_types?7
+zpt.template.PageTemplateFile.prepend_relative_search_path?7
+zpt.template.PageTemplateFile?1(filename, search_path=None, loader_class=TemplateLoader, **config)
+zpt.template.PageTextTemplate.mode?7
+zpt.template.PageTextTemplateFile.mode?7
+zpt.template.PageTextTemplateFile.render?4(**vars)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/Chameleon-2.9.2.bas	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,72 @@
+Alias Assignment
+AnnotationAwareVisitor ast.NodeVisitor
+Assignment Node
+Attribute Node
+BaseTemplateFile BaseTemplate
+Benchmarks unittest.TestCase
+Boolean Value
+Builtin Node
+Cache Node
+CodeBlock Node
+Comment Node
+CompilationError TemplateError
+Condition Node
+Content Node
+Context Node
+DebuggingOutputStream list
+Default Node
+Define Node
+DefineSlot Node
+Domain Node
+Element Node
+End Node
+Equality Node
+ExceptHandler AST
+ExpressionError LanguageError
+FillSlot Node
+ITALESIterator ITALIterator
+ITALExpressionErrorInfo Interface
+ITALIterator Interface
+Identity Node
+Interpolation Text
+ItemLookupOnAttributeErrorVisitor AnnotationAwareVisitor
+LanguageError CompilationError
+Macro Node
+MacroProgram ElementProgram
+Markup unicode_string
+Module Node
+Name Node
+NameLookupRewriteVisitor AnnotationAwareVisitor
+Negate Node
+OnError Node
+PageTemplate BaseTemplate
+PageTemplateFile BaseTemplateFile PageTemplate
+PageTextTemplate PageTemplate
+PageTextTemplateFile PageTemplateFile
+ParseError TemplateError
+PathExpr TalesExpr
+Program Node
+ProxyExpr StringExpr
+PythonExpr TalesExpr
+Repeat Assignment
+RepeatDict dict
+Scope dict
+Sequence Node
+Start Node
+Static Node
+Substitution Value
+Symbol Node
+TemplateCodeGenerator ASTCodeGenerator
+TemplateError Exception
+TemplateLoader BaseLoader
+Text Node
+Token str
+Translate Node
+TranslationError TemplateError
+UseExternalMacro Node
+UseInternalMacro Node
+Value Node
+Visitor ast.NodeVisitor
+ZopeI18NContext Context
+callableint int
+callablestr str
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/Mako-0.7.2.api	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,565 @@
+_ast_util.ALL_SYMBOLS?7
+_ast_util.BINOP_SYMBOLS?7
+_ast_util.BOOLOP_SYMBOLS?7
+_ast_util.CMPOP_SYMBOLS?7
+_ast_util.NodeTransformer.generic_visit?4(node)
+_ast_util.NodeVisitor.generic_visit?4(node)
+_ast_util.NodeVisitor.get_visitor?4(node)
+_ast_util.NodeVisitor.visit?4(node)
+_ast_util.SourceGenerator.body?4(statements)
+_ast_util.SourceGenerator.body_or_else?4(node)
+_ast_util.SourceGenerator.decorators?4(node)
+_ast_util.SourceGenerator.generator_visit?4(right)
+_ast_util.SourceGenerator.newline?4(n=1)
+_ast_util.SourceGenerator.paren_or_comma?4()
+_ast_util.SourceGenerator.sequence_visit?4(right)
+_ast_util.SourceGenerator.signature?4(node)
+_ast_util.SourceGenerator.visit?4(node)
+_ast_util.SourceGenerator.visit_Assign?4(node)
+_ast_util.SourceGenerator.visit_Attribute?4(node)
+_ast_util.SourceGenerator.visit_AugAssign?4(node)
+_ast_util.SourceGenerator.visit_BinOp?4(node)
+_ast_util.SourceGenerator.visit_BoolOp?4(node)
+_ast_util.SourceGenerator.visit_Break?4(node)
+_ast_util.SourceGenerator.visit_Bytes?4(node)
+_ast_util.SourceGenerator.visit_Call?4(node)
+_ast_util.SourceGenerator.visit_ClassDef?4(node)
+_ast_util.SourceGenerator.visit_Compare?4(node)
+_ast_util.SourceGenerator.visit_Continue?4(node)
+_ast_util.SourceGenerator.visit_Delete?4(node)
+_ast_util.SourceGenerator.visit_Dict?4(node)
+_ast_util.SourceGenerator.visit_DictComp?4(node)
+_ast_util.SourceGenerator.visit_Ellipsis?4(node)
+_ast_util.SourceGenerator.visit_Expr?4(node)
+_ast_util.SourceGenerator.visit_ExtSlice?4(node)
+_ast_util.SourceGenerator.visit_For?4(node)
+_ast_util.SourceGenerator.visit_FunctionDef?4(node)
+_ast_util.SourceGenerator.visit_GeneratorExp?7
+_ast_util.SourceGenerator.visit_Global?4(node)
+_ast_util.SourceGenerator.visit_If?4(node)
+_ast_util.SourceGenerator.visit_IfExp?4(node)
+_ast_util.SourceGenerator.visit_Import?4(node)
+_ast_util.SourceGenerator.visit_ImportFrom?4(node)
+_ast_util.SourceGenerator.visit_Lambda?4(node)
+_ast_util.SourceGenerator.visit_List?7
+_ast_util.SourceGenerator.visit_ListComp?7
+_ast_util.SourceGenerator.visit_Name?4(node)
+_ast_util.SourceGenerator.visit_Nonlocal?4(node)
+_ast_util.SourceGenerator.visit_Num?4(node)
+_ast_util.SourceGenerator.visit_Pass?4(node)
+_ast_util.SourceGenerator.visit_Print?4(node)
+_ast_util.SourceGenerator.visit_Raise?4(node)
+_ast_util.SourceGenerator.visit_Repr?4(node)
+_ast_util.SourceGenerator.visit_Return?4(node)
+_ast_util.SourceGenerator.visit_Set?7
+_ast_util.SourceGenerator.visit_SetComp?7
+_ast_util.SourceGenerator.visit_Slice?4(node)
+_ast_util.SourceGenerator.visit_Starred?4(node)
+_ast_util.SourceGenerator.visit_Str?4(node)
+_ast_util.SourceGenerator.visit_Subscript?4(node)
+_ast_util.SourceGenerator.visit_TryExcept?4(node)
+_ast_util.SourceGenerator.visit_TryFinally?4(node)
+_ast_util.SourceGenerator.visit_Tuple?4(node)
+_ast_util.SourceGenerator.visit_UnaryOp?4(node)
+_ast_util.SourceGenerator.visit_While?4(node)
+_ast_util.SourceGenerator.visit_With?4(node)
+_ast_util.SourceGenerator.visit_Yield?4(node)
+_ast_util.SourceGenerator.visit_alias?4(node)
+_ast_util.SourceGenerator.visit_comprehension?4(node)
+_ast_util.SourceGenerator.visit_excepthandler?4(node)
+_ast_util.SourceGenerator.write?4(x)
+_ast_util.SourceGenerator.write_comma?4()
+_ast_util.SourceGenerator?1(indent_with)
+_ast_util.UNARYOP_SYMBOLS?7
+_ast_util._fix?5(node, lineno, col_offset)
+_ast_util._format?5(node)
+_ast_util.copy_location?4(new_node, old_node)
+_ast_util.dump?4(node)
+_ast_util.fix_missing_locations?4(node)
+_ast_util.get_child_nodes?4(node)
+_ast_util.get_compile_mode?4(node)
+_ast_util.get_docstring?4(node)
+_ast_util.get_fields?4(node)
+_ast_util.increment_lineno?4(node, n=1)
+_ast_util.iter_child_nodes?4(node)
+_ast_util.iter_fields?4(node)
+_ast_util.parse?4(expr, filename='<unknown>', mode='exec')
+_ast_util.to_source?4(node, indent_with=' ' * 4)
+_ast_util.walk?4(node)
+ast.ArgumentList?1(code, **exception_kwargs)
+ast.FunctionArgs?1(code, **kwargs)
+ast.FunctionDecl.get_argument_expressions?4(include_defaults=True)
+ast.FunctionDecl?1(code, allow_kwargs=True, **exception_kwargs)
+ast.PythonCode?1(code, **exception_kwargs)
+ast.PythonFragment?1(code, **exception_kwargs)
+cache.Cache._ctx_get_or_create?5(key, creation_function, context, **kw)
+cache.Cache._get_cache_kw?5(kw, context)
+cache.Cache._load_impl?5(name)
+cache.Cache.get?4(key, **kw)
+cache.Cache.get_or_create?4(key, creation_function, **kw)
+cache.Cache.id?7
+cache.Cache.impl?7
+cache.Cache.invalidate?4(key, **kw)
+cache.Cache.invalidate_body?4()
+cache.Cache.invalidate_closure?4(name)
+cache.Cache.invalidate_def?4(name)
+cache.Cache.put?7
+cache.Cache.set?4(key, value, **kw)
+cache.Cache.starttime?7
+cache.Cache?1(template, *args)
+cache.CacheImpl.get?4(key, **kw)
+cache.CacheImpl.get_or_create?4(key, creation_function, **kw)
+cache.CacheImpl.invalidate?4(key, **kw)
+cache.CacheImpl.pass_context?7
+cache.CacheImpl.set?4(key, value, **kw)
+cache.CacheImpl?1(cache)
+cache._cache_plugins?8
+cache.register_plugin?7
+codegen.DefVisitor.visitBlockTag?4(node)
+codegen.DefVisitor.visitDefOrBase?4(node)
+codegen.DefVisitor.visitDefTag?4(node)
+codegen.FindTopLevel.buf?7
+codegen.FindTopLevel.impcode?7
+codegen.FindTopLevel.module_ident?7
+codegen.FindTopLevel.visitCode?4(node)
+codegen.FindTopLevel.visitInheritTag?4(node)
+codegen.FindTopLevel.visitNamespaceTag?4(node)
+codegen.FindTopLevel.visitPageTag?4(node)
+codegen.LoopVariable._loop_reference_detected?5(node)
+codegen.LoopVariable.visitCode?4(node)
+codegen.LoopVariable.visitControlLine?4(node)
+codegen.LoopVariable.visitExpression?4(node)
+codegen.LoopVariable?1()
+codegen.MAGIC_NUMBER?7
+codegen.NSDefVisitor.visitBlockTag?4(node)
+codegen.NSDefVisitor.visitDefOrBase?4(node)
+codegen.NSDefVisitor.visitDefTag?4(node)
+codegen.RESERVED_NAMES?7
+codegen._CompileContext?2(uri, filename, default_filters, buffer_filters, imports, source_encoding, generate_magic_comment, disable_unicode, strict_undefined, enable_loop, reserved_names)
+codegen._FOR_LOOP?8
+codegen._GenerateRenderMethod.create_filter_callable?4(args, target, is_expression)
+codegen._GenerateRenderMethod.identifiers?4()
+codegen._GenerateRenderMethod.locate_encode?4()
+codegen._GenerateRenderMethod.visitBlockTag?4(node)
+codegen._GenerateRenderMethod.visitCallNamespaceTag?4(node)
+codegen._GenerateRenderMethod.visitCallTag?4(node)
+codegen._GenerateRenderMethod.visitCode?4(node)
+codegen._GenerateRenderMethod.visitControlLine?4(node)
+codegen._GenerateRenderMethod.visitDefTag?4(node)
+codegen._GenerateRenderMethod.visitExpression?4(node)
+codegen._GenerateRenderMethod.visitIncludeTag?4(node)
+codegen._GenerateRenderMethod.visitNamespaceTag?4(node)
+codegen._GenerateRenderMethod.visitText?4(node)
+codegen._GenerateRenderMethod.visitTextTag?4(node)
+codegen._GenerateRenderMethod.write_cache_decorator?4(node_or_pagetag, name, args, buffered, identifiers, inline=False, toplevel=False)
+codegen._GenerateRenderMethod.write_def_decl?4(node, identifiers)
+codegen._GenerateRenderMethod.write_def_finish?4(node, buffered, filtered, cached, callstack=True)
+codegen._GenerateRenderMethod.write_inherit?4(node)
+codegen._GenerateRenderMethod.write_inline_def?4(node, identifiers, nested)
+codegen._GenerateRenderMethod.write_module_code?4(module_code)
+codegen._GenerateRenderMethod.write_namespaces?4(namespaces)
+codegen._GenerateRenderMethod.write_render_callable?4(node, name, args, buffered, filtered, cached)
+codegen._GenerateRenderMethod.write_source_comment?4(node)
+codegen._GenerateRenderMethod.write_toplevel?4()
+codegen._GenerateRenderMethod.write_variable_declares?4(identifiers, toplevel=False, limit=None)
+codegen._GenerateRenderMethod?2(printer, compiler, node)
+codegen._Identifiers._check_name_exists?5(collection, node)
+codegen._Identifiers.add_declared?4(ident)
+codegen._Identifiers.branch?4(node, **kwargs)
+codegen._Identifiers.check_declared?4(node)
+codegen._Identifiers.defs?4()
+codegen._Identifiers.visitBlockTag?4(node)
+codegen._Identifiers.visitCallNamespaceTag?4(node)
+codegen._Identifiers.visitCallTag?4(node)
+codegen._Identifiers.visitCode?4(node)
+codegen._Identifiers.visitControlLine?4(node)
+codegen._Identifiers.visitDefTag?4(node)
+codegen._Identifiers.visitExpression?4(node)
+codegen._Identifiers.visitIncludeTag?4(node)
+codegen._Identifiers.visitNamespaceTag?4(node)
+codegen._Identifiers.visitPageTag?4(node)
+codegen._Identifiers?2(compiler, node=None, parent=None, nested=False)
+codegen.compile?4(node, uri, filename=None, default_filters=None, buffer_filters=None, imports=None, source_encoding=None, generate_magic_comment=True, disable_unicode=False, strict_undefined=False, enable_loop=True, reserved_names=())
+codegen.mangle_mako_loop?4(node, printer)
+exceptions.CompileException?1(message, source, lineno, pos, filename)
+exceptions.RichTraceback._get_reformatted_records?5(records)
+exceptions.RichTraceback._init?5(trcback)
+exceptions.RichTraceback._init_message?5()
+exceptions.RichTraceback.errorname?4()
+exceptions.RichTraceback.reverse_records?4()
+exceptions.RichTraceback.reverse_traceback?4()
+exceptions.RichTraceback.traceback?4()
+exceptions.RichTraceback?1(error=None, traceback=None)
+exceptions.SyntaxException?1(message, source, lineno, pos, filename)
+exceptions._format_filepos?5(lineno, pos, filename)
+exceptions.html_error_template?4()
+exceptions.syntax_highlight?4(filename='', language=None)
+exceptions.text_error_template?4(lookup=None)
+ext.autohandler._file_exists?5(lookup, path)
+ext.autohandler.autohandler?4(template, context, name='autohandler')
+ext.babelplugin._split_comment?5(lineno, comment)
+ext.babelplugin.extract?4(fileobj, keywords, comment_tags, options)
+ext.babelplugin.extract_nodes?4(nodes, keywords, comment_tags, options)
+ext.beaker_cache.BeakerCacheImpl._get_cache?5(**kw)
+ext.beaker_cache.BeakerCacheImpl.get?4(key, **kw)
+ext.beaker_cache.BeakerCacheImpl.get_or_create?4(key, creation_function, **kw)
+ext.beaker_cache.BeakerCacheImpl.invalidate?4(key, **kw)
+ext.beaker_cache.BeakerCacheImpl.put?4(key, value, **kw)
+ext.beaker_cache.BeakerCacheImpl?1(cache)
+ext.beaker_cache._beaker_cache?8
+ext.preprocessors.convert_comments?4(text)
+ext.pygmentplugin.MakoCssLexer.aliases?7
+ext.pygmentplugin.MakoCssLexer.name?7
+ext.pygmentplugin.MakoCssLexer?1(**options)
+ext.pygmentplugin.MakoHtmlLexer.aliases?7
+ext.pygmentplugin.MakoHtmlLexer.name?7
+ext.pygmentplugin.MakoHtmlLexer?1(**options)
+ext.pygmentplugin.MakoJavascriptLexer.aliases?7
+ext.pygmentplugin.MakoJavascriptLexer.name?7
+ext.pygmentplugin.MakoJavascriptLexer?1(**options)
+ext.pygmentplugin.MakoLexer.aliases?7
+ext.pygmentplugin.MakoLexer.filenames?7
+ext.pygmentplugin.MakoLexer.name?7
+ext.pygmentplugin.MakoLexer.tokens?7
+ext.pygmentplugin.MakoXmlLexer.aliases?7
+ext.pygmentplugin.MakoXmlLexer.name?7
+ext.pygmentplugin.MakoXmlLexer?1(**options)
+ext.pygmentplugin.pygments_html_formatter?7
+ext.pygmentplugin.syntax_highlight?4(filename='', language=None)
+ext.turbogears.TGPlugin.load_template?4(templatename, template_string=None)
+ext.turbogears.TGPlugin.render?4(info, format="html", fragment=False, template=None)
+ext.turbogears.TGPlugin?1(extra_vars_func=None, options=None, extension='mak')
+filters.DEFAULT_ESCAPES?7
+filters.Decode.decode?4()
+filters.NON_UNICODE_ESCAPES?7
+filters.XMLEntityEscaper.escape?4(text)
+filters.XMLEntityEscaper.escape_entities?4(text)
+filters.XMLEntityEscaper.unescape?4(text)
+filters.XMLEntityEscaper?1(codepoint2name, name2codepoint)
+filters._ASCII_re?8
+filters._html_entities_escaper?8
+filters.decode?7
+filters.html_entities_escape?7
+filters.html_entities_unescape?7
+filters.htmlentityreplace_errors?4(ex)
+filters.is_ascii_str?4(text)
+filters.legacy_html_escape?4(string)
+filters.trim?4(string)
+filters.url_escape?4(string)
+filters.url_unescape?4(string)
+filters.xml_escape?4(string)
+filters.xml_escapes?7
+lexer.Lexer._coding_re?8
+lexer.Lexer.append_node?4(nodecls, *args, **kwargs)
+lexer.Lexer.decode_raw_stream?4(text, decode_raw, known_encoding, filename)
+lexer.Lexer.exception_kwargs?4()
+lexer.Lexer.match?4(regexp, flags=None)
+lexer.Lexer.match_comment?4()
+lexer.Lexer.match_control_line?4()
+lexer.Lexer.match_end?4()
+lexer.Lexer.match_expression?4()
+lexer.Lexer.match_python_block?4()
+lexer.Lexer.match_reg?4(reg)
+lexer.Lexer.match_tag_end?4()
+lexer.Lexer.match_tag_start?4()
+lexer.Lexer.match_text?4()
+lexer.Lexer.parse?4()
+lexer.Lexer.parse_until_text?4(*text)
+lexer.Lexer?1(text, filename=None, disable_unicode=False, input_encoding=None, preprocessor=None)
+lexer._regexp_cache?8
+lookup.TemplateCollection.adjust_uri?4(uri, filename)
+lookup.TemplateCollection.filename_to_uri?4(uri, filename)
+lookup.TemplateCollection.get_template?4(uri, relativeto=None)
+lookup.TemplateCollection.has_template?4(uri)
+lookup.TemplateLookup._check?5(uri, template)
+lookup.TemplateLookup._load?5(filename, uri)
+lookup.TemplateLookup._relativeize?5(filename)
+lookup.TemplateLookup.adjust_uri?4(uri, relativeto)
+lookup.TemplateLookup.filename_to_uri?4(filename)
+lookup.TemplateLookup.get_template?4(uri)
+lookup.TemplateLookup.put_string?4(uri, text)
+lookup.TemplateLookup.put_template?4(uri, template)
+lookup.TemplateLookup?1(directories=None, module_directory=None, filesystem_checks=True, collection_size=-1, format_exceptions=False, error_handler=None, disable_unicode=False, bytestring_passthrough=False, output_encoding=None, encoding_errors='strict', cache_args=None, cache_impl='beaker', cache_enabled=True, cache_type=None, cache_dir=None, cache_url=None, modulename_callable=None, module_writer=None, default_filters=None, buffer_filters=(), strict_undefined=False, imports=None, enable_loop=True, input_encoding=None, preprocessor=None)
+parsetree.BlockTag.declared_identifiers?4()
+parsetree.BlockTag.funcname?4()
+parsetree.BlockTag.get_argument_expressions?4(**kw)
+parsetree.BlockTag.is_anonymous?4()
+parsetree.BlockTag.is_block?7
+parsetree.BlockTag.undeclared_identifiers?4()
+parsetree.BlockTag?1(keyword, attributes, **kwargs)
+parsetree.CallNamespaceTag.declared_identifiers?4()
+parsetree.CallNamespaceTag.undeclared_identifiers?4()
+parsetree.CallNamespaceTag?1(namespace, defname, attributes, **kwargs)
+parsetree.CallTag.declared_identifiers?4()
+parsetree.CallTag.undeclared_identifiers?4()
+parsetree.CallTag?1(keyword, attributes, **kwargs)
+parsetree.Code.declared_identifiers?4()
+parsetree.Code.undeclared_identifiers?4()
+parsetree.Code?1(text, ismodule, **kwargs)
+parsetree.Comment?1(text, **kwargs)
+parsetree.ControlLine.declared_identifiers?4()
+parsetree.ControlLine.get_children?4()
+parsetree.ControlLine.has_loop_context?7
+parsetree.ControlLine.is_ternary?4(keyword)
+parsetree.ControlLine.undeclared_identifiers?4()
+parsetree.ControlLine?1(keyword, isend, text, **kwargs)
+parsetree.DefTag.declared_identifiers?4()
+parsetree.DefTag.funcname?4()
+parsetree.DefTag.get_argument_expressions?4(**kw)
+parsetree.DefTag.is_anonymous?7
+parsetree.DefTag.is_block?7
+parsetree.DefTag.undeclared_identifiers?4()
+parsetree.DefTag?1(keyword, attributes, **kwargs)
+parsetree.Expression.declared_identifiers?4()
+parsetree.Expression.undeclared_identifiers?4()
+parsetree.Expression?1(text, escapes, **kwargs)
+parsetree.IncludeTag.declared_identifiers?4()
+parsetree.IncludeTag.undeclared_identifiers?4()
+parsetree.IncludeTag?1(keyword, attributes, **kwargs)
+parsetree.InheritTag?1(keyword, attributes, **kwargs)
+parsetree.NamespaceTag.declared_identifiers?4()
+parsetree.NamespaceTag?1(keyword, attributes, **kwargs)
+parsetree.Node.accept_visitor?4(visitor)
+parsetree.Node.exception_kwargs?4()
+parsetree.Node.get_children?4()
+parsetree.Node.traverse?4()
+parsetree.Node?1(source, lineno, pos, filename)
+parsetree.PageTag.declared_identifiers?4()
+parsetree.PageTag?1(keyword, attributes, **kwargs)
+parsetree.Tag._parse_attributes?5(expressions, nonexpressions)
+parsetree.Tag.declared_identifiers?4()
+parsetree.Tag.get_children?4()
+parsetree.Tag.is_root?4()
+parsetree.Tag.undeclared_identifiers?4()
+parsetree.Tag?1(keyword, attributes, expressions, nonexpressions, required, **kwargs)
+parsetree.TemplateNode.get_children?4()
+parsetree.TemplateNode?1(filename)
+parsetree.Text?1(content, **kwargs)
+parsetree.TextTag?1(keyword, attributes, **kwargs)
+parsetree._TagMeta._classmap?8
+parsetree._TagMeta?2(clsname, bases, dict)
+pygen.PythonPrinter._flush_adjusted_lines?5()
+pygen.PythonPrinter._in_multi_line?5(line)
+pygen.PythonPrinter._indent_line?5(line, stripspace='')
+pygen.PythonPrinter._is_unindentor?5(line)
+pygen.PythonPrinter._reset_multi_line_flags?5()
+pygen.PythonPrinter.close?4()
+pygen.PythonPrinter.write?4(text)
+pygen.PythonPrinter.write_indented_block?4(block)
+pygen.PythonPrinter.writeline?4(line)
+pygen.PythonPrinter.writelines?4(*lines)
+pygen.PythonPrinter?1(stream)
+pygen._indent_line?5(line, stripspace = '')
+pygen.adjust_whitespace?4(text)
+pygen.in_multi_line?4(line)
+pygen.match?4(reg, t)
+pyparser.ExpressionGenerator.value?4()
+pyparser.ExpressionGenerator?1(astnode)
+pyparser.ExpressionGenerator_1.booleanop?4(op, node, *args)
+pyparser.ExpressionGenerator_1.operator?4(op, node, *args)
+pyparser.ExpressionGenerator_1.value?4()
+pyparser.ExpressionGenerator_1.visitAdd?4(node, *args)
+pyparser.ExpressionGenerator_1.visitAnd?4(node, *args)
+pyparser.ExpressionGenerator_1.visitAssName?4(node, *args)
+pyparser.ExpressionGenerator_1.visitBitand?4(node, *args)
+pyparser.ExpressionGenerator_1.visitBitor?4(node, *args)
+pyparser.ExpressionGenerator_1.visitBitxor?4(node, *args)
+pyparser.ExpressionGenerator_1.visitCallFunc?4(node, *args)
+pyparser.ExpressionGenerator_1.visitCompare?4(node)
+pyparser.ExpressionGenerator_1.visitConst?4(node, *args)
+pyparser.ExpressionGenerator_1.visitDict?4(node)
+pyparser.ExpressionGenerator_1.visitDiv?4(node, *args)
+pyparser.ExpressionGenerator_1.visitFloorDiv?4(node, *args)
+pyparser.ExpressionGenerator_1.visitGetattr?4(node, *args)
+pyparser.ExpressionGenerator_1.visitList?4(node)
+pyparser.ExpressionGenerator_1.visitListComp?4(node)
+pyparser.ExpressionGenerator_1.visitListCompFor?4(node)
+pyparser.ExpressionGenerator_1.visitListCompIf?4(node)
+pyparser.ExpressionGenerator_1.visitMul?4(node, *args)
+pyparser.ExpressionGenerator_1.visitName?4(node, *args)
+pyparser.ExpressionGenerator_1.visitNot?4(node, *args)
+pyparser.ExpressionGenerator_1.visitOr?4(node, *args)
+pyparser.ExpressionGenerator_1.visitSlice?4(node, *args)
+pyparser.ExpressionGenerator_1.visitSub?4(node, *args)
+pyparser.ExpressionGenerator_1.visitSubscript?4(node, *args)
+pyparser.ExpressionGenerator_1.visitTuple?4(node)
+pyparser.ExpressionGenerator_1.visitUnaryAdd?4(node, *args)
+pyparser.ExpressionGenerator_1.visitUnarySub?4(node, *args)
+pyparser.FindIdentifiers._add_declared?5(name)
+pyparser.FindIdentifiers._visit_function?5(node, islambda)
+pyparser.FindIdentifiers.visit_Assign?4(node)
+pyparser.FindIdentifiers.visit_ClassDef?4(node)
+pyparser.FindIdentifiers.visit_ExceptHandler?4(node)
+pyparser.FindIdentifiers.visit_For?4(node)
+pyparser.FindIdentifiers.visit_FunctionDef?4(node)
+pyparser.FindIdentifiers.visit_Import?4(node)
+pyparser.FindIdentifiers.visit_ImportFrom?4(node)
+pyparser.FindIdentifiers.visit_Lambda?4(node, *args)
+pyparser.FindIdentifiers.visit_Name?4(node)
+pyparser.FindIdentifiers?1(listener, **exception_kwargs)
+pyparser.FindIdentifiers_1._add_declared?5(name)
+pyparser.FindIdentifiers_1._visit_function?5(node, args)
+pyparser.FindIdentifiers_1.visit?4(expr)
+pyparser.FindIdentifiers_1.visitAssName?4(node, *args)
+pyparser.FindIdentifiers_1.visitAssign?4(node, *args)
+pyparser.FindIdentifiers_1.visitClass?4(node, *args)
+pyparser.FindIdentifiers_1.visitFor?4(node, *args)
+pyparser.FindIdentifiers_1.visitFrom?4(node, *args)
+pyparser.FindIdentifiers_1.visitFunction?4(node, *args)
+pyparser.FindIdentifiers_1.visitImport?4(node, *args)
+pyparser.FindIdentifiers_1.visitLambda?4(node, *args)
+pyparser.FindIdentifiers_1.visitName?4(node, *args)
+pyparser.FindTuple.visit_Tuple?4(node)
+pyparser.FindTuple?1(listener, code_factory, **exception_kwargs)
+pyparser.FindTuple_1.visit?4(expr)
+pyparser.FindTuple_1.visitTuple?4(node, *args)
+pyparser.ParseFunc.visit_FunctionDef?4(node)
+pyparser.ParseFunc?1(listener, **exception_kwargs)
+pyparser.ParseFunc_1.visit?4(expr)
+pyparser.ParseFunc_1.visitFunction?4(node, *args)
+pyparser.parse?4(code, mode='exec', **exception_kwargs)
+pyparser.walker.dispatch?4(node, *args)
+runtime.CallerStack._get_caller?5()
+runtime.CallerStack._pop_frame?5()
+runtime.CallerStack._push_frame?5()
+runtime.CallerStack?1()
+runtime.Context._clean_inheritance_tokens?5()
+runtime.Context._copy?5()
+runtime.Context._pop_buffer?5()
+runtime.Context._pop_buffer_and_writer?5()
+runtime.Context._push_buffer?5()
+runtime.Context._push_writer?5()
+runtime.Context._set_with_template?5(t)
+runtime.Context.get?4(key, default=None)
+runtime.Context.keys?4()
+runtime.Context.kwargs?4()
+runtime.Context.locals_?4(d)
+runtime.Context.lookup?4()
+runtime.Context.pop_caller?4()
+runtime.Context.push_caller?4(caller)
+runtime.Context.write?4(string)
+runtime.Context.writer?4()
+runtime.Context?1(buffer, **data)
+runtime.LoopContext.cycle?4(*values)
+runtime.LoopContext.even?4()
+runtime.LoopContext.first?4()
+runtime.LoopContext.last?4()
+runtime.LoopContext.odd?4()
+runtime.LoopContext.reverse_index?4()
+runtime.LoopContext?1(iterable)
+runtime.LoopStack._enter?5(iterable)
+runtime.LoopStack._exit?5()
+runtime.LoopStack._pop?5()
+runtime.LoopStack._push?5(iterable)
+runtime.LoopStack._top?5()
+runtime.LoopStack?1()
+runtime.ModuleNamespace._get_star?5()
+runtime.ModuleNamespace.filename?4()
+runtime.ModuleNamespace.get?4()
+runtime.ModuleNamespace?1(name, context, module, callables=None, inherits=None, populate_self=True, calling_uri=None)
+runtime.Namespace._get_star?5()
+runtime.Namespace._populate?5(d, l)
+runtime.Namespace._templateuri?8
+runtime.Namespace.attr?4()
+runtime.Namespace.cache?4()
+runtime.Namespace.callables?7
+runtime.Namespace.context?7
+runtime.Namespace.filename?7
+runtime.Namespace.get_cached?4(key, **kwargs)
+runtime.Namespace.get_namespace?4(uri)
+runtime.Namespace.get_template?4(uri)
+runtime.Namespace.include_file?4(uri, **kwargs)
+runtime.Namespace.module?7
+runtime.Namespace.template?7
+runtime.Namespace.uri?7
+runtime.Namespace?1(name, context, callables=None, inherits=None, populate_self=True, calling_uri=None)
+runtime.TemplateNamespace._get_star?5()
+runtime.TemplateNamespace.filename?4()
+runtime.TemplateNamespace.get?4()
+runtime.TemplateNamespace.module?4()
+runtime.TemplateNamespace.uri?4()
+runtime.TemplateNamespace?1(name, context, template=None, templateuri=None, callables=None, inherits=None, populate_self=True, calling_uri=None)
+runtime.UNDEFINED?7
+runtime._NSAttr?2(parent)
+runtime._decorate_inline?5(context, fn)
+runtime._decorate_toplevel?5(fn)
+runtime._exec_template?5(callable_, context, args=None, kwargs=None)
+runtime._include_file?5(context, uri, calling_uri, **kwargs)
+runtime._inherit_from?5(context, uri, calling_uri)
+runtime._kwargs_for_callable?5(callable_, data)
+runtime._kwargs_for_include?5(callable_, data, **kwargs)
+runtime._lookup_template?5(context, uri, relativeto)
+runtime._populate_self_namespace?5(context, template, self_ns=None)
+runtime._render?5(template, callable_, args, data, as_unicode=False)
+runtime._render_context?5(tmpl, callable_, context, *args, **kwargs)
+runtime._render_error?5(template, context, error)
+runtime.capture?4(context, callable_, *args, **kwargs)
+runtime.decorate_render?4(render_fn)
+runtime.go?4(*args, **kw)
+runtime.go?4(context, *args, **kw)
+runtime.supports_caller?4(func)
+runtime.wrap_stackframe?4(context, *args, **kwargs)
+runtime.y?4(*args, **kw)
+template.DefTemplate.get_def?4(name)
+template.DefTemplate?1(parent, callable_)
+template.ModuleInfo._modules?8
+template.ModuleInfo.code?4()
+template.ModuleInfo.source?4()
+template.ModuleInfo?1(module, module_filename, template, template_filename, module_source, template_source)
+template.ModuleTemplate?1(module, module_filename=None, template=None, template_filename=None, module_source=None, template_source=None, output_encoding=None, encoding_errors='strict', disable_unicode=False, bytestring_passthrough=False, format_exceptions=False, error_handler=None, lookup=None, cache_args=None, cache_impl='beaker', cache_enabled=True, cache_type=None, cache_dir=None, cache_url=None, )
+template.Template._compile_from_file?5(path, filename)
+template.Template._get_def_callable?5(name)
+template.Template._setup_cache_args?5(cache_impl, cache_enabled, cache_args, cache_type, cache_dir, cache_url)
+template.Template.cache?4()
+template.Template.cache_dir?4()
+template.Template.cache_type?4()
+template.Template.cache_url?4()
+template.Template.code?4()
+template.Template.get_def?4(name)
+template.Template.has_def?4(name)
+template.Template.last_modified?4()
+template.Template.render?4(*args, **data)
+template.Template.render_context?4(context, *args, **kwargs)
+template.Template.render_unicode?4(*args, **data)
+template.Template.reserved_names?4()
+template.Template.source?4()
+template.Template?1(text=None, filename=None, uri=None, format_exceptions=False, error_handler=None, lookup=None, output_encoding=None, encoding_errors='strict', module_directory=None, cache_args=None, cache_impl='beaker', cache_enabled=True, cache_type=None, cache_dir=None, cache_url=None, module_filename=None, input_encoding=None, disable_unicode=False, module_writer=None, bytestring_passthrough=False, default_filters=None, buffer_filters=(), strict_undefined=False, imports=None, enable_loop=True, preprocessor=None)
+template._compile?5(template, text, filename, generate_magic_comment)
+template._compile_module_file?5(template, text, filename, outputpath, module_writer)
+template._compile_text?5(template, text, filename)
+template._get_module_info?5(filename)
+template._get_module_info_from_callable?5(callable_)
+util.FastEncodingBuffer.getvalue?4()
+util.FastEncodingBuffer.truncate?4()
+util.FastEncodingBuffer?1(encoding=None, errors='strict', str=False)
+util.LRUCache._manage_size?5()
+util.LRUCache.setdefault?4(key, value)
+util.LRUCache.values?4()
+util.LRUCache?1(capacity, threshold=.5)
+util.SetLikeDict.union?4(other)
+util._Item?2(key, value)
+util._PYTHON_MAGIC_COMMENT_re?8
+util.all?4(iterable)
+util.exception_name?4(exc)
+util.function_named?4(fn, name)
+util.inspect_func_args?4(fn)
+util.jython?7
+util.load?4()
+util.load?4(self, name)
+util.load_module?4(module_id, path)
+util.memoized_instancemethod.oneshot?4(**kw)
+util.memoized_instancemethod?1(fget, doc=None)
+util.memoized_property?1(fget, doc=None)
+util.newfunc?4(*fargs, **fkeywords)
+util.parse_encoding?4(fp)
+util.partial?4(func, *args, **keywords)
+util.py24?7
+util.py26?7
+util.py3k?7
+util.read_file?4(path, mode='rb')
+util.register?4(self, name, modulepath, objname)
+util.restore__ast?4(_ast)
+util.sorted_dict_repr?4(d)
+util.to_list?4(x, default=None)
+util.verify_directory?4(dir)
+util.win32?7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/Mako-0.7.bas	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,47 @@
+BeakerCacheImpl CacheImpl
+BlockTag Tag
+CallNamespaceTag Tag
+CallTag Tag
+CallerStack list
+Code Node
+Comment Node
+CompileException MakoException
+ControlLine Node
+DefTag Tag
+DefTemplate Template
+Expression Node
+FindIdentifiers _ast_util
+FindTuple _ast_util
+FunctionArgs FunctionDecl
+IncludeTag Tag
+InheritTag Tag
+LRUCache dict
+MakoCssLexer DelegatingLexer
+MakoException Exception
+MakoHtmlLexer DelegatingLexer
+MakoJavascriptLexer DelegatingLexer
+MakoLexer RegexLexer
+MakoXmlLexer DelegatingLexer
+ModuleNamespace Namespace
+ModuleTemplate Template
+NameConflictError MakoException
+NamespaceTag Tag
+NodeTransformer NodeVisitor
+PageTag Tag
+ParseFunc _ast_util
+PythonFragment PythonCode
+RuntimeException MakoException
+SetLikeDict dict
+SourceGenerator NodeVisitor
+SyntaxException MakoException
+Tag Node metaclass=_TagMeta
+TemplateLookup TemplateCollection
+TemplateLookupException MakoException
+TemplateNamespace Namespace
+TemplateNode Node
+Text Node
+TextTag Tag
+TopLevelLookupException TemplateLookupException
+UnsupportedError MakoException
+_TagMeta type
+walker visitor.ASTVisitor
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/MarkupSafe-0.15.api	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,25 @@
+.Markup.escape?4(s)
+.Markup.func?4(*args, **kwargs)
+.Markup.handle_match?4()
+.Markup.join?4(seq)
+.Markup.make_wrapper?4()
+.Markup.partition?4(sep)
+.Markup.rpartition?4(sep)
+.Markup.rsplit?4(*args, **kwargs)
+.Markup.split?4(*args, **kwargs)
+.Markup.splitlines?4(*args, **kwargs)
+.Markup.striptags?4()
+.Markup.unescape?4()
+._MarkupEscapeHelper?2(obj)
+._entity_re?8
+._escape_argspec?5(obj, iterable)
+._striptags_re?8
+_constants.HTML_ENTITIES?7
+_native.escape?4(s)
+_native.escape_silent?4(s)
+_native.soft_unicode?4(s)
+tests.MarkupLeakTestCase.test_markup_leaks?4()
+tests.MarkupTestCase.test_all_set?4()
+tests.MarkupTestCase.test_escape_silent?4()
+tests.MarkupTestCase.test_markup_operations?4()
+tests.suite?4()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/MarkupSafe-0.bas	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,3 @@
+Markup str
+MarkupLeakTestCase unittest.TestCase
+MarkupTestCase unittest.TestCase
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/PasteDeploy-1.5.0.api	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,108 @@
+deploy.compat.print_?4(template, *args, **kwargs)
+deploy.compat.reraise?4(t, e, tb)
+deploy.config.CONFIG?7
+deploy.config.ConfigMiddleware.close_config?4()
+deploy.config.ConfigMiddleware?1(application, config)
+deploy.config.DispatchingConfig._constructor_lock?8
+deploy.config.DispatchingConfig._pop_from?5(lst, conf)
+deploy.config.DispatchingConfig.current_conf?4()
+deploy.config.DispatchingConfig.pop_process_config?4(conf=None)
+deploy.config.DispatchingConfig.pop_thread_config?4(conf=None)
+deploy.config.DispatchingConfig.push_process_config?4(conf)
+deploy.config.DispatchingConfig.push_thread_config?4(conf)
+deploy.config.DispatchingConfig?1()
+deploy.config.PrefixMiddleware?1(app, global_conf=None, prefix='/', translate_forwarded_server=True, force_port=None, scheme=None)
+deploy.config.local?7
+deploy.config.local_dict?4()
+deploy.config.make_config_filter?4(app, global_conf, **local_conf)
+deploy.config.make_config_middleware?7
+deploy.config.make_prefix_middleware?4(app, global_conf, prefix='/', translate_forwarded_server=True, force_port=None, scheme=None)
+deploy.config.wsgilib?7
+deploy.converters.asbool?4(obj)
+deploy.converters.asint?4(obj)
+deploy.converters.aslist?4(obj, sep=None, strip=True)
+deploy.loadwsgi.APP?7
+deploy.loadwsgi.ConfigLoader._context_from_explicit?5(object_type, local_conf, global_conf, global_addition, section)
+deploy.loadwsgi.ConfigLoader._context_from_use?5(object_type, local_conf, global_conf, global_additions, section)
+deploy.loadwsgi.ConfigLoader._filter_app_context?5(object_type, section, name, global_conf, local_conf, global_additions)
+deploy.loadwsgi.ConfigLoader._find_sections?5(sections, name_prefix, name)
+deploy.loadwsgi.ConfigLoader._pipeline_app_context?5(object_type, section, name, global_conf, local_conf, global_additions)
+deploy.loadwsgi.ConfigLoader.find_config_section?4(object_type, name=None)
+deploy.loadwsgi.ConfigLoader.get_context?4(object_type, name=None, global_conf=None)
+deploy.loadwsgi.ConfigLoader.update_defaults?4(new_defaults, overwrite=True)
+deploy.loadwsgi.ConfigLoader?1(filename)
+deploy.loadwsgi.EggLoader.find_egg_entry_point?4(object_type, name=None)
+deploy.loadwsgi.EggLoader.get_context?4(object_type, name=None, global_conf=None)
+deploy.loadwsgi.EggLoader?1(spec)
+deploy.loadwsgi.FILTER?7
+deploy.loadwsgi.FILTER_APP?7
+deploy.loadwsgi.FILTER_WITH?7
+deploy.loadwsgi.FuncLoader.get_context?4(object_type, name=None, global_conf=None)
+deploy.loadwsgi.FuncLoader?1(spec)
+deploy.loadwsgi.InterpolateWrapper.before_get?4(parser, section, option, value, defaults)
+deploy.loadwsgi.InterpolateWrapper?1(original)
+deploy.loadwsgi.LoaderContext.config?4()
+deploy.loadwsgi.LoaderContext.create?4()
+deploy.loadwsgi.LoaderContext?1(obj, object_type, protocol, global_conf, local_conf, loader, distribution=None, entry_point_name=None)
+deploy.loadwsgi.NicerConfigParser._interpolate?5(section, option, rawval, vars)
+deploy.loadwsgi.NicerConfigParser.defaults?4()
+deploy.loadwsgi.NicerConfigParser.read_file?7
+deploy.loadwsgi.NicerConfigParser?1(filename, *args, **kw)
+deploy.loadwsgi.PIPELINE?7
+deploy.loadwsgi.SERVER?7
+deploy.loadwsgi._App.config_prefixes?7
+deploy.loadwsgi._App.egg_protocols?7
+deploy.loadwsgi._App.invoke?4(context)
+deploy.loadwsgi._App.name?7
+deploy.loadwsgi._Filter.config_prefixes?7
+deploy.loadwsgi._Filter.egg_protocols?7
+deploy.loadwsgi._Filter.filter_wrapper?4()
+deploy.loadwsgi._Filter.invoke?4(context)
+deploy.loadwsgi._Filter.name?7
+deploy.loadwsgi._FilterApp.invoke?4(context)
+deploy.loadwsgi._FilterApp.name?7
+deploy.loadwsgi._FilterWith.composed?4()
+deploy.loadwsgi._FilterWith.invoke?4(context)
+deploy.loadwsgi._FilterWith.name?7
+deploy.loadwsgi._Loader._absolute_re?8
+deploy.loadwsgi._Loader.absolute_name?4(name)
+deploy.loadwsgi._Loader.app_context?4(name=None, global_conf=None)
+deploy.loadwsgi._Loader.filter_context?4(name=None, global_conf=None)
+deploy.loadwsgi._Loader.get_app?4(name=None, global_conf=None)
+deploy.loadwsgi._Loader.get_filter?4(name=None, global_conf=None)
+deploy.loadwsgi._Loader.get_server?4(name=None, global_conf=None)
+deploy.loadwsgi._Loader.server_context?4(name=None, global_conf=None)
+deploy.loadwsgi._ObjectType.config_prefixes?7
+deploy.loadwsgi._ObjectType.egg_protocols?7
+deploy.loadwsgi._ObjectType.invoke?4(context)
+deploy.loadwsgi._ObjectType.name?7
+deploy.loadwsgi._ObjectType?2()
+deploy.loadwsgi._PipeLine.invoke?4(context)
+deploy.loadwsgi._PipeLine.name?7
+deploy.loadwsgi._Server.config_prefixes?7
+deploy.loadwsgi._Server.egg_protocols?7
+deploy.loadwsgi._Server.invoke?4(context)
+deploy.loadwsgi._Server.name?7
+deploy.loadwsgi._Server.server_wrapper?4()
+deploy.loadwsgi._aslist?5(obj)
+deploy.loadwsgi._flatten?5(lst)
+deploy.loadwsgi._loadconfig?5(object_type, uri, path, name, relative_to, global_conf)
+deploy.loadwsgi._loadegg?5(object_type, uri, spec, name, relative_to, global_conf)
+deploy.loadwsgi._loaders?8
+deploy.loadwsgi._loadfunc?5(object_type, uri, spec, name, relative_to, global_conf)
+deploy.loadwsgi.appconfig?4(uri, name=None, relative_to=None, global_conf=None)
+deploy.loadwsgi.import_string?4(s)
+deploy.loadwsgi.loadapp?4(uri, name=None, **kw)
+deploy.loadwsgi.loadcontext?4(object_type, uri, name=None, relative_to=None, global_conf=None)
+deploy.loadwsgi.loadfilter?4(uri, name=None, **kw)
+deploy.loadwsgi.loadobj?4(object_type, uri, name=None, relative_to=None, global_conf=None)
+deploy.loadwsgi.loadserver?4(uri, name=None, **kw)
+deploy.paster_templates.PasteDeploy._template_dir?8
+deploy.paster_templates.PasteDeploy.egg_plugins?7
+deploy.paster_templates.PasteDeploy.post?4(command, output_dir, vars)
+deploy.paster_templates.PasteDeploy.required_templates?7
+deploy.paster_templates.PasteDeploy.summary?7
+deploy.util._short_repr?5(v)
+deploy.util.fix_call?4(callable, *args, **kw)
+deploy.util.fix_type_error?4(exc_info, callable, varargs, kwargs)
+deploy.util.lookup_object?4(spec)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/PasteDeploy-1.5.bas	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,12 @@
+AttrDict dict
+ConfigLoader _Loader
+EggLoader _Loader
+FuncLoader _Loader
+NicerConfigParser ConfigParser
+PasteDeploy Template
+_App _ObjectType
+_Filter _ObjectType
+_FilterApp _ObjectType
+_FilterWith _App
+_PipeLine _ObjectType
+_Server _ObjectType
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/Pyramid-1.3.3.api	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,1284 @@
+asset.abspath_from_asset_spec?4(spec, pname='__main__')
+asset.asset_spec_from_abspath?4(abspath, package)
+asset.resolve_asset_spec?4(spec, pname='__main__')
+authentication.AuthTicket.cookie_value?4()
+authentication.AuthTicket.digest?4()
+authentication.AuthTicket?1(secret, userid, ip, tokens=(), user_data='', time=None, cookie_name='auth_tkt', secure=False)
+authentication.AuthTktAuthenticationPolicy.forget?4(request)
+authentication.AuthTktAuthenticationPolicy.remember?4(request, principal, **kw)
+authentication.AuthTktAuthenticationPolicy.unauthenticated_userid?4(request)
+authentication.AuthTktAuthenticationPolicy?1(secret, callback=None, cookie_name='auth_tkt', secure=False, include_ip=False, timeout=None, reissue_time=None, max_age=None, path="/", http_only=False, wild_domain=True, debug=False, )
+authentication.AuthTktCookieHelper.AuthTicket?7
+authentication.AuthTktCookieHelper.BadTicket?7
+authentication.AuthTktCookieHelper._get_cookies?5(environ, value, max_age=None)
+authentication.AuthTktCookieHelper.forget?4(request)
+authentication.AuthTktCookieHelper.identify?4(request)
+authentication.AuthTktCookieHelper.now?7
+authentication.AuthTktCookieHelper.parse_ticket?7
+authentication.AuthTktCookieHelper.reissue_authtkt?4(response)
+authentication.AuthTktCookieHelper.remember?4(request, userid, max_age=None, tokens=())
+authentication.AuthTktCookieHelper.userid_type_decoders?7
+authentication.AuthTktCookieHelper.userid_type_encoders?7
+authentication.AuthTktCookieHelper?1(secret, cookie_name='auth_tkt', secure=False, include_ip=False, timeout=None, reissue_time=None, max_age=None, http_only=False, path="/", wild_domain=True)
+authentication.BadTicket?1(msg, expected=None)
+authentication.CallbackAuthenticationPolicy._log?5(msg, methodname, request)
+authentication.CallbackAuthenticationPolicy.authenticated_userid?4(request)
+authentication.CallbackAuthenticationPolicy.callback?7
+authentication.CallbackAuthenticationPolicy.debug?7
+authentication.CallbackAuthenticationPolicy.effective_principals?4(request)
+authentication.EXPIRE?7
+authentication.RemoteUserAuthenticationPolicy.forget?4(request)
+authentication.RemoteUserAuthenticationPolicy.remember?4(request, principal, **kw)
+authentication.RemoteUserAuthenticationPolicy.unauthenticated_userid?4(request)
+authentication.RemoteUserAuthenticationPolicy?1(environ_key='REMOTE_USER', callback=None, debug=False)
+authentication.RepozeWho1AuthenticationPolicy._get_identifier?5(request)
+authentication.RepozeWho1AuthenticationPolicy._get_identity?5(request)
+authentication.RepozeWho1AuthenticationPolicy.authenticated_userid?4(request)
+authentication.RepozeWho1AuthenticationPolicy.effective_principals?4(request)
+authentication.RepozeWho1AuthenticationPolicy.forget?4(request)
+authentication.RepozeWho1AuthenticationPolicy.remember?4(request, principal, **kw)
+authentication.RepozeWho1AuthenticationPolicy.unauthenticated_userid?4(request)
+authentication.RepozeWho1AuthenticationPolicy?1(identifier_name='auth_tkt', callback=None)
+authentication.SessionAuthenticationPolicy.forget?4(request)
+authentication.SessionAuthenticationPolicy.remember?4(request, principal, **kw)
+authentication.SessionAuthenticationPolicy.unauthenticated_userid?4(request)
+authentication.SessionAuthenticationPolicy?1(prefix='auth.', callback=None, debug=False)
+authentication.VALID_TOKEN?7
+authentication.b64decode?4(v)
+authentication.b64encode?4(v)
+authentication.calculate_digest?4(ip, timestamp, secret, userid, tokens, user_data)
+authentication.encode_ip_timestamp?4(ip, timestamp)
+authentication.parse_ticket?4(secret, ticket, ip)
+authorization.ACLAuthorizationPolicy.permits?4(context, principals, permission)
+authorization.ACLAuthorizationPolicy.principals_allowed_by_permission?4(context, permission)
+chameleon_text.PageTextTemplateFile?1(*arg, **kw)
+chameleon_text.TextTemplateRenderer.implementation?4()
+chameleon_text.TextTemplateRenderer.template?4()
+chameleon_text.TextTemplateRenderer?1(path, lookup)
+chameleon_text.get_renderer?4(path)
+chameleon_text.get_template?4(path)
+chameleon_text.render_template?4(path, **kw)
+chameleon_text.render_template_to_response?4(path, **kw)
+chameleon_text.renderer_factory?4(info)
+chameleon_zpt.PageTemplateFile?1(*arg, **kw)
+chameleon_zpt.ZPTTemplateRenderer.implementation?4()
+chameleon_zpt.ZPTTemplateRenderer.template?4()
+chameleon_zpt.ZPTTemplateRenderer?1(path, lookup)
+chameleon_zpt.get_renderer?4(path)
+chameleon_zpt.get_template?4(path)
+chameleon_zpt.render_template?4(path, **kw)
+chameleon_zpt.render_template_to_response?4(path, **kw)
+chameleon_zpt.renderer_factory?4(info)
+compat.PY3?7
+compat.ascii_native_?4(s)
+compat.bytes_?4(s, encoding='latin-1', errors='strict')
+compat.decode_path_info?4(path)
+compat.exec_?4(code, globs=None, locs=None)
+compat.is_bound_method?4(ob)
+compat.is_nonstr_iter?4(v)
+compat.iteritems_?4(d)
+compat.iterkeys_?4(d)
+compat.itervalues_?4(d)
+compat.map_?4(*arg)
+compat.native_?4(s, encoding='latin-1', errors='strict')
+compat.reraise?4(tp, value, tb=None)
+compat.text_?4(s, encoding='latin-1', errors='strict')
+compat.unquote_bytes_to_wsgi?4(bytestring)
+compat.url_unquote_native?4(v, encoding='utf-8', errors='replace')
+compat.url_unquote_text?4(v, encoding='utf-8', errors='replace')
+config.ConfigurationError?7
+config.Configurator._ainfo?8
+config.Configurator._ctx?8
+config.Configurator._del_introspector?5()
+config.Configurator._fix_registry?5()
+config.Configurator._get_action_state?5()
+config.Configurator._get_introspector?5()
+config.Configurator._make_spec?5(path_or_spec)
+config.Configurator._set_action_state?5(state)
+config.Configurator._set_introspector?5(introspector)
+config.Configurator._split_spec?5(path_or_spec)
+config.Configurator.action?4(discriminator, callable=None, args=(), kw=None, order=0, introspectables=(), **extra)
+config.Configurator.action_info?4()
+config.Configurator.action_state?7
+config.Configurator.basepath?7
+config.Configurator.bypath?4()
+config.Configurator.commit?4()
+config.Configurator.conflicts?7
+config.Configurator.include?4(callable, route_prefix=None)
+config.Configurator.includepath?7
+config.Configurator.info?7
+config.Configurator.inspect?7
+config.Configurator.introspectable?7
+config.Configurator.introspector?7
+config.Configurator.manager?7
+config.Configurator.notify?4()
+config.Configurator.object_description?7
+config.Configurator.output?7
+config.Configurator.queryAdapterOrSelf?4(interface, default=None)
+config.Configurator.registerSelfAdapter?4(provided=None, name=empty, info=empty, event=True)
+config.Configurator.setup_registry?4(settings=None, root_factory=None, authentication_policy=None, authorization_policy=None, renderers=None, debug_logger=None, locale_negotiator=None, request_factory=None, renderer_globals_factory=None, default_permission=None, session_factory=None, default_view_mapper=None, exceptionresponse_view=default_exceptionresponse_view, )
+config.Configurator.unique?7
+config.Configurator.venusian?7
+config.Configurator?1(registry=None, package=None, settings=None, root_factory=None, authentication_policy=None, authorization_policy=None, renderers=None, debug_logger=None, locale_negotiator=None, request_factory=None, renderer_globals_factory=None, default_permission=None, session_factory=None, default_view_mapper=None, autocommit=False, exceptionresponse_view=default_exceptionresponse_view, route_prefix=None, introspection=True, )
+config._marker?8
+config.adapters.AdaptersConfiguratorMixin._register_response_adapters?5()
+config.adapters.AdaptersConfiguratorMixin.add_resource_url_adapter?4(adapter, resource_iface=None)
+config.adapters.AdaptersConfiguratorMixin.add_response_adapter?4(adapter, type_or_iface)
+config.adapters.AdaptersConfiguratorMixin.add_subscriber?4(subscriber, iface=None)
+config.adapters.AdaptersConfiguratorMixin.add_traverser?4(adapter, iface=None)
+config.adapters.AdaptersConfiguratorMixin.register?4()
+config.assets.AssetsConfiguratorMixin._override?5(package, path, override_package, override_prefix, PackageOverrides=PackageOverrides)
+config.assets.AssetsConfiguratorMixin.override_asset?4(to_override, override_with, _override=None)
+config.assets.AssetsConfiguratorMixin.override_resource?7
+config.assets.AssetsConfiguratorMixin.register?4()
+config.assets.DirectoryOverride?1(path, package, prefix)
+config.assets.FileOverride?1(path, package, prefix)
+config.assets.OverrideProvider._get_overrides?5()
+config.assets.OverrideProvider.get_resource_filename?4(manager, resource_name)
+config.assets.OverrideProvider.get_resource_stream?4(manager, resource_name)
+config.assets.OverrideProvider.get_resource_string?4(manager, resource_name)
+config.assets.OverrideProvider.has_resource?4(resource_name)
+config.assets.OverrideProvider.resource_isdir?4(resource_name)
+config.assets.OverrideProvider.resource_listdir?4(resource_name)
+config.assets.OverrideProvider?1(module)
+config.assets.PackageOverrides.get_filename?4(resource_name)
+config.assets.PackageOverrides.get_stream?4(resource_name)
+config.assets.PackageOverrides.get_string?4(resource_name)
+config.assets.PackageOverrides.has_resource?4(resource_name)
+config.assets.PackageOverrides.insert?4(path, package, prefix)
+config.assets.PackageOverrides.isdir?4(resource_name)
+config.assets.PackageOverrides.listdir?4(resource_name)
+config.assets.PackageOverrides.search_path?4(resource_name)
+config.assets.PackageOverrides?1(package, pkg_resources=pkg_resources)
+config.empty?7
+config.expand_action?4(discriminator, callable=None, args=(), kw=None, includepath=(), info=None, order=0, introspectables=())
+config.factories.FactoriesConfiguratorMixin._set_root_factory?8
+config.factories.FactoriesConfiguratorMixin.register?4()
+config.factories.FactoriesConfiguratorMixin.set_request_factory?4(factory)
+config.factories.FactoriesConfiguratorMixin.set_request_property?4(callable, name=None, reify=False)
+config.factories.FactoriesConfiguratorMixin.set_root_factory?4(factory)
+config.factories.FactoriesConfiguratorMixin.set_session_factory?4(factory)
+config.factories._set_request_properties?5(event)
+config.global_registries?7
+config.i18n.I18NConfiguratorMixin._set_locale_negotiator?5(negotiator)
+config.i18n.I18NConfiguratorMixin.add_translation_dirs?4(*specs)
+config.i18n.I18NConfiguratorMixin.register?4()
+config.i18n.I18NConfiguratorMixin.set_locale_negotiator?4(negotiator)
+config.i18n.translator?4(msg)
+config.rendering.DEFAULT_RENDERERS?7
+config.rendering.RenderingConfiguratorMixin.add_renderer?4(name, factory)
+config.rendering.RenderingConfiguratorMixin.register?4()
+config.rendering.RenderingConfiguratorMixin.set_renderer_globals_factory?4(factory, warn=True)
+config.routes.RoutesConfiguratorMixin._add_view_from_route?5(route_name, view, context, permission, renderer, attr, )
+config.routes.RoutesConfiguratorMixin.add_route?4(name, pattern=None, view=None, view_for=None, permission=None, factory=None, for_=None, header=None, xhr=False, accept=None, path_info=None, request_method=None, request_param=None, traverse=None, custom_predicates=(), view_permission=None, renderer=None, view_renderer=None, view_context=None, view_attr=None, use_global_views=False, path=None, pregenerator=None, static=False, )
+config.routes.RoutesConfiguratorMixin.get_routes_mapper?4()
+config.routes.RoutesConfiguratorMixin.register_connect?4()
+config.routes.RoutesConfiguratorMixin.register_route_request_iface?4()
+config.security.SecurityConfiguratorMixin._set_authentication_policy?5(policy)
+config.security.SecurityConfiguratorMixin._set_authorization_policy?5(policy)
+config.security.SecurityConfiguratorMixin.ensure?4()
+config.security.SecurityConfiguratorMixin.register?4()
+config.security.SecurityConfiguratorMixin.set_authentication_policy?4(policy)
+config.security.SecurityConfiguratorMixin.set_authorization_policy?4(policy)
+config.security.SecurityConfiguratorMixin.set_default_permission?4(permission)
+config.settings.Settings?1(d=None, _environ_=os.environ, **kw)
+config.settings.SettingsConfiguratorMixin._set_settings?5(mapping)
+config.settings.SettingsConfiguratorMixin.add_settings?4(settings=None, **kw)
+config.settings.SettingsConfiguratorMixin.get_settings?4()
+config.testing.DummyTraverserFactory?1(context)
+config.testing.TestingConfiguratorMixin.subscriber?4()
+config.testing.TestingConfiguratorMixin.testing_add_renderer?4(path, renderer=None)
+config.testing.TestingConfiguratorMixin.testing_add_subscriber?4(event_iface=None)
+config.testing.TestingConfiguratorMixin.testing_add_template?7
+config.testing.TestingConfiguratorMixin.testing_models?7
+config.testing.TestingConfiguratorMixin.testing_resources?4(resources)
+config.testing.TestingConfiguratorMixin.testing_securitypolicy?4(userid=None, groupids=(), permissive=True)
+config.tweens.CyclicDependencyError?1(cycles)
+config.tweens.Tweens.add_arc?4(tonode)
+config.tweens.Tweens.add_explicit?4(name, factory)
+config.tweens.Tweens.add_implicit?4(name, factory, under=None, over=None)
+config.tweens.Tweens.add_node?4()
+config.tweens.Tweens.implicit?4()
+config.tweens.Tweens?1()
+config.tweens.TweensConfiguratorMixin._add_tween?5(tween_factory, under=None, over=None, explicit=False)
+config.tweens.TweensConfiguratorMixin.add_tween?4(tween_factory, under=None, over=None)
+config.tweens.TweensConfiguratorMixin.is_string_or_iterable?4()
+config.tweens.TweensConfiguratorMixin.register?4()
+config.util.ActionInfo?1(file, line, function, src)
+config.util.DEFAULT_PHASH?7
+config.util.MAX_ORDER?7
+config.util.accept_predicate?4(context, request)
+config.util.action_method?4(wrapped)
+config.util.as_sorted_tuple?4(val)
+config.util.containment_predicate?4(context, request)
+config.util.header_predicate?4(context, request)
+config.util.make_predicates?4(xhr=None, request_method=None, path_info=None, request_param=None, match_param=None, header=None, accept=None, containment=None, request_type=None, traverse=None, custom=())
+config.util.match_param_predicate?4(context, request)
+config.util.path_info_predicate?4(context, request)
+config.util.request_method_predicate?4(context, request)
+config.util.request_param_predicate?4(context, request)
+config.util.request_type_predicate?4(context, request)
+config.util.traverse_predicate?4(context, request)
+config.util.wrapper?4(self, *arg, **kw)
+config.util.xhr_predicate?4(context, request)
+config.views.DefaultViewMapper._attr_view?5(request)
+config.views.DefaultViewMapper._class_requestonly_view?5(request)
+config.views.DefaultViewMapper._class_view?5(request)
+config.views.DefaultViewMapper._requestonly_view?5(request)
+config.views.DefaultViewMapper.map_class?4(view)
+config.views.DefaultViewMapper.map_class_native?4(view)
+config.views.DefaultViewMapper.map_class_requestonly?4(view)
+config.views.DefaultViewMapper.map_nonclass?4(view)
+config.views.DefaultViewMapper.map_nonclass_attr?4(view)
+config.views.DefaultViewMapper.map_nonclass_requestonly?4(view)
+config.views.DefaultViewMapper.mapped_view?4(request)
+config.views.DefaultViewMapper?1(**kw)
+config.views.MultiView.add?4(view, order, accept=None, phash=None)
+config.views.MultiView.get_views?4(request)
+config.views.MultiView.match?4(context, request)
+config.views.MultiView?1(name)
+config.views.StaticURLInfo._get_registrations?5(registry)
+config.views.StaticURLInfo.add?4(config, name, spec, **extra)
+config.views.StaticURLInfo.generate?4(path, request, **kw)
+config.views.StaticURLInfo.register?4()
+config.views.ViewDeriver._authdebug_view?5(request)
+config.views.ViewDeriver._owrapped_view?5(request)
+config.views.ViewDeriver._permitted?5(request)
+config.views.ViewDeriver._rendered_view?5(view, view_renderer)
+config.views.ViewDeriver._response_resolved_view?5(view)
+config.views.ViewDeriver._secured_view?5(request)
+config.views.ViewDeriver.attr_view?4(request)
+config.views.ViewDeriver.attr_wrapped_view?4(view)
+config.views.ViewDeriver.authdebug_view?4(view)
+config.views.ViewDeriver.checker?4(request)
+config.views.ViewDeriver.decorated_view?4(view)
+config.views.ViewDeriver.http_cached_view?4(view)
+config.views.ViewDeriver.mapped_view?4(view)
+config.views.ViewDeriver.owrapped_view?4(view)
+config.views.ViewDeriver.predicate_wrapper?4(request)
+config.views.ViewDeriver.predicated_view?4(view)
+config.views.ViewDeriver.rendered_view?4(request)
+config.views.ViewDeriver.secured_view?4(view)
+config.views.ViewDeriver.viewresult_to_response?4(request)
+config.views.ViewDeriver.wrapper?4(request)
+config.views.ViewDeriver?1(**kw)
+config.views.ViewsConfiguratorMixin._derive_view?5(view, permission=None, predicates=(), attr=None, renderer=None, wrapper_viewname=None, viewname=None, accept=None, order=MAX_ORDER, phash=DEFAULT_PHASH, decorator=None, mapper=None, http_cache=None)
+config.views.ViewsConfiguratorMixin.add_forbidden_view?4(view=None, attr=None, renderer=None, wrapper=None, route_name=None, request_type=None, request_method=None, request_param=None, containment=None, xhr=None, accept=None, header=None, path_info=None, custom_predicates=(), decorator=None, mapper=None, match_param=None)
+config.views.ViewsConfiguratorMixin.add_notfound_view?4(view=None, attr=None, renderer=None, wrapper=None, route_name=None, request_type=None, request_method=None, request_param=None, containment=None, xhr=None, accept=None, header=None, path_info=None, custom_predicates=(), decorator=None, mapper=None, match_param=None, append_slash=False)
+config.views.ViewsConfiguratorMixin.add_static_view?4(name, path, **kw)
+config.views.ViewsConfiguratorMixin.add_view?4(view=None, name="", for_=None, permission=None, request_type=None, route_name=None, request_method=None, request_param=None, containment=None, attr=None, renderer=None, wrapper=None, xhr=False, accept=None, header=None, path_info=None, custom_predicates=(), context=None, decorator=None, mapper=None, http_cache=None, match_param=None)
+config.views.ViewsConfiguratorMixin.derive_view?4(view, attr=None, renderer=None)
+config.views.ViewsConfiguratorMixin.regclosure?4()
+config.views.ViewsConfiguratorMixin.register?4()
+config.views.ViewsConfiguratorMixin.set_forbidden_view?7
+config.views.ViewsConfiguratorMixin.set_notfound_view?7
+config.views.ViewsConfiguratorMixin.set_view_mapper?4(mapper)
+config.views.ViewsConfiguratorMixin.view?4(request)
+config.views.inner?4(self, view)
+config.views.isexception?4(o)
+config.views.preserve_view_attrs?4(view, wrapper)
+config.views.requestonly?4(view, attr=None)
+config.views.url_parse?7
+config.views.urljoin?7
+config.views.view_description?4(view)
+config.views.viewdefaults?4(wrapped)
+config.views.wrapper?4(self, *arg, **kw)
+config.views.wraps_view?4(wrapper)
+config.zca.ZCAConfiguratorMixin.hook_zca?4()
+config.zca.ZCAConfiguratorMixin.unhook_zca?4()
+configuration.ConfigurationError?7
+configuration.Configurator?1(registry=None, package=None, settings=None, root_factory=None, authentication_policy=None, authorization_policy=None, renderers=DEFAULT_RENDERERS, debug_logger=None, locale_negotiator=None, request_factory=None, renderer_globals_factory=None, default_permission=None, session_factory=None, autocommit=True, route_prefix=None, introspection=True, )
+decorator.reify?1(wrapped)
+encode._enc?5(val)
+encode.url_quote?4(s, safe='')
+encode.urlencode?4(query, doseq=True)
+events.AfterTraversal?7
+events.ApplicationCreated?1(app)
+events.BeforeRender?1(system, rendering_val=None)
+events.ContextFound?1(request)
+events.NewRequest?1(request)
+events.NewResponse?1(request, response)
+events.WSGIApplicationCreatedEvent?7
+events.subscriber.register?4(scanner, name, wrapped)
+events.subscriber.venusian?7
+events.subscriber?1(*ifaces)
+exceptions.CR?7
+exceptions.ConfigurationConflictError?1(conflicts)
+exceptions.ConfigurationExecutionError?1(etype, evalue, info)
+exceptions.Forbidden?7
+exceptions.NotFound?7
+fixers.fix_bfg_imports.ATTR?7
+fixers.fix_bfg_imports.BFG_INCLUDE_IN_ATTR?7
+fixers.fix_bfg_imports.BFG_IN_ATTR?7
+fixers.fix_bfg_imports.BFG_NS_RE?7
+fixers.fix_bfg_imports.FixBfgImports.build_pattern?4()
+fixers.fix_bfg_imports.FixBfgImports.compile_pattern?4()
+fixers.fix_bfg_imports.FixBfgImports.mapping?7
+fixers.fix_bfg_imports.FixBfgImports.match?4(node)
+fixers.fix_bfg_imports.FixBfgImports.run_order?7
+fixers.fix_bfg_imports.FixBfgImports.start_tree?4(tree, filename)
+fixers.fix_bfg_imports.FixBfgImports.transform?4(node, results)
+fixers.fix_bfg_imports.INCLUDE_ATTR?7
+fixers.fix_bfg_imports.MAPPING?7
+fixers.fix_bfg_imports.MODULE_ALTERNATIVES?7
+fixers.fix_bfg_imports.MODULE_NAMES?7
+fixers.fix_bfg_imports.NS?7
+fixers.fix_bfg_imports.alternates?4(members)
+fixers.fix_bfg_imports.build_pattern?4(mapping=MAPPING)
+fixers.fix_bfg_imports.fix_zcml?4(path)
+fixers.fix_bfg_imports.main?4(argv=None)
+fixers.fix_bfg_imports.replace?4(match)
+httpexceptions.HTTPAccepted.code?7
+httpexceptions.HTTPAccepted.explanation?7
+httpexceptions.HTTPAccepted.title?7
+httpexceptions.HTTPBadGateway.code?7
+httpexceptions.HTTPBadGateway.explanation?7
+httpexceptions.HTTPBadGateway.title?7
+httpexceptions.HTTPClientError.code?7
+httpexceptions.HTTPClientError.explanation?7
+httpexceptions.HTTPClientError.title?7
+httpexceptions.HTTPConflict.code?7
+httpexceptions.HTTPConflict.explanation?7
+httpexceptions.HTTPConflict.title?7
+httpexceptions.HTTPCreated.code?7
+httpexceptions.HTTPCreated.title?7
+httpexceptions.HTTPExpectationFailed.code?7
+httpexceptions.HTTPExpectationFailed.explanation?7
+httpexceptions.HTTPExpectationFailed.title?7
+httpexceptions.HTTPFailedDependency.code?7
+httpexceptions.HTTPFailedDependency.explanation?7
+httpexceptions.HTTPFailedDependency.title?7
+httpexceptions.HTTPForbidden.code?7
+httpexceptions.HTTPForbidden.explanation?7
+httpexceptions.HTTPForbidden.title?7
+httpexceptions.HTTPForbidden?1(detail=None, headers=None, comment=None, body_template=None, result=None, **kw)
+httpexceptions.HTTPFound.code?7
+httpexceptions.HTTPFound.explanation?7
+httpexceptions.HTTPFound.title?7
+httpexceptions.HTTPGatewayTimeout.code?7
+httpexceptions.HTTPGatewayTimeout.explanation?7
+httpexceptions.HTTPGatewayTimeout.title?7
+httpexceptions.HTTPGone.code?7
+httpexceptions.HTTPGone.explanation?7
+httpexceptions.HTTPGone.title?7
+httpexceptions.HTTPInsufficientStorage.code?7
+httpexceptions.HTTPInsufficientStorage.explanation?7
+httpexceptions.HTTPInsufficientStorage.title?7
+httpexceptions.HTTPLengthRequired.code?7
+httpexceptions.HTTPLengthRequired.explanation?7
+httpexceptions.HTTPLengthRequired.title?7
+httpexceptions.HTTPLocked.code?7
+httpexceptions.HTTPLocked.explanation?7
+httpexceptions.HTTPLocked.title?7
+httpexceptions.HTTPMethodNotAllowed.body_template_obj?7
+httpexceptions.HTTPMethodNotAllowed.code?7
+httpexceptions.HTTPMethodNotAllowed.title?7
+httpexceptions.HTTPMovedPermanently.code?7
+httpexceptions.HTTPMovedPermanently.title?7
+httpexceptions.HTTPMultipleChoices.code?7
+httpexceptions.HTTPMultipleChoices.title?7
+httpexceptions.HTTPNoContent.code?7
+httpexceptions.HTTPNoContent.empty_body?7
+httpexceptions.HTTPNoContent.title?7
+httpexceptions.HTTPNonAuthoritativeInformation.code?7
+httpexceptions.HTTPNonAuthoritativeInformation.title?7
+httpexceptions.HTTPNotAcceptable.code?7
+httpexceptions.HTTPNotAcceptable.title?7
+httpexceptions.HTTPNotFound.code?7
+httpexceptions.HTTPNotFound.explanation?7
+httpexceptions.HTTPNotFound.title?7
+httpexceptions.HTTPNotImplemented.code?7
+httpexceptions.HTTPNotImplemented.title?7
+httpexceptions.HTTPNotModified.code?7
+httpexceptions.HTTPNotModified.empty_body?7
+httpexceptions.HTTPNotModified.title?7
+httpexceptions.HTTPOk.code?7
+httpexceptions.HTTPOk.title?7
+httpexceptions.HTTPPartialContent.code?7
+httpexceptions.HTTPPartialContent.title?7
+httpexceptions.HTTPPaymentRequired.code?7
+httpexceptions.HTTPPaymentRequired.explanation?7
+httpexceptions.HTTPPaymentRequired.title?7
+httpexceptions.HTTPPreconditionFailed.code?7
+httpexceptions.HTTPPreconditionFailed.explanation?7
+httpexceptions.HTTPPreconditionFailed.title?7
+httpexceptions.HTTPProxyAuthenticationRequired.code?7
+httpexceptions.HTTPProxyAuthenticationRequired.explanation?7
+httpexceptions.HTTPProxyAuthenticationRequired.title?7
+httpexceptions.HTTPRequestEntityTooLarge.code?7
+httpexceptions.HTTPRequestEntityTooLarge.explanation?7
+httpexceptions.HTTPRequestEntityTooLarge.title?7
+httpexceptions.HTTPRequestRangeNotSatisfiable.code?7
+httpexceptions.HTTPRequestRangeNotSatisfiable.explanation?7
+httpexceptions.HTTPRequestRangeNotSatisfiable.title?7
+httpexceptions.HTTPRequestTimeout.code?7
+httpexceptions.HTTPRequestTimeout.explanation?7
+httpexceptions.HTTPRequestTimeout.title?7
+httpexceptions.HTTPRequestURITooLong.code?7
+httpexceptions.HTTPRequestURITooLong.explanation?7
+httpexceptions.HTTPRequestURITooLong.title?7
+httpexceptions.HTTPResetContent.code?7
+httpexceptions.HTTPResetContent.empty_body?7
+httpexceptions.HTTPResetContent.title?7
+httpexceptions.HTTPSeeOther.code?7
+httpexceptions.HTTPSeeOther.title?7
+httpexceptions.HTTPServerError.code?7
+httpexceptions.HTTPServerError.explanation?7
+httpexceptions.HTTPServerError.title?7
+httpexceptions.HTTPServiceUnavailable.code?7
+httpexceptions.HTTPServiceUnavailable.explanation?7
+httpexceptions.HTTPServiceUnavailable.title?7
+httpexceptions.HTTPTemporaryRedirect.code?7
+httpexceptions.HTTPTemporaryRedirect.title?7
+httpexceptions.HTTPUnauthorized.code?7
+httpexceptions.HTTPUnauthorized.explanation?7
+httpexceptions.HTTPUnauthorized.title?7
+httpexceptions.HTTPUnprocessableEntity.code?7
+httpexceptions.HTTPUnprocessableEntity.explanation?7
+httpexceptions.HTTPUnprocessableEntity.title?7
+httpexceptions.HTTPUnsupportedMediaType.code?7
+httpexceptions.HTTPUnsupportedMediaType.title?7
+httpexceptions.HTTPUseProxy.code?7
+httpexceptions.HTTPUseProxy.explanation?7
+httpexceptions.HTTPUseProxy.title?7
+httpexceptions.HTTPVersionNotSupported.code?7
+httpexceptions.HTTPVersionNotSupported.explanation?7
+httpexceptions.HTTPVersionNotSupported.title?7
+httpexceptions.WSGIHTTPException.body_template_obj?7
+httpexceptions.WSGIHTTPException.code?7
+httpexceptions.WSGIHTTPException.empty_body?7
+httpexceptions.WSGIHTTPException.exception?7
+httpexceptions.WSGIHTTPException.explanation?7
+httpexceptions.WSGIHTTPException.html_template_obj?7
+httpexceptions.WSGIHTTPException.plain_template_obj?7
+httpexceptions.WSGIHTTPException.prepare?4(environ)
+httpexceptions.WSGIHTTPException.title?7
+httpexceptions.WSGIHTTPException.wsgi_response?4()
+httpexceptions.WSGIHTTPException?1(detail=None, headers=None, comment=None, body_template=None, **kw)
+httpexceptions._HTTPMove.body_template_obj?7
+httpexceptions._HTTPMove.explanation?7
+httpexceptions._HTTPMove?2(location='', detail=None, headers=None, comment=None, body_template=None, **kw)
+httpexceptions._no_escape?5(value)
+httpexceptions.code?7
+httpexceptions.default_exceptionresponse_view?4(context, request)
+httpexceptions.exception_response?4(status_code, **kw)
+httpexceptions.status_map?7
+i18n.Localizer.pluralize?4(singular, plural, n, domain=None, mapping=None)
+i18n.Localizer.translate?4(tstring, domain=None, mapping=None)
+i18n.Localizer?1(locale_name, translations)
+i18n.TranslationString?7
+i18n.TranslationStringFactory?7
+i18n.Translations.DEFAULT_DOMAIN?7
+i18n.Translations.add?4(translations, merge=True)
+i18n.Translations.dgettext?4(domain, message)
+i18n.Translations.dngettext?4(domain, singular, plural, num)
+i18n.Translations.dugettext?4(domain, message)
+i18n.Translations.dungettext?4(domain, singular, plural, num)
+i18n.Translations.ldgettext?4(domain, message)
+i18n.Translations.ldngettext?4(domain, singular, plural, num)
+i18n.Translations.load?4(dirname=None, locales=None, domain=DEFAULT_DOMAIN)
+i18n.Translations.merge?4(translations)
+i18n.Translations?1(fileobj=None, domain=DEFAULT_DOMAIN)
+i18n.default_locale_negotiator?4(request)
+i18n.get_locale_name?4(request)
+i18n.get_localizer?4(request)
+i18n.make_localizer?4(current_locale_name, translation_directories)
+i18n.negotiate_locale_name?4(request)
+interfaces.IActionInfo.file?7
+interfaces.IActionInfo.line?7
+interfaces.IAfterTraversal?7
+interfaces.IApplicationCreated.app?7
+interfaces.IAssetDescriptor.abspath?4()
+interfaces.IAssetDescriptor.absspec?4()
+interfaces.IAssetDescriptor.exists?4()
+interfaces.IAssetDescriptor.isdir?4()
+interfaces.IAssetDescriptor.listdir?4()
+interfaces.IAssetDescriptor.stream?4()
+interfaces.IAuthenticationPolicy.authenticated_userid?4()
+interfaces.IAuthenticationPolicy.effective_principals?4()
+interfaces.IAuthenticationPolicy.forget?4()
+interfaces.IAuthenticationPolicy.remember?4(principal, **kw)
+interfaces.IAuthenticationPolicy.unauthenticated_userid?4()
+interfaces.IAuthorizationPolicy.permits?4(principals, permission)
+interfaces.IAuthorizationPolicy.principals_allowed_by_permission?4(permission)
+interfaces.IBeforeRender.rendering_val?7
+interfaces.IChameleonLookup.auto_reload?7
+interfaces.IChameleonLookup.debug?7
+interfaces.IChameleonLookup.translate?7
+interfaces.IContextFound.request?7
+interfaces.IContextURL.virtual_root?4()
+interfaces.IDict.clear?4()
+interfaces.IDict.get?4(default=None)
+interfaces.IDict.items?4()
+interfaces.IDict.iteritems?4()
+interfaces.IDict.iterkeys?4()
+interfaces.IDict.itervalues?4()
+interfaces.IDict.keys?4()
+interfaces.IDict.pop?4(default=None)
+interfaces.IDict.popitem?4()
+interfaces.IDict.setdefault?4(default=None)
+interfaces.IDict.update?4()
+interfaces.IDict.values?4()
+interfaces.IExceptionResponse.prepare?4()
+interfaces.IIntrospectable.action_info?7
+interfaces.IIntrospectable.category_name?7
+interfaces.IIntrospectable.discriminator?7
+interfaces.IIntrospectable.discriminator_hash?7
+interfaces.IIntrospectable.order?7
+interfaces.IIntrospectable.register?4(action_info)
+interfaces.IIntrospectable.relate?4(discriminator)
+interfaces.IIntrospectable.title?7
+interfaces.IIntrospectable.type_name?7
+interfaces.IIntrospectable.unrelate?4(discriminator)
+interfaces.IIntrospector.add?4()
+interfaces.IIntrospector.categories?4()
+interfaces.IIntrospector.categorized?4()
+interfaces.IIntrospector.get?4(discriminator, default=None)
+interfaces.IIntrospector.get_category?4(default=None, sort_key=None)
+interfaces.IIntrospector.relate?4()
+interfaces.IIntrospector.related?4()
+interfaces.IIntrospector.remove?4(discriminator)
+interfaces.IIntrospector.unrelate?4()
+interfaces.ILogger?7
+interfaces.IMultiDict.add?4(value)
+interfaces.IMultiDict.dict_of_lists?4()
+interfaces.IMultiDict.extend?4(**kwargs)
+interfaces.IMultiDict.getall?4()
+interfaces.IMultiDict.getone?4()
+interfaces.IMultiDict.mixed?4()
+interfaces.IMultiView.add?4(predicates, order, accept=None, phash=None)
+interfaces.INewRequest.request?7
+interfaces.INewResponse.request?7
+interfaces.INewResponse.response?7
+interfaces.IRendererInfo.name?7
+interfaces.IRendererInfo.package?7
+interfaces.IRendererInfo.registry?7
+interfaces.IRendererInfo.settings?7
+interfaces.IRendererInfo.type?7
+interfaces.IRequestFactory.blank?4()
+interfaces.IResourceURL.physical_path?7
+interfaces.IResourceURL.virtual_path?7
+interfaces.IResponse.RequestClass?7
+interfaces.IResponse.accept_ranges?7
+interfaces.IResponse.age?7
+interfaces.IResponse.allow?7
+interfaces.IResponse.app_iter?7
+interfaces.IResponse.app_iter_range?4(stop)
+interfaces.IResponse.body?7
+interfaces.IResponse.body_file?7
+interfaces.IResponse.cache_control?7
+interfaces.IResponse.cache_expires?7
+interfaces.IResponse.charset?7
+interfaces.IResponse.conditional_response_app?4(start_response)
+interfaces.IResponse.content_disposition?7
+interfaces.IResponse.content_encoding?7
+interfaces.IResponse.content_language?7
+interfaces.IResponse.content_length?7
+interfaces.IResponse.content_location?7
+interfaces.IResponse.content_md5?7
+interfaces.IResponse.content_range?7
+interfaces.IResponse.content_type?7
+interfaces.IResponse.content_type_params?7
+interfaces.IResponse.copy?4()
+interfaces.IResponse.date?7
+interfaces.IResponse.delete_cookie?4(path='/', domain=None)
+interfaces.IResponse.encode_content?4(lazy=False)
+interfaces.IResponse.environ?7
+interfaces.IResponse.etag?7
+interfaces.IResponse.expires?7
+interfaces.IResponse.headerlist?7
+interfaces.IResponse.headers?7
+interfaces.IResponse.last_modified?7
+interfaces.IResponse.location?7
+interfaces.IResponse.md5_etag?4(set_content_md5=False)
+interfaces.IResponse.merge_cookies?4()
+interfaces.IResponse.pragma?7
+interfaces.IResponse.request?7
+interfaces.IResponse.retry_after?7
+interfaces.IResponse.server?7
+interfaces.IResponse.set_cookie?4(value='', max_age=None, path='/', domain=None, secure=False, httponly=False, comment=None, expires=None, overwrite=False)
+interfaces.IResponse.status?7
+interfaces.IResponse.status_int?7
+interfaces.IResponse.unicode_body?7
+interfaces.IResponse.unset_cookie?4(strict=True)
+interfaces.IResponse.vary?7
+interfaces.IResponse.www_authenticate?7
+interfaces.IRoute.factory?7
+interfaces.IRoute.generate?4()
+interfaces.IRoute.match?4()
+interfaces.IRoute.name?7
+interfaces.IRoute.pattern?7
+interfaces.IRoute.predicates?7
+interfaces.IRoute.pregenerator?7
+interfaces.IRouter.registry?7
+interfaces.IRoutesMapper.connect?4(pattern, factory=None, predicates=(), pregenerator=None, static=True)
+interfaces.IRoutesMapper.generate?4(kw)
+interfaces.IRoutesMapper.get_route?4()
+interfaces.IRoutesMapper.get_routes?4()
+interfaces.IRoutesMapper.has_routes?4()
+interfaces.ISession.changed?4()
+interfaces.ISession.created?7
+interfaces.ISession.flash?4(queue='', allow_duplicate=True)
+interfaces.ISession.get_csrf_token?4()
+interfaces.ISession.invalidate?4()
+interfaces.ISession.new?7
+interfaces.ISession.new_csrf_token?4()
+interfaces.ISession.peek_flash?4()
+interfaces.ISession.pop_flash?4()
+interfaces.IStaticURLInfo.add?4(name, spec, **extra)
+interfaces.IStaticURLInfo.generate?4(request, **kw)
+interfaces.ITemplateRenderer.implementation?4()
+interfaces.ITraverserFactory?7
+interfaces.IWSGIApplicationCreatedEvent?7
+interfaces.PHASE1_CONFIG?7
+interfaces.PHASE2_CONFIG?7
+interfaces.VH_ROOT_KEY?7
+location.inside?4(resource1, resource2)
+location.lineage?4(resource)
+mako_templating.MakoLookupTemplateRenderer.implementation?4()
+mako_templating.MakoLookupTemplateRenderer?1(path, lookup)
+mako_templating.MakoRendererFactoryHelper.sget?4(default=None)
+mako_templating.MakoRendererFactoryHelper?1(settings_prefix=None)
+mako_templating.MakoRenderingException?1(text)
+mako_templating.PkgResourceTemplateLookup.adjust_uri?4(uri, relativeto)
+mako_templating.PkgResourceTemplateLookup.get_template?4(uri)
+mako_templating.registry_lock?7
+mako_templating.renderer_factory?7
+paster.PyramidTemplate?7
+paster._getpathsec?5(config_uri, name)
+paster.bootstrap?4(config_uri, request=None)
+paster.get_app?4(config_uri, name=None, loadapp=loadapp)
+paster.get_appsettings?4(config_uri, name=None, appconfig=appconfig)
+paster.setup_logging?4(config_uri, fileConfig=fileConfig, configparser=configparser)
+path.AssetResolver.resolve?4(spec)
+path.CALLER_PACKAGE?7
+path.DottedNameResolver._pkg_resources_style?5(value, package)
+path.DottedNameResolver._resolve?5(dotted, package)
+path.DottedNameResolver._zope_dottedname_style?5(value, package)
+path.DottedNameResolver.maybe_resolve?4(dotted)
+path.DottedNameResolver.resolve?4(dotted)
+path.FSAssetDescriptor.abspath?4()
+path.FSAssetDescriptor.absspec?4()
+path.FSAssetDescriptor.exists?4()
+path.FSAssetDescriptor.isdir?4()
+path.FSAssetDescriptor.listdir?4()
+path.FSAssetDescriptor.stream?4()
+path.FSAssetDescriptor?1(path)
+path.PkgResourcesAssetDescriptor.abspath?4()
+path.PkgResourcesAssetDescriptor.absspec?4()
+path.PkgResourcesAssetDescriptor.exists?4()
+path.PkgResourcesAssetDescriptor.isdir?4()
+path.PkgResourcesAssetDescriptor.listdir?4()
+path.PkgResourcesAssetDescriptor.pkg_resources?7
+path.PkgResourcesAssetDescriptor.stream?4()
+path.PkgResourcesAssetDescriptor?1(pkg_name, path)
+path.Resolver.get_package?4()
+path.Resolver.get_package_name?4()
+path.Resolver?1(package=CALLER_PACKAGE)
+path.caller_module?4(level=2, sys=sys)
+path.caller_package?4(level=2, caller_module=caller_module)
+path.caller_path?4(path, level=2)
+path.ignore_types?7
+path.init_names?7
+path.package_name?4(pkg_or_module)
+path.package_of?4(pkg_or_module)
+path.package_path?4(package)
+registry.Introspectable.action_info?7
+registry.Introspectable.discriminator_hash?4()
+registry.Introspectable.order?7
+registry.Introspectable.register?4(introspector, action_info)
+registry.Introspectable.relate?4(category_name, discriminator)
+registry.Introspectable.unrelate?4(category_name, discriminator)
+registry.Introspectable?1(category_name, discriminator, title, type_name)
+registry.Introspector._get_intrs_by_pairs?5(pairs)
+registry.Introspector.add?4(intr)
+registry.Introspector.categories?4()
+registry.Introspector.categorized?4(sort_key=None)
+registry.Introspector.get?4(category_name, discriminator, default=None)
+registry.Introspector.get_category?4(category_name, default=None, sort_key=None)
+registry.Introspector.relate?4(*pairs)
+registry.Introspector.related?4(intr)
+registry.Introspector.remove?4(category_name, discriminator)
+registry.Introspector.unrelate?4(*pairs)
+registry.Introspector?1()
+registry.Registry._get_settings?5()
+registry.Registry._set_settings?5(settings)
+registry.Registry._settings?8
+registry.Registry.has_listeners?7
+registry.Registry.notify?4(*events)
+registry.Registry.queryAdapterOrSelf?4(object, interface, default=None)
+registry.Registry.registerHandler?4(*arg, **kw)
+registry.Registry.registerSelfAdapter?4(required=None, provided=None, name=empty, info=empty, event=True)
+registry.Registry.registerSubscriptionAdapter?4(*arg, **kw)
+registry.Registry.settings?7
+registry.empty?7
+registry.global_registry?7
+renderers.ChameleonRendererLookup.auto_reload?4()
+renderers.ChameleonRendererLookup.debug?4()
+renderers.ChameleonRendererLookup.get_spec?4(name, package)
+renderers.ChameleonRendererLookup.translate?4()
+renderers.ChameleonRendererLookup?1(impl, registry)
+renderers.JSONP._render?5(system)
+renderers.JSONP?1(param_name='callback')
+renderers.NullRendererHelper.clone?4(name=None, package=None, registry=None)
+renderers.NullRendererHelper.render?4(value, system_values, request=None)
+renderers.NullRendererHelper.render_to_response?4(value, system_values, request=None)
+renderers.NullRendererHelper.render_view?4(request, value, view, context)
+renderers.NullRendererHelper.settings?4()
+renderers.NullRendererHelper?1(name=None, package=None, registry=None)
+renderers.RendererHelper._make_response?5(result, request)
+renderers.RendererHelper.clone?4(name=None, package=None, registry=None)
+renderers.RendererHelper.get_renderer?4()
+renderers.RendererHelper.render?4(value, system_values, request=None)
+renderers.RendererHelper.render_to_response?4(value, system_values, request=None)
+renderers.RendererHelper.render_view?4(request, response, view, context)
+renderers.RendererHelper.renderer?4()
+renderers.RendererHelper.settings?4()
+renderers.RendererHelper?1(name=None, package=None, registry=None)
+renderers._render?5(value, system)
+renderers.get_renderer?4(renderer_name, package=None)
+renderers.json_renderer_factory?4(info)
+renderers.null_renderer?7
+renderers.registry_lock?7
+renderers.render?4(renderer_name, value, request=None, package=None)
+renderers.render_to_response?4(renderer_name, value, request=None, package=None)
+renderers.string_renderer_factory?4(info)
+renderers.template_renderer_factory?4(info, impl, lock=registry_lock)
+request.CallbackMethodsMixin._process_finished_callbacks?5()
+request.CallbackMethodsMixin._process_response_callbacks?5(response)
+request.CallbackMethodsMixin.add_finished_callback?4(callback)
+request.CallbackMethodsMixin.add_response_callback?4(callback)
+request.CallbackMethodsMixin.finished_callbacks?7
+request.CallbackMethodsMixin.response_callbacks?7
+request.DeprecatedRequestMethodsMixin._response_cache_for_del?5()
+request.DeprecatedRequestMethodsMixin._response_cache_for_get?5()
+request.DeprecatedRequestMethodsMixin._response_cache_for_set?5(value)
+request.DeprecatedRequestMethodsMixin._response_charset_del?5()
+request.DeprecatedRequestMethodsMixin._response_charset_get?5()
+request.DeprecatedRequestMethodsMixin._response_charset_set?5(value)
+request.DeprecatedRequestMethodsMixin._response_content_type_del?5()
+request.DeprecatedRequestMethodsMixin._response_content_type_get?5()
+request.DeprecatedRequestMethodsMixin._response_content_type_set?5(value)
+request.DeprecatedRequestMethodsMixin._response_headerlist_del?5()
+request.DeprecatedRequestMethodsMixin._response_headerlist_get?5()
+request.DeprecatedRequestMethodsMixin._response_headerlist_set?5(value)
+request.DeprecatedRequestMethodsMixin._response_status_del?5()
+request.DeprecatedRequestMethodsMixin._response_status_get?5()
+request.DeprecatedRequestMethodsMixin._response_status_set?5(value)
+request.DeprecatedRequestMethodsMixin.dictlike?7
+request.DeprecatedRequestMethodsMixin.get?4(k, default=None)
+request.DeprecatedRequestMethodsMixin.has_key?4(k)
+request.DeprecatedRequestMethodsMixin.hl_dep?7
+request.DeprecatedRequestMethodsMixin.items?4()
+request.DeprecatedRequestMethodsMixin.iteritems?4()
+request.DeprecatedRequestMethodsMixin.iterkeys?4()
+request.DeprecatedRequestMethodsMixin.itervalues?4()
+request.DeprecatedRequestMethodsMixin.keys?4()
+request.DeprecatedRequestMethodsMixin.pop?4(k)
+request.DeprecatedRequestMethodsMixin.popitem?4()
+request.DeprecatedRequestMethodsMixin.response_cache_for?7
+request.DeprecatedRequestMethodsMixin.response_charset?7
+request.DeprecatedRequestMethodsMixin.response_content_type?7
+request.DeprecatedRequestMethodsMixin.response_headerlist?7
+request.DeprecatedRequestMethodsMixin.response_status?7
+request.DeprecatedRequestMethodsMixin.rr_dep?7
+request.DeprecatedRequestMethodsMixin.setdefault?4(v, default)
+request.DeprecatedRequestMethodsMixin.update?4(v, **kw)
+request.DeprecatedRequestMethodsMixin.values?4()
+request.Request.exc_info?7
+request.Request.exception?7
+request.Request.is_response?4(ob)
+request.Request.json_body?4()
+request.Request.matchdict?7
+request.Request.matched_route?7
+request.Request.response?4()
+request.Request.session?4()
+request.Request.tmpl_context?4()
+request.add_global_response_headers?4(request, headerlist)
+request.add_headers?4(request, response)
+request.call_app_with_subpath_as_path_info?4(request, app)
+request.route_request_iface?4(name, bases=())
+resource.abspath_from_resource_spec?7
+resource.resolve_resource_spec?7
+resource.resource_spec_from_abspath?7
+response.FileIter.close?4()
+response.FileIter.next?4()
+response.FileIter?1(file, block_size=_BLOCK_SIZE)
+response.FileResponse?1(path, request=None, cache_max_age=None, content_type=None, content_encoding=None)
+response._BLOCK_SIZE?8
+response.init_mimetypes?4(mimetypes)
+response.response_adapter.register?4(scanner, name, wrapped)
+response.response_adapter.venusian?7
+response.response_adapter?1(*types_or_ifaces)
+router.Router.debug_notfound?7
+router.Router.debug_routematch?7
+router.Router.handle_request?4(request)
+router.Router.threadlocal_manager?7
+router.Router?1(registry)
+scaffolds.AlchemyProjectTemplate._template_dir?8
+scaffolds.AlchemyProjectTemplate.summary?7
+scaffolds.PyramidTemplate.out?4(msg)
+scaffolds.PyramidTemplate.post?4(command, output_dir, vars)
+scaffolds.PyramidTemplate.pre?4(command, output_dir, vars)
+scaffolds.StarterProjectTemplate._template_dir?8
+scaffolds.StarterProjectTemplate.summary?7
+scaffolds.ZODBProjectTemplate._template_dir?8
+scaffolds.ZODBProjectTemplate.summary?7
+scaffolds.alchemy.+package+.main?4(global_config, **settings)
+scaffolds.alchemy.+package+.models.Base?7
+scaffolds.alchemy.+package+.models.DBSession?7
+scaffolds.alchemy.+package+.models.MyModel.id?7
+scaffolds.alchemy.+package+.models.MyModel.name?7
+scaffolds.alchemy.+package+.models.MyModel.value?7
+scaffolds.alchemy.+package+.models.MyModel?1(name, value)
+scaffolds.alchemy.+package+.scripts.initializedb.main?4(argv=sys.argv)
+scaffolds.alchemy.+package+.scripts.initializedb.usage?4(argv)
+scaffolds.copydir.all_answer?7
+scaffolds.copydir.copy_dir?4(source, dest, vars, verbosity, simulate, indent=0, sub_vars=True, interactive=False, overwrite=True, template_renderer=None, out_=sys.stdout)
+scaffolds.copydir.fsenc?7
+scaffolds.copydir.html_quote?4(s)
+scaffolds.copydir.makedirs?4(dir, verbosity, pad)
+scaffolds.copydir.out?4(msg)
+scaffolds.copydir.query_interactive?4(src_fn, dest_fn, src_content, dest_content, simulate, out_=sys.stdout)
+scaffolds.copydir.query_usage?7
+scaffolds.copydir.should_skip_file?4(name)
+scaffolds.copydir.skip_template?4(condition=True, *args)
+scaffolds.copydir.standard_vars?7
+scaffolds.copydir.substitute_content?4(content, vars, filename='<string>', template_renderer=None)
+scaffolds.copydir.substitute_filename?4(fn, vars)
+scaffolds.copydir.test?4(conf, true_cond, false_cond=None)
+scaffolds.copydir.url_quote?4(s)
+scaffolds.starter.+package+.main?4(global_config, **settings)
+scaffolds.template.Template._template_dir?8
+scaffolds.template.Template.check_vars?4(vars, other)
+scaffolds.template.Template.copydir?7
+scaffolds.template.Template.exists?4(path)
+scaffolds.template.Template.makedirs?4(dir)
+scaffolds.template.Template.module_dir?4()
+scaffolds.template.Template.out?4(msg)
+scaffolds.template.Template.post?4(command, output_dir, vars)
+scaffolds.template.Template.pre?4(command, output_dir, vars)
+scaffolds.template.Template.render_template?4(content, vars, filename=None)
+scaffolds.template.Template.required_templates?7
+scaffolds.template.Template.run?4(command, output_dir, vars)
+scaffolds.template.Template.template_dir?4()
+scaffolds.template.Template.write_files?4(command, output_dir, vars)
+scaffolds.template.Template?1(name)
+scaffolds.template._add_except?5(exc, info)
+scaffolds.template.double_brace_pattern?7
+scaffolds.template.double_bracerepl?4(match)
+scaffolds.template.eval_with_catch?4(expr, vars)
+scaffolds.template.fsenc?7
+scaffolds.template.substitute_double_braces?4(content, values)
+scaffolds.tests.TemplateTest.install?4(tmpl_name)
+scaffolds.tests.TemplateTest.make_venv?4(directory)
+scaffolds.tests.TemplateTest.templates?7
+scaffolds.zodb.+package+.main?4(global_config, **settings)
+scaffolds.zodb.+package+.models.appmaker?4(zodb_root)
+scaffolds.zodb.+package+.root_factory?4(request)
+scripting._make_request?5(path, registry=None)
+scripting.closer?4()
+scripting.closer?4(request=request)
+scripting.get_root?4(app, request=None)
+scripting.prepare?4(request=None, registry=None)
+scripts.common.logging_file_config?4(config_file, fileConfig=fileConfig, configparser=configparser)
+scripts.pcreate.PCreateCommand.action?7
+scripts.pcreate.PCreateCommand.all_scaffolds?4()
+scripts.pcreate.PCreateCommand.description?7
+scripts.pcreate.PCreateCommand.dest?7
+scripts.pcreate.PCreateCommand.help?7
+scripts.pcreate.PCreateCommand.out?4(msg)
+scripts.pcreate.PCreateCommand.parser?7
+scripts.pcreate.PCreateCommand.render_scaffolds?4()
+scripts.pcreate.PCreateCommand.run?4()
+scripts.pcreate.PCreateCommand.show_scaffolds?4()
+scripts.pcreate.PCreateCommand.usage?7
+scripts.pcreate.PCreateCommand.verbosity?7
+scripts.pcreate.PCreateCommand?1(argv, quiet=False)
+scripts.pcreate._bad_chars_re?8
+scripts.pcreate.main?4(argv=sys.argv, quiet=False)
+scripts.prequest.PRequestCommand.action?7
+scripts.prequest.PRequestCommand.choices?7
+scripts.prequest.PRequestCommand.description?7
+scripts.prequest.PRequestCommand.dest?7
+scripts.prequest.PRequestCommand.get_app?7
+scripts.prequest.PRequestCommand.help?7
+scripts.prequest.PRequestCommand.metavar?7
+scripts.prequest.PRequestCommand.out?4(msg)
+scripts.prequest.PRequestCommand.parser?7
+scripts.prequest.PRequestCommand.run?4()
+scripts.prequest.PRequestCommand.stdin?7
+scripts.prequest.PRequestCommand.type?7
+scripts.prequest.PRequestCommand.usage?7
+scripts.prequest.PRequestCommand?1(argv, quiet=False)
+scripts.prequest.main?4(argv=sys.argv, quiet=False)
+scripts.proutes.PRoutesCommand._get_mapper?5(registry)
+scripts.proutes.PRoutesCommand.bootstrap?7
+scripts.proutes.PRoutesCommand.description?7
+scripts.proutes.PRoutesCommand.out?4(msg)
+scripts.proutes.PRoutesCommand.parser?7
+scripts.proutes.PRoutesCommand.run?4(quiet=False)
+scripts.proutes.PRoutesCommand.stdout?7
+scripts.proutes.PRoutesCommand.usage?7
+scripts.proutes.PRoutesCommand?1(argv, quiet=False)
+scripts.proutes.main?4(argv=sys.argv, quiet=False)
+scripts.pserve.LazyWriter.close?4()
+scripts.pserve.LazyWriter.flush?4()
+scripts.pserve.LazyWriter.open?4()
+scripts.pserve.LazyWriter.write?4(text)
+scripts.pserve.LazyWriter.writelines?4(text)
+scripts.pserve.LazyWriter?1(filename, mode='w')
+scripts.pserve.MAXFD?7
+scripts.pserve.Monitor._exit?5()
+scripts.pserve.Monitor.add_file_callback?4(cls, callback)
+scripts.pserve.Monitor.add_file_callback?7
+scripts.pserve.Monitor.check_reload?4()
+scripts.pserve.Monitor.global_extra_files?7
+scripts.pserve.Monitor.global_file_callbacks?7
+scripts.pserve.Monitor.instances?7
+scripts.pserve.Monitor.periodic_reload?4()
+scripts.pserve.Monitor.watch_file?4(cls, filename)
+scripts.pserve.Monitor.watch_file?7
+scripts.pserve.Monitor?1(poll_interval)
+scripts.pserve.PServeCommand._monitor_environ_key?8
+scripts.pserve.PServeCommand._reloader_environ_key?8
+scripts.pserve.PServeCommand._remove_pid_file?5(written_pid, filename, verbosity)
+scripts.pserve.PServeCommand._scheme_re?8
+scripts.pserve.PServeCommand.action?7
+scripts.pserve.PServeCommand.change_user_group?4(user, group)
+scripts.pserve.PServeCommand.daemonize?4()
+scripts.pserve.PServeCommand.default?7
+scripts.pserve.PServeCommand.default_verbosity?7
+scripts.pserve.PServeCommand.description?7
+scripts.pserve.PServeCommand.dest?7
+scripts.pserve.PServeCommand.help?7
+scripts.pserve.PServeCommand.loadapp?4(app_spec, name, relative_to, **kw)
+scripts.pserve.PServeCommand.loadserver?4(server_spec, name, relative_to, **kw)
+scripts.pserve.PServeCommand.metavar?7
+scripts.pserve.PServeCommand.out?4(msg)
+scripts.pserve.PServeCommand.parse_vars?4(args)
+scripts.pserve.PServeCommand.parser?7
+scripts.pserve.PServeCommand.possible_subcommands?7
+scripts.pserve.PServeCommand.quote_first_command_arg?4(arg)
+scripts.pserve.PServeCommand.record_pid?4(pid_file)
+scripts.pserve.PServeCommand.restart_with_monitor?4(reloader=False)
+scripts.pserve.PServeCommand.restart_with_reloader?4()
+scripts.pserve.PServeCommand.run?4()
+scripts.pserve.PServeCommand.serve?4()
+scripts.pserve.PServeCommand.show_status?4()
+scripts.pserve.PServeCommand.stop_daemon?4()
+scripts.pserve.PServeCommand.usage?7
+scripts.pserve.PServeCommand.verbose?7
+scripts.pserve.PServeCommand?1(argv, quiet=False)
+scripts.pserve._cleanup_ports?5(bound_addresses, maxtries=30, sleeptime=2)
+scripts.pserve._methodwrapper?2(func, obj, type)
+scripts.pserve._turn_sigterm_into_systemexit?5()
+scripts.pserve.add_file_callback?7
+scripts.pserve.cherrypy_server_runner?4(app, global_conf=None, host='127.0.0.1', port=None, ssl_pem=None, protocol_version=None, numthreads=None, server_name=None, max=None, request_queue_size=None, timeout=None)
+scripts.pserve.classinstancemethod?1(func)
+scripts.pserve.ensure_port_cleanup?4(bound_addresses, maxtries=30, sleeptime=2)
+scripts.pserve.handle_term?4(signo, frame)
+scripts.pserve.install_reloader?4(poll_interval=1, extra_files=None)
+scripts.pserve.kill?4(pid, sig=None)
+scripts.pserve.live_pidfile?4(pidfile)
+scripts.pserve.main?4(argv=sys.argv, quiet=False)
+scripts.pserve.read_pidfile?4(filename)
+scripts.pserve.watch_file?7
+scripts.pserve.wsgiref_server_runner?4(wsgi_app, global_conf, **kw)
+scripts.pshell.PShellCommand.ConfigParser?7
+scripts.pshell.PShellCommand.action?7
+scripts.pshell.PShellCommand.bootstrap?7
+scripts.pshell.PShellCommand.default?7
+scripts.pshell.PShellCommand.description?7
+scripts.pshell.PShellCommand.dest?7
+scripts.pshell.PShellCommand.help?7
+scripts.pshell.PShellCommand.loaded_objects?7
+scripts.pshell.PShellCommand.make_bpython_shell?4(BPShell=None)
+scripts.pshell.PShellCommand.make_default_shell?4(interact=interact)
+scripts.pshell.PShellCommand.make_ipython_v0_10_shell?4(IPShellFactory=None)
+scripts.pshell.PShellCommand.make_ipython_v0_11_shell?4(IPShellFactory=None)
+scripts.pshell.PShellCommand.make_shell?4()
+scripts.pshell.PShellCommand.object_help?7
+scripts.pshell.PShellCommand.out?4(msg)
+scripts.pshell.PShellCommand.parser?7
+scripts.pshell.PShellCommand.pshell_file_config?4(filename)
+scripts.pshell.PShellCommand.run?4(shell=None)
+scripts.pshell.PShellCommand.setup?7
+scripts.pshell.PShellCommand.shell?4(help)
+scripts.pshell.PShellCommand.usage?7
+scripts.pshell.PShellCommand?1(argv, quiet=False)
+scripts.pshell.main?4(argv=sys.argv, quiet=False)
+scripts.ptweens.PTweensCommand._get_tweens?5(registry)
+scripts.ptweens.PTweensCommand.bootstrap?7
+scripts.ptweens.PTweensCommand.description?7
+scripts.ptweens.PTweensCommand.out?4(msg)
+scripts.ptweens.PTweensCommand.parser?7
+scripts.ptweens.PTweensCommand.run?4()
+scripts.ptweens.PTweensCommand.show_chain?4(chain)
+scripts.ptweens.PTweensCommand.stdout?7
+scripts.ptweens.PTweensCommand.usage?7
+scripts.ptweens.PTweensCommand?1(argv, quiet=False)
+scripts.ptweens.main?4(argv=sys.argv, quiet=False)
+scripts.pviews.PViewsCommand._find_multi_routes?5(mapper, request)
+scripts.pviews.PViewsCommand._find_view?5(url, registry)
+scripts.pviews.PViewsCommand.bootstrap?7
+scripts.pviews.PViewsCommand.description?7
+scripts.pviews.PViewsCommand.out?4(msg)
+scripts.pviews.PViewsCommand.output_route_attrs?4(attrs, indent)
+scripts.pviews.PViewsCommand.output_view_info?4(view_wrapper, level=1)
+scripts.pviews.PViewsCommand.parser?7
+scripts.pviews.PViewsCommand.run?4()
+scripts.pviews.PViewsCommand.stdout?7
+scripts.pviews.PViewsCommand.usage?7
+scripts.pviews.PViewsCommand?1(argv, quiet=False)
+scripts.pviews.RoutesMultiView.infos?7
+scripts.pviews.RoutesMultiView.traverser?7
+scripts.pviews.RoutesMultiView.view?7
+scripts.pviews.RoutesMultiView?1(infos, context_iface, root_factory, request)
+scripts.pviews.main?4(argv=sys.argv, quiet=False)
+security.ACLAllowed.boolval?7
+security.ACLDenied.boolval?7
+security.ACLPermitsResult.msg?4()
+security.ALL_PERMISSIONS?7
+security.Allow?7
+security.Allowed.boolval?7
+security.Authenticated?7
+security.DENY_ALL?7
+security.Denied.boolval?7
+security.Deny?7
+security.Everyone?7
+security.NO_PERMISSION_REQUIRED?7
+security.PermitsResult.msg?4()
+security.authenticated_userid?4(request)
+security.effective_principals?4(request)
+security.forget?4(request)
+security.has_permission?4(permission, context, request)
+security.principals_allowed_by_permission?4(context, permission)
+security.remember?4(request, principal, **kw)
+security.unauthenticated_userid?4(request)
+security.view_execution_permitted?4(context, request, name='')
+session.UnencryptedCookieSessionFactory._cookie_domain?8
+session.UnencryptedCookieSessionFactory._cookie_httponly?8
+session.UnencryptedCookieSessionFactory._cookie_max_age?8
+session.UnencryptedCookieSessionFactory._cookie_name?8
+session.UnencryptedCookieSessionFactory._cookie_on_exception?8
+session.UnencryptedCookieSessionFactory._cookie_path?8
+session.UnencryptedCookieSessionFactory._cookie_secure?8
+session.UnencryptedCookieSessionFactory._dirty?8
+session.UnencryptedCookieSessionFactory._secret?8
+session.UnencryptedCookieSessionFactory._set_cookie?5(response)
+session.UnencryptedCookieSessionFactory._timeout?8
+session.UnencryptedCookieSessionFactory.changed?4()
+session.UnencryptedCookieSessionFactory.clear?7
+session.UnencryptedCookieSessionFactory.flash?4(msg, queue='', allow_duplicate=True)
+session.UnencryptedCookieSessionFactory.get?7
+session.UnencryptedCookieSessionFactory.get_csrf_token?4()
+session.UnencryptedCookieSessionFactory.invalidate?4()
+session.UnencryptedCookieSessionFactory.items?7
+session.UnencryptedCookieSessionFactory.keys?7
+session.UnencryptedCookieSessionFactory.new_csrf_token?4()
+session.UnencryptedCookieSessionFactory.peek_flash?4(queue='')
+session.UnencryptedCookieSessionFactory.pop?7
+session.UnencryptedCookieSessionFactory.pop_flash?4(queue='')
+session.UnencryptedCookieSessionFactory.popitem?7
+session.UnencryptedCookieSessionFactory.setdefault?7
+session.UnencryptedCookieSessionFactory.update?7
+session.UnencryptedCookieSessionFactory.values?7
+session.UnencryptedCookieSessionFactory?1(request)
+session.UnencryptedCookieSessionFactoryConfig?4(secret, timeout=1200, cookie_name='session', cookie_max_age=None, cookie_path='/', cookie_domain=None, cookie_secure=False, cookie_httponly=False, cookie_on_exception=True, )
+session.accessed?4(session, *arg, **kw)
+session.manage_accessed?4(wrapped)
+session.set_cookie_callback?4(request, response)
+session.signed_deserialize?4(serialized, secret, hmac=hmac)
+session.signed_serialize?4(data, secret)
+settings.asbool?4(s)
+settings.aslist?4(value, flatten=True)
+settings.aslist_cronly?4(value)
+settings.get_settings?4()
+settings.truthy?7
+static._contains_slash?5(item)
+static._has_insecure_pathelement?8
+static._secure_path?5(path_tuple)
+static._seps?8
+static.slash?7
+static.static_view.add_slash_redirect?4(request)
+static.static_view?1(root_dir, cache_max_age=3600, package_name=None, use_subpath=False, index='index.html')
+testing.DummyModel?7
+testing.DummyRendererFactory.add?4(spec, renderer)
+testing.DummyRendererFactory?1(name, factory)
+testing.DummyRequest._del_registry?5()
+testing.DummyRequest._get_registry?5()
+testing.DummyRequest._registry?8
+testing.DummyRequest._set_registry?5(registry)
+testing.DummyRequest.application_url?7
+testing.DummyRequest.charset?7
+testing.DummyRequest.content_length?7
+testing.DummyRequest.host?7
+testing.DummyRequest.method?7
+testing.DummyRequest.query_string?7
+testing.DummyRequest.registry?7
+testing.DummyRequest.response?4()
+testing.DummyRequest.script_name?7
+testing.DummyRequest?1(params=None, environ=None, headers=None, path='/', cookies=None, post=None, **kw)
+testing.DummyResource.clone?4(__name__=_marker, __parent__=_marker, **kw)
+testing.DummyResource.get?4(name, default=None)
+testing.DummyResource.items?4()
+testing.DummyResource.keys?4()
+testing.DummyResource.values?4()
+testing.DummyResource?1(__name__=None, __parent__=None, __provides__=None, **kw)
+testing.DummyRootFactory?1(request)
+testing.DummySecurityPolicy.authenticated_userid?4(request)
+testing.DummySecurityPolicy.effective_principals?4(request)
+testing.DummySecurityPolicy.forget?4(request)
+testing.DummySecurityPolicy.permits?4(context, principals, permission)
+testing.DummySecurityPolicy.principals_allowed_by_permission?4(context, permission)
+testing.DummySecurityPolicy.remember?4(request, principal, **kw)
+testing.DummySecurityPolicy.unauthenticated_userid?4(request)
+testing.DummySecurityPolicy?1(userid=None, groupids=(), permissive=True)
+testing.DummySession.changed?4()
+testing.DummySession.created?7
+testing.DummySession.flash?4(msg, queue='', allow_duplicate=True)
+testing.DummySession.get_csrf_token?4()
+testing.DummySession.invalidate?4()
+testing.DummySession.new?7
+testing.DummySession.new_csrf_token?4()
+testing.DummySession.peek_flash?4(queue='')
+testing.DummySession.pop_flash?4(queue='')
+testing.DummyTemplateRenderer._get_string_response?5()
+testing.DummyTemplateRenderer._set_string_response?5(response)
+testing.DummyTemplateRenderer.assert_?4(**kw)
+testing.DummyTemplateRenderer.implementation?4()
+testing.DummyTemplateRenderer.string_response?7
+testing.DummyTemplateRenderer?1(string_response='')
+testing.MockTemplate?1(response)
+testing._marker?8
+testing._secure?5(context, request)
+testing.cleanUp?4(*arg, **kw)
+testing.decorator?4(func)
+testing.have_zca?7
+testing.permitted?4(context, request)
+testing.registerAdapter?4(impl, for_=Interface, provides=Interface, name='')
+testing.registerDummyRenderer?7
+testing.registerDummySecurityPolicy?4(userid=None, groupids=(), permissive=True)
+testing.registerEventListener?4(event_iface=None)
+testing.registerModels?7
+testing.registerResources?4(resources)
+testing.registerRoute?4(pattern, name, factory=None)
+testing.registerSettings?4(dictarg=None, **kw)
+testing.registerSubscriber?4(subscriber, iface=Interface)
+testing.registerTemplateRenderer?4(path, renderer=None)
+testing.registerUtility?4(impl, iface=Interface, name='')
+testing.registerView?4(name, result='', view=None, for_=(Interface, Interface), permission=None)
+testing.setUp?4(registry=None, request=None, hook_zca=True, autocommit=True, settings=None)
+testing.skip_on?4(*platforms)
+testing.tearDown?4(unhook_zca=True)
+testing.view?4(context, request)
+testing.wrapper?4(*args, **kw)
+threadlocal.ThreadLocalManager.clear?4()
+threadlocal.ThreadLocalManager.get?4()
+threadlocal.ThreadLocalManager.pop?4()
+threadlocal.ThreadLocalManager.push?4(info)
+threadlocal.ThreadLocalManager.set?7
+threadlocal.ThreadLocalManager?1(default=None)
+threadlocal.defaults?4()
+threadlocal.get_current_registry?4(context=None)
+threadlocal.get_current_request?4()
+threadlocal.manager?7
+traversal.DefaultRootFactory?1(request)
+traversal.ModelGraphTraverser?7
+traversal.ResourceTreeTraverser.VIEW_SELECTOR?7
+traversal.ResourceURL.vroot_varname?7
+traversal.TraversalContextURL?7
+traversal._join_path_tuple?5(tuple)
+traversal._model_path_list?8
+traversal._resource_path_list?5(resource, *elements)
+traversal._segment_cache?8
+traversal.empty?7
+traversal.find_interface?4(resource, class_or_interface)
+traversal.find_model?7
+traversal.find_resource?4(resource, path)
+traversal.find_root?4(resource)
+traversal.model_path?7
+traversal.model_path_tuple?7
+traversal.quote_path_segment?4(segment, safe='')
+traversal.quote_path_segment_doc?7
+traversal.resource_path?4(resource, *elements)
+traversal.resource_path_tuple?4(resource, *elements)
+traversal.split_path_info?4(path)
+traversal.traversal_path?4(path)
+traversal.traversal_path_info?4(path)
+traversal.traverse?4(resource, path)
+traversal.virtual_root?4(resource, request)
+traversal.virtual_root?4(self)
+tweens.EXCVIEW?7
+tweens.INGRESS?7
+tweens.MAIN?7
+tweens.excview_tween?4(request)
+tweens.excview_tween_factory?4(handler, registry)
+url.PATH_SAFE?7
+url.URLMethodsMixin._partial_application_url?5(scheme=None, host=None, port=None)
+url.URLMethodsMixin.current_route_path?4(*elements, **kw)
+url.URLMethodsMixin.current_route_url?4(*elements, **kw)
+url.URLMethodsMixin.model_url?7
+url.URLMethodsMixin.resource_path?4(resource, *elements, **kw)
+url.URLMethodsMixin.resource_url?4(resource, *elements, **kw)
+url.URLMethodsMixin.route_path?4(route_name, *elements, **kw)
+url.URLMethodsMixin.route_url?4(route_name, *elements, **kw)
+url.URLMethodsMixin.static_path?4(path, **kw)
+url.URLMethodsMixin.static_url?4(path, **kw)
+url._join_elements?5(elements)
+url.current_route_path?4(request, *elements, **kw)
+url.current_route_url?4(request, *elements, **kw)
+url.model_url?7
+url.resource_url?4(resource, request, *elements, **kw)
+url.route_path?4(route_name, request, *elements, **kw)
+url.route_url?4(route_name, request, *elements, **kw)
+url.static_path?4(path, request, **kw)
+url.static_url?4(path, request, **kw)
+urldispatch.Route?1(name, pattern, factory=None, predicates=(), pregenerator=None)
+urldispatch.RoutesMapper.connect?4(name, pattern, factory=None, predicates=(), pregenerator=None, static=False)
+urldispatch.RoutesMapper.generate?4(name, kw)
+urldispatch.RoutesMapper.get_route?4(name)
+urldispatch.RoutesMapper.get_routes?4()
+urldispatch.RoutesMapper.has_routes?4()
+urldispatch.RoutesMapper?1()
+urldispatch._compile_route?5(route)
+urldispatch._marker?8
+urldispatch.generator?4(dict)
+urldispatch.matcher?4(path)
+urldispatch.old_route_re?7
+urldispatch.route_re?7
+urldispatch.star_at_end?7
+urldispatch.update_pattern?4(matchobj)
+util.DottedNameResolver?1(package=None)
+util.InstancePropertyMixin.set_property?4(callable, name=None, reify=False)
+util.WeakOrderedSet.add?4(item)
+util.WeakOrderedSet.empty?4()
+util.WeakOrderedSet.last?4()
+util.WeakOrderedSet.remove?4(item)
+util.WeakOrderedSet?1()
+util.object_description?4(object)
+util.shortrepr?4(object, closer)
+util.strings_differ?4(string1, string2)
+view.AppendSlashNotFoundViewFactory?1(notfound_view=None)
+view._marker?8
+view.append_slash_notfound_view?7
+view.bfg_view?7
+view.default?7
+view.forbidden_view_config.callback?4(name, ob)
+view.forbidden_view_config.venusian?7
+view.forbidden_view_config?1(request_type=default, request_method=default, route_name=default, request_param=default, attr=default, renderer=default, containment=default, wrapper=default, xhr=default, accept=default, header=default, path_info=default, custom_predicates=default, decorator=default, mapper=default, match_param=default)
+view.is_response?4(ob)
+view.notfound_view_config.callback?4(name, ob)
+view.notfound_view_config.venusian?7
+view.notfound_view_config?1(request_type=default, request_method=default, route_name=default, request_param=default, attr=default, renderer=default, containment=default, wrapper=default, xhr=default, accept=default, header=default, path_info=default, custom_predicates=default, decorator=default, mapper=default, match_param=default, append_slash=False)
+view.render_view?4(context, request, name='', secure=True)
+view.render_view_to_iterable?4(context, request, name='', secure=True)
+view.render_view_to_response?4(context, request, name='', secure=True)
+view.static?1(root_dir, cache_max_age=3600, package_name=None)
+view.view_config.callback?4(name, ob)
+view.view_config.venusian?7
+view.view_config?1(name=default, request_type=default, for_=default, permission=default, route_name=default, request_method=default, request_param=default, containment=default, attr=default, renderer=default, wrapper=default, xhr=default, accept=default, header=default, path_info=default, custom_predicates=default, context=default, decorator=default, mapper=default, http_cache=default, match_param=default)
+wsgi.decorator?4(context, request)
+wsgi.wsgiapp2?4(wrapped)
+wsgi.wsgiapp?4(wrapped)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/Pyramid-1.3.bas	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,155 @@
+ACLAllowed ACLPermitsResult
+ACLDenied ACLPermitsResult
+ACLPermitsResult int
+AlchemyProjectTemplate PyramidTemplate
+Allowed PermitsResult
+AssetResolver Resolver
+AuthTktAuthenticationPolicy CallbackAuthenticationPolicy
+BadTicket Exception
+BeforeRender dict
+ConfigurationConflictError ConfigurationError
+ConfigurationError Exception
+ConfigurationExecutionError ConfigurationError
+Configurator AdaptersConfiguratorMixin AssetsConfiguratorMixin FactoriesConfiguratorMixin I18NConfiguratorMixin RenderingConfiguratorMixin RoutesConfiguratorMixin SecurityConfiguratorMixin SettingsConfiguratorMixin TestingConfiguratorMixin TweensConfiguratorMixin ViewsConfiguratorMixin ZCAConfiguratorMixin
+CyclicDependencyError Exception
+DaemonizeException Exception
+Denied PermitsResult
+DottedNameResolver _DottedNameResolver
+DummyRequest CallbackMethodsMixin DeprecatedRequestMethodsMixin URLMethodsMixin
+DummySession dict
+FileResponse Response
+FixBfgImports fixer_base.BaseFix
+HTTPAccepted HTTPOk
+HTTPBadGateway HTTPServerError
+HTTPBadRequest HTTPClientError
+HTTPClientError HTTPError
+HTTPConflict HTTPClientError
+HTTPCreated HTTPOk
+HTTPError WSGIHTTPException
+HTTPException Exception
+HTTPExpectationFailed HTTPClientError
+HTTPFailedDependency HTTPClientError
+HTTPForbidden HTTPClientError
+HTTPFound _HTTPMove
+HTTPGatewayTimeout HTTPServerError
+HTTPGone HTTPClientError
+HTTPInsufficientStorage HTTPServerError
+HTTPInternalServerError HTTPServerError
+HTTPLengthRequired HTTPClientError
+HTTPLocked HTTPClientError
+HTTPMethodNotAllowed HTTPClientError
+HTTPMovedPermanently _HTTPMove
+HTTPMultipleChoices _HTTPMove
+HTTPNoContent HTTPOk
+HTTPNonAuthoritativeInformation HTTPOk
+HTTPNotAcceptable HTTPClientError
+HTTPNotFound HTTPClientError
+HTTPNotImplemented HTTPServerError
+HTTPNotModified HTTPRedirection
+HTTPOk WSGIHTTPException
+HTTPPartialContent HTTPOk
+HTTPPaymentRequired HTTPClientError
+HTTPPreconditionFailed HTTPClientError
+HTTPProxyAuthenticationRequired HTTPClientError
+HTTPRedirection WSGIHTTPException
+HTTPRequestEntityTooLarge HTTPClientError
+HTTPRequestRangeNotSatisfiable HTTPClientError
+HTTPRequestTimeout HTTPClientError
+HTTPRequestURITooLong HTTPClientError
+HTTPResetContent HTTPOk
+HTTPSeeOther _HTTPMove
+HTTPServerError HTTPError
+HTTPServiceUnavailable HTTPServerError
+HTTPTemporaryRedirect _HTTPMove
+HTTPUnauthorized HTTPClientError
+HTTPUnprocessableEntity HTTPClientError
+HTTPUnsupportedMediaType HTTPClientError
+HTTPUseProxy _HTTPMove
+HTTPVersionNotSupported HTTPServerError
+IActionInfo Interface
+IApplicationCreated Interface
+IAssetDescriptor Interface
+IAuthenticationPolicy Interface
+IAuthorizationPolicy Interface
+IBeforeRender IDict
+IChameleonLookup Interface
+IChameleonTranslate Interface
+IContextFound Interface
+IContextURL IResourceURL
+IDebugLogger Interface
+IDefaultPermission Interface
+IDefaultRootFactory Interface
+IDict Interface
+IException Interface
+IExceptionResponse IException IResponse
+IExceptionViewClassifier Interface
+IIntrospectable Interface
+IIntrospector Interface
+ILocaleNegotiator Interface
+ILocalizer Interface
+ILocation Interface
+IMakoLookup Interface
+IMultiDict IDict
+IMultiView ISecuredView
+INewRequest Interface
+INewResponse Interface
+IPackageOverrides Interface
+IRenderer Interface
+IRendererFactory Interface
+IRendererGlobalsFactory Interface
+IRendererInfo Interface
+IRequest Interface
+IRequestFactory Interface
+IRequestHandler Interface
+IRequestProperties Interface
+IResourceURL Interface
+IResponse Interface
+IResponseFactory Interface
+IRootFactory Interface
+IRoute Interface
+IRoutePregenerator Interface
+IRouteRequest Interface
+IRouter Interface
+IRoutesMapper Interface
+ISecuredView IView
+ISession IDict
+ISessionFactory Interface
+ISettings Interface
+IStaticURLInfo Interface
+ITemplateRenderer IRenderer
+ITranslationDirectories Interface
+ITraverser Interface
+ITweens Interface
+IView Interface
+IViewClassifier Interface
+IViewMapper Interface
+IViewMapperFactory Interface
+IViewPermission Interface
+Introspectable dict
+MakoRenderingException Exception
+MyModel PersistentMapping
+NullRendererHelper RendererHelper
+OverrideProvider pkg_resources.DefaultProvider
+PermitsResult int
+PkgResourceTemplateLookup TemplateLookup
+PredicateMismatch HTTPNotFound
+PyramidTemplate Template
+Registry Components dict
+RemoteUserAuthenticationPolicy CallbackAuthenticationPolicy
+RepozeWho1AuthenticationPolicy CallbackAuthenticationPolicy
+Request BaseRequest CallbackMethodsMixin DeprecatedRequestMethodsMixin InstancePropertyMixin URLMethodsMixin
+Response _Response
+SessionAuthenticationPolicy CallbackAuthenticationPolicy
+Settings dict
+SkipTemplate Exception
+StarterProjectTemplate PyramidTemplate
+ThreadLocalManager threading.local
+Translations gettext.GNUTranslations
+TypeMapper dict
+URLDecodeError UnicodeDecodeError
+UnencryptedCookieSessionFactory dict
+WSGIHTTPException HTTPException Response
+ZODBProjectTemplate PyramidTemplate
+_HTTPMove HTTPRedirection
+static static_view
+view_defaults view_config
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/Translationstring-1.1.api	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,18 @@
+.ChameleonTranslate?4(translator)
+.NAME_RE?7
+.Pluralizer?4(translations=None, policy=None)
+.TranslationString.interpolate?4(translated=None)
+.TranslationString.replace?4()
+.TranslationStringFactory?4(domain)
+.Translator?4(translations=None, policy=None)
+._interp_regex?8
+.create?4(msgid, mapping=None, default=None)
+.dugettext_policy?4(translations, tstring, domain)
+.dungettext_policy?4(translations, singular, plural, n, domain)
+.pluralizer?4(singular, plural, n, domain=None, mapping=None)
+.translate?4(msgid, domain=None, mapping=None, context=None, target_language=None, default=None)
+.translator?4(tstring, domain=None, mapping=None)
+.ugettext_policy?4(translations, tstring, domain)
+.ungettext_policy?4(translations, singular, plural, n, domain)
+compat.PY3?7
+compat.u?4(s)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/Translationstring-1.bas	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,1 @@
+TranslationString text_type
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/Venusian-1.0a6.api	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,43 @@
+.ATTACH_ATTR?7
+.AttachInfo?1(**kw)
+.Categories.attached_to?4(obj)
+.Categories?1(attached_to)
+.Scanner._ignore?5()
+.Scanner.invoke?4(name, ob)
+.Scanner.scan?4(package, categories=None, onerror=None, ignore=None)
+.Scanner?1(**kw)
+.attach?4(wrapped, callback, category=None, depth=1)
+.seen?4(p, m={})
+.walk_packages?4(path=None, prefix='', onerror=None, ignore=None)
+advice.getFrameInfo?4(frame)
+compat.PY3?7
+compat.is_nonstr_iter?4(v)
+compat.pkgutil_26.ImpImporter.find_module?4(fullname, path=None)
+compat.pkgutil_26.ImpImporter.iter_modules?4(prefix='')
+compat.pkgutil_26.ImpImporter?1(path=None)
+compat.pkgutil_26.ImpLoader._fix_name?5(fullname)
+compat.pkgutil_26.ImpLoader._get_delegate?5()
+compat.pkgutil_26.ImpLoader._reopen?5()
+compat.pkgutil_26.ImpLoader.code?7
+compat.pkgutil_26.ImpLoader.get_code?4(fullname=None)
+compat.pkgutil_26.ImpLoader.get_data?4(pathname)
+compat.pkgutil_26.ImpLoader.get_filename?4(fullname=None)
+compat.pkgutil_26.ImpLoader.get_source?4(fullname=None)
+compat.pkgutil_26.ImpLoader.is_package?4(fullname)
+compat.pkgutil_26.ImpLoader.iter_zipimport_modules?4(prefix='')
+compat.pkgutil_26.ImpLoader.load_module?4(fullname)
+compat.pkgutil_26.ImpLoader?1(fullname, file, filename, etc)
+compat.pkgutil_26.extend_path?4(path, name)
+compat.pkgutil_26.find_loader?4(fullname)
+compat.pkgutil_26.get_data?4(package, resource)
+compat.pkgutil_26.get_importer?4(path_item)
+compat.pkgutil_26.get_loader?4(module_or_name)
+compat.pkgutil_26.iter_importer_modules?4(importer, prefix='')
+compat.pkgutil_26.iter_importers?4(fullname="")
+compat.pkgutil_26.iter_modules?4(path=None, prefix='')
+compat.pkgutil_26.read_code?4(stream)
+compat.pkgutil_26.register?4(typ, func=None)
+compat.pkgutil_26.seen?4(p, m={})
+compat.pkgutil_26.simplegeneric?4(func)
+compat.pkgutil_26.walk_packages?4(path=None, prefix='', onerror=None)
+compat.pkgutil_26.wrapper?4(*args, **kw)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/Venusian-1.bas	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,2 @@
+Categories dict
+cls cls
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/WebOb-1.2.2.api	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,751 @@
+acceptparse.Accept._match?5(mask, offer)
+acceptparse.Accept.best_match?4(offers, default_match=None)
+acceptparse.Accept.first_match?4(offers)
+acceptparse.Accept.parse?4()
+acceptparse.Accept.quality?4(offer, modifier=1)
+acceptparse.Accept?1(header_value)
+acceptparse.AcceptCharset.parse?4()
+acceptparse.AcceptLanguage._match?5(mask, item)
+acceptparse.MIMEAccept._match?5(mask, offer)
+acceptparse.MIMEAccept.accept_html?4()
+acceptparse.MIMEAccept.accepts_html?7
+acceptparse.MIMEAccept.parse?4()
+acceptparse.MIMENilAccept.MasterClass?7
+acceptparse.NilAccept.MasterClass?7
+acceptparse.NilAccept.best_match?4(offers, default_match=None)
+acceptparse.NilAccept.first_match?4(offers)
+acceptparse.NilAccept.quality?4(offer, default_quality=1)
+acceptparse._check_offer?5(offer)
+acceptparse._warn_first_match?5()
+acceptparse.accept_property?4(header, rfc_section, AcceptClass=Accept, NilClass=NilAccept)
+acceptparse.fdel?4(req)
+acceptparse.fget?4(req)
+acceptparse.fset?4(req, val)
+acceptparse.part_re?7
+byterange.ContentRange.parse?4(value)
+byterange.ContentRange?1(start, stop, length)
+byterange.Range.content_range?4(length)
+byterange.Range.parse?4(header)
+byterange.Range.range_for_length?4(length)
+byterange.Range?1(start, end)
+byterange._is_content_range_valid?5(start, stop, length, response=False)
+byterange._rx_content_range?8
+byterange._rx_range?8
+cachecontrol.CacheControl.copy?4()
+cachecontrol.CacheControl.max_age?7
+cachecontrol.CacheControl.max_stale?7
+cachecontrol.CacheControl.min_fresh?7
+cachecontrol.CacheControl.must_revalidate?7
+cachecontrol.CacheControl.no_cache?7
+cachecontrol.CacheControl.no_store?7
+cachecontrol.CacheControl.no_transform?7
+cachecontrol.CacheControl.only_if_cached?7
+cachecontrol.CacheControl.parse?4(header, updates_to=None, type=None)
+cachecontrol.CacheControl.private?7
+cachecontrol.CacheControl.proxy_revalidate?7
+cachecontrol.CacheControl.public?7
+cachecontrol.CacheControl.s_max_age?7
+cachecontrol.CacheControl.s_maxage?7
+cachecontrol.CacheControl.update_dict?7
+cachecontrol.CacheControl?1(properties, type)
+cachecontrol.UpdateDict._updated?5()
+cachecontrol.UpdateDict.clear?4()
+cachecontrol.UpdateDict.pop?4(*args)
+cachecontrol.UpdateDict.popitem?4()
+cachecontrol.UpdateDict.setdefault?4(key, value=None)
+cachecontrol.UpdateDict.update?4(*args, **kw)
+cachecontrol.UpdateDict.updated?7
+cachecontrol.UpdateDict.updated_args?7
+cachecontrol.exists_property?1(prop, type=None)
+cachecontrol.need_quote_re?7
+cachecontrol.serialize_cache_control?4(properties)
+cachecontrol.token_re?7
+cachecontrol.value_property?1(prop, default=None, none=None, type=None)
+client.SendRequest.MULTILINE_RE?7
+client.SendRequest._timeout_supported?5(ConnClass)
+client.SendRequest.filtered_headers?7
+client.SendRequest.parse_headers?4(message)
+client.SendRequest?1(HTTPConnection=httplib.HTTPConnection, HTTPSConnection=httplib.HTTPSConnection)
+client._e_refused?8
+client.send_request_app?7
+compat.PY3?7
+compat.bytes_?4(s, encoding='latin-1', errors='strict')
+compat.iteritems_?4(d)
+compat.itervalues_?4(d)
+compat.native_?4(s, encoding='latin-1', errors='strict')
+compat.parse_qsl_text?4(qs, encoding='utf-8')
+compat.reraise?4(exc_info)
+compat.text_?4(s, encoding='latin-1', errors='strict')
+compat.unquote?4(string)
+compat.url_unquote?4(s)
+cookies.Cookie.add?4(key, val)
+cookies.Cookie.load?4(data)
+cookies.Cookie.serialize?4(full=True)
+cookies.Cookie.values?4()
+cookies.Cookie?1(input=None)
+cookies.Morsel.comment?7
+cookies.Morsel.domain?7
+cookies.Morsel.expires?7
+cookies.Morsel.httponly?7
+cookies.Morsel.max_age?7
+cookies.Morsel.path?7
+cookies.Morsel.secure?7
+cookies.Morsel.serialize?4(full=True)
+cookies.Morsel?1(name, value)
+cookies.RequestCookies._cache?5()
+cookies.RequestCookies._cache_key?8
+cookies.RequestCookies._mutate_header?5(name, value)
+cookies.RequestCookies._valid_cookie_name?5(name)
+cookies.RequestCookies.clear?4()
+cookies.RequestCookies.get?4(name, default=None)
+cookies.RequestCookies.items?4()
+cookies.RequestCookies.iteritems?4()
+cookies.RequestCookies.iterkeys?4()
+cookies.RequestCookies.itervalues?4()
+cookies.RequestCookies.keys?4()
+cookies.RequestCookies.values?4()
+cookies.RequestCookies?1(environ)
+cookies._b_dollar_sign?8
+cookies._b_quote_mark?8
+cookies._bchr?8
+cookies._c_keys?8
+cookies._c_renames?8
+cookies._c_valkeys?8
+cookies._ch_unquote?5(m)
+cookies._ch_unquote_map?8
+cookies._escape_char?8
+cookies._escape_map?8
+cookies._escape_noop_chars?8
+cookies._legal_special_chars?8
+cookies._marker?8
+cookies._needs_quoting?5(v)
+cookies._no_escape_bytes?8
+cookies._no_escape_chars?8
+cookies._no_escape_special_chars?8
+cookies._notrans_binary?8
+cookies._parse_cookie?5(data)
+cookies._quote?5(v)
+cookies._re_cookie_str?8
+cookies._re_cookie_str_equal?8
+cookies._re_cookie_str_key?8
+cookies._re_cookie_str_val?8
+cookies._re_expires_val?8
+cookies._re_legal_char?8
+cookies._re_quoted?8
+cookies._re_unquoted_val?8
+cookies._rx_cookie?8
+cookies._rx_unquote?8
+cookies._unquote?5(v)
+cookies._valid_cookie_name?5(key)
+cookies.cookie_property?4(key, serialize=lambda v: v)
+cookies.fset?4(self, v)
+cookies.months?7
+cookies.parse_cookie?4(data)
+cookies.serialize_cookie_date?4(v)
+cookies.serialize_max_age?4(v)
+cookies.weekdays?7
+datetime_utils.UTC?7
+datetime_utils._UTC.dst?4(dt)
+datetime_utils._UTC.tzname?4(dt)
+datetime_utils._UTC.utcoffset?4(dt)
+datetime_utils._now?8
+datetime_utils.day?7
+datetime_utils.hour?7
+datetime_utils.minute?7
+datetime_utils.month?7
+datetime_utils.parse_date?4(value)
+datetime_utils.parse_date_delta?4(value)
+datetime_utils.second?7
+datetime_utils.serialize_date?4(dt)
+datetime_utils.serialize_date_delta?4(value)
+datetime_utils.timedelta_to_seconds?4(td)
+datetime_utils.week?7
+datetime_utils.year?7
+dec._MiddlewareFactory?2(wrapper_class, middleware, kw)
+dec._UnboundMiddleware?2(wrapper_class, app, kw)
+dec.wsgify.RequestClass?7
+dec.wsgify.call_func?4(req, *args, **kwargs)
+dec.wsgify.clone?4(func=None, **kw)
+dec.wsgify.get?4(url, **kw)
+dec.wsgify.middleware?4(middle_func=None, app=None, **kw)
+dec.wsgify.post?4(url, POST=None, **kw)
+dec.wsgify.request?4(url, **kw)
+dec.wsgify.undecorated?4()
+dec.wsgify?1(func=None, RequestClass=None, args=(), kwargs=None, middleware_wraps=None)
+descriptors.CHARSET_RE?7
+descriptors.SCHEME_RE?7
+descriptors._not_given?8
+descriptors._rx_auth_param?8
+descriptors._rx_etag?8
+descriptors.converter?4(prop, parse, serialize, convert_name=None)
+descriptors.converter_date?4(prop)
+descriptors.date_header?4(header, rfc_section)
+descriptors.deprecated_property?4(attr, name, text, version)
+descriptors.environ_decoder?4(key, default=_not_given, rfc_section=None, encattr=None)
+descriptors.environ_getter?4(key, default=_not_given, rfc_section=None)
+descriptors.fdel?4(r)
+descriptors.fdel?4(req)
+descriptors.fdel?4(self)
+descriptors.fget?4(r)
+descriptors.fget?4(req)
+descriptors.fget?4(self)
+descriptors.fset?4(r, val)
+descriptors.fset?4(r, value)
+descriptors.fset?4(req, val)
+descriptors.fset?4(self, val)
+descriptors.header_getter?4(header, rfc_section)
+descriptors.known_auth_schemes?7
+descriptors.list_header?4(header, rfc_section)
+descriptors.parse_auth?4(val)
+descriptors.parse_auth_params?4(params)
+descriptors.parse_content_range?4(value)
+descriptors.parse_etag_response?4(value, strong=False)
+descriptors.parse_int?4(value)
+descriptors.parse_int_safe?4(value)
+descriptors.parse_list?4(value)
+descriptors.parse_range?4(value)
+descriptors.serialize_auth?4(val)
+descriptors.serialize_content_range?4(value)
+descriptors.serialize_etag_response?4(value)
+descriptors.serialize_if_range?4(value)
+descriptors.serialize_int?7
+descriptors.serialize_list?4(value)
+descriptors.serialize_range?4(value)
+descriptors.upath_property?4(key)
+descriptors.warn?4()
+etag.AnyETag?7
+etag.ETagMatcher.parse?4(value, strong=True)
+etag.ETagMatcher.weak_match?4(other)
+etag.ETagMatcher?1(etags)
+etag.IfRange.match?7
+etag.IfRange.parse?4(value)
+etag.IfRange?1(etag)
+etag.IfRangeDate.match?7
+etag.IfRangeDate?1(date)
+etag.NoETag?7
+etag._AnyETag.weak_match?4(other)
+etag._NoETag.weak_match?4(other)
+etag._warn_if_range_match_deprecated?5(*args, **kw)
+etag._warn_weak_match_deprecated?5()
+etag.etag_property?4(key, default, rfc_section, strong=True)
+etag.fdel?4(req)
+etag.fget?4(req)
+etag.fset?4(req, val)
+exc.HTTPAccepted.code?7
+exc.HTTPAccepted.explanation?7
+exc.HTTPAccepted.title?7
+exc.HTTPBadGateway.code?7
+exc.HTTPBadGateway.explanation?7
+exc.HTTPBadGateway.title?7
+exc.HTTPClientError.code?7
+exc.HTTPClientError.explanation?7
+exc.HTTPClientError.title?7
+exc.HTTPConflict.code?7
+exc.HTTPConflict.explanation?7
+exc.HTTPConflict.title?7
+exc.HTTPCreated.code?7
+exc.HTTPCreated.title?7
+exc.HTTPException.exception?4()
+exc.HTTPException?1(message, wsgi_response)
+exc.HTTPExceptionMiddleware.repl_start_response?4(headers, exc_info=None)
+exc.HTTPExceptionMiddleware?1(application)
+exc.HTTPExpectationFailed.code?7
+exc.HTTPExpectationFailed.explanation?7
+exc.HTTPExpectationFailed.title?7
+exc.HTTPFailedDependency.code?7
+exc.HTTPFailedDependency.explanation?7
+exc.HTTPFailedDependency.title?7
+exc.HTTPForbidden.code?7
+exc.HTTPForbidden.explanation?7
+exc.HTTPForbidden.title?7
+exc.HTTPFound.code?7
+exc.HTTPFound.explanation?7
+exc.HTTPFound.title?7
+exc.HTTPGatewayTimeout.code?7
+exc.HTTPGatewayTimeout.explanation?7
+exc.HTTPGatewayTimeout.title?7
+exc.HTTPGone.code?7
+exc.HTTPGone.explanation?7
+exc.HTTPGone.title?7
+exc.HTTPInsufficientStorage.code?7
+exc.HTTPInsufficientStorage.explanation?7
+exc.HTTPInsufficientStorage.title?7
+exc.HTTPLengthRequired.code?7
+exc.HTTPLengthRequired.explanation?7
+exc.HTTPLengthRequired.title?7
+exc.HTTPLocked.code?7
+exc.HTTPLocked.explanation?7
+exc.HTTPLocked.title?7
+exc.HTTPMethodNotAllowed.body_template_obj?7
+exc.HTTPMethodNotAllowed.code?7
+exc.HTTPMethodNotAllowed.title?7
+exc.HTTPMovedPermanently.code?7
+exc.HTTPMovedPermanently.title?7
+exc.HTTPMultipleChoices.code?7
+exc.HTTPMultipleChoices.title?7
+exc.HTTPNetworkAuthenticationRequired.code?7
+exc.HTTPNetworkAuthenticationRequired.explanation?7
+exc.HTTPNetworkAuthenticationRequired.title?7
+exc.HTTPNoContent.code?7
+exc.HTTPNoContent.empty_body?7
+exc.HTTPNoContent.title?7
+exc.HTTPNonAuthoritativeInformation.code?7
+exc.HTTPNonAuthoritativeInformation.title?7
+exc.HTTPNotAcceptable.code?7
+exc.HTTPNotAcceptable.template?7
+exc.HTTPNotAcceptable.title?7
+exc.HTTPNotFound.code?7
+exc.HTTPNotFound.explanation?7
+exc.HTTPNotFound.title?7
+exc.HTTPNotImplemented.code?7
+exc.HTTPNotImplemented.template?7
+exc.HTTPNotImplemented.title?7
+exc.HTTPNotModified.code?7
+exc.HTTPNotModified.empty_body?7
+exc.HTTPNotModified.title?7
+exc.HTTPOk.code?7
+exc.HTTPOk.title?7
+exc.HTTPPartialContent.code?7
+exc.HTTPPartialContent.title?7
+exc.HTTPPaymentRequired.code?7
+exc.HTTPPaymentRequired.explanation?7
+exc.HTTPPaymentRequired.title?7
+exc.HTTPPreconditionFailed.code?7
+exc.HTTPPreconditionFailed.explanation?7
+exc.HTTPPreconditionFailed.title?7
+exc.HTTPPreconditionRequired.code?7
+exc.HTTPPreconditionRequired.explanation?7
+exc.HTTPPreconditionRequired.title?7
+exc.HTTPProxyAuthenticationRequired.code?7
+exc.HTTPProxyAuthenticationRequired.explanation?7
+exc.HTTPProxyAuthenticationRequired.title?7
+exc.HTTPRequestEntityTooLarge.code?7
+exc.HTTPRequestEntityTooLarge.explanation?7
+exc.HTTPRequestEntityTooLarge.title?7
+exc.HTTPRequestHeaderFieldsTooLarge.code?7
+exc.HTTPRequestHeaderFieldsTooLarge.explanation?7
+exc.HTTPRequestHeaderFieldsTooLarge.title?7
+exc.HTTPRequestRangeNotSatisfiable.code?7
+exc.HTTPRequestRangeNotSatisfiable.explanation?7
+exc.HTTPRequestRangeNotSatisfiable.title?7
+exc.HTTPRequestTimeout.code?7
+exc.HTTPRequestTimeout.explanation?7
+exc.HTTPRequestTimeout.title?7
+exc.HTTPRequestURITooLong.code?7
+exc.HTTPRequestURITooLong.explanation?7
+exc.HTTPRequestURITooLong.title?7
+exc.HTTPResetContent.code?7
+exc.HTTPResetContent.empty_body?7
+exc.HTTPResetContent.title?7
+exc.HTTPSeeOther.code?7
+exc.HTTPSeeOther.title?7
+exc.HTTPServerError.code?7
+exc.HTTPServerError.explanation?7
+exc.HTTPServerError.title?7
+exc.HTTPServiceUnavailable.code?7
+exc.HTTPServiceUnavailable.explanation?7
+exc.HTTPServiceUnavailable.title?7
+exc.HTTPTemporaryRedirect.code?7
+exc.HTTPTemporaryRedirect.title?7
+exc.HTTPTooManyRequests.code?7
+exc.HTTPTooManyRequests.explanation?7
+exc.HTTPTooManyRequests.title?7
+exc.HTTPUnauthorized.code?7
+exc.HTTPUnauthorized.explanation?7
+exc.HTTPUnauthorized.title?7
+exc.HTTPUnprocessableEntity.code?7
+exc.HTTPUnprocessableEntity.explanation?7
+exc.HTTPUnprocessableEntity.title?7
+exc.HTTPUnsupportedMediaType.code?7
+exc.HTTPUnsupportedMediaType.template_obj?7
+exc.HTTPUnsupportedMediaType.title?7
+exc.HTTPUseProxy.code?7
+exc.HTTPUseProxy.explanation?7
+exc.HTTPUseProxy.title?7
+exc.HTTPVersionNotSupported.code?7
+exc.HTTPVersionNotSupported.explanation?7
+exc.HTTPVersionNotSupported.title?7
+exc.WSGIHTTPException._make_body?5(environ, escape)
+exc.WSGIHTTPException.body_template_obj?7
+exc.WSGIHTTPException.code?7
+exc.WSGIHTTPException.empty_body?7
+exc.WSGIHTTPException.explanation?7
+exc.WSGIHTTPException.generate_response?4(environ, start_response)
+exc.WSGIHTTPException.html_body?4(environ)
+exc.WSGIHTTPException.html_template_obj?7
+exc.WSGIHTTPException.plain_body?4(environ)
+exc.WSGIHTTPException.plain_template_obj?7
+exc.WSGIHTTPException.title?7
+exc.WSGIHTTPException.wsgi_response?4()
+exc.WSGIHTTPException?1(detail=None, headers=None, comment=None, body_template=None, **kw)
+exc._HTTPMove.body_template_obj?7
+exc._HTTPMove.explanation?7
+exc._HTTPMove?2(detail=None, headers=None, comment=None, body_template=None, location=None, add_slash=False)
+exc.br_re?7
+exc.comment_re?7
+exc.no_escape?4(value)
+exc.status_map?7
+exc.strip_tags?4(value)
+exc.tag_re?7
+headers.EnvironHeaders.keys?4()
+headers.EnvironHeaders?1(environ)
+headers.ResponseHeaders.dict_of_lists?4()
+headers.ResponseHeaders.getall?4(key)
+headers.ResponseHeaders.has_key?7
+headers.ResponseHeaders.mixed?4()
+headers.ResponseHeaders.pop?4(key, *args)
+headers.ResponseHeaders.setdefault?4(key, default=None)
+headers._trans_key?5(key)
+headers._trans_name?5(name)
+headers.header2key?7
+headers.key2header?7
+multidict.GetDict.add?4(key, value)
+multidict.GetDict.clear?4()
+multidict.GetDict.copy?4()
+multidict.GetDict.on_change?4()
+multidict.GetDict.pop?4(key, *args)
+multidict.GetDict.popitem?4()
+multidict.GetDict.setdefault?4(key, default=None)
+multidict.GetDict.update?4(*args, **kwargs)
+multidict.GetDict?1(data, env)
+multidict.MultiDict.add?4(key, value)
+multidict.MultiDict.clear?4()
+multidict.MultiDict.copy?4()
+multidict.MultiDict.dict_of_lists?4()
+multidict.MultiDict.extend?4(other=None, **kwargs)
+multidict.MultiDict.from_fieldstorage?4(fs)
+multidict.MultiDict.getall?4(key)
+multidict.MultiDict.getone?4(key)
+multidict.MultiDict.has_key?7
+multidict.MultiDict.items?4()
+multidict.MultiDict.iteritems?4()
+multidict.MultiDict.iterkeys?4()
+multidict.MultiDict.itervalues?4()
+multidict.MultiDict.keys?4()
+multidict.MultiDict.mixed?4()
+multidict.MultiDict.pop?4(key, *args)
+multidict.MultiDict.popitem?4()
+multidict.MultiDict.setdefault?4(key, default=None)
+multidict.MultiDict.update?4(*args, **kw)
+multidict.MultiDict.values?4()
+multidict.MultiDict.view_list?4(lst)
+multidict.MultiDict?1(*args, **kw)
+multidict.NestedMultiDict._readonly?5(*args, **kw)
+multidict.NestedMultiDict.add?7
+multidict.NestedMultiDict.clear?7
+multidict.NestedMultiDict.copy?4()
+multidict.NestedMultiDict.getall?4(key)
+multidict.NestedMultiDict.has_key?7
+multidict.NestedMultiDict.items?4()
+multidict.NestedMultiDict.iteritems?4()
+multidict.NestedMultiDict.iterkeys?7
+multidict.NestedMultiDict.itervalues?4()
+multidict.NestedMultiDict.keys?4()
+multidict.NestedMultiDict.pop?7
+multidict.NestedMultiDict.popitem?7
+multidict.NestedMultiDict.setdefault?7
+multidict.NestedMultiDict.update?7
+multidict.NestedMultiDict.values?4()
+multidict.NestedMultiDict?1(*dicts)
+multidict.NoVars.add?7
+multidict.NoVars.clear?7
+multidict.NoVars.copy?4()
+multidict.NoVars.dict_of_lists?7
+multidict.NoVars.get?4(key, default=None)
+multidict.NoVars.getall?4(key)
+multidict.NoVars.getone?4(key)
+multidict.NoVars.has_key?7
+multidict.NoVars.iterkeys?4()
+multidict.NoVars.keys?4()
+multidict.NoVars.mixed?4()
+multidict.NoVars.pop?7
+multidict.NoVars.popitem?7
+multidict.NoVars.setdefault?7
+multidict.NoVars.update?7
+multidict.NoVars?1(reason=None)
+multidict._dummy?8
+multidict._hide_passwd?5(items)
+request.AdhocAttrMixin._setattr_stacklevel?8
+request.BaseRequest.GET?4()
+request.BaseRequest.POST?4()
+request.BaseRequest.ResponseClass?7
+request.BaseRequest._body__del?5()
+request.BaseRequest._body__get?5()
+request.BaseRequest._body__set?5(value)
+request.BaseRequest._body_file__del?5()
+request.BaseRequest._body_file__get?5()
+request.BaseRequest._body_file__set?5(value)
+request.BaseRequest._cache_control__del?5()
+request.BaseRequest._cache_control__get?5()
+request.BaseRequest._cache_control__set?5(value)
+request.BaseRequest._charset?8
+request.BaseRequest._check_charset?5()
+request.BaseRequest._content_type__get?5()
+request.BaseRequest._content_type__set?5(value=None)
+request.BaseRequest._content_type_raw?8
+request.BaseRequest._copy_body_tempfile?5()
+request.BaseRequest._headers?8
+request.BaseRequest._headers__get?5()
+request.BaseRequest._headers__set?5(value)
+request.BaseRequest._host__del?5()
+request.BaseRequest._host__get?5()
+request.BaseRequest._host__set?5(value)
+request.BaseRequest._is_body_readable__get?5()
+request.BaseRequest._is_body_readable__set?5(flag)
+request.BaseRequest._json_body__del?5()
+request.BaseRequest._json_body__get?5()
+request.BaseRequest._json_body__set?5(value)
+request.BaseRequest._setattr_stacklevel?8
+request.BaseRequest._text__del?5()
+request.BaseRequest._text__get?5()
+request.BaseRequest._text__set?5(value)
+request.BaseRequest._update_cache_control?5(prop_dict)
+request.BaseRequest._urlargs__del?5()
+request.BaseRequest._urlargs__get?5()
+request.BaseRequest._urlargs__set?5(value)
+request.BaseRequest._urlvars__del?5()
+request.BaseRequest._urlvars__get?5()
+request.BaseRequest._urlvars__set?5(value)
+request.BaseRequest.accept?7
+request.BaseRequest.accept_charset?7
+request.BaseRequest.accept_encoding?7
+request.BaseRequest.accept_language?7
+request.BaseRequest.application_url?4()
+request.BaseRequest.as_bytes?4(skip_body=False)
+request.BaseRequest.as_string?4(skip_body=False)
+request.BaseRequest.as_text?4()
+request.BaseRequest.authorization?7
+request.BaseRequest.blank?4(path, environ=None, base_url=None, headers=None, POST=None, **kw)
+request.BaseRequest.body?7
+request.BaseRequest.body_file?7
+request.BaseRequest.body_file_raw?7
+request.BaseRequest.body_file_seekable?4()
+request.BaseRequest.cache_control?7
+request.BaseRequest.call_application?4(application, catch_exc_info=False)
+request.BaseRequest.charset?4(charset)
+request.BaseRequest.client_addr?4()
+request.BaseRequest.content_length?7
+request.BaseRequest.content_type?7
+request.BaseRequest.cookies?4(val)
+request.BaseRequest.copy?4()
+request.BaseRequest.copy_body?4()
+request.BaseRequest.copy_get?4()
+request.BaseRequest.date?7
+request.BaseRequest.decode?4(charset=None, errors='strict')
+request.BaseRequest.encget?4(key, default=NoDefault, encattr=None)
+request.BaseRequest.encset?4(key, val, encattr=None)
+request.BaseRequest.from_bytes?4(b)
+request.BaseRequest.from_file?4(fp)
+request.BaseRequest.from_string?4(b)
+request.BaseRequest.from_text?4(s)
+request.BaseRequest.get_response?7
+request.BaseRequest.headers?7
+request.BaseRequest.host?7
+request.BaseRequest.host_port?4()
+request.BaseRequest.host_url?4()
+request.BaseRequest.http_version?7
+request.BaseRequest.if_match?7
+request.BaseRequest.if_modified_since?7
+request.BaseRequest.if_none_match?7
+request.BaseRequest.if_range?7
+request.BaseRequest.if_unmodified_since?7
+request.BaseRequest.is_body_readable?7
+request.BaseRequest.is_body_seekable?7
+request.BaseRequest.is_xhr?4()
+request.BaseRequest.json?7
+request.BaseRequest.make_body_seekable?4()
+request.BaseRequest.make_default_send_app?4()
+request.BaseRequest.make_tempfile?4()
+request.BaseRequest.max_forwards?7
+request.BaseRequest.method?7
+request.BaseRequest.params?4()
+request.BaseRequest.path?4()
+request.BaseRequest.path_info?7
+request.BaseRequest.path_info_peek?4()
+request.BaseRequest.path_info_pop?4(pattern=None)
+request.BaseRequest.path_qs?4()
+request.BaseRequest.path_url?4()
+request.BaseRequest.pragma?7
+request.BaseRequest.query_string?7
+request.BaseRequest.range?7
+request.BaseRequest.referer?7
+request.BaseRequest.referrer?7
+request.BaseRequest.relative_url?4(other_url, to_application=False)
+request.BaseRequest.remote_addr?7
+request.BaseRequest.remote_user?7
+request.BaseRequest.remove_conditional_headers?4(remove_encoding=True, remove_range=True, remove_match=True, remove_modified=True)
+request.BaseRequest.request_body_tempfile_limit?7
+request.BaseRequest.scheme?7
+request.BaseRequest.script_name?7
+request.BaseRequest.send?4(application=None, catch_exc_info=False)
+request.BaseRequest.server_name?7
+request.BaseRequest.server_port?7
+request.BaseRequest.start_response?4(headers, exc_info=None)
+request.BaseRequest.text?7
+request.BaseRequest.upath_info?7
+request.BaseRequest.url?4()
+request.BaseRequest.url_encoding?7
+request.BaseRequest.urlargs?7
+request.BaseRequest.urlvars?7
+request.BaseRequest.uscript_name?7
+request.BaseRequest.user_agent?7
+request.BaseRequest?1(environ, charset=None, unicode_errors=None, decode_param_names=None, **kw)
+request.FakeCGIBody.fileno?4()
+request.FakeCGIBody.readable?4()
+request.FakeCGIBody.readinto?4(buff)
+request.FakeCGIBody?1(vars, content_type)
+request.LegacyRequest.encget?4(key, default=NoDefault, encattr=None)
+request.LegacyRequest.upath_info?7
+request.LegacyRequest.uscript_name?7
+request.LimitedLengthFile.fileno?4()
+request.LimitedLengthFile.readable?4()
+request.LimitedLengthFile.readinto?4(buff)
+request.LimitedLengthFile?1(file, maxlen)
+request.NoDefault?7
+request.PATH_SAFE?7
+request.Transcoder._prop?8
+request.Transcoder._str_name?8
+request.Transcoder.transcode_fs?4(fs, content_type)
+request.Transcoder.transcode_query?4(q)
+request.Transcoder?1(charset, errors='strict')
+request._LATIN_ENCODINGS?8
+request._cgi_FieldStorage__repr__patch?5(self)
+request._encode_multipart?5(vars, content_type, fout=None)
+request._get_multipart_boundary?5(ctype)
+request._is_utf8?5(charset)
+request.detect_charset?4(ctype)
+request.environ_add_POST?4(env, data, content_type=None)
+request.environ_from_url?4(path)
+request.http_method_probably_has_body?7
+response.AppIterRange._skip_start?5()
+response.AppIterRange.close?4()
+response.AppIterRange.next?4()
+response.AppIterRange?1(app_iter, start, stop)
+response.EmptyResponse.next?4()
+response.EmptyResponse?1(app_iter=None)
+response.Response._abs_headerlist?5(environ)
+response.Response._app_iter__del?5()
+response.Response._app_iter__get?5()
+response.Response._app_iter__set?5(value)
+response.Response._body__get?5()
+response.Response._body__set?5(value=b'')
+response.Response._body_file__del?5()
+response.Response._body_file__get?5()
+response.Response._body_file__set?5(file)
+response.Response._cache_control__del?5()
+response.Response._cache_control__get?5()
+response.Response._cache_control__set?5(value)
+response.Response._cache_control_obj?8
+response.Response._cache_expires?5(seconds=0, **kw)
+response.Response._charset__del?5()
+response.Response._charset__get?5()
+response.Response._charset__set?5(charset)
+response.Response._content_type__del?5()
+response.Response._content_type__get?5()
+response.Response._content_type__set?5(value)
+response.Response._content_type_params__del?5()
+response.Response._content_type_params__get?5()
+response.Response._content_type_params__set?5(value_dict)
+response.Response._etag_raw?8
+response.Response._headerlist__del?5()
+response.Response._headerlist__get?5()
+response.Response._headerlist__set?5(value)
+response.Response._headers__get?5()
+response.Response._headers__set?5(value)
+response.Response._json_body__del?5()
+response.Response._json_body__get?5()
+response.Response._json_body__set?5(value)
+response.Response._safe_methods?8
+response.Response._status__get?5()
+response.Response._status__set?5(value)
+response.Response._status_code__get?5()
+response.Response._status_code__set?5(code)
+response.Response._text__del?5()
+response.Response._text__get?5()
+response.Response._text__set?5(value)
+response.Response._update_cache_control?5(prop_dict)
+response.Response.accept_ranges?7
+response.Response.age?7
+response.Response.allow?7
+response.Response.app_iter?7
+response.Response.app_iter_range?4(start, stop)
+response.Response.body?7
+response.Response.body_file?7
+response.Response.cache_control?7
+response.Response.cache_expires?7
+response.Response.charset?7
+response.Response.conditional_response_app?4(environ, start_response)
+response.Response.content_disposition?7
+response.Response.content_encoding?7
+response.Response.content_language?7
+response.Response.content_length?7
+response.Response.content_location?7
+response.Response.content_md5?7
+response.Response.content_range?7
+response.Response.content_type?7
+response.Response.content_type_params?7
+response.Response.copy?4()
+response.Response.date?7
+response.Response.decode_content?4()
+response.Response.default_charset?7
+response.Response.default_conditional_response?7
+response.Response.default_content_type?7
+response.Response.delete_cookie?4(key, path='/', domain=None)
+response.Response.encode_content?4(encoding='gzip', lazy=False)
+response.Response.environ?7
+response.Response.etag?7
+response.Response.etag_strong?4()
+response.Response.expires?7
+response.Response.from_file?4(fp)
+response.Response.headerlist?7
+response.Response.headers?7
+response.Response.json?7
+response.Response.last_modified?7
+response.Response.location?7
+response.Response.md5_etag?4(body=None, set_content_md5=False)
+response.Response.merge_cookies?4(resp)
+response.Response.pragma?7
+response.Response.repl_app?4(start_response)
+response.Response.repl_start_response?4(headers, exc_info=None)
+response.Response.request?7
+response.Response.retry_after?7
+response.Response.server?7
+response.Response.set_cookie?4(key, value='', max_age=None, path='/', domain=None, secure=False, httponly=False, comment=None, expires=None, overwrite=False)
+response.Response.status?7
+response.Response.status_code?7
+response.Response.text?7
+response.Response.unicode_body?7
+response.Response.unicode_errors?7
+response.Response.unset_cookie?4(key, strict=True)
+response.Response.vary?7
+response.Response.write?4(text)
+response.Response.www_authenticate?7
+response.Response?1(body=None, status=None, headerlist=None, app_iter=None, content_type=None, conditional_response=None, **kw)
+response.ResponseBodyFile.close?4()
+response.ResponseBodyFile.closed?7
+response.ResponseBodyFile.encoding?7
+response.ResponseBodyFile.flush?4()
+response.ResponseBodyFile.mode?7
+response.ResponseBodyFile.writelines?4(seq)
+response.ResponseBodyFile?1(response)
+response._OK_PARAM_RE?8
+response._PARAM_RE?8
+response._error_unicode_in_app_iter?5(app_iter, body)
+response._gzip_header?8
+response._request_uri?5(environ)
+response.filter_headers?4(hlist, remove_headers=('content-length', 'content-type'))
+response.gzip_app_iter?4(app_iter)
+response.iter_close?4(iter)
+response.iter_file?4(file, block_size=1<<18)
+static.BLOCK_SIZE?7
+static.DirectoryApp.index?4(req, path)
+static.DirectoryApp.make_fileapp?4(path)
+static.DirectoryApp?1(path, index_page='index.html', hide_index_with_redirect=False, **kw)
+static.FileApp?1(filename, **kw)
+static.FileIter.app_iter_range?4(seek=None, limit=None, block_size=None)
+static.FileIter?1(file)
+util.header_docstring?4(header, rfc_section)
+util.html_escape?4(s)
+util.status_generic_reasons?7
+util.status_reasons?7
+util.warn_deprecation?4(text, version, stacklevel)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/APIs/WebOb-1.2.bas	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,73 @@
+AcceptCharset Accept
+AcceptLanguage Accept
+Cookie dict
+DisconnectionError IOError
+EnvironHeaders MutableMapping
+FakeCGIBody io.RawIOBase
+GetDict MultiDict
+HTTPAccepted HTTPOk
+HTTPBadGateway HTTPServerError
+HTTPBadRequest HTTPClientError
+HTTPClientError HTTPError
+HTTPConflict HTTPClientError
+HTTPCreated HTTPOk
+HTTPError WSGIHTTPException
+HTTPException Exception
+HTTPExpectationFailed HTTPClientError
+HTTPFailedDependency HTTPClientError
+HTTPForbidden HTTPClientError
+HTTPFound _HTTPMove
+HTTPGatewayTimeout HTTPServerError
+HTTPGone HTTPClientError
+HTTPInsufficientStorage HTTPServerError
+HTTPInternalServerError HTTPServerError
+HTTPLengthRequired HTTPClientError
+HTTPLocked HTTPClientError
+HTTPMethodNotAllowed HTTPClientError
+HTTPMovedPermanently _HTTPMove
+HTTPMultipleChoices _HTTPMove
+HTTPNetworkAuthenticationRequired HTTPServerError
+HTTPNoContent HTTPOk
+HTTPNonAuthoritativeInformation HTTPOk
+HTTPNotAcceptable HTTPClientError
+HTTPNotFound HTTPClientError
+HTTPNotImplemented HTTPServerError
+HTTPNotModified HTTPRedirection
+HTTPOk WSGIHTTPException
+HTTPPartialContent HTTPOk
+HTTPPaymentRequired HTTPClientError
+HTTPPreconditionFailed HTTPClientError
+HTTPPreconditionRequired HTTPClientError
+HTTPProxyAuthenticationRequired HTTPClientError
+HTTPRedirection WSGIHTTPException
+HTTPRequestEntityTooLarge HTTPClientError
+HTTPRequestHeaderFieldsTooLarge HTTPClientError
+HTTPRequestRangeNotSatisfiable HTTPClientError
+HTTPRequestTimeout HTTPClientError
+HTTPRequestURITooLong HTTPClientError
+HTTPResetContent HTTPOk
+HTTPSeeOther _HTTPMove
+HTTPServerError HTTPError
+HTTPServiceUnavailable HTTPServerError
+HTTPTemporaryRedirect _HTTPMove
+HTTPTooManyRequests HTTPClientError
+HTTPUnauthorized HTTPClientError
+HTTPUnprocessableEntity HTTPClientError
+HTTPUnsupportedMediaType HTTPClientError
+HTTPUseProxy _HTTPMove
+HTTPVersionNotSupported HTTPServerError
+LegacyRequest BaseRequest
+LimitedLengthFile io.RawIOBase
+MIMEAccept Accept
+MIMENilAccept NilAccept
+Morsel dict
+MultiDict MutableMapping
+NestedMultiDict MultiDict
+NoAccept NilAccept
+Request AdhocAttrMixin BaseRequest
+RequestCookies collections.MutableMapping
+ResponseHeaders MultiDict
+UpdateDict dict
+WSGIHTTPException HTTPException Response
+_HTTPMove HTTPRedirection
+_UTC tzinfo
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/ConfigurationPage/PyramidPage.py	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,157 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Pyramid configuration page.
+"""
+
+from PyQt4.QtCore import pyqtSlot
+
+from E5Gui.E5Completers import E5DirCompleter
+from E5Gui import E5FileDialog
+
+from Preferences.ConfigurationPages.ConfigurationPageBase import ConfigurationPageBase
+from .Ui_PyramidPage import Ui_PyramidPage
+
+import Utilities
+
+from Globals import isWindowsPlatform, isMacPlatform
+
+
+class PyramidPage(ConfigurationPageBase, Ui_PyramidPage):
+    """
+    Class implementing the Pyramid configuration page.
+    """
+    def __init__(self, plugin):
+        """
+        Constructor
+        
+        @param plugin reference to the plugin object
+        """
+        super().__init__()
+        self.setupUi(self)
+        self.setObjectName("PyramidPage")
+        
+        self.__plugin = plugin
+        
+        consoleList = []
+        if isWindowsPlatform():
+            consoleList.append("cmd.exe /c")
+        elif isMacPlatform():
+            consoleList.append("xterm -e")
+        else:
+            consoleList.append("konsole -e")
+            consoleList.append("@konsole --workdir . -e") 
+            # KDE4 konsole spawns
+            consoleList.append("gnome-terminal -x")
+            consoleList.append("xterm -e")
+        
+        consoleNoCloseList = []
+        if isWindowsPlatform():
+            consoleNoCloseList.append("cmd.exe /k")
+        elif isMacPlatform():
+            consoleNoCloseList.append("xterm -hold -e")
+        else:
+            consoleNoCloseList.append("konsole --noclose -e")
+            consoleNoCloseList.append("@konsole --noclose --workdir . -e")
+            # KDE4 konsole spawns
+            consoleNoCloseList.append("xterm -hold -e")
+        
+        self.consoleCommandCombo.addItems(consoleList)
+        self.consoleCommandNoCloseCombo.addItems(consoleNoCloseList)
+        
+        self.virtualEnvPy2Completer = E5DirCompleter(self.virtualEnvPy2Edit)
+        self.virtualEnvPy3Completer = E5DirCompleter(self.virtualEnvPy3Edit)
+        
+        self.py2ShellCombo.addItem(self.trUtf8("Plain Python"), "python")
+        self.py2ShellCombo.addItem(self.trUtf8("IPython"), "ipython")
+        self.py2ShellCombo.addItem(self.trUtf8("bpython"), "bpython")
+        
+        self.py3ShellCombo.addItem(self.trUtf8("Plain Python"), "python")
+        self.py3ShellCombo.addItem(self.trUtf8("IPython"), "ipython")
+        self.py3ShellCombo.addItem(self.trUtf8("bpython"), "bpython")
+        
+        # set initial values
+        self.consoleCommandCombo.setEditText(
+            self.__plugin.getPreferences("ConsoleCommand"))
+        self.consoleCommandNoCloseCombo.setEditText(
+            self.__plugin.getPreferences("ConsoleCommandNoClose"))
+        
+        self.virtualEnvPy2Edit.setText(
+            self.__plugin.getPreferences("VirtualEnvironmentPy2"))
+        self.virtualEnvPy3Edit.setText(
+            self.__plugin.getPreferences("VirtualEnvironmentPy3"))
+        
+        self.portSpinBox.setValue(
+            self.__plugin.getPreferences("ServerPort"))
+        
+        self.py2ShellCombo.setCurrentIndex(self.py2ShellCombo.findData(
+            self.__plugin.getPreferences("Python2ConsoleType")))
+        self.py3ShellCombo.setCurrentIndex(self.py3ShellCombo.findData(
+            self.__plugin.getPreferences("Python3ConsoleType")))
+        
+        self.urlEdit.setText(
+            self.__plugin.getPreferences("PyramidDocUrl"))
+    
+    def save(self):
+        """
+        Public slot to save the Pyramid configuration.
+        """
+        self.__plugin.setPreferences("ConsoleCommand", 
+            self.consoleCommandCombo.currentText())
+        self.__plugin.setPreferences("ConsoleCommandNoClose", 
+            self.consoleCommandNoCloseCombo.currentText())
+        
+        self.__plugin.setPreferences("VirtualEnvironmentPy2", 
+            self.virtualEnvPy2Edit.text())
+        self.__plugin.setPreferences("VirtualEnvironmentPy3", 
+            self.virtualEnvPy3Edit.text())
+        
+        self.__plugin.setPreferences("ServerPort", 
+            self.portSpinBox.value())
+        
+        self.__plugin.setPreferences("Python2ConsoleType", 
+            self.py2ShellCombo.itemData(self.py2ShellCombo.currentIndex()))
+        self.__plugin.setPreferences("Python3ConsoleType", 
+            self.py3ShellCombo.itemData(self.py3ShellCombo.currentIndex()))
+        
+        self.__plugin.setPreferences("PyramidDocUrl", 
+            self.urlEdit.text())
+    
+    @pyqtSlot()
+    def on_virtualEnvPy3Button_clicked(self):
+        """
+        Private slot to select the virtual environment for Python 3 via a 
+        directory selection dialog.
+        """
+        vDir = self.virtualEnvPy3Edit.text()
+        if not vDir:
+            vDir = Utilities.getHomeDir()
+        virtualEnv = E5FileDialog.getExistingDirectory(
+            self,
+            self.trUtf8("Select Virtual Environment for Python 3"),
+            vDir,
+            E5FileDialog.Options(E5FileDialog.Option(0)))
+        
+        if virtualEnv:
+            self.virtualEnvPy3Edit.setText(Utilities.toNativeSeparators(virtualEnv))
+    
+    @pyqtSlot()
+    def on_virtualEnvPy2Button_clicked(self):
+        """
+        Private slot to select the virtual environment for Python 2 via a 
+        directory selection dialog.
+        """
+        vDir = self.virtualEnvPy2Edit.text()
+        if not vDir:
+            vDir = Utilities.getHomeDir()
+        virtualEnv = E5FileDialog.getExistingDirectory(
+            self,
+            self.trUtf8("Select Virtual Environment for Python 2"),
+            vDir,
+            E5FileDialog.Options(E5FileDialog.Option(0)))
+        
+        if virtualEnv:
+            self.virtualEnvPy2Edit.setText(Utilities.toNativeSeparators(virtualEnv))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/ConfigurationPage/PyramidPage.ui	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PyramidPage</class>
+ <widget class="QWidget" name="PyramidPage">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>528</width>
+    <height>868</height>
+   </rect>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="headerLabel">
+     <property name="text">
+      <string>&lt;b&gt;Configure Pyramid&lt;/b&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="Line" name="line15">
+     <property name="frameShape">
+      <enum>QFrame::HLine</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Sunken</enum>
+     </property>
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="pyramidConsoleGroup">
+     <property name="title">
+      <string>Console Commands</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="0">
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Console Command:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <widget class="QComboBox" name="consoleCommandCombo">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="toolTip">
+         <string>Enter the console command</string>
+        </property>
+        <property name="editable">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="label_2">
+        <property name="text">
+         <string>Console Command (non-closing):</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QComboBox" name="consoleCommandNoCloseCombo">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="toolTip">
+         <string>Enter the console command for a non-closing console</string>
+        </property>
+        <property name="editable">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0" colspan="2">
+       <widget class="QLabel" name="label_5">
+        <property name="text">
+         <string>&lt;b&gt;Note:&lt;/b&gt; The console command for a console, that is spawning (i.e. exits before the console window is closed), should be prefixed by an '@' character.</string>
+        </property>
+        <property name="wordWrap">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="python3Group">
+     <property name="title">
+      <string>Python 3</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_5">
+      <item row="0" column="0" colspan="2">
+       <widget class="QGroupBox" name="pyramidVirtualEnvPy3Group">
+        <property name="title">
+         <string>Pyramid Virtual Environment</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_4">
+         <item row="0" column="0" colspan="2">
+          <widget class="QLabel" name="label_3">
+           <property name="text">
+            <string>Enter the path of the Pyramid virtual environment. Leave empty to not use a virtual environment setup.</string>
+           </property>
+           <property name="wordWrap">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLineEdit" name="virtualEnvPy3Edit"/>
+         </item>
+         <item row="1" column="1">
+          <widget class="QPushButton" name="virtualEnvPy3Button">
+           <property name="toolTip">
+            <string>Select the virtual environment directory via a selection dialog</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="label_9">
+        <property name="text">
+         <string>Pyramid Python Console:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QComboBox" name="py3ShellCombo">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="toolTip">
+         <string>Select the Python console type</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="python2Group">
+     <property name="title">
+      <string>Python 2</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_3">
+      <item row="0" column="0" colspan="2">
+       <widget class="QGroupBox" name="pyramidVirtualEnvPy2Group">
+        <property name="title">
+         <string>Pyramid Virtual Environment</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_2">
+         <item row="0" column="0" colspan="2">
+          <widget class="QLabel" name="label_7">
+           <property name="text">
+            <string>Enter the path of the Pyramid virtual environment. Leave empty to not use a virtual environment setup.</string>
+           </property>
+           <property name="wordWrap">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLineEdit" name="virtualEnvPy2Edit"/>
+         </item>
+         <item row="1" column="1">
+          <widget class="QPushButton" name="virtualEnvPy2Button">
+           <property name="toolTip">
+            <string>Select the virtual environment directory via a selection dialog</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="label_8">
+        <property name="text">
+         <string>Pyramid Python Console:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QComboBox" name="py2ShellCombo">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="toolTip">
+         <string>Select the Python console type</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="pyramidServerGroup">
+     <property name="title">
+      <string>Server</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QLabel" name="label_4">
+        <property name="text">
+         <string>Server Port:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QSpinBox" name="portSpinBox">
+        <property name="toolTip">
+         <string>Enter the port number of the server (0 for default)</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="maximum">
+         <number>65535</number>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>351</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="pyramidDocumenattionGroup">
+     <property name="title">
+      <string>Pyramid Documentation</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <item>
+       <widget class="QLabel" name="label_6">
+        <property name="text">
+         <string>URL:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="urlEdit">
+        <property name="toolTip">
+         <string>Enter the URL of the Pyramid documentation</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>274</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>consoleCommandCombo</tabstop>
+  <tabstop>consoleCommandNoCloseCombo</tabstop>
+  <tabstop>virtualEnvPy3Edit</tabstop>
+  <tabstop>virtualEnvPy3Button</tabstop>
+  <tabstop>py3ShellCombo</tabstop>
+  <tabstop>virtualEnvPy2Edit</tabstop>
+  <tabstop>virtualEnvPy2Button</tabstop>
+  <tabstop>py2ShellCombo</tabstop>
+  <tabstop>portSpinBox</tabstop>
+  <tabstop>urlEdit</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/ConfigurationPage/__init__.py	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Package implementing the Pyramid page of the configuration dialog.
+"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/CreateParametersDialog.py	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,108 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog for entering the create parameters.
+"""
+
+from PyQt4.QtCore import pyqtSlot, QProcess
+from PyQt4.QtGui import QDialog, QDialogButtonBox
+
+from E5Gui import E5MessageBox
+
+from .Ui_CreateParametersDialog import Ui_CreateParametersDialog
+
+import Preferences
+
+
+class CreateParametersDialog(QDialog, Ui_CreateParametersDialog):
+    """
+    Class implementing a dialog for entering the create parameters.
+    """
+    def __init__(self, project, parent=None):
+        """
+        Constructor
+        
+        @param project reference to the project object (Project)
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.__okButton = self.buttonBox.button(QDialogButtonBox.Ok)
+        self.__okButton.setEnabled(False)
+        
+        errMsg = ""
+        proc = QProcess()
+        args = []
+        args.append(project.getPyramidCommand("pcreate"))
+        args.append("--list")
+        proc.start(args[0], args[1:])
+        procStarted = proc.waitForStarted()
+        if procStarted:
+            finished = proc.waitForFinished(30000)
+            if finished and proc.exitCode() == 0:
+                output = \
+                    str(proc.readAllStandardOutput(),
+                        Preferences.getSystem("IOEncoding"),
+                        'replace')
+            else:
+                if not finished:
+                    errMsg = self.trUtf8(
+                        "The pcreate command did not finish within 30s.")
+        else:
+            errMsg = self.trUtf8("Could not start the pcreate executable.")
+        if not errMsg:
+            scaffolds = output.splitlines()
+            self.scaffoldCombo.addItem("")
+            for scaffold in sorted(scaffolds[1:]):
+                self.scaffoldCombo.addItem(scaffold.strip())
+            self.scaffoldCombo.setCurrentIndex(0)
+        else:
+            E5MessageBox.critical(None,
+                self.trUtf8('Process Generation Error'),
+                errMsg)
+    
+    @pyqtSlot(str)
+    def on_nameEdit_textChanged(self, text):
+        """
+        Private slot to handle changes of the site name.
+        
+        @param text text of the site entry (string)
+        """
+        self.__updateUi()
+    
+    @pyqtSlot(str)
+    def on_scaffoldCombo_currentIndexChanged(self, text):
+        """
+        Private slot to handle changes of the selected scaffold.
+        
+        @param text text of the combo box (string)
+        """
+        self.__updateUi()
+    
+    def __updateUi(self):
+        """
+        Private slot to update the dialog.
+        """
+        self.__okButton.setEnabled(
+            bool(self.scaffoldCombo.currentText()) and \
+            bool(self.nameEdit.text())
+        )
+    
+    def getData(self):
+        """
+        Public method to get the data.
+        
+        @return tuple giving the scaffold (string), the project name (string),
+            a flag indicating to overwrite existing files (boolean) and a flag
+            indicating to simulate the creation (boolean)
+        """
+        return (
+            self.scaffoldCombo.currentText().split(":")[0], 
+            self.nameEdit.text(), 
+            self.overwriteCheckBox.isChecked(), 
+            self.simulateCheckBox.isChecked()
+        )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/CreateParametersDialog.ui	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>CreateParametersDialog</class>
+ <widget class="QDialog" name="CreateParametersDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>450</width>
+    <height>160</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Create Parameters</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QLabel" name="label_2">
+     <property name="text">
+      <string>Project &amp;Name:</string>
+     </property>
+     <property name="buddy">
+      <cstring>nameEdit</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QLineEdit" name="nameEdit">
+     <property name="toolTip">
+      <string>Enter the name of the Pyramid project to create</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>&amp;Scaffold:</string>
+     </property>
+     <property name="buddy">
+      <cstring>scaffoldCombo</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QComboBox" name="scaffoldCombo">
+     <property name="toolTip">
+      <string>Select the scaffold to be used</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="QCheckBox" name="overwriteCheckBox">
+     <property name="toolTip">
+      <string>Select to overwrite existing files</string>
+     </property>
+     <property name="text">
+      <string>Overwrite existing files</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0" colspan="2">
+    <widget class="QCheckBox" name="simulateCheckBox">
+     <property name="toolTip">
+      <string>Select to simulate the creation</string>
+     </property>
+     <property name="text">
+      <string>Simulate Pyramid project creation</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="0" colspan="2">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>nameEdit</tabstop>
+  <tabstop>scaffoldCombo</tabstop>
+  <tabstop>overwriteCheckBox</tabstop>
+  <tabstop>simulateCheckBox</tabstop>
+  <tabstop>buttonBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>CreateParametersDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>CreateParametersDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/DistributionTypeSelectionDialog.py	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,86 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to select the distribution file formats.
+"""
+
+from PyQt4.QtCore import Qt, QProcess
+from PyQt4.QtGui import QDialog, QListWidgetItem
+
+from E5Gui import E5MessageBox
+
+from .Ui_DistributionTypeSelectionDialog import Ui_DistributionTypeSelectionDialog
+
+import Preferences
+
+
+class DistributionTypeSelectionDialog(QDialog, Ui_DistributionTypeSelectionDialog):
+    """
+    Class implementing a dialog to select the distribution file formats.
+    """
+    def __init__(self, project, projectPath, parent=None):
+        """
+        Constructor
+        
+        @param project reference to the project object (ProjectPyramid.Project.Project)
+        @param projectPath path of the Pyramid project (string)
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        errMsg = ""
+        proc = QProcess()
+        cmd = project.getPythonCommand()
+        args = []
+        args.append("setup.py")
+        args.append("sdist")
+        args.append("--help-formats")
+        proc.setWorkingDirectory(projectPath)
+        proc.start(cmd, args)
+        procStarted = proc.waitForStarted()
+        if procStarted:
+            finished = proc.waitForFinished(30000)
+            if finished and proc.exitCode() == 0:
+                output = \
+                    str(proc.readAllStandardOutput(),
+                        Preferences.getSystem("IOEncoding"),
+                        'replace')
+            else:
+                if not finished:
+                    errMsg = self.trUtf8(
+                        "The python setup.py command did not finish within 30s.")
+        else:
+            errMsg = self.trUtf8("Could not start the pcreate executable.")
+        if not errMsg:
+            for line in output.splitlines():
+                line = line.strip()
+                if line.startswith("--formats="):
+                    format, description = line.replace("--formats=", "").split(None, 1)
+                    itm = QListWidgetItem("{0} ({1})".format(format, description),
+                                          self.formatsList)
+                    itm.setFlags(itm.flags() | Qt.ItemIsUserCheckable)
+                    itm.setCheckState(Qt.Unchecked)
+        else:
+            E5MessageBox.critical(None,
+                self.trUtf8('Process Generation Error'),
+                errMsg)
+    
+    def getFormats(self):
+        """
+        Public method to retrieve the checked formats.
+        
+        @return list of selected formats (list of string)
+        """
+        formats = []
+        for row in range(self.formatsList.count()):
+            itm = self.formatsList.item(row)
+            if itm.checkState() == Qt.Checked:
+                format = itm.text().split(None, 1)[0].strip()
+                if format:
+                    formats.append(format)
+        
+        return formats
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/DistributionTypeSelectionDialog.ui	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DistributionTypeSelectionDialog</class>
+ <widget class="QDialog" name="DistributionTypeSelectionDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Distribution Type</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Select the distribution file formats below:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QListWidget" name="formatsList">
+     <property name="toolTip">
+      <string>Check the distribution file formats that should be generated</string>
+     </property>
+     <property name="alternatingRowColors">
+      <bool>true</bool>
+     </property>
+     <property name="selectionMode">
+      <enum>QAbstractItemView::NoSelection</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>formatsList</tabstop>
+  <tabstop>buttonBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>DistributionTypeSelectionDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>224</x>
+     <y>278</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>DistributionTypeSelectionDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>292</x>
+     <y>284</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/FormSelectionDialog.py	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,104 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to select the template type.
+"""
+
+from PyQt4.QtCore import pyqtSlot
+from PyQt4.QtGui import QDialog, QDialogButtonBox
+
+from .Ui_FormSelectionDialog import Ui_FormSelectionDialog
+
+
+class FormSelectionDialog(QDialog, Ui_FormSelectionDialog):
+    """
+    Class implementing a dialog to select the template type.
+    """
+    def __init__(self, parent = None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.__templates = {
+            "html5" : [self.trUtf8("Standard HTML 5 template"), 
+                '''<!DOCTYPE html>\n'''
+                '''  <head>\n'''
+                '''    <title></title>\n'''
+                '''    <style>\n'''
+                '''    </style>\n'''
+                '''  </head>\n'''
+                '''\n'''
+                '''  <body>\n'''
+                '''  </body>\n'''
+                '''</html>\n'''
+                ], 
+            "sections" : [self.trUtf8("Mako template with sections"), 
+                '''## -*- coding: utf-8 -*-\n'''
+                '''\n'''
+                '''<!DOCTYPE HTML>\n'''
+                '''<html>\n'''
+                '''<head>\n'''
+                '''    <title>${self.title()}</title>\n'''
+                '''    ${self.head()}\n'''
+                '''</head>\n'''
+                '''<body>\n'''
+                '''    ${self.header()}\n'''
+                '''    ${self.tabs()}\n'''
+                '''    ${self.menu()}\n'''
+                '''    ${self.heading()}\n'''
+                '''    ${self.breadcrumbs()}\n'''
+                '''    ${next.body()}\n'''
+                '''    ${self.footer()}\n'''
+                '''</body>\n'''
+                '''</html>\n'''
+                '''\n'''
+                '''<%def name="title()">SimpleSite</%def>\n'''
+                '''<%def name="head()"></%def>\n'''
+                '''<%def name="header()"><a name="top"></a></%def>\n'''
+                '''<%def name="tabs()"></%def>\n'''
+                '''<%def name="menu()"></%def>\n'''
+                '''<%def name="heading()"><h1>${c.heading or 'No Title'}</h1></%def>\n'''
+                '''<%def name="breadcrumbs()"></%def>\n'''
+                '''<%def name="footer()"><p><a href="#top">Top ^</a></p></%def>\n'''
+                ], 
+        }
+        
+        self.__okButton = self.buttonBox.button(QDialogButtonBox.Ok)
+        self.__okButton.setEnabled(False)
+        
+        self.typeCombo.addItem("")
+        for templateType in self.templates:
+            self.typeCombo.addItem(self.templates[templateType][0], 
+                                   templateType)
+        self.typeCombo.setCurrentIndex(0)
+    
+    @pyqtSlot(int)
+    def on_typeCombo_currentIndexChanged(self, index):
+        """
+        Private slot to act upon a change of the selected template type.
+        
+        @param index selected index (integer)
+        """
+        templateType = self.typeCombo.itemData(index)
+        if templateType:
+            self.preview.setPlainText(self.templates[templateType][1])
+            self.__okButton.setEnabled(True)
+        else:
+            self.preview.clear()
+            self.__okButton.setEnabled(False)
+
+    def getTemplateText(self):
+        """
+        Public method to get the template text.
+        
+        @return text of the template (string)
+        """
+        templateType = self.typeCombo.itemData(self.typeCombo.currentIndex())
+        return self.templates[templateType][1]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/FormSelectionDialog.ui	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>FormSelectionDialog</class>
+ <widget class="QDialog" name="FormSelectionDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>600</width>
+    <height>450</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Template Type Selection</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Template &amp;Type:</string>
+     </property>
+     <property name="buddy">
+      <cstring>typeCombo</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QComboBox" name="typeCombo">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="toolTip">
+      <string>Select the template type</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QLabel" name="label_2">
+     <property name="text">
+      <string>Preview:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="QTextEdit" name="preview">
+     <property name="toolTip">
+      <string>Shows the text of the selected template</string>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0" colspan="2">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>typeCombo</tabstop>
+  <tabstop>preview</tabstop>
+  <tabstop>buttonBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>FormSelectionDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>FormSelectionDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/Project.py	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,796 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Pyramid project support.
+"""
+
+import os
+import configparser
+
+from PyQt4.QtCore import QObject, QFileInfo, QProcess, QTimer, QUrl
+from PyQt4.QtGui import QMenu, QDialog, QInputDialog, QDesktopServices
+
+from E5Gui.E5Application import e5App
+from E5Gui import E5MessageBox, E5FileDialog
+from E5Gui.E5Action import E5Action
+
+from .FormSelectionDialog import FormSelectionDialog
+from .CreateParametersDialog import CreateParametersDialog
+from .PyramidDialog import PyramidDialog
+from .DistributionTypeSelectionDialog import DistributionTypeSelectionDialog
+
+import Utilities
+from Globals import isWindowsPlatform
+import UI.PixmapCache
+
+
+class PyramidNoProjectSelectedException(Exception):
+    """
+    Exception thrown to signal, that there is no current Pyramid project.
+    """
+    pass
+
+
+class Project(QObject):
+    """
+    Class implementing the Pyramid project support.
+    """
+    def __init__(self, plugin, parent = None):
+        """
+        Constructor
+        
+        @param plugin reference to the plugin object
+        @param parent parent (QObject)
+        """
+        super().__init__(parent)
+        
+        self.__plugin = plugin
+        self.__ui = parent
+        self.__e5project = e5App().getObject("Project")
+        self.__hooksInstalled = False
+        
+        self.__mainMenu = None
+        
+        self.__serverProc = None
+    
+    def initActions(self):
+        """
+        Public method to define the Pyramid actions.
+        """
+        self.actions = []
+    
+        self.selectProjectAct = E5Action(self.trUtf8('Current Pyramid Project'),
+                "",
+                0, 0,
+                self,'pyramid_current_project')
+        self.selectProjectAct.setStatusTip(self.trUtf8(
+            'Selects the current Pyramid project'))
+        self.selectProjectAct.setWhatsThis(self.trUtf8(
+            """<b>Current Pyramid Project</b>"""
+            """<p>Selects the Pyramid project. Used for multi-project """
+            """Pyramid projects to switch between the projects.</p>"""
+        ))
+        self.selectProjectAct.triggered[()].connect(self.__selectProject)
+        self.actions.append(self.selectProjectAct)
+        self.__setCurrentProject(None)
+        
+        ###############################
+        ## create actions below      ##
+        ###############################
+        
+        self.createProjectAct = E5Action(self.trUtf8('Create Pyramid Project'),
+                self.trUtf8('Create Pyramid &Project'), 
+                0, 0,
+                self,'pyramid_create_project')
+        self.createProjectAct.setStatusTip(self.trUtf8(
+            'Creates a new Pyramid project'))
+        self.createProjectAct.setWhatsThis(self.trUtf8(
+            """<b>Create Pyramid Project</b>"""
+            """<p>Creates a new Pyramid project using "pcreate".</p>"""
+        ))
+        self.createProjectAct.triggered[()].connect(self.__createProject)
+        self.actions.append(self.createProjectAct)
+        
+        ##############################
+        ## run actions below        ##
+        ##############################
+        
+        self.runServerAct = E5Action(self.trUtf8('Run Server'),
+                self.trUtf8('Run &Server'), 
+                0, 0,
+                self,'pyramid_run_server')
+        self.runServerAct.setStatusTip(self.trUtf8(
+            'Starts the Pyramid Web server'))
+        self.runServerAct.setWhatsThis(self.trUtf8(
+            """<b>Run Server</b>"""
+            """<p>Starts the Pyramid Web server using"""
+            """ "pserve --reload development.ini".</p>"""
+        ))
+        self.runServerAct.triggered[()].connect(self.__runServer)
+        self.actions.append(self.runServerAct)
+        
+        self.runLoggingServerAct = E5Action(self.trUtf8('Run Server with Logging'),
+                self.trUtf8('Run Server with &Logging'), 
+                0, 0,
+                self,'pyramid_run_logging_server')
+        self.runLoggingServerAct.setStatusTip(self.trUtf8(
+            'Starts the Pyramid Web server with logging'))
+        self.runLoggingServerAct.setWhatsThis(self.trUtf8(
+            """<b>Run Server with Logging</b>"""
+            """<p>Starts the Pyramid Web server with logging using"""
+            """ "pserve --log-file=server.log --reload development.ini".</p>"""
+        ))
+        self.runLoggingServerAct.triggered[()].connect(self.__runLoggingServer)
+        self.actions.append(self.runLoggingServerAct)
+        
+        self.runBrowserAct = E5Action(self.trUtf8('Run Web-Browser'),
+                self.trUtf8('Run &Web-Browser'), 
+                0, 0,
+                self,'pyramid_run_browser')
+        self.runBrowserAct.setStatusTip(self.trUtf8(
+            'Starts the default Web-Browser with the URL of the Pyramid Web server'))
+        self.runBrowserAct.setWhatsThis(self.trUtf8(
+            """<b>Run Web-Browser</b>"""
+            """<p>Starts the default Web-Browser with the URL of the """
+            """Pyramid Web server.</p>"""
+        ))
+        self.runBrowserAct.triggered[()].connect(self.__runBrowser)
+        self.actions.append(self.runBrowserAct)
+    
+        self.runPythonShellAct = E5Action(self.trUtf8('Start Pyramid Python Console'),
+                self.trUtf8('Start Pyramid &Python Console'), 
+                0, 0,
+                self,'pyramid_python_console')
+        self.runPythonShellAct.setStatusTip(self.trUtf8(
+            'Starts an interactive Python interpreter'))
+        self.runPythonShellAct.setWhatsThis(self.trUtf8(
+            """<b>Start Pyramid Python Console</b>"""
+            """<p>Starts an interactive Python interpreter.</p>"""
+        ))
+        self.runPythonShellAct.triggered[()].connect(self.__runPythonShell)
+        self.actions.append(self.runPythonShellAct)
+        
+        ##############################
+        ## setup actions below      ##
+        ##############################
+        
+        self.setupDevelopAct = E5Action(self.trUtf8('Setup Development Environment'),
+                self.trUtf8('Setup &Development Environment'), 
+                0, 0,
+                self,'pyramid_setup_development')
+        self.setupDevelopAct.setStatusTip(self.trUtf8(
+            'Setup the Pyramid project in development mode'))
+        self.setupDevelopAct.setWhatsThis(self.trUtf8(
+            """<b>Setup Development Environment</b>"""
+            """<p>Setup the Pyramid project in development mode using"""
+            """ "python setup.py develop".</p>"""
+        ))
+        self.setupDevelopAct.triggered[()].connect(self.__setupDevelop)
+        self.actions.append(self.setupDevelopAct)
+         
+        ##################################
+        ## distribution actions below   ##
+        ##################################
+        
+        self.buildDistroAct = E5Action(self.trUtf8('Build Distribution'),
+                self.trUtf8('Build &Distribution'), 
+                0, 0,
+                self,'pyramid_build_distribution')
+        self.buildDistroAct.setStatusTip(self.trUtf8(
+            'Builds a distribution file for the Pyramid project'))
+        self.buildDistroAct.setWhatsThis(self.trUtf8(
+            """<b>Build Distribution</b>"""
+            """<p>Builds a distribution file for the Pyramid project using"""
+            """ "python setup.py sdist".</p>"""
+        ))
+        self.buildDistroAct.triggered[()].connect(self.__buildDistribution)
+        self.actions.append(self.buildDistroAct)
+        
+        ##################################
+        ## documentation action below   ##
+        ##################################
+        
+        self.documentationAct = E5Action(self.trUtf8('Documentation'),
+                self.trUtf8('D&ocumentation'), 
+                0, 0,
+                self,'pyramid_documentation')
+        self.documentationAct.setStatusTip(self.trUtf8(
+            'Shows the help viewer with the Pyramid documentation'))
+        self.documentationAct.setWhatsThis(self.trUtf8(
+            """<b>Documentation</b>"""
+            """<p>Shows the help viewer with the Pyramid documentation.</p>"""
+        ))
+        self.documentationAct.triggered[()].connect(self.__showDocumentation)
+        self.actions.append(self.documentationAct)
+       
+        ##############################
+        ## about action below       ##
+        ##############################
+        
+        self.aboutPyramidAct = E5Action(self.trUtf8('About Pyramid'),
+                self.trUtf8('About P&yramid'), 
+                0, 0,
+                self,'pyramid_about')
+        self.aboutPyramidAct.setStatusTip(self.trUtf8(
+            'Shows some information about Pyramid'))
+        self.aboutPyramidAct.setWhatsThis(self.trUtf8(
+            """<b>About Pyramid</b>"""
+            """<p>Shows some information about Pyramid.</p>"""
+        ))
+        self.aboutPyramidAct.triggered[()].connect(self.__pyramidInfo)
+        self.actions.append(self.aboutPyramidAct)
+    
+    def initMenu(self):
+        """
+        Public slot to initialize the Pyramid menu.
+        
+        @return the menu generated (QMenu)
+        """
+        menu = QMenu(self.trUtf8('P&yramid'), self.__ui)
+        menu.setTearOffEnabled(True)
+        
+        menu.addAction(self.selectProjectAct)
+        menu.addSeparator()
+        menu.addAction(self.runServerAct)
+        menu.addAction(self.runLoggingServerAct)
+        menu.addAction(self.runBrowserAct)
+        menu.addSeparator()
+        menu.addAction(self.createProjectAct)
+        menu.addSeparator()
+        menu.addAction(self.setupDevelopAct)
+        menu.addSeparator()
+        menu.addAction(self.runPythonShellAct)
+        menu.addSeparator()
+        menu.addAction(self.buildDistroAct)
+        menu.addSeparator()
+        menu.addAction(self.documentationAct)
+        menu.addSeparator()
+        menu.addAction(self.aboutPyramidAct)
+        
+        self.__mainMenu = menu
+        return menu
+    
+    def projectOpenedHooks(self):
+        """
+        Public method to add our hook methods.
+        """
+        if self.__e5project.getProjectType() == "Pyramid":
+            self.__formsBrowser = \
+                e5App().getObject("ProjectBrowser").getProjectBrowser("forms")
+            self.__formsBrowser.addHookMethodAndMenuEntry("newForm", 
+                self.newForm, self.trUtf8("New template..."))
+            
+##            self.__e5project.projectLanguageAddedByCode.connect(
+##                self.__projectLanguageAdded)
+##            self.__translationsBrowser = \
+##                e5App().getObject("ProjectBrowser").getProjectBrowser("translations")
+##            self.__translationsBrowser.addHookMethodAndMenuEntry("extractMessages", 
+##                self.extractMessages, self.trUtf8("Extract messages"))
+##            self.__translationsBrowser.addHookMethodAndMenuEntry("releaseAll", 
+##                self.compileCatalogs, self.trUtf8("Compile all catalogs"))
+##            self.__translationsBrowser.addHookMethodAndMenuEntry("releaseSelected", 
+##                self.compileSelectedCatalogs, 
+##                self.trUtf8("Compile selected catalogs"))
+##            self.__translationsBrowser.addHookMethodAndMenuEntry("generateAll", 
+##                self.updateCatalogs, self.trUtf8("Update all catalogs"))
+##            self.__translationsBrowser.addHookMethodAndMenuEntry("generateSelected", 
+##                self.updateSelectedCatalogs, self.trUtf8("Update selected catalogs"))
+            
+            self.__hooksInstalled = True
+    
+    def projectClosedHooks(self):
+        """
+        Public method to remove our hook methods.
+        """
+        if self.__hooksInstalled:
+            self.__formsBrowser.removeHookMethod("newForm")
+            self.__formsBrowser = None
+            
+##            self.__e5project.projectLanguageAddedByCode.disconnect(
+##                self.__projectLanguageAdded)
+##            self.__translationsBrowser.removeHookMethod("extractMessages")
+##            self.__translationsBrowser.removeHookMethod("releaseAll")
+##            self.__translationsBrowser.removeHookMethod("releaseSelected")
+##            self.__translationsBrowser.removeHookMethod("generateAll")
+##            self.__translationsBrowser.removeHookMethod("generateSelected")
+##            self.__translationsBrowser = None
+            
+            self.__hooksInstalled = False
+    
+    def newForm(self, path):
+        """
+        Public method to create a new form.
+        
+        @param path full directory path for the new form file (string)
+        """
+        dlg = FormSelectionDialog()
+        if dlg.exec_() == QDialog.Accepted:
+            template = dlg.getTemplateText()
+            
+            filter = self.trUtf8(
+                "Chameleon Templates (*.pt);;"
+                "Chameleon Text Templates (*.txt);;"
+                "Mako Templates (*.mako);;"
+                "Mako Templates (*.mak);;"
+                "HTML Files (*.html);;"
+                "HTML Files (*.htm);;"
+                "All Files (*)")
+            fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
+                self.__ui,
+                self.trUtf8("New Form"),
+                path,
+                filter,
+                None,
+                E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
+            if fname:
+                ext = QFileInfo(fname).suffix()
+                if not ext:
+                    ex = selectedFilter.split("(*")[1].split(")")[0]
+                    if ex:
+                        fname += ex
+            
+                if os.path.exists(fname):
+                    res = E5MessageBox.yesNo(self.__ui,
+                        self.trUtf8("New Form"),
+                        self.trUtf8("""The file already exists! Overwrite it?"""),
+                        icon = E5MessageBox.Warning)
+                    if not res:
+                        # user selected to not overwrite
+                        return
+                
+                try:
+                    f = open(fname, "w", encoding="utf-8")
+                    f.write(template)
+                    f.close()
+                except IOError as e:
+                    E5MessageBox.critical(self,
+                        self.trUtf8("New Form"),
+                        self.trUtf8("<p>The new form file <b>{0}</b> could not be"
+                            " created.<br/>"
+                            "Problem: {1}</p>").format(fname, e))
+                    return
+                
+                self.__e5project.appendFile(fname)
+                self.__formsBrowser.sourceFile.emit(fname)
+
+    ##################################################################
+    ## methods below implement general functionality
+    ##################################################################
+    
+    def projectClosed(self):
+        """
+        Public method to handle the closing of a project.
+        """
+        if self.__serverProc is not None:
+            self.__serverProcFinished()
+        self.__setCurrentProject(None)
+    
+    def __getVirtualEnvironment(self):
+        """
+        Private method to get the path of the virtual environment.
+        
+        @return path of the virtual environment (string)
+        """
+        language = self.__e5project.getProjectLanguage()
+        if language == "Python3":
+            virtEnv = self.__plugin.getPreferences("VirtualEnvironmentPy3")
+        elif language == "Python2":
+            virtEnv = self.__plugin.getPreferences("VirtualEnvironmentPy2")
+        else:
+            virtEnv = ""
+        if virtEnv and not os.path.exists(virtEnv):
+            virtEnv = ""
+        return virtEnv
+    
+    def getPyramidCommand(self, cmd):
+        """
+        Public method to build a Pyramid command.
+        
+        @param cmd command (string)
+        @return full pyramid command (string)
+        """
+        virtualEnv = self.__getVirtualEnvironment()
+        if virtualEnv:
+            if isWindowsPlatform():
+                cmd = os.path.join(virtualEnv, "Scripts", cmd)
+            else:
+                cmd = os.path.join(virtualEnv, "bin", cmd)
+        return cmd
+    
+    def getPythonCommand(self):
+        """
+        Public method to build the Python command.
+        
+        @return python command (string)
+        """
+        python = "python"
+        if isWindowsPlatform():
+            python += ".exe"
+        virtualEnv = self.__getVirtualEnvironment()
+        if virtualEnv:
+            if isWindowsPlatform():
+                python = os.path.join(virtualEnv, "Scripts", python)
+            else:
+                python = os.path.join(virtualEnv, "bin", python)
+        return python
+    
+    def __pyramidInfo(self):
+        """
+        Private slot to show some info about Pyramid.
+        """
+        url = "http://www.pylonsproject.org/projects/pyramid/about"
+        msgBox = E5MessageBox.E5MessageBox(E5MessageBox.Question,
+            self.trUtf8("About Pyramid"),
+            self.trUtf8(
+                "<p>Pyramid is a high-level Python Web framework that encourages rapid "
+                "development and clean, pragmatic design.</p>"
+                "<p>URL: <a href=\"{0}\">{0}</a></p>"
+            ).format(url),
+            modal=True,
+            buttons=E5MessageBox.Ok)
+        msgBox.setIconPixmap(UI.PixmapCache.getPixmap(
+            os.path.join("ProjectPyramid", "icons", "pyramid64.png")))
+        msgBox.exec_()
+    
+    def isSpawningConsole(self, consoleCmd):
+        """
+        Public method to check, if the given console is a spawning console.
+        
+        @param consoleCmd console command (string)
+        @return tuple of two entries giving an indication, if the console
+            is spawning (boolean) and the (possibly) cleaned console command
+            (string)
+        """
+        if consoleCmd and consoleCmd[0] == '@':
+            return (True, consoleCmd[1:])
+        else:
+            return (False, consoleCmd)
+
+    ##################################################################
+    ## slots below implement creation functions
+    ##################################################################
+    
+    def __createProject(self):
+        """
+        Private slot to create a new Pyramid project.
+        """
+        dlg = CreateParametersDialog(self)
+        if dlg.exec_() == QDialog.Accepted:
+            scaffold, project, overwrite, simulate = dlg.getData()
+            
+            cmd = self.getPyramidCommand("pcreate")
+            args = []
+            if overwrite:
+                args.append("--overwrite")
+            else:
+                args.append("--interactive")
+            if simulate:
+                args.append("--simulate")
+            args.append("--scaffold={0}".format(scaffold))
+            args.append(project)
+            dlg = PyramidDialog(self.trUtf8("Create Pyramid Project"),
+                linewrap=False, parent=self.__ui)
+            if dlg.startProcess(cmd, args, self.__e5project.getProjectPath()):
+                dlg.exec_()
+                if dlg.normalExit() and not simulate:
+                    # search for files created by pcreate and add them to the project
+                    projectPath = os.path.join(self.__e5project.getProjectPath(), project)
+                    for entry in os.walk(projectPath):
+                        for fileName in entry[2]:
+                            fullName = os.path.join(entry[0], fileName)
+                            self.__e5project.appendFile(fullName)
+                    
+                    # create the base directory for translations
+                    i18nPath = os.path.join(projectPath, project.lower(), "i18n")
+                    if not os.path.exists(i18nPath):
+                        os.makedirs(i18nPath)
+                    self.__e5project.setDirty(True)
+                    
+                    self.__setCurrentProject(project)
+    
+    ##################################################################
+    ## methods below implement site related functions
+    ##################################################################
+    
+    def __findProjects(self):
+        """
+        Private method to determine the relative path of all Pyramid 
+        projects (= top level dirs).
+        
+        @return list of projects (list of string)
+        """
+        projects = []
+        ppath = self.__e5project.getProjectPath()
+        for entry in os.listdir(ppath):
+            if entry[0] not in "._" and \
+               os.path.isdir(os.path.join(ppath, entry)):
+                projects.append(entry)
+        return projects
+    
+    def __selectProject(self):
+        """
+        Private method to select a Pyramid project to work with.
+        
+        @return selected project (string)
+        """
+        projects = self.__findProjects()
+        if len(projects) == 0:
+            project = None
+        elif len(projects) == 1:
+            project = projects[0]
+        else:
+            if self.__currentProject is not None:
+                try:
+                    cur = projects.index(self.__currentProject)
+                except ValueError:
+                    cur = 0
+            else:
+                cur = 0
+            project, ok = QInputDialog.getItem(
+                self.__ui,
+                self.trUtf8("Select Pyramid Project"),
+                self.trUtf8("Select the Pyramid project to work with."),
+                projects,
+                cur, False)
+            if not ok:
+                projects = None
+        self.__setCurrentProject(project)
+    
+    def __projectPath(self):
+        """
+        Private method to calculate the full path of the Pyramid project.
+        
+        @exception PyramidNoProjectSelectedException raised, if no project is selected
+        @return path of the project (string)
+        """
+        if self.__currentProject is None:
+            self.__selectProject()
+        
+        if self.__currentProject is None:
+            raise PyramidNoProjectSelectedException
+        else:
+            return os.path.join(self.__e5project.getProjectPath(), 
+                                self.__currentProject)
+    
+    def __setCurrentProject(self, project):
+        """
+        Private slot to set the current project.
+        
+        @param project name of the project (string)
+        """
+        if project is not None and len(project) == 0:
+            self.__currentProject = None
+        else:
+            self.__currentProject = project
+        
+        if self.__currentProject is None:
+            curProject = self.trUtf8("None")
+        else:
+            curProject = self.__currentProject
+        self.selectProjectAct.setText(
+            self.trUtf8('&Current Pyramid Project ({0})').format(curProject))
+        
+        if self.__currentProject is None:
+            self.__e5project.pdata["TRANSLATIONPATTERN"] = []
+        else:
+            # TODO: adjust this to the Pyramid docu
+            self.__e5project.pdata["TRANSLATIONPATTERN"] = [
+                os.path.join(project, project.lower(), "i18n", "%language%", 
+                    "LC_MESSAGES", "%s.po" % project.lower())
+            ]
+    
+    def __project(self):
+        """
+        Private method to get the name of the current Pyramid project.
+        
+        @exception PyramidNoProjectSelectedException raised, if no project is selected
+        @return name of the project (string)
+        """
+        if self.__currentProject is None:
+            self.__selectProject()
+        
+        if self.__currentProject is None:
+            raise PyramidNoProjectSelectedException
+        else:
+            return self.__currentProject
+    
+    ##################################################################
+    ## slots below implement run functions
+    ##################################################################
+    
+    def __runServer(self, logging = False):
+        """
+        Private slot to start the Pyramid Web server.
+        
+        @param logging flag indicating to enable logging (boolean)
+        """
+        consoleCmd = self.isSpawningConsole(
+            self.__plugin.getPreferences("ConsoleCommand"))[1]
+        if consoleCmd:
+            try:
+                projectPath = self.__projectPath()
+            except PyramidNoProjectSelectedException:
+                E5MessageBox.warning(self.__ui,
+                    self.trUtf8('Run Server'),
+                    self.trUtf8('No current Pyramid project selected or no Pyramid '
+                                'project created yet. Aborting...'))
+                return
+            
+            args = Utilities.parseOptionString(consoleCmd)
+            args[0] = Utilities.getExecutablePath(args[0])
+            args.append(self.getPyramidCommand("pserve"))
+            if logging:
+                args.append("--log-file=server.log")
+            args.append("--reload")
+            args.append(os.path.join(projectPath, "development.ini"))
+            
+            if isWindowsPlatform():
+                serverProcStarted, pid = \
+                    QProcess.startDetached(args[0], args[1:], projectPath)
+            else:
+                if self.__serverProc is not None:
+                    self.__serverProcFinished()
+                
+                self.__serverProc = QProcess()
+                self.__serverProc.finished.connect(self.__serverProcFinished)
+                self.__serverProc.setWorkingDirectory(projectPath)
+                self.__serverProc.start(args[0], args[1:])
+                serverProcStarted = self.__serverProc.waitForStarted()
+            if not serverProcStarted:
+                E5MessageBox.critical(self.__ui,
+                    self.trUtf8('Process Generation Error'),
+                    self.trUtf8('The Pyramid server could not be started.'))
+    
+    def __runLoggingServer(self):
+        """
+        Private slot to start the Pyramid Web server with logging.
+        """
+        self.__runServer(True)
+    
+    def __serverProcFinished(self):
+        """
+        Private slot connected to the finished signal.
+        """
+        if self.__serverProc is not None and \
+           self.__serverProc.state() != QProcess.NotRunning:
+            self.__serverProc.terminate()
+            QTimer.singleShot(2000, self.__serverProc.kill)
+            self.__serverProc.waitForFinished(3000)
+        self.__serverProc = None
+    
+    def __runBrowser(self):
+        """
+        Private slot to start the default web browser with the server URL.
+        """
+        try:
+            projectPath = self.__projectPath()
+        except PyramidNoProjectSelectedException:
+            E5MessageBox.warning(self.__ui,
+                self.trUtf8('Run Web-Browser'),
+                self.trUtf8('No current Pyramid project selected or no Pyramid project'
+                            ' created yet. Aborting...'))
+            return
+        
+        config = configparser.ConfigParser()
+        config.read(os.path.join(projectPath, "development.ini"))
+        port = config.get("server:main", "port", fallback="6543")
+        url = QUrl("http://localhost:{0}".format(port))
+        res = QDesktopServices.openUrl(url)
+        if not res:
+            E5MessageBox.critical(self.__ui,
+                self.trUtf8('Run Web-Browser'),
+                self.trUtf8('Could not start the web-browser for the URL "{0}".')\
+                    .format(url.toString()))
+    
+    def __runPythonShell(self):
+        """
+        Private slot to start a Python console for a Pyramid project.
+        """
+        consoleCmd = self.isSpawningConsole(
+            self.__plugin.getPreferences("ConsoleCommand"))[1]
+        if consoleCmd:
+            try:
+                projectPath = self.__projectPath()
+            except PyramidNoProjectSelectedException:
+                E5MessageBox.warning(self.__ui,
+                    self.trUtf8('Start Pyramid Python Console'),
+                    self.trUtf8('No current Pyramid project selected or no Pyramid '
+                                'project created yet. Aborting...'))
+                return
+            
+            args = Utilities.parseOptionString(consoleCmd)
+            args[0] = Utilities.getExecutablePath(args[0])
+            args.append(self.getPyramidCommand("pshell"))
+            language = self.__e5project.getProjectLanguage()
+            if language == "Python2":
+                consoleType = self.__plugin.getPreferences("Python2ConsoleType")
+            else:
+                consoleType = self.__plugin.getPreferences("Python3ConsoleType")
+            args.append("--python-shell={0}".format(consoleType))
+            args.append(os.path.join(projectPath, "development.ini"))
+            
+            started, pid = QProcess.startDetached(args[0], args[1:], projectPath)
+            if not started:
+                E5MessageBox.critical(self.__ui,
+                    self.trUtf8('Process Generation Error'),
+                    self.trUtf8('The Pyramid Shell process could not be started.'))
+
+    ##################################################################
+    ## slots below implement setup functions
+    ##################################################################
+    
+    def __setupDevelop(self):
+        """
+        Private slot to set up the development environment for the current project.
+        """
+        title = self.trUtf8("Setup Development Environment")
+        
+        cmd = self.getPythonCommand()
+        args = []
+        args.append("setup.py")
+        args.append("develop")
+        
+        try:
+            wd = self.__projectPath()
+        except PyramidNoProjectSelectedException:
+            E5MessageBox.warning(self.__ui,
+                title,
+                self.trUtf8('No current Pyramid project selected or no Pyramid project'
+                            ' created yet. Aborting...'))
+            return
+        
+        dia = PyramidDialog(title, 
+            msgSuccess = \
+                self.trUtf8("Pyramid development environment setup successfully."))
+        res = dia.startProcess(cmd, args, wd)
+        if res:
+            dia.exec_()
+    
+    ##################################################################
+    ## slots below implement distribution functions
+    ##################################################################
+    
+    def __buildDistribution(self):
+        """
+        Private slot to build a distribution file for the current Pyramid project.
+        """
+        title = self.trUtf8("Build Distribution File")
+        try:
+            projectPath = self.__projectPath()
+        except PyramidNoProjectSelectedException:
+            E5MessageBox.warning(self.__ui,
+                title,
+                self.trUtf8('No current Pyramid project selected or no Pyramid project'
+                            ' created yet. Aborting...'))
+            return
+        
+        dlg = DistributionTypeSelectionDialog(self, projectPath, self.__ui)
+        if dlg.exec_() == QDialog.Accepted:
+            formats = dlg.getFormats()
+            cmd = self.getPythonCommand()
+            args = []
+            args.append("setup.py")
+            args.append("sdist")
+            if formats:
+                args.append("--formats={0}".format(','.join(formats)))
+            
+            dia = PyramidDialog(title, 
+                msgSuccess = \
+                    self.trUtf8("Python distribution file built successfully."))
+            res = dia.startProcess(cmd, args, projectPath)
+            if res:
+                dia.exec_()
+    
+    ##################################################################
+    ## slots below implement documentation functions
+    ##################################################################
+    
+    def __showDocumentation(self):
+        """
+        Private slot to show the helpviewer with the Pylons documentation.
+        """
+        page = self.__plugin.getPreferences("PyramidDocUrl")
+        self.__ui.launchHelpViewer(page)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/PyramidDialog.py	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,290 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog starting a process and showing its output.
+"""
+
+import os
+
+from PyQt4.QtCore import QProcess, QTimer, pyqtSlot, Qt, QCoreApplication
+from PyQt4.QtGui import QDialog, QDialogButtonBox, QLineEdit, QTextEdit
+
+from E5Gui import E5MessageBox
+
+from .Ui_PyramidDialog import Ui_PyramidDialog
+
+import Preferences
+from Globals import isWindowsPlatform
+
+
+class PyramidDialog(QDialog, Ui_PyramidDialog):
+    """
+    Class implementing a dialog starting a process and showing its output.
+    
+    It starts a QProcess and displays a dialog that
+    shows the output of the process. The dialog is modal,
+    which causes a synchronized execution of the process.
+    """
+    def __init__(self, text, fixed = False, linewrap = True, 
+                 msgSuccess = None, msgError = None, 
+                 parent = None):
+        """
+        Constructor
+        
+        @param text text to be shown by the label (string or QString)
+        @keyparam fixed flag indicating a fixed font should be used (boolean)
+        @keyparam linewrap flag indicating to wrap long lines (boolean)
+        @keyparam msgSuccess optional string to show upon successful execution
+            (string or QString)
+        @keyparam msgError optional string to show upon unsuccessful execution
+            (string or QString)
+        @keyparam parent parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
+        self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
+        
+        self.proc = None
+        self.argsLists = []
+        self.workingDir = None
+        self.msgSuccess = msgSuccess
+        self.msgError = msgError
+        
+        self.outputGroup.setTitle(text)
+        
+        if fixed:
+            if isWindowsPlatform():
+                self.resultbox.setFontFamily("Lucida Console")
+            else:
+                self.resultbox.setFontFamily("Monospace")
+        
+        if not linewrap:
+            self.resultbox.setLineWrapMode(QTextEdit.NoWrap)
+        
+        self.show()
+        QCoreApplication.processEvents()
+    
+    def finish(self):
+        """
+        Public slot called when the process finished or the user pressed the button.
+        """
+        if self.proc is not None and \
+           self.proc.state() != QProcess.NotRunning:
+            self.proc.terminate()
+            QTimer.singleShot(2000, self.proc.kill)
+            self.proc.waitForFinished(3000)
+        
+        self.inputGroup.setEnabled(False)
+        self.inputGroup.hide()
+        
+        self.proc = None
+        
+        self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
+        self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
+        self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
+        self.buttonBox.button(QDialogButtonBox.Close).setFocus(Qt.OtherFocusReason)
+        
+        if self.argsLists:
+            args = self.argsLists[0][:]
+            del self.argsLists[0]
+            self.startProcess(args, self.workingDir)
+    
+    def on_buttonBox_clicked(self, button):
+        """
+        Private slot called by a button of the button box clicked.
+        
+        @param button button that was clicked (QAbstractButton)
+        """
+        if button == self.buttonBox.button(QDialogButtonBox.Close):
+            self.close()
+        elif button == self.buttonBox.button(QDialogButtonBox.Cancel):
+            self.finish()
+    
+    def __procFinished(self, exitCode, exitStatus):
+        """
+        Private slot connected to the finished signal.
+        
+        @param exitCode exit code of the process (integer)
+        @param exitStatus exit status of the process (QProcess.ExitStatus)
+        """
+        self.normal = (exitStatus == QProcess.NormalExit) and (exitCode == 0)
+        self.finish()
+        
+        if self.normal and self.msgSuccess:
+            self.resultbox.insertPlainText(self.msgSuccess)
+        elif not self.normal and self.msgError:
+            self.resultbox.insertPlainText(self.msgError)
+        self.resultbox.ensureCursorVisible()
+    
+    def startProcess(self, command, args, workingDir=None, showArgs=True):
+        """
+        Public slot used to start the process.
+        
+        @param command command to start (string)
+        @param args list of arguments for the process (list of strings)
+        @keyparam workingDir working directory for the process (string)
+        @keyparam showArgs flag indicating to show the arguments (boolean)
+        @return flag indicating a successful start of the process
+        """
+        self.errorGroup.hide()
+        self.normal = False
+        self.intercept = False
+        
+        self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
+        self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True)
+        self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
+        self.buttonBox.button(QDialogButtonBox.Cancel).setFocus(Qt.OtherFocusReason)
+        
+        if showArgs:
+            self.resultbox.append(command + ' ' + ' '.join(args))
+            self.resultbox.append('')
+        
+        self.proc = QProcess()
+        
+        self.proc.finished.connect(self.__procFinished)
+        self.proc.readyReadStandardOutput.connect(self.__readStdout)
+        self.proc.readyReadStandardError.connect(self.__readStderr)
+        
+        if workingDir:
+            self.proc.setWorkingDirectory(workingDir)
+        self.proc.start(command, args)
+        procStarted = self.proc.waitForStarted()
+        if not procStarted:
+            self.buttonBox.setFocus()
+            self.inputGroup.setEnabled(False)
+            E5MessageBox.critical(self,
+                self.trUtf8('Process Generation Error'),
+                self.trUtf8(
+                    'The process {0} could not be started. '
+                    'Ensure, that it is in the search path.'
+                ).format(command))
+        else:
+            self.inputGroup.setEnabled(True)
+            self.inputGroup.show()
+        return procStarted
+    
+    def startBatchProcesses(self, argsLists, workingDir = None):
+        """
+        Public slot used to start a batch of processes.
+        
+        @param argsLists list of lists of arguments for the processes
+            (list of list of string)
+        @param workingDir working directory for the process (string)
+        @return flag indicating a successful start of the first process (boolean)
+        """
+        self.argsLists = argsLists[:]
+        self.workingDir = workingDir
+        
+        # start the first process
+        args = self.argsLists[0][:]
+        del self.argsLists[0]
+        res = self.startProcess(args, self.workingDir)
+        if not res:
+            self.argsLists = []
+        
+        return res
+    
+    def normalExit(self):
+        """
+        Public method to check for a normal process termination.
+        
+        @return flag indicating normal process termination (boolean)
+        """
+        return self.normal
+    
+    def normalExitWithoutErrors(self):
+        """
+        Public method to check for a normal process termination without
+        error messages.
+        
+        @return flag indicating normal process termination (boolean)
+        """
+        return self.normal and self.errors.toPlainText() == ""
+    
+    def __readStdout(self):
+        """
+        Private slot to handle the readyReadStandardOutput signal.
+        
+        It reads the output of the process, formats it and inserts it into
+        the contents pane.
+        """
+        if self.proc is not None:
+            out = str(self.proc.readAllStandardOutput(),
+                Preferences.getSystem("IOEncoding"),
+                'replace')
+            self.resultbox.insertPlainText(out)
+            self.resultbox.ensureCursorVisible()
+            
+            QCoreApplication.processEvents()
+    
+    def __readStderr(self):
+        """
+        Private slot to handle the readyReadStandardError signal.
+        
+        It reads the error output of the process and inserts it into the
+        error pane.
+        """
+        if self.proc is not None:
+            err = str(self.proc.readAllStandardError(),
+                Preferences.getSystem("IOEncoding"),
+                'replace')
+            self.errorGroup.show()
+            self.errors.insertPlainText(err)
+            self.errors.ensureCursorVisible()
+            
+            QCoreApplication.processEvents()
+    
+    def on_passwordCheckBox_toggled(self, isOn):
+        """
+        Private slot to handle the password checkbox toggled.
+        
+        @param isOn flag indicating the status of the check box (boolean)
+        """
+        if isOn:
+            self.input.setEchoMode(QLineEdit.Password)
+        else:
+            self.input.setEchoMode(QLineEdit.Normal)
+    
+    @pyqtSlot()
+    def on_sendButton_clicked(self):
+        """
+        Private slot to send the input to the subversion process.
+        """
+        input = self.input.text()
+        input += os.linesep
+        
+        if self.passwordCheckBox.isChecked():
+            self.errors.insertPlainText(os.linesep)
+            self.errors.ensureCursorVisible()
+        else:
+            self.resultbox.insertPlainText(input)
+            self.resultbox.ensureCursorVisible()
+        
+        self.proc.write(input)
+        
+        self.passwordCheckBox.setChecked(False)
+        self.input.clear()
+    
+    def on_input_returnPressed(self):
+        """
+        Private slot to handle the press of the return key in the input field.
+        """
+        self.intercept = True
+        self.on_sendButton_clicked()
+    
+    def keyPressEvent(self, evt):
+        """
+        Protected slot to handle a key press event.
+        
+        @param evt the key press event (QKeyEvent)
+        """
+        if self.intercept:
+            self.intercept = False
+            evt.accept()
+            return
+        super().keyPressEvent(evt)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/PyramidDialog.ui	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PyramidDialog</class>
+ <widget class="QDialog" name="PyramidDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>650</width>
+    <height>550</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Pyramid</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout">
+   <item>
+    <widget class="QGroupBox" name="outputGroup">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>2</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title">
+      <string>Output</string>
+     </property>
+     <layout class="QVBoxLayout">
+      <item>
+       <widget class="QTextEdit" name="resultbox">
+        <property name="readOnly">
+         <bool>true</bool>
+        </property>
+        <property name="acceptRichText">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="errorGroup">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>1</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title">
+      <string>Errors</string>
+     </property>
+     <layout class="QVBoxLayout">
+      <item>
+       <widget class="QTextEdit" name="errors">
+        <property name="readOnly">
+         <bool>true</bool>
+        </property>
+        <property name="acceptRichText">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="inputGroup">
+     <property name="title">
+      <string>Input</string>
+     </property>
+     <layout class="QGridLayout">
+      <item row="1" column="1">
+       <spacer>
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Expanding</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>327</width>
+          <height>29</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="1" column="2">
+       <widget class="QPushButton" name="sendButton">
+        <property name="toolTip">
+         <string>Press to send the input to the Pyramid process</string>
+        </property>
+        <property name="text">
+         <string>&amp;Send</string>
+        </property>
+        <property name="shortcut">
+         <string>Alt+S</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0" colspan="3">
+       <widget class="QLineEdit" name="input">
+        <property name="toolTip">
+         <string>Enter data to be sent to the Pyramid process</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QCheckBox" name="passwordCheckBox">
+        <property name="toolTip">
+         <string>Select to switch the input field to password mode</string>
+        </property>
+        <property name="text">
+         <string>&amp;Password Mode</string>
+        </property>
+        <property name="shortcut">
+         <string>Alt+P</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Close</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <tabstops>
+  <tabstop>resultbox</tabstop>
+  <tabstop>errors</tabstop>
+  <tabstop>input</tabstop>
+  <tabstop>passwordCheckBox</tabstop>
+  <tabstop>sendButton</tabstop>
+  <tabstop>buttonBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
Binary file ProjectPyramid/i18n/pyramid_de.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectPyramid/i18n/pyramid_de.ts	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de_DE">
+<context>
+    <name>ProjectPyramidPlugin</name>
+    <message>
+        <location filename="PluginProjectPyramid.py" line="181"/>
+        <source>Pyramid</source>
+        <translation>Pyramid</translation>
+    </message>
+    <message>
+        <location filename="PluginProjectPyramid.py" line="157"/>
+        <source>eric5 version is too old, {0}, {1} or newer needed.</source>
+        <translation>Die eric5 Version ist zu alt; {0}, {1} oder neuer wird benötigt.</translation>
+    </message>
+</context>
+</TS>
Binary file ProjectPyramid/icons/pyramid.png has changed
Binary file ProjectPyramid/icons/pyramid64.png has changed
--- a/__init__.py	Mon Aug 20 17:54:44 2012 +0200
+++ b/__init__.py	Tue Aug 28 17:15:21 2012 +0200
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Package implementing the Pyramid project plugin.
+"""

eric ide

mercurial