[Python-Dev] Packaging documentation and packaging.pypi API (original) (raw)

Alexis Métaireau alexis at notmyidea.org
Wed Jun 20 19:05:57 CEST 2012


On 20/06/2012 17:29, Paul Moore wrote:

I wasn't aware of this - I've had a look and my first thought is that the documentation needs completing. At the moment, there's a lot that isn't documented, and we should avoid getting into the same situation as with distutils where people have to use undocumented APIs to get anything done. There are a lot of examples, but not so much formal API documentation.

So that's something we definitely want to fix. The code is heavily annotated, and this had been made to generate the documentation automatically with sphinx in the first time, so… that would make no sense to not make it. This is for the format API documentation, which seems to be easy to hook to sphinx.

I'll also review all the documentation there to make sure that it perfectly makes sense.

As a specific example, one thing I would like to do is to be able to set up a packaging.pypi client object that lets me query and download distributions. However, rather than just querying PyPI (the default) I'd like to be able to set up a list of locations (PyPI, a local server, and maybe some distribution files stored on my PC) and combine results from all of them. This differs from the mirror support in that I want to combine the lists, not use one as a fallback if the other doesn't exist. From the documentation, I can't tell if this is possible, or a feature request, or unsupported... (Actually, there's not even any documentation saying how the URL(s) in indexurl should behave, so how exactly do I set up a local repository anyway...?) that's not something possible out of the box using the crawler the way they are defined (iow, that's not one supported use case), but it's possible to make a class on top of the existing ones which could provide this kind of fallback feature. I'm not sure that we want or don't want that to be a part of packaging.pypi, but that's definitely something that this API makes possible without too much trouble. On a similar note, at some point, crawler.getreleases('pywin32') needs to work. I believe the issue here is technically with pywin32, which uses non-standard version numbers (214) and is hosted externally (Sourceforge) but I'd expect that packaging.pypi should be able to access anything that's on PyPI, even if other APIs like packaging.version can't deal with them. If this is not working / following the links that are present in the cheeseshp then this should be considered a bug. Ideally, these would be simply things I'd raise as issues on bugs.python.org. But as things stand, such issues aren't getting fixed, and we don't move forward. And without the documentation to back up a debate, it's hard to argue "X is a bug, Y is a feature request, Z is behaving correctly". Alright, so this is a true documentation issue. I will make it clearer what packaging.pypi makes and doesn't make possible.



More information about the Python-Dev mailing list