[Erp5-report] r19585 - in /experimental/bt5/erp5_forge_experimental: ExtensionTemplateItem/...

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Feb 29 13:55:26 CET 2008


Author: luke
Date: Fri Feb 29 13:55:25 2008
New Revision: 19585

URL: http://svn.erp5.org?rev=19585&view=rev
Log:
2008-02-29 shufla
* some introspection system - fetching docstrings from Script (Python)

Added:
    experimental/bt5/erp5_forge_experimental/SkinTemplateItem/portal_skins/erp5_forge_experimental/ScriptPython_getDocstringAsList.xml
    experimental/bt5/erp5_forge_experimental/SkinTemplateItem/portal_skins/erp5_forge_experimental/ScriptPython_getDocstringMethod.xml
Modified:
    experimental/bt5/erp5_forge_experimental/ExtensionTemplateItem/ForgeExperimentalTools.py
    experimental/bt5/erp5_forge_experimental/bt/change_log
    experimental/bt5/erp5_forge_experimental/bt/revision
    experimental/bt5/erp5_forge_experimental/bt/version

Modified: experimental/bt5/erp5_forge_experimental/ExtensionTemplateItem/ForgeExperimentalTools.py
URL: http://svn.erp5.org/experimental/bt5/erp5_forge_experimental/ExtensionTemplateItem/ForgeExperimentalTools.py?rev=19585&r1=19584&r2=19585&view=diff
==============================================================================
--- experimental/bt5/erp5_forge_experimental/ExtensionTemplateItem/ForgeExperimentalTools.py (original)
+++ experimental/bt5/erp5_forge_experimental/ExtensionTemplateItem/ForgeExperimentalTools.py Fri Feb 29 13:55:25 2008
@@ -46,3 +46,21 @@
   if regexp is not None:
     return [q for q in dir_list if re.match(regexp,q)]
   return dir_list
+
+def getPythonScriptDocString(script):
+  """Fetches Python (Script) docstring by analysing its body"""
+  
+  docstring = ""
+  script_body = script.__dict__['_body']
+  
+  body_start = script_body[0]
+  
+  if body_start not in ['"',"'"]:
+    return docstring
+  
+  if len(script_body.split(3*body_start)) > 1:
+    # for scripts with docstring """ or '''
+    return script_body.split(3*body_start)[1]
+  else:
+    # for scripts with docstring " or '
+    return script_body.split(body_start)[1]

Added: experimental/bt5/erp5_forge_experimental/SkinTemplateItem/portal_skins/erp5_forge_experimental/ScriptPython_getDocstringAsList.xml
URL: http://svn.erp5.org/experimental/bt5/erp5_forge_experimental/SkinTemplateItem/portal_skins/erp5_forge_experimental/ScriptPython_getDocstringAsList.xml?rev=19585&view=auto
==============================================================================
--- experimental/bt5/erp5_forge_experimental/SkinTemplateItem/portal_skins/erp5_forge_experimental/ScriptPython_getDocstringAsList.xml (added)
+++ experimental/bt5/erp5_forge_experimental/SkinTemplateItem/portal_skins/erp5_forge_experimental/ScriptPython_getDocstringAsList.xml Fri Feb 29 13:55:25 2008
@@ -1,0 +1,156 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Python_magic</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>__ac_local_roles__</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>"""Returns docstring of Script (Python)\n
+Generates list:\n
+ * first element - first line\n
+ * second element - rest of lines\n
+"""\n
+script = context.restrictedTraverse(script_url)\n
+script.log(context)\n
+portal = context.getPortalObject()\n
+\n
+line_list = portal.ScriptPython_getDocstringMethod(script).split(\'\\n\')\n
+\n
+return [line_list[0],\'\\n\'.join(line_list[1:])]\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_filepath</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>script_url</string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>1</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>script_url</string>
+                            <string>_getattr_</string>
+                            <string>context</string>
+                            <string>script</string>
+                            <string>portal</string>
+                            <string>line_list</string>
+                            <string>_getitem_</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>ScriptPython_getDocstringAsList</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>

Added: experimental/bt5/erp5_forge_experimental/SkinTemplateItem/portal_skins/erp5_forge_experimental/ScriptPython_getDocstringMethod.xml
URL: http://svn.erp5.org/experimental/bt5/erp5_forge_experimental/SkinTemplateItem/portal_skins/erp5_forge_experimental/ScriptPython_getDocstringMethod.xml?rev=19585&view=auto
==============================================================================
--- experimental/bt5/erp5_forge_experimental/SkinTemplateItem/portal_skins/erp5_forge_experimental/ScriptPython_getDocstringMethod.xml (added)
+++ experimental/bt5/erp5_forge_experimental/SkinTemplateItem/portal_skins/erp5_forge_experimental/ScriptPython_getDocstringMethod.xml Fri Feb 29 13:55:25 2008
@@ -1,0 +1,37 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__ac_local_roles__</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_function</string> </key>
+            <value> <string>getPythonScriptDocString</string> </value>
+        </item>
+        <item>
+            <key> <string>_module</string> </key>
+            <value> <string>ForgeExperimentalTools</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>ScriptPython_getDocstringMethod</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>

Modified: experimental/bt5/erp5_forge_experimental/bt/change_log
URL: http://svn.erp5.org/experimental/bt5/erp5_forge_experimental/bt/change_log?rev=19585&r1=19584&r2=19585&view=diff
==============================================================================
--- experimental/bt5/erp5_forge_experimental/bt/change_log (original)
+++ experimental/bt5/erp5_forge_experimental/bt/change_log Fri Feb 29 13:55:25 2008
@@ -1,3 +1,6 @@
+2008-02-29 shufla
+* some introspection system - fetching docstrings from Script (Python)
+
 2008-02-25 shufla
 * pdb and dir functionality added
 

Modified: experimental/bt5/erp5_forge_experimental/bt/revision
URL: http://svn.erp5.org/experimental/bt5/erp5_forge_experimental/bt/revision?rev=19585&r1=19584&r2=19585&view=diff
==============================================================================
--- experimental/bt5/erp5_forge_experimental/bt/revision (original)
+++ experimental/bt5/erp5_forge_experimental/bt/revision Fri Feb 29 13:55:25 2008
@@ -1,1 +1,1 @@
-17
+19

Modified: experimental/bt5/erp5_forge_experimental/bt/version
URL: http://svn.erp5.org/experimental/bt5/erp5_forge_experimental/bt/version?rev=19585&r1=19584&r2=19585&view=diff
==============================================================================
--- experimental/bt5/erp5_forge_experimental/bt/version (original)
+++ experimental/bt5/erp5_forge_experimental/bt/version Fri Feb 29 13:55:25 2008
@@ -1,1 +1,1 @@
-1.2.1
+1.2.2




More information about the Erp5-report mailing list