[Checkins] SVN: Sandbox/ulif/grokui.codebrowser/src/grokui/codebrowser/ Move namespaceroot stuff to own module.

Uli Fouquet uli at gnufix.de
Fri Mar 19 19:25:43 EDT 2010


Log message for revision 110081:
  Move namespaceroot stuff to own module.

Changed:
  U   Sandbox/ulif/grokui.codebrowser/src/grokui/codebrowser/codebrowser.py
  A   Sandbox/ulif/grokui.codebrowser/src/grokui/codebrowser/namespaceroot.py

-=-
Modified: Sandbox/ulif/grokui.codebrowser/src/grokui/codebrowser/codebrowser.py
===================================================================
--- Sandbox/ulif/grokui.codebrowser/src/grokui/codebrowser/codebrowser.py	2010-03-19 23:12:42 UTC (rev 110080)
+++ Sandbox/ulif/grokui.codebrowser/src/grokui/codebrowser/codebrowser.py	2010-03-19 23:25:43 UTC (rev 110081)
@@ -1,16 +1,13 @@
 """Code browser pages and other viewing components.
 """
 import grok
-import pkg_resources
-from martian.scan import module_info_from_dotted_name
+from grokui.base import IGrokUIRealm, GrokUIView
 from zope.component import getMultiAdapter
-from zope.introspector.code import Code, Package, Module
-from zope.introspector.interfaces import IInfo, IInfos
+from zope.introspector.interfaces import IInfos
 from zope.location import LocationProxy
 from zope.session.interfaces import ISession
+from grokui.codebrowser.namespaceroot import NamespaceRoot
 
-from grokui.base import IGrokUIRealm, GrokUIView
-
 grok.context(IGrokUIRealm)
 grok.templatedir('templates')
 
@@ -78,65 +75,3 @@
     def getBreadCrumbs(self):
         return ''
 
-class NamespaceRoot(Code):
-    def __init__(self, dotted_name=''):
-        self.dotted_name = ''
-        
-    def __getitem__(self, name):
-        sub_module = None
-        try:
-            sub_module = module_info_from_dotted_name(name)
-        except ImportError:
-            # No module of that name found. The name might denote
-            # something different like a file or be really trash.
-            pass
-        if sub_module is None:
-            raise KeyError
-        if sub_module.isPackage():
-            return Package(sub_module.dotted_name)
-        return Module(sub_module.dotted_name)
-
-class NamespaceRootInfo(grok.Adapter):
-    grok.context(NamespaceRoot)
-    grok.provides(IInfo)
-    grok.name('coderoot')
-    
-    def getDottedName(self):
-        return self.context.dotted_name
-
-    def getSubItems(self):
-        importables = pkg_resources.Environment()
-        top_level_pkgs = [x.split('.')[0] for x in importables]
-        top_level_pkgs = sorted(list(set(top_level_pkgs)))
-        for pkg in top_level_pkgs:
-            yield pkg
-
-    def _filterSubItems(self, filter=lambda x: True):
-        for name in self.getSubItems():
-            try:
-                info = module_info_from_dotted_name(name)
-                if filter and filter(info):
-                    yield info
-            except ImportError:
-                pass
-            except AttributeError:
-                # This is thrown sometimes by martian.scan if an
-                # object lacks a __file__ attribute and needs further
-                # investigation.
-                pass
-        
-    def getSubPackages(self):
-        return sorted(self._filterSubItems(lambda x: x.isPackage()),
-                      key=lambda x:x.dotted_name)
-
-    def getModules(self):
-        return sorted(self._filterSubItems(lambda x: not x.isPackage()))
-
-class NamespaceRootInfoView(grok.View):
-    grok.context(NamespaceRootInfo)
-    grok.require('grok.BrowseCode')
-    grok.name('index')
-    grok.template('rootinfo')
-
-    def item_url(self, info):
-        return self.url(LocationProxy(info, self.context, info.dotted_name))

Added: Sandbox/ulif/grokui.codebrowser/src/grokui/codebrowser/namespaceroot.py
===================================================================
--- Sandbox/ulif/grokui.codebrowser/src/grokui/codebrowser/namespaceroot.py	                        (rev 0)
+++ Sandbox/ulif/grokui.codebrowser/src/grokui/codebrowser/namespaceroot.py	2010-03-19 23:25:43 UTC (rev 110081)
@@ -0,0 +1,73 @@
+"""Components representing the Python namespace root.
+"""
+import pkg_resources
+import grokcore.view as grok
+from martian.scan import module_info_from_dotted_name
+from zope.introspector.code import Code, Package, Module
+from zope.introspector.interfaces import IInfo
+from zope.location import LocationProxy
+
+grok.templatedir('templates')
+
+class NamespaceRoot(Code):
+    def __init__(self, dotted_name=''):
+        self.dotted_name = ''
+        
+    def __getitem__(self, name):
+        sub_module = None
+        try:
+            sub_module = module_info_from_dotted_name(name)
+        except ImportError:
+            # No module of that name found. The name might denote
+            # something different like a file or be really trash.
+            pass
+        if sub_module is None:
+            raise KeyError
+        if sub_module.isPackage():
+            return Package(sub_module.dotted_name)
+        return Module(sub_module.dotted_name)
+
+class NamespaceRootInfo(grok.Adapter):
+    grok.context(NamespaceRoot)
+    grok.provides(IInfo)
+    grok.name('coderoot')
+    
+    def getDottedName(self):
+        return self.context.dotted_name
+
+    def getSubItems(self):
+        importables = pkg_resources.Environment()
+        top_level_pkgs = [x.split('.')[0] for x in importables]
+        top_level_pkgs = sorted(list(set(top_level_pkgs)))
+        for pkg in top_level_pkgs:
+            yield pkg
+
+    def _filterSubItems(self, filter=lambda x: True):
+        for name in self.getSubItems():
+            try:
+                info = module_info_from_dotted_name(name)
+                if filter and filter(info):
+                    yield info
+            except ImportError:
+                pass
+            except AttributeError:
+                # This is thrown sometimes by martian.scan if an
+                # object lacks a __file__ attribute and needs further
+                # investigation.
+                pass
+        
+    def getSubPackages(self):
+        return sorted(self._filterSubItems(lambda x: x.isPackage()),
+                      key=lambda x:x.dotted_name)
+
+    def getModules(self):
+        return sorted(self._filterSubItems(lambda x: not x.isPackage()))
+
+class NamespaceRootInfoView(grok.View):
+    grok.context(NamespaceRootInfo)
+    grok.require('grok.BrowseCode')
+    grok.name('index')
+    grok.template('rootinfo')
+
+    def item_url(self, info):
+        return self.url(LocationProxy(info, self.context, info.dotted_name))



More information about the checkins mailing list