On Fri, 2007-03-16 at 18:07 +1100, Edward d'Auvergne wrote: > Chris, > > I've cleaned up the unit tests so that you should be able to check > that these changes are working properly. Would you be able to fix the > relax module import statements for the alternative relax data storage > object? This commit has put relax into a very bad shape (not that > much was functioning anyway, but now nothing is). I'm also not sure > why but the data storage singleton instance method 'add()' (to add a > new data pipe) is not working as it should.
It seems my attempt to delegate unbound methods from the Data class to a proxy object was pushing Pythons polymorphism a step too far, hence the test failures (ie. the problem was in the test, not in the code). My solution to that (in r3209) is rather cheeky, but acceptable I hope in the context of a unit-test? All the imports are now fixed, and relax at least gets to a prompt. There is even one working system test! Would you like me to do anything more to get closer to a functional system at this stage, or can further changes continue with the progressive redesign? Chris > > Cheers, > > Edward > > > On 3/16/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > Author: macraild > > Date: Thu Mar 15 17:58:23 2007 > > New Revision: 3200 > > > > URL: http://svn.gna.org/viewcvs/relax?rev=3200&view=rev > > Log: > > Alternative implimentation of the data object as a singleton. > > > > As proposed here: > > https://mail.gna.org/public/relax-devel/2007-03/msg00013.html > > > > and agreed here: > > https://mail.gna.org/public/relax-devel/2007-03/msg00058.html# > > > > > > Modified: > > 1.3/data/__init__.py > > 1.3/test_suite/unit_tests/data/test___init__.py > > > > Modified: 1.3/data/__init__.py > > URL: > > http://svn.gna.org/viewcvs/relax/1.3/data/__init__.py?rev=3200&r1=3199&r2=3200&view=diff > > ============================================================================== > > --- 1.3/data/__init__.py (original) > > +++ 1.3/data/__init__.py Thu Mar 15 17:58:23 2007 > > @@ -37,28 +37,8 @@ > > class Data(dict): > > """The relax data storage object.""" > > > > - # Singleton initialisation, the reference to the single instance of > > this class. > > - __instance = None > > - > > # The current data pipe. > > current_pipe = None > > - > > - > > - def __new__(self, *args, **kargs): > > - """Method for implementing the singleton design pattern. > > - > > - If no other class instance currently exists, create a new instance > > of this class. Otherwise > > - return the class instance. See > > http://en.wikipedia.org/wiki/Singleton_pattern for a > > - description of this design pattern. > > - """ > > - > > - # Create a new instance if none exists. > > - if self.__instance is None: > > - self.__instance = dict.__new__(self, *args, **kargs) > > - > > - # Return the class instance. > > - return self.__instance > > - > > > > def __repr__(self): > > """The string representation of the object. > > @@ -145,3 +125,6 @@ > > # Change the current data pipe. > > self.current_pipe = pipe_name > > > > +# Rebind the name Data with an instance to prevent accidental creation > > +# of multiple instances of the Data class > > +Data = Data() > > > > Modified: 1.3/test_suite/unit_tests/data/test___init__.py > > URL: > > http://svn.gna.org/viewcvs/relax/1.3/test_suite/unit_tests/data/test___init__.py?rev=3200&r1=3199&r2=3200&view=diff > > ============================================================================== > > --- 1.3/test_suite/unit_tests/data/test___init__.py (original) > > +++ 1.3/test_suite/unit_tests/data/test___init__.py Thu Mar 15 17:58:23 2007 > > @@ -27,9 +27,12 @@ > > from data import Data > > > > > > -class NewStore(Data): > > - """Subclass the relax data storage object for the isolation and > > creation of a new singleton.""" > > - > > +class NewStore(dict): > > + """Dict subclass to act as proxy for the Singleton Data object.""" > > + def __getattr__(self, attr): > > + """Delegate to the Data class to get methods for testing""" > > + return getattr(Data.__class__, attr) > > + > > > > class Empty_container: > > """An empty data container.""" > > @@ -53,15 +56,11 @@ > > # Add an object to the data store object. > > self.data_store.test = 1 > > > > - # Create a new reference. > > - self.new_ref = NewStore() > > - > > > > def tearDown(self): > > """Destroy the subclassed data store.""" > > > > # Delete all references (which should decrement the singleton's > > ref counter to 0, hence destroying it). > > - del self.new_ref > > del self.data_store > > > > > > @@ -104,18 +103,3 @@ > > self.assert_(hasattr(self.data_store, 'current_pipe')) > > > > > > - def test_singleton(self): > > - """Test that the relax data storage object is functioning as a > > singleton.""" > > - > > - # Test that the new reference to NewStore is the singleton > > instance reference. > > - self.assertEqual(self.data_store, self.new_ref) > > - > > - # Delete all references (which should decrement the singleton's > > ref counter to 0, hence destroying it). > > - del self.new_ref > > - del self.data_store > > - > > - # Create a new singleton. > > - new = NewStore() > > - > > - # Test that the object 'test' from the original singleton does not > > exist. > > - self.assert_(not hasattr(new, 'test')) > > > > > > _______________________________________________ > > relax (http://nmr-relax.com) > > > > This is the relax-commits mailing list > > [email protected] > > > > To unsubscribe from this list, get a password > > reminder, or change your subscription options, > > visit the list information page at > > https://mail.gna.org/listinfo/relax-commits > > > _______________________________________________ relax (http://nmr-relax.com) This is the relax-devel mailing list [email protected] To unsubscribe from this list, get a password reminder, or change your subscription options, visit the list information page at https://mail.gna.org/listinfo/relax-devel

