It appears that there are the 'module people' who find this feature irrelevant. Indeed. If we are interested in distributing modules and increasing the number of people who use python programs,then __source__ is redundant. OTOH, programming python is easy and fun and I think the proposed feature will make it even more fun and it aims in increasing the number of people who program python for their every day tasks. It'd be interesting to hear if the developers of IDLE/ipython/etc could use this.
The feedback here (and the initial response on py-dev a while back) suggests to me that you should look at making this a feature of the interactive mode. Something that affects both Python's main interactive shell, plus the relevant class in the standard library (CommandInterpreter or whatever it is called).
A late-night-train-of-thought example of what might be handy is below - keep in mind that I haven't looked at what enhanced Python shells like IPython can do, so it may be there are tools out there that do something like this already. It would be handy to have a standard library module that supported "on-the-fly" editing, though (this capability would then be available to anyone embedding Python as a scripting engine).
Cheers, Nick. ============================== >>>import source >>>class bob: ... def mary(): ... pass ... def tim(): ... print 'Tim' ... >>>print bob.__source__ class bob: def mary(): pass def tim(): print 'Tim'
>>>print bob.mary.__source__ def mary(): pass
>>> source.edit(bob.mary) bob.mary(1)>def mary(text): # [1] bob.mary(2)> print "Mary:", text bob.mary(3)>\save >>> source.edit(bob.tim) bob.tim(1)>\help Commands: \help \cancel \save \deleteline bob.tim(2)>\cancel >>>print bob.__source__ "class bob: def mary(text): print "Mary:", text def tim(): print 'Tim' " >>> bob().mary("Hi!") Mary: Hi!
The basic ideas of the above:
"import source" triggers the storage of the __source__ attributes (e.g. via installation of appropriate hooks in the class and function definition process)
The 'edit' function is then able to take advantage of the stored source code to present each line of the original source for modification (e.g. to fix a minor bug in one function of a class definition). When the 'edit' is complete, it can be saved or cancelled.
1. The feature mentioned in the last paragraph is hard to show in the expected output :)
-- Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia --------------------------------------------------------------- http://boredomandlaziness.skystorm.net -- http://mail.python.org/mailman/listinfo/python-list