<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
2) after unpacking this sdist it then calls 'setup.py egg_info' to get<br>
the full metadata for the wheel </blockquote><div><br></div><div>I wouldn't say "get the full metadata for the wheel".  it's not a wheel yet.  </div><div>`egg_info` run so we can use the pkg_resources api to find the dependencies.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Specifically what it does with this is<br>
extract the setup_requires and install_requires fields</blockquote><div><br></div><div>specifically, we call `requires` on pkg_resources distribution objects</div><div><a href="https://github.com/pypa/pip/blob/develop/pip/req/req_set.py#L583">https://github.com/pypa/pip/blob/develop/pip/req/req_set.py#L583</a><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
3) eventually it actually builds the package, and this produces a<br>
wheel (or wheel equivalent) that has its own metadata (which often<br>
matches the metadata from egg_info in step (2), but not always)<br></blockquote><div><br></div><div>"not always"?  not following your point</div><div>they're 2 different formats, but should contain the same essential information.</div><div>here's the wheel code that does the conversion</div><div><a href="https://bitbucket.org/pypa/wheel/src/1cb7374c9ea4d5c82992f1d9b24cf7168ca87707/wheel/metadata.py?at=default&fileviewer=file-view-default#metadata.py-90">https://bitbucket.org/pypa/wheel/src/1cb7374c9ea4d5c82992f1d9b24cf7168ca87707/wheel/metadata.py?at=default&fileviewer=file-view-default#metadata.py-90</a><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">name and version before it runs egg_info, I assume that what this<br>
means is that it's crucial for pip to have static access to dependency<br>
information? </blockquote><div><br></div><div>yes</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
It would be somewhat convenient if sdists did list their binary<br>
dependencies: </blockquote><div><br></div><div>not sure about your insertion of "binary" here.</div><div>pip is concerned with finding python project dependencies (i.e. name and version constraints) in the sdist</div><div>and then based on the current install environment, it will further constrain the wheels chosen based on architecture and python implementation.</div><div>and to be perfectly clear, none of this deals with non-python OS/Distro requirements.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
3) if any of the packages-to-be-installed are sdists, then fetch them,<br>
run egg_info or build them or whatever to get their real dependencies,<br>
add these to the graph, and go to step 1<br></blockquote><div><br></div><div>this is the pain we don't want in the future.</div><div><br></div><div>since we're simply talking about name/version constraints (not platform/python), It's hard to conceive that we'd agree on an sdist spec that didn't include that.<br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Do the relevant pip maintainers<br>
even read this mailing list? :-)<br></blockquote><div><br></div><div>I try  :  )</div><div><br></div></div></div></div>