[Python-Dev] [Python-checkins] peps: Add Alexandre's suggestions (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Tue Aug 16 12:15:51 CEST 2011


On Tue, Aug 16, 2011 at 7:25 PM, Antoine Pitrou <solipsis at pitrou.net> wrote:

On Tue, 16 Aug 2011 12:35:48 +1000 Nick Coghlan <ncoghlan at gmail.com> wrote:

On Tue, Aug 16, 2011 at 11:30 AM, antoine.pitrou <python-checkins at python.org> wrote: > +Serializing "pseudo-global" objects > +----------------------------------- > + > +Objects which are not module-global, but should be treated in a similar > +fashion -- such as methods [4] or nested classes -- cannot currently be > +pickled (or, rather, unpickled) because the pickle protocol does not > +correctly specify how to retrieve them.  One solution would be through the > +adjunction of a _namespace_ (or _qualname_) to all class and > +function objects, specifying the full "path" by which they can be retrieved. > +For globals, this would generally be "{}.{}".format(obj._module_, obj._name_). > +Then a new opcode can resolve that path and push the object on the stack, > +similarly to the GLOBAL opcode. > +

I think this is the part that ties in with the pickle-related aspects for PEP 395 - using 'qualname'  would be one way to align a module's real name with where it should be retrieved from and where it's documentation lives (I like 'qualified name' as a term, too). Oops, I admit I hadn't read PEP 395. PEP 395 focuses on module aliasing, while the suggestion above focuses on the path of objects in modules. How can we reconcile the two? Do we want qualname to be a relative "path" inside the module? (but then qualname cannot specify its own module name).

I was more thinking that if pickle grew the ability to handle two different names for objects, then PEP 395 could run off the same feature without having to mess with sys.modules.

Cheers, Nick.

-- Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia



More information about the Python-Dev mailing list