[Python-Dev] sys.implementation (original) (raw)

Eric Snow ericsnowcurrently at gmail.com
Wed May 9 05:03:06 CEST 2012


On Tue, May 8, 2012 at 7:14 PM, Barry Warsaw <barry at python.org> wrote:

Hi Eric,

Great job on the latest PEP 421.  I really like it.

Encouragement appreciated. :)

 A few additional comments/questions.

 * sys.implementation.version This is defined as the version of the implementation, while sys.versioninfo is the version of the language.  The semantics of sys.versioninfo have been sufficiently squishy in the past, as the XXX implies.  This PEP shouldn't try to untangle that, so I think it be better to represent both values explicitly in sys.implementation.

Definitely tangled. So, sys.implementation.version and sys.implementation.lang_version? Also, my inclination is to not have a sys.version equivalent in sys.implementation for now, in the interest of keeping things as bare-bones as possible to start.

 * Adding new required variables.  I'd claim that it's not unduly heavyweight to require a new PEP to add required variables to sys.implementation.  That hypothetical PEP will have to include things like rationale, impact on other implementations, etc.  That seems like enough to warrant a new PEP, even if it's relatively succinct.

Agreed. I'll go with that for the PEP.

I'd also make it clear that adding new variables to sys.implementation.metadata explicitly does not require a PEP.

Good point.

 * In Example Metadata Value:

"If they later have meaningful uses cases, they can be added by following the process described in Adding New Required Attributes." I'd rephrase this to "If these or any other variables are deemed to have meaningful use cases across all implementations, they can be moved or added to sys.implementation directly, following the process described in Adding New Required Attributes."

That's an important distinction. I'll clean it up.

 * I mildly prefer sys.implementation.name to be lower cased.  My intuition is that to be safe, most comparisons of the value will coerce to lower case, which is easy enough in Python, but perhaps a bit more of a pain in C.  I don't feel really strongly about this though.  (A counter argument is that the value might be printed, so a case-sensitive version would be better.)

I'm not sure it makes a lot of difference. Since cache_tag will be provided by the implementation, I don't have any strong use-cases that would constrain the name itself. Still, my preference is for lower case as well. I'll mull this one over.

 * Since I'm advocating to be explicit about the language version and the implementation version, .hexversion is probably also useful for both.

That's fine with me, and pretty trivial to do.

 * I've said before that I think the keys in sys.implementation should be locked down (i.e. not writable).

I've been on and off about this. It's certainly not too hard to do, it makes sense, and I don't see a lot of reason not to do it. I'll give it a go.

 I think sys.implementation.metadata should be the same type.

This I wonder about. The more I think about it, the more it fits. I'll give it a day and if that still holds I'll work it in.

Thanks for the feedback, Barry! Feels like the PEP's getting close.

-eric



More information about the Python-Dev mailing list