On Dec 15, 2009, at 9:36 AM, Tom Goddard wrote:

  4. The ToolbarButton.py doesn't work unless the "import re" and "import chimera" are in the function body.  This is because Chimera deletes all globals after loading a file.  This has often been a headache for me and Chimera should not delete globals.

This is a behavior of Python.  We load scripts into their own temporary module to avoid pollution of the Chimera main namespace (e.g. if the script defined globals named "id" or "sum" or "type" they would override built-in functions of the same name for all future script executions!).  When Chimera unloads the temporary module, Python nulls out it's global namespace (to give garbage collection a shot at working).

Now perhaps Chimera shouldn't unload the module.  I think this would be a reasonable change.  Perhaps it could be discussed at our next internal Chimera developers' meeting to ensure that I'm not forgetting any other ramifications that the change might have.

--Eric

                        Eric Pettersen
                        UCSF Computer Graphics Lab
                        http://www.cgl.ucsf.edu