opencore r18824 - trac/plugin_skel/trac_plugin_skel
from
k0s
on Jul 02, 2008 05:47 PM
Author: jhammel
Date: 2008-07-02 17:47:32 -0400 (Wed, 02 Jul 2008)
New Revision: 18824
Added:
trac/plugin_skel/trac_plugin_skel/interfaces.py
Log:
ADDED: module to print out information about trac interfaces. not used yet
Added: trac/plugin_skel/trac_plugin_skel/interfaces.py
===================================================================
--- trac/plugin_skel/trac_plugin_skel/interfaces.py (rev 0)
+++ trac/plugin_skel/trac_plugin_skel/interfaces.py 2008-07-02 21:47:32 UTC (rev 18824)
@@ -0,0 +1,54 @@
+import inspect
+from trac.core import *
+
+# interfaces live in these modules
+import trac.admin
+import trac.attachment
+import trac.db
+import trac.env
+import trac.mimeview
+import trac.perm
+import trac.prefs
+import trac.resource
+import trac.search
+import trac.ticket
+import trac.timeline
+import trac.versioncontrol
+import trac.versioncontrol.web_ui
+import trac.web
+import trac.web.chrome
+import trac.wiki
+
+def interfaces():
+ retval = Interface.__subclasses__()
+ retval.sort(key=lambda x: x.__name__)
+ return retval
+
+def print_interface(interface):
+ retval = [ ' ### methods for %s\n' % interface.__name__ ]
+ doc = interface.__doc__
+ if doc:
+ retval.append(' """%s"""\n' % doc)
+
+ args = lambda x: inspect.formatargspec(*inspect.getargspec(x))
+
+ for method_name in [ i for i in dir(interface) if not i.startswith('_') ]:
+ method = getattr(interface, method_name)
+ if not hasattr(method, '__call__'):
+ continue
+ argstring = args(method)[1:-1]
+ if argstring:
+ retval.append(' def %s(self, %s):' % (method_name, argstring))
+ else:
+ retval.append(' def %s(self):' % method_name)
+ doc = method.__doc__
+ if doc:
+ retval.append(' """%s"""\n' % doc)
+
+ return '\n'.join(retval)
+
+if __name__ == '__main__':
+ for i in interfaces():
+ print i.__name__
+ print print_interface(i)
+