<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Aug 21, 2016, at 12:19 PM, Jim Fulton <<a href="mailto:jim@jimfulton.info" class="">jim@jimfulton.info</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">I'm open to shelling out, but pessimistic that it will turn out well. I started with that approach initially with easy_install and it fell apart quickly.  But when we get into it... who knows?</span></div></blockquote></div><br class=""><div class=""><br class="webkit-block-placeholder"></div><div class="">Shelling out is currently the only exposed “API” that pip has, we’re not opposed to adding extra APIs though. Our current approach has been to wait and see for people to come out with specific use cases they have for an API and then work together to figure out what API we can create that satisfies that. Thus far we’ve accomplished this by creating new libraries that aren’t pip and moving functionality out of pip (and setuptools) and into those libraries, and then making pip/setuptools consume those. This has generally worked pretty well I think, as it’s easier to be careful not to accidentally expose some terrible internal details of pip as public API when it’s a new, carefully designed thing, and we can make working with those libraries better than it is to simply expose some part of pip. We generally pair this along with defining things in PEPs so that these new libraries don’t become the new distutils/setuptools/pip (e.g., implementation defined standards) which should ideally allow anyone to create a from scratch implementation and have it interopt just fine.</div><div class=""><br class=""></div><div class=""><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">—<br class="">Donald Stufft<br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><br class="Apple-interchange-newline">
</div>
<br class=""></body></html>