pythonika icon indicating copy to clipboard operation
pythonika copied to clipboard

Pythonika symbols are not localized, might overwrite user-defined Global` symbols

Open GoogleCodeExporter opened this issue 9 years ago • 0 comments

It appears that Pythonika's symbols, including its private variables (such as 
"code") are not put in a separate context.  If I already have a variable named 
"code", it will be overwritten, then removed when loading and using Pythonika.

I suggest putting all symbols in a separate context (e.g. Py`) and all private 
symbols into a separate subcontext, using the usual way when writing packages.  
Then adding this context to the context path.

Please see page 6 of 
http://www.edenwaith.com/development/tutorials/mathlink/ML_Tut.pdf on how to do 
this.

The usual way is starting with

BeginPackage["Py`"]

Then mentioning the names all all symbols that will be available to the user 
here (this is a side-effect of creating the usage message here in the example, 
but you don't need to do this, listing the names of all symbols like Py, 
PyReal, etc. is enough)

Then creating yet another sub-context with Begin (not BeginPackage, meaning all 
symbols created there will be private)

Begin["Py`Private`"]

rest of the tm-file goes here

End[]
EndPackage[]


Finally, I think the Remove should be Remove["Py`Private`code"], not simply 
Remove["code"].  But in this case it's maybe better not to remove anything at 
all, after all code will be a private variable invisible to the user.

Thanks for a great package!

Original issue reported on code.google.com by [email protected] on 16 Dec 2011 at 3:43

GoogleCodeExporter avatar Apr 13 '15 15:04 GoogleCodeExporter