[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/FSPythonScript.py - replaced deprecated _v_f by _v_ft (_exec has now exactly the some code is in PythonScript)

Yvo Schubbe y.2009 at wcm-solutions.de
Mon Jul 27 07:05:37 EDT 2009


Log message for revision 102331:
  - replaced deprecated _v_f by _v_ft (_exec has now exactly the some code is in PythonScript)

Changed:
  U   Products.CMFCore/trunk/Products/CMFCore/FSPythonScript.py

-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/FSPythonScript.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/FSPythonScript.py	2009-07-27 09:07:31 UTC (rev 102330)
+++ Products.CMFCore/trunk/Products/CMFCore/FSPythonScript.py	2009-07-27 11:05:37 UTC (rev 102331)
@@ -39,12 +39,6 @@
 _marker = object()
 
 
-class bad_func_code:
-
-    co_varnames = ()
-    co_argcount = 0
-
-
 class CustomizedPythonScript(PythonScript):
 
     """ Subclass which captures the "source" version's text.
@@ -90,7 +84,6 @@
 
     meta_type = 'Filesystem Script (Python)'
     _params = _body = ''
-    _v_f = None
     _proxy_roles = ()
     _owner = None  # Unowned
 
@@ -167,27 +160,20 @@
 
         #__traceback_info__ = bound_names, args, kw, self.func_defaults
 
-        f = self._v_f
-        if f is None:
+        ft = self._v_ft
+        if ft is None:
             __traceback_supplement__ = (
                 PythonScriptTracebackSupplement, self)
-            raise RuntimeError, '%s has errors.' % self._filepath
+            raise RuntimeError, '%s %s has errors.' % (self.meta_type, self.id)
 
-        # Updating func_globals directly is not thread safe here.
-        # In normal PythonScripts, every thread has its own
-        # copy of the function.  But in FSPythonScripts
-        # there is only one copy.  So here's another way.
-        g = f.func_globals.copy()
+        fcode, g, fadefs = ft
+        g = g.copy()
         if bound_names is not None:
             g.update(bound_names)
         g['__traceback_supplement__'] = (
             PythonScriptTracebackSupplement, self, -1)
         g['__file__'] = getattr(self, '_filepath', None) or self.get_filepath()
-        if f.func_defaults:
-            f = new.function(f.func_code, g, f.func_name,
-                             f.func_defaults)
-        else:
-            f = new.function(f.func_code, g, f.func_name)
+        f = new.function(fcode, g, None, fadefs)
 
         try:
             result = f(*args, **kw)
@@ -259,16 +245,10 @@
         ps = PythonScript(self.id)
         ps.write(text)
         if compile:
-            ps._makeFunction(1)
-            self._v_f = f = ps._v_f
-            if f is not None:
-                self.func_code = f.func_code
-                self.func_defaults = f.func_defaults
-            else:
-                # There were errors in the compile.
-                # No signature.
-                self.func_code = bad_func_code()
-                self.func_defaults = None
+            ps._makeFunction()
+            self._v_ft = ps._v_ft
+            self.func_code = ps.func_code
+            self.func_defaults = ps.func_defaults
         self._body = ps._body
         self._params = ps._params
         self.title = ps.title



More information about the Checkins mailing list