homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Add get_metadata to packaging
Type: Stage: resolved
Components: Distutils2 Versions: Python 3.3, 3rd party
process
Status: closed Resolution: rejected
Dependencies: Superseder:
Assigned To: eric.araujo Nosy List: alexis, barry, eric.araujo, pitrou, tarek
Priority: normal Keywords: patch

Created on 2011年10月13日 16:01 by eric.araujo, last changed 2022年04月11日 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
d2-get_metadata.diff eric.araujo, 2011年10月13日 16:01
Messages (3)
msg145465 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011年10月13日 16:01
The PEP 376 implementation in packaging.database has been called ugly and opaque. When discussing PEP 396 for example (that’s why I’m adding Barry and Antoine to nosy, for their feedback), get_distribution(name).metadata['Version'] did not seem to agree with everyone. (Note that there are shortcuts for two metadata fields: name and version also exist as get_distribution(name).name / .version.)
I’m not sure how we can make it less opaque, unless we force people to read documentation: PEP 376 proposes a database of installed distributions; packaging.database offers get_distribution, which returns an object with some attributes. I can’t have an outside view on this, so maybe you can explain what’s opaque and ugly so that we can try to improve it.
I’ve found in distutils-sig archives from two or three years ago that people intended to offer a get_metadata function that would take a distribution name (i.e. pyOpenSSL, Babel, flufl.enum) and return a mapping object with the metadata read from the installed dist-info/METADATA file. Does that look better to you?
msg145476 - (view) Author: Barry A. Warsaw (barry) * (Python committer) Date: 2011年10月13日 17:56
On Oct 13, 2011, at 04:01 PM, Éric Araujo wrote:
>The PEP 376 implementation in packaging.database has been called ugly and
>opaque. When discussing PEP 396 for example (that’s why I’m adding Barry and
>Antoine to nosy, for their feedback),
>get_distribution(name).metadata['Version'] did not seem to agree with
>everyone. (Note that there are shortcuts for two metadata fields: name and
>version also exist as get_distribution(name).name / .version.)
I don't entirely remember my objections to the API, but I wonder if you
couldn't provide attribute access via properties on .metadata? Or are there
keys that can't be mapped to identifiers (modulo typical dash-to-underscore
mappings)?
>I’m not sure how we can make it less opaque, unless we force people to read
>documentation: PEP 376 proposes a database of installed distributions;
>packaging.database offers get_distribution, which returns an object with some
>attributes. I can’t have an outside view on this, so maybe you can explain
>what’s opaque and ugly so that we can try to improve it.
>
>I’ve found in distutils-sig archives from two or three years ago that people
>intended to offer a get_metadata function that would take a distribution name
>(i.e. pyOpenSSL, Babel, flufl.enum) and return a mapping object with the
>metadata read from the installed dist-info/METADATA file. Does that look
>better to you?
So, that would mean instead of
get_distribution(name).metadata['Version']
you'd use
get_metadata(name)['Version']
?
I'm not sure that's really buys you much.
Maybe we just need to live with the current API for a while before we try to
improve it.
msg154472 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2012年02月27日 12:50
Thanks for the feedback.
> So, that would mean instead of
> get_distribution(name).metadata['Version']
> you'd use
> get_metadata(name)['Version']
> ?
> I'm not sure that's really buys you much.
Yeah. At the moment we also have get_distribution(name).version, which I hope is not deemed ugly.
> I don't entirely remember my objections to the API, but I wonder if you couldn't provide
> attribute access via properties on .metadata? Or are there keys that can't be mapped to
> identifiers (modulo typical dash-to-underscore mappings)?
In distutils1, the metadata fields were accessed as attributes. I think using a mapping interface makes more sense and is nicer to use.
Rejecting for now.
History
Date User Action Args
2022年04月11日 14:57:22adminsetgithub: 57376
2012年02月27日 12:50:00eric.araujosetstatus: open -> closed
messages: + msg154472

assignee: tarek -> eric.araujo
resolution: rejected
stage: resolved
2011年10月13日 17:56:22barrysetmessages: + msg145476
2011年10月13日 16:01:32eric.araujocreate

AltStyle によって変換されたページ (->オリジナル) /