<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Resending since It wasn’t on the list and TIP apparently requires that.</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div></div><div>



<style type="text/css">
/*<![CDATA[*/
body{font-family:Helvetica,Arial;font-size:13px}
/*]]>*/
</style>
<title></title>



<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
On September 29, 2014 at 2:53:15 PM, Carl Meyer (<a href="mailto:carl@oddbird.net">carl@oddbird.net</a>) wrote:</div>
<div>
<div>
<blockquote type="cite" class="clean_bq" style="color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 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;">
<div>
<div><span>On 09/29/2014 12:32 PM, holger krekel wrote:<span class="Apple-converted-space">&nbsp;</span><br>
&gt; "consistency with pip" is a valid point in
principle.<span class="Apple-converted-space">&nbsp;</span><br>
&gt;<span class="Apple-converted-space">&nbsp;</span><br>
&gt; However, does anybody argue that "pip install --pre" was
itself a good idea?<span class="Apple-converted-space">&nbsp;</span><br>
<br>
I am not sure that `pip install --pre` is a very useful CLI
API<span class="Apple-converted-space">&nbsp;</span><br>
(probably the best argument for it is that it provides a way to
easily<span class="Apple-converted-space">&nbsp;</span><br>
say "make pip behave like it used to"), but I do think that pip's
move<span class="Apple-converted-space">&nbsp;</span><br>
to ignore non-final releases by default was a very good idea. I
dealt<span class="Apple-converted-space">&nbsp;</span><br>
with many complaints over the years from PyPI authors who assumed
that<span class="Apple-converted-space">&nbsp;</span><br>
if they had both 3.7 and 4.0a1 uploaded on PyPI, the toolchain
would be<span class="Apple-converted-space">&nbsp;</span><br>
smart enough somehow for their users to get 3.7 by
default.<span class="Apple-converted-space">&nbsp;</span></span></div>
</div>
</blockquote>
</div>
<p>The argument is that ``pip install --pre Django`` is easier to
use than ``pip install Django&gt;0.dev``. Perhaps --pre should only
apply to the things named on the command line? I dunno!</p>
<div>
<blockquote type="cite" class="clean_bq" style="color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 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;">
<div>
<div><span><br>
<br>
&gt; Are there many examples (besides Ned's) of people relying and
using<span class="Apple-converted-space">&nbsp;</span><br>
&gt; that feature?<span class="Apple-converted-space">&nbsp;</span><br>
<br>
I don't have numbers (Donald might; CCed him since I'm not sure he
is on<span class="Apple-converted-space">&nbsp;</span><br>
this list), but I have anecdotally heard from several different
people<span class="Apple-converted-space">&nbsp;</span><br>
who now upload pre-releases of their packages to PyPI based on
pip's new<span class="Apple-converted-space">&nbsp;</span><br>
behavior.<span class="Apple-converted-space">&nbsp;</span></span></div>
</div>
</blockquote>
</div>
</div>
<p>I’m not on this list, so the CC is appreciated!</p>
<p>More people are using it, I’d need to do some queries to figure
out the exact numbers but usage is increasing (one example of this
is openstack).</p>
<div>
<div>
<blockquote type="cite" class="clean_bq" style="color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 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;">
<div>
<div><span><br>
<br>
&gt; I doubt it because:<span class="Apple-converted-space">&nbsp;</span><br>
&gt;<span class="Apple-converted-space">&nbsp;</span><br>
&gt; - you can't really depend on "--pre" because "easy_install"
does not<span class="Apple-converted-space">&nbsp;</span><br>
&gt; support it and it's still producing some 20-25% of install
actions<span class="Apple-converted-space">&nbsp;</span><br>
&gt; (https://caremad.io/blog/a-look-at-pypi-downloads/
)<span class="Apple-converted-space">&nbsp;</span><br>
<br>
Those numbers are a year old; it would be interesting to know
how<span class="Apple-converted-space">&nbsp;</span><br>
they've changed. I would expect that distribute is much lower now,
at least.<span class="Apple-converted-space">&nbsp;</span></span></div>
</div>
</blockquote>
</div>
<p>I’m actually working on a follow up blog post to that! Though I
wasn’t planning on including that particular graph since I don’t
think most people actually care, but I can at least generate it
again.</p>
<p>I’m hesitant to share this here because it’s part of an in draft
blog post and I haven’t actually verified the stuff that’s
generating it to make sure my math and the code is correct, however
here is the numbers filtered down to just
pip:&nbsp;http://d.stufft.io/image/321U2U3r1g3t. This does not
attempt to include setuptools in any way.</p>
<div>
<div>
<blockquote type="cite" class="clean_bq" style="color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 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;">
<div>
<div><span><br>
<br>
It would also be interesting to know how many of those
easy_install<span class="Apple-converted-space">&nbsp;</span><br>
downloads come from things like `setup_requires` or the<span class="Apple-converted-space">&nbsp;</span><br>
auto-dependency-installation of `setup.py test`, as opposed to
explicit<span class="Apple-converted-space">&nbsp;</span><br>
installations. I'm not sure there's any way to get this
information, though.<span class="Apple-converted-space">&nbsp;</span></span></div>
</div>
</blockquote>
</div>
<p>There is not a way to determine setup_requires (or ``setup.py
test``) vs ``easy_install``. For the record though, I have plans
that will wrest control of setup_requires so that pip will install
them instead of easy_install (when pip is the top level installer
of course).</p>
<div>
<div>
<blockquote type="cite" class="clean_bq" style="color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 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;">
<div>
<div><span><br>
<br>
For better or worse, my experience is that many PyPI authors are
already<span class="Apple-converted-space">&nbsp;</span><br>
willing to ignore easy_install. With the advent of pip in the
stdlib and<span class="Apple-converted-space">&nbsp;</span><br>
wheels for binary distribution on Windows, I think it's safe to
assume<span class="Apple-converted-space">&nbsp;</span><br>
that its usage will continue to decrease.<span class="Apple-converted-space">&nbsp;</span></span></div>
</div>
</blockquote>
</div>
<div>
<div>
<blockquote type="cite" class="clean_bq" style="color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 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;">
<div>
<div><span><br>
<br>
And if its usage did not decrease for whatever reason, now
that<span class="Apple-converted-space">&nbsp;</span><br>
setuptools is maintained by PyPA I would expect it to eventually
follow<span class="Apple-converted-space">&nbsp;</span><br>
pip's lead on this issue. I'd guess the only reason this hasn't
been<span class="Apple-converted-space">&nbsp;</span><br>
done already - and I'm making the assumption that it hasn't - is
due to<span class="Apple-converted-space">&nbsp;</span><br>
the assumption that easy_install is now only used for legacy
reasons,<span class="Apple-converted-space">&nbsp;</span><br>
and it's better to just leave legacy alone.<span class="Apple-converted-space">&nbsp;</span></span></div>
</div>
</blockquote>
</div>
<p>I think usage might be lower right now though, I don’t believe
it’s something you can really look at and say “that means nobody
wants it”. Particularly even if you limit the things you care about
to pip, the pre-release handling is only available in pip 1.4+, a
lot of people use “whatever pip I get with ``apt-get install
python-pip``” which for a lot of the distros is still a pre 1.4
pip. For instance 14.04 is the first ubuntu LTS to have a 1.4+ pip,
and 13.10 was the first ubuntu at all. On the debian side of things
you have to be using testing or unstable to get a 1.4+ pip.</p>
<p>The fact is, the pre-release handling is one of those things
where you add the feature but folks can’t rely on it in general for
awhile because they don’t have any control over what version of pip
(or if pip is being used at all!) is being used so they have to
wait until a version aware thing gains critical mass.</p>
<p>Of particular note though, is a nice little hack that authors
*can* rely on today. pip 1.4 is both the version that introduced
the pre-release handling, and the version that implemented support
for Wheels. Authors of packages which are pure Python can
distribute their pre-releases as Wheels but without sdists.
Setuptools will ignore the Wheel files, pip prior to 1.4 will also,
and pip 1.4+ won’t install it without —pre or a specifier that
includes them.</p>
<p>Finally, setuptools 7.0 is currently slated to include PEP 440
however it hardcodes the —pre behavior so that it will always
install pre-releases still. This is not a “setuptools wants to
install pre-releases” decision though, Jason was on board with
setuptools adopting the way pip (and now the PEP) treats
pre-releases. This was a “I tried to implement —pre and got
frustrated at the spaghetti that is setuptools and I gave up and
just hardcoded to always allow pre-releases for now so that we can
get the *other* PEP 440 stuff in”. I fully intend to go back and
finish the job and unless Jason changes his mine it’ll have that
behavior.</p>
<div>
<div>
<blockquote type="cite" class="clean_bq" style="color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 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;">
<div>
<div><span><br>
<br>
In summary: I think it's safe to say that "ignore non-final
releases by<span class="Apple-converted-space">&nbsp;</span><br>
default" is now the preferred and expected behavior for
Python<span class="Apple-converted-space">&nbsp;</span><br>
installers, and it will only become increasingly reasonable for
authors<span class="Apple-converted-space">&nbsp;</span><br>
to depend on that behavior.<span class="Apple-converted-space">&nbsp;</span></span></div>
</div>
</blockquote>
</div>
<p>I agree with this.</p>
<div>
<div>
<blockquote type="cite" class="clean_bq" style="color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 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;">
<div>
<div><span><br>
<br>
&gt; - it is too coarse grained: it will drag in non-stable
versions from<span class="Apple-converted-space">&nbsp;</span><br>
&gt; the full dependency closure you are installing, not just one.
So it's<span class="Apple-converted-space">&nbsp;</span><br>
&gt; usually better to have and maintain a "requirements.txt" with
good<span class="Apple-converted-space">&nbsp;</span><br>
&gt; version specifiers if you want stability and "referential
integrity"<span class="Apple-converted-space">&nbsp;</span><br>
&gt; between your tests and deployments.<span class="Apple-converted-space">&nbsp;</span><br>
<br>
Yes, I agree. Note that this is not an argument against
"ignore<span class="Apple-converted-space">&nbsp;</span><br>
non-final releases by default". It is a good argument against
`--pre` as<span class="Apple-converted-space">&nbsp;</span><br>
the method for pulling in non-final releases. The better method is
to<span class="Apple-converted-space">&nbsp;</span><br>
specify the precise non-final release you want.<span class="Apple-converted-space">&nbsp;</span><br>
<br>
I am not sure that arguments against `--pre` form arguments
for<span class="Apple-converted-space">&nbsp;</span><br>
continuing to use `--pre` in tox :-)<span class="Apple-converted-space">&nbsp;</span></span></div>
</div>
</blockquote>
</div>
<p>Also with this, if their is better behavior for —pre please open
a ticket!</p>
<div>
<blockquote type="cite" class="clean_bq" style="color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 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;">
<div>
<div><span><br>
<br>
&gt;&gt; I suppose it would be possible (though probably ugly) to
implement this<span class="Apple-converted-space">&nbsp;</span><br>
&gt;&gt; change with a deprecation-warning cycle.<span class="Apple-converted-space">&nbsp;</span><br>
&gt;<span class="Apple-converted-space">&nbsp;</span><br>
&gt; If i'd go for it i'd suggest to directly change it in tox-1.9,
adding a<span class="Apple-converted-space">&nbsp;</span><br>
&gt; "--pre" switch and a new default "install_command=pip install
{opts}<span class="Apple-converted-space">&nbsp;</span><br>
&gt; {packages}" where the "tox --pre" switch changes the contents
of<span class="Apple-converted-space">&nbsp;</span><br>
&gt; "{opts}". And i'd ask the people here on the ML pushing for
the change<span class="Apple-converted-space">&nbsp;</span><br>
&gt; to submit a PR :)<span class="Apple-converted-space">&nbsp;</span><br>
<br>
That's fair :-) If you approve the idea I will write the
PR.<span class="Apple-converted-space">&nbsp;</span><br>
<br>
Carl<span class="Apple-converted-space">&nbsp;</span></span></div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="bloop_sign_1412017061089566976" class="bloop_sign">
<div style="font-family:helvetica,arial;font-size:13px">
<div>---</div>
<div>Donald Stufft</div>
<div>PGP: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA</div>
</div>
</div>


</div></body></html>