I'm posting here to raise awareness about a new Draft packaging
interoperability PEP I am proposing .
This document originated from the need to implement pip issue #609 ,
ie improving the behavior of pip freeze in presence of distributions installed
from direct URL references.
In a thread  on discuss.python.org it was suggested a new PEP was needed
to standardize the recording of the required information in .dist-info.
After investigation, I found out PEP426 (now withdrawn) had a concept of
source_url metadata, which almost satisfied the requirement.
 is therefore a revival of source_url, with a different storage format
to allow for additional use cases.
Looking forward to reading your comments.
You may have seen some hub hub around psycopg2 and no longer shipping binary wheels by default  (and in fact using psycopg2-binary if you want wheels), and I wanted to bring it up here because it demonstrates a problem area with the current state of packaging in Python:
There is no good way for a new package to specify that it provides what another package would provide, and setuptools currently checks that all distributions are found before running the console scripts (so if a console script has a setup.py that depends on psycopg2 and you install psycopg2-binary it fails) 
So currently if you pip install psycopg2-binary and then install a project that uses psycopg2 as a dependency it will install psycopg2 over top of psycopg2-binary.
The author of psycopg2 stopped distributing binaries for psycopg2 because of issues with the version of SSL that Python was compiled for/what was used by psycopg2 and it causing all kinds of issues.
I don't have a proposal or a fix, but this is going to be an issue not just for psycopg2 but also for other projects that potentially distribute wheels that are built against a different version of OpenSSL.
I see two things that should get some thought:
1. How to have a package provide for another package (there are keywords but AFAIK they are currently ignored by pip)
2. How to handle/deal with shared libraries that are not versioned
: https://github.com/psycopg/psycopg2/issues/674 <https://github.com/psycopg/psycopg2/issues/674>
: https://github.com/psycopg/psycopg2/issues/883 <https://github.com/psycopg/psycopg2/issues/883>
: https://github.com/zalando/patroni/issues/1021#issuecomment-480202590 <https://github.com/zalando/patroni/issues/1021#issuecomment-480202590>
Frazer McLean noticed that even though the version parsing regex in
PEP 440 Appendix B was explicitly restricted to ASCII digits, the
`is_canonical` regex was more permissive and nominally allowed
arbitrary Unicode [Nd] characters.
The restrictive interpretation was the correct one (and reflects what
tools actually support), so I've merged Frazer's change at
to fix the omission and update the `is_canonical` regex to be
consistent with the version parsing one.
Nick Coghlan | ncoghlan(a)gmail.com | Brisbane, Australia