[cig-commits] r7810 - in cs/pythia/trunk/pyre: inventory parsing/locators weaver

leif at geodynamics.org leif at geodynamics.org
Fri Aug 10 23:46:15 PDT 2007


Author: leif
Date: 2007-08-10 23:46:14 -0700 (Fri, 10 Aug 2007)
New Revision: 7810

Modified:
   cs/pythia/trunk/pyre/inventory/Configurable.py
   cs/pythia/trunk/pyre/parsing/locators/ChainLocator.py
   cs/pythia/trunk/pyre/parsing/locators/FileLocator.py
   cs/pythia/trunk/pyre/parsing/locators/ScriptLocator.py
   cs/pythia/trunk/pyre/parsing/locators/SimpleFileLocator.py
   cs/pythia/trunk/pyre/parsing/locators/SimpleLocator.py
   cs/pythia/trunk/pyre/weaver/Weaver.py
Log:
Inserted some hacks which make Pyre Components pickle-able.


Modified: cs/pythia/trunk/pyre/inventory/Configurable.py
===================================================================
--- cs/pythia/trunk/pyre/inventory/Configurable.py	2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/inventory/Configurable.py	2007-08-11 06:46:14 UTC (rev 7810)
@@ -327,6 +327,12 @@
         return self.Inventory(self.name)
 
 
+    def createMetaInventory(self):
+        """create my meta-inventory instance"""
+        from MetaInventory import MetaInventory
+        return MetaInventory(self.inventory)
+
+
     def __init__(self, name=None):
         Traceable.__init__(self)
 
@@ -337,8 +343,7 @@
         self.inventory = self.createInventory()
         
         # provide simple, convenient access to descriptors
-        from MetaInventory import MetaInventory
-        self.metainventory = MetaInventory(self.inventory)
+        self.metainventory = self.createMetaInventory()
 
         # other names by which I am known for configuration purposes
         self.aliases = [ name ]
@@ -357,6 +362,28 @@
         return
 
 
+    def __getstate__(self):
+        # copy the dictionary, since we change it
+        odict = self.__dict__.copy()
+
+        # convert inventory to picklable form
+        from Inventory import Inventory
+        from copy import copy
+        inventory = copy(odict['inventory'])
+        inventory.__class__ = Inventory
+        odict['inventory'] = inventory
+        del odict['metainventory']
+        
+        return odict
+
+
+    def __setstate__(self, dict):
+        self.__dict__.update(dict)
+        self.inventory.__class__ = self.Inventory
+        self.metainventory = self.createMetaInventory()
+        return
+
+
     # default implementations for the lifecycle management hooks
     def _defaults(self):
         """modify the default inventory values"""

Modified: cs/pythia/trunk/pyre/parsing/locators/ChainLocator.py
===================================================================
--- cs/pythia/trunk/pyre/parsing/locators/ChainLocator.py	2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/parsing/locators/ChainLocator.py	2007-08-11 06:46:14 UTC (rev 7810)
@@ -25,6 +25,16 @@
         return "%s via %s" % (self.this, self.next)
 
 
+    def __getstate__(self):
+        return dict(this = self.this, next = self.next)
+
+
+    def __setstate__(self, dict):
+        self.this = dict['this']
+        self.next = dict['next']
+        return
+
+
     def getAttributes(self, attr):
         return
 

Modified: cs/pythia/trunk/pyre/parsing/locators/FileLocator.py
===================================================================
--- cs/pythia/trunk/pyre/parsing/locators/FileLocator.py	2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/parsing/locators/FileLocator.py	2007-08-11 06:46:14 UTC (rev 7810)
@@ -26,6 +26,17 @@
         return "{file=%r, line=%r, column=%r}" % (self.source, self.line, self.column)
 
 
+    def __getstate__(self):
+        return dict(source = self.source, line = self.line, column = self.column)
+
+
+    def __setstate__(self, dict):
+        self.source = dict['source']
+        self.line   = dict['line']
+        self.column = dict['column']
+        return
+
+
     def getAttributes(self, attr):
         import linecache
         attr["filename"] = self.source
@@ -36,6 +47,7 @@
 
     __slots__ = ("source", "line", "column")
 
+
 # version
 __id__ = "$Id: FileLocator.py,v 1.1.1.1 2005/03/08 16:13:48 aivazis Exp $"
 

Modified: cs/pythia/trunk/pyre/parsing/locators/ScriptLocator.py
===================================================================
--- cs/pythia/trunk/pyre/parsing/locators/ScriptLocator.py	2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/parsing/locators/ScriptLocator.py	2007-08-11 06:46:14 UTC (rev 7810)
@@ -25,7 +25,18 @@
     def __str__(self):
         return "{file=%r, line=%r, function=%r}" % (self.source, self.line, self.function)
 
-    
+
+    def __getstate__(self):
+        return dict(source = self.source, line = self.line, function = self.function)
+
+
+    def __setstate__(self, dict):
+        self.source   = dict['source']
+        self.line     = dict['line']
+        self.function = dict['function']
+        return
+
+
     def getAttributes(self, attr):
         import linecache
         attr["filename"] = self.source

Modified: cs/pythia/trunk/pyre/parsing/locators/SimpleFileLocator.py
===================================================================
--- cs/pythia/trunk/pyre/parsing/locators/SimpleFileLocator.py	2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/parsing/locators/SimpleFileLocator.py	2007-08-11 06:46:14 UTC (rev 7810)
@@ -24,6 +24,15 @@
         return "{file=%r}" % (self.source)
 
     
+    def __getstate__(self):
+        return dict(source = self.source)
+
+
+    def __setstate__(self, dict):
+        self.source = dict['source']
+        return
+
+
     def getAttributes(self, attr):
         attr["filename"] = self.source
         return

Modified: cs/pythia/trunk/pyre/parsing/locators/SimpleLocator.py
===================================================================
--- cs/pythia/trunk/pyre/parsing/locators/SimpleLocator.py	2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/parsing/locators/SimpleLocator.py	2007-08-11 06:46:14 UTC (rev 7810)
@@ -24,6 +24,15 @@
         return "{%s}" % self.source
 
 
+    def __getstate__(self):
+        return dict(source = self.source)
+
+
+    def __setstate__(self, dict):
+        self.source = dict['source']
+        return
+
+
     def getAttributes(self, attr):
         attr['filename'] = str(self)
         return

Modified: cs/pythia/trunk/pyre/weaver/Weaver.py
===================================================================
--- cs/pythia/trunk/pyre/weaver/Weaver.py	2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/weaver/Weaver.py	2007-08-11 06:46:14 UTC (rev 7810)
@@ -60,7 +60,9 @@
 
     def render(self, document=None):
         self._renderer.options = self.inventory
-        return self._renderer.weave(document)
+        ret = self._renderer.weave(document)
+        self._renderer.options = None
+        return ret
 
 
     def begin(self):
@@ -76,6 +78,7 @@
 
     def end(self):
         self._renderer.end()
+        self._renderer.options = None
         return
 
 



More information about the cig-commits mailing list