mailr10327 - in /branches/bieri_gui: ./ auto_analyses/ prompt/ test_suite/ test_suite/system_tests/ test_suite/system_tests/scri...


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on January 25, 2010 - 20:50:
Author: bugman
Date: Mon Jan 25 20:50:37 2010
New Revision: 10327

URL: http://svn.gna.org/viewcvs/relax?rev=10327&view=rev
Log:
Merged revisions 10304-10326 via svnmerge from 
svn+ssh://bugman@xxxxxxxxxxx/svn/relax/1.3

........
  r10304 | bugman | 2010-01-25 14:25:32 +0100 (Mon, 25 Jan 2010) | 11 lines
  
  Redesign of the setup of the names spaces for the user functions.
  
  All the user functions and other objects located in the run() method 
namespace have been shifted
  into the interpreter self._locals dictionary.  These are then placed into 
the run() method namespace
  by looping over the keys and using the 'locals()[key] = object' syntax.  
There may be better ways to
  do this.
  
  This has no visible effect on the prompt or script based interfaces.  It 
will change how this is
  seen by other modules though, and will allow the namespace to be more 
easily accessed.
........
  r10305 | bugman | 2010-01-25 14:26:57 +0100 (Mon, 25 Jan 2010) | 3 lines
  
  Removed some unused and commented out code.
........
  r10306 | bugman | 2010-01-25 14:31:09 +0100 (Mon, 25 Jan 2010) | 5 lines
  
  Eliminated the dummy mode.
  
  This is only used by the fetch_docstrings script and will soon not be 
necessary.
........
  r10307 | bugman | 2010-01-25 15:55:49 +0100 (Mon, 25 Jan 2010) | 7 lines
  
  The relax base object is no longer passed into the class namespace of the 
user functions.
  
  This was only being used for access to the intro flag (a few other cases 
exist, but these should be
  fixed).  Now a new container object with this flag is being passed in.  
This significantly
  simplifies the code paths and removes the need for the test suite to create 
'fake' relax instances.
........
  r10308 | bugman | 2010-01-25 16:08:41 +0100 (Mon, 25 Jan 2010) | 7 lines
  
  Modified how the Exec_info data container is handled.
  
  The class was shifted from prompt.interpreter to prompt.base_class.  In 
addition if not container
  is passed into the user function classes, then one is created with the 
intro flag set to a default
  of True.
........
  r10309 | bugman | 2010-01-25 16:34:44 +0100 (Mon, 25 Jan 2010) | 8 lines
  
  The prompt info has been shifted into the execution info container.
  
  The sys.ps1, sys.ps2, and sys.ps3 prompts are still set, but these strings 
are hardcoded into the
  execution info container.  This allows the user functions to be imported 
and operate outside of the
  prompt/scripting based interface, as the no longer require sys.ps3 to be 
set or the relax main
  instance passed into them.
........
  r10310 | bugman | 2010-01-25 16:39:34 +0100 (Mon, 25 Jan 2010) | 5 lines
  
  Eliminated the fake_relax instance dependence.
  
  This is no longer necessary as the user functions can be initialised 
without relax.
........
  r10311 | bugman | 2010-01-25 16:53:14 +0100 (Mon, 25 Jan 2010) | 3 lines
  
  Created the populate_self() method to place all user functions into the 
interpreter namespace.
........
  r10312 | bugman | 2010-01-25 16:58:57 +0100 (Mon, 25 Jan 2010) | 5 lines
  
  The relax main instance is no longer passed into the test suite.
  
  This can be done as the prompt/script interface has been detached from 
relax.
........
  r10313 | bugman | 2010-01-25 17:00:12 +0100 (Mon, 25 Jan 2010) | 5 lines
  
  The relax main instance is no longer passed into the prompt/script 
interface.
  
  This can be done as the prompt/script interface has been detached from 
relax.
........
  r10314 | bugman | 2010-01-25 17:06:28 +0100 (Mon, 25 Jan 2010) | 3 lines
  
  The relax main instance is no longer handled by the system test 
initialisation code.
........
  r10315 | bugman | 2010-01-25 18:04:17 +0100 (Mon, 25 Jan 2010) | 5 lines
  
  Created the SystemTestCase base class for all the system tests to use.
  
  This base class initialises the relax interpreter within the TestCase class 
instances.
........
  r10316 | bugman | 2010-01-25 18:13:12 +0100 (Mon, 25 Jan 2010) | 3 lines
  
  The interpreter _on() method does not need to be called as user fn intros 
are turned on by default.
........
  r10317 | bugman | 2010-01-25 18:52:04 +0100 (Mon, 25 Jan 2010) | 5 lines
  
  Fixed all the calls to the user functions located in the interpreter class.
  
  self.relax is no longer referenced and the user functions are now directly 
called.
........
  r10318 | bugman | 2010-01-25 18:52:38 +0100 (Mon, 25 Jan 2010) | 3 lines
  
  Fixed the script user function.
........
  r10319 | bugman | 2010-01-25 18:54:20 +0100 (Mon, 25 Jan 2010) | 3 lines
  
  Removed redundant and now non-functional code from interact_script().
........
  r10320 | bugman | 2010-01-25 19:04:45 +0100 (Mon, 25 Jan 2010) | 3 lines
  
  Comment fix.
........
  r10321 | bugman | 2010-01-25 19:11:25 +0100 (Mon, 25 Jan 2010) | 6 lines
  
  Update the user function print out functions.
  
  _off() and _on() are no longer private, and accept the verbose keyword arg 
to allow the print out to
  be suppressed.
........
  r10322 | bugman | 2010-01-25 19:11:59 +0100 (Mon, 25 Jan 2010) | 3 lines
  
  Alphabetical ordering of methods.
........
  r10323 | bugman | 2010-01-25 19:21:05 +0100 (Mon, 25 Jan 2010) | 3 lines
  
  The dAuvergne_protocol class now calls the user functions from the 
self.interpreter instance directly.
........
  r10324 | bugman | 2010-01-25 19:26:36 +0100 (Mon, 25 Jan 2010) | 5 lines
  
  Fix for the automatic model-free protocol in dAuvergne_protocol.
  
  The sequence.read() and relax_data.read() user functions args are now sent 
in as keywords.
........
  r10325 | bugman | 2010-01-25 20:31:25 +0100 (Mon, 25 Jan 2010) | 3 lines
  
  Created the RelaxFileEmptyWarning class.
........
  r10326 | bugman | 2010-01-25 20:36:30 +0100 (Mon, 25 Jan 2010) | 3 lines
  
  Modified read_spin_data() to throw a warning rather than error when an 
empty file is encountered.
........

Added:
    branches/bieri_gui/test_suite/system_tests/base_classes.py
      - copied unchanged from r10326, 
1.3/test_suite/system_tests/base_classes.py
Removed:
    branches/bieri_gui/test_suite/unit_tests/_prompt/fake_relax.py
Modified:
    branches/bieri_gui/   (props changed)
    branches/bieri_gui/auto_analyses/dauvergne_protocol.py
    branches/bieri_gui/prompt/__init__.py
    branches/bieri_gui/prompt/align_tensor.py
    branches/bieri_gui/prompt/angles.py
    branches/bieri_gui/prompt/base_class.py
    branches/bieri_gui/prompt/command.py
    branches/bieri_gui/prompt/consistency_tests.py
    branches/bieri_gui/prompt/dasha.py
    branches/bieri_gui/prompt/deselect.py
    branches/bieri_gui/prompt/diffusion_tensor.py
    branches/bieri_gui/prompt/doc_string.py
    branches/bieri_gui/prompt/dx.py
    branches/bieri_gui/prompt/eliminate.py
    branches/bieri_gui/prompt/fix.py
    branches/bieri_gui/prompt/frame_order.py
    branches/bieri_gui/prompt/frq.py
    branches/bieri_gui/prompt/grace.py
    branches/bieri_gui/prompt/interpreter.py
    branches/bieri_gui/prompt/jw_mapping.py
    branches/bieri_gui/prompt/minimisation.py
    branches/bieri_gui/prompt/model_free.py
    branches/bieri_gui/prompt/model_selection.py
    branches/bieri_gui/prompt/molecule.py
    branches/bieri_gui/prompt/molmol.py
    branches/bieri_gui/prompt/monte_carlo.py
    branches/bieri_gui/prompt/n_state_model.py
    branches/bieri_gui/prompt/noe.py
    branches/bieri_gui/prompt/palmer.py
    branches/bieri_gui/prompt/pcs.py
    branches/bieri_gui/prompt/pipe.py
    branches/bieri_gui/prompt/pymol.py
    branches/bieri_gui/prompt/rdc.py
    branches/bieri_gui/prompt/relax_data.py
    branches/bieri_gui/prompt/relax_fit.py
    branches/bieri_gui/prompt/residue.py
    branches/bieri_gui/prompt/results.py
    branches/bieri_gui/prompt/select.py
    branches/bieri_gui/prompt/sequence.py
    branches/bieri_gui/prompt/spectrum.py
    branches/bieri_gui/prompt/spin.py
    branches/bieri_gui/prompt/state.py
    branches/bieri_gui/prompt/structure.py
    branches/bieri_gui/prompt/temperature.py
    branches/bieri_gui/prompt/value.py
    branches/bieri_gui/prompt/view.py
    branches/bieri_gui/prompt/vmd.py
    branches/bieri_gui/relax
    branches/bieri_gui/relax_io.py
    branches/bieri_gui/relax_warnings.py
    branches/bieri_gui/test_suite/system_tests/__init__.py
    branches/bieri_gui/test_suite/system_tests/align_tensor.py
    branches/bieri_gui/test_suite/system_tests/angles.py
    branches/bieri_gui/test_suite/system_tests/consistency_tests.py
    branches/bieri_gui/test_suite/system_tests/dasha.py
    branches/bieri_gui/test_suite/system_tests/diffusion_tensor.py
    branches/bieri_gui/test_suite/system_tests/frame_order.py
    branches/bieri_gui/test_suite/system_tests/generic.py
    branches/bieri_gui/test_suite/system_tests/jw_mapping.py
    branches/bieri_gui/test_suite/system_tests/load_spins.py
    branches/bieri_gui/test_suite/system_tests/model_elimination.py
    branches/bieri_gui/test_suite/system_tests/model_free.py
    branches/bieri_gui/test_suite/system_tests/model_selection.py
    branches/bieri_gui/test_suite/system_tests/n_state_model.py
    branches/bieri_gui/test_suite/system_tests/noe.py
    branches/bieri_gui/test_suite/system_tests/noe_restraints.py
    branches/bieri_gui/test_suite/system_tests/palmer.py
    branches/bieri_gui/test_suite/system_tests/peak_lists.py
    branches/bieri_gui/test_suite/system_tests/pipes.py
    branches/bieri_gui/test_suite/system_tests/relax_fit.py
    branches/bieri_gui/test_suite/system_tests/results.py
    branches/bieri_gui/test_suite/system_tests/scripts/omp_model_free.py
    branches/bieri_gui/test_suite/system_tests/sequence.py
    branches/bieri_gui/test_suite/system_tests/state.py
    branches/bieri_gui/test_suite/system_tests/structure.py
    branches/bieri_gui/test_suite/system_tests/unit_vectors.py
    branches/bieri_gui/test_suite/test_suite_runner.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_align_tensor.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_dasha.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_deselect.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_diffusion_tensor.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_eliminate.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_minimisation.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_model_free.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_molecule.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_molmol.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_n_state_model.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_noe.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_pymol.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_relax_data.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_relax_fit.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_residue.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_select.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_sequence.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_spectrum.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_spin.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_state.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_structure.py
    branches/bieri_gui/test_suite/unit_tests/_prompt/test_value.py

[This mail would be too long, it was shortened to contain the URLs only.]

Modified: branches/bieri_gui/auto_analyses/dauvergne_protocol.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/auto_analyses/dauvergne_protocol.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/__init__.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/__init__.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/align_tensor.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/align_tensor.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/angles.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/angles.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/base_class.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/base_class.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/command.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/command.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/consistency_tests.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/consistency_tests.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/dasha.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/dasha.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/deselect.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/deselect.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/diffusion_tensor.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/diffusion_tensor.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/doc_string.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/doc_string.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/dx.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/dx.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/eliminate.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/eliminate.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/fix.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/fix.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/frame_order.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/frame_order.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/frq.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/frq.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/grace.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/grace.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/interpreter.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/interpreter.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/jw_mapping.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/jw_mapping.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/minimisation.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/minimisation.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/model_free.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/model_free.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/model_selection.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/model_selection.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/molecule.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/molecule.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/molmol.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/molmol.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/monte_carlo.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/monte_carlo.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/n_state_model.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/n_state_model.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/noe.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/noe.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/palmer.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/palmer.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/pcs.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/pcs.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/pipe.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/pipe.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/pymol.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/pymol.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/rdc.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/rdc.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/relax_data.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/relax_data.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/relax_fit.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/relax_fit.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/residue.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/residue.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/results.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/results.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/select.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/select.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/sequence.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/sequence.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/spectrum.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/spectrum.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/spin.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/spin.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/state.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/state.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/structure.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/structure.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/temperature.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/temperature.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/value.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/value.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/view.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/view.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/prompt/vmd.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/prompt/vmd.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/relax
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/relax?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/relax_io.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/relax_io.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/relax_warnings.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/relax_warnings.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/test_suite/system_tests/__init__.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/test_suite/system_tests/__init__.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/test_suite/system_tests/align_tensor.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/test_suite/system_tests/align_tensor.py?rev=10327&r1=10326&r2=10327&view=diff

Modified: branches/bieri_gui/test_suite/system_tests/angles.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/test_suite/system_tests/angles.py?rev=10327&r1=10326&r2=10327&view=diff


[... 141 lines stripped ...]



Related Messages


Powered by MHonArc, Updated Mon Jan 25 21:00:02 2010