[Distutils] PEP 426: proposed metadata caching convention

Nick Coghlan ncoghlan at gmail.com
Thu Feb 28 16:04:05 CET 2013


On Fri, Mar 1, 2013 at 12:00 AM, Daniel Holth <dholth at gmail.com> wrote:
> We will probably wind up with some JSON very much like that. I like
> just exposing it as an ordered multidict with the same key names as
> mentioned in the PEP.

A multidict is not really JSON-compatible - making sure there's an
unambiguous mapping to an ordinary dictionary is highly desirable.
Also, it's handy to pre-split and group the entries conditioned on the
environment markers.

> IMO the environment marker for "always" is just
> "" (empty string).

I initially had that, but it looked weird in the case where there
weren't any conditional entries, and it also looks weird when
accessing the data structure. By contrast, "always" is a
self-describing key.

> My hook would be a literal Entry-Point. You would install a package
> "twisted.plugins" that would register its interest in installation
> changes by declaring the entry point "[packaging.hooks]
> post_install=twisted.plugins:hook". Afterwards, every time you install
> or uninstall another package, twisted.plugins.hook() would be called.
> It would iterate over all installed distributions using some API like
> pkg_resources.working_set or distlib's database and do whatever it
> needed to do. It could be called once per pip invocation instead of
> once per individual package.
>
> The hook is not guaranteed to run. If you do not run the hook, you
> should expect Twisted's plugin discovery process to take longer just
> like it does today. In fact the packages available on sys.path are not
> guaranteed to "have been installed" at all.

This is *not* the same kind of hook at all. The proposed hook is only
run when *Twisted* is installed to replace some current legitimate
customisation of "./setup.py install" behaviour, not when an arbitrary
package is installed to let Twisted know about it. Your suggestion
would indeed be more appropriately part of an installer-specific entry
point (but one made much easier by the standard including an algorithm
for conversion to structured metadata).

Cheers,
Nick.

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


More information about the Distutils-SIG mailing list