[Python-ideas] RFC: PEP: Add dict.__version__

Steven D'Aprano steve at pearwood.info
Sun Jan 10 19:12:18 EST 2016


On Sun, Jan 10, 2016 at 09:02:47PM +0100, Victor Stinner wrote:
> 2016-01-10 18:57 GMT+01:00 Steven D'Aprano <steve at pearwood.info>:
> >> Do all custom Mappings need to implement __version__?
> >
> > I believe the answer to that is No, but the PEP probably should clarify
> > that.
> 
> In the PEP, I wrote "The PEP is designed to implement guards on
> namespaces, only the dict type can be used for namespaces in practice.
> collections.UserDict is modified because it must mimicks dict.
> collections.Mapping is unchanged."
> https://www.python.org/dev/peps/pep-0509/#changes
> 
> Is it enough? If no, what do you suggest to be more explicit?

You also should argue whether or not __version__ should be visible 
to users from pure Python, or only from C code (as Neil wants). In other 
words, should __version__ be part of the public API of dict, or an 
implementation detail?

(1) Make __version__ part of the public API.

Pros:

- Simpler implementation?
- Allows easier debugging.
- Users can make use of it for their own purposes.

Cons:

- Neil wants to avoid users making use of this feature. 
  (Why, he hasn't explained, or if he did, I missed it.)
- All implementations (PyPy, Jython, etc.) must copy it.
- You lock in one specific implementation for guards and 
  cannot change to another one.

(2) Keep __version__ private.

Pros:

- Other implementations can ignore it.
- You can change the implementation for guards.

Cons:

- Users may resort to ctypes to make use of it.
  (If they can.)





-- 
Steve


More information about the Python-ideas mailing list