<story><title>Numpy: Plan for dropping Python 2.7 support</title><url>https://github.com/numpy/numpy/blob/master/doc/neps/dropping-python2.7-proposal.rst</url></story><parent_chain><item><author>skierscott</author><text>&amp;gt; what has changed in Python 3.6 that they&amp;#x27;re happy to do this now when they were pissed off about it a couple years ago?&lt;p&gt;Most of mine have to do with developer productovity and I didn’t find until Python 3.5.&lt;p&gt;– @, the matmul operator&lt;p&gt;– fstrings (f”{foo}”)&lt;p&gt;– parameter typing (foo: int = 0) which has exciting work with Cython&lt;p&gt;– other async features. I forget what library it was (tensorflow?) but for Python 3 it had better async support</text></item><item><author>Figs</author><text>&amp;gt; Isn&amp;#x27;t that a bigger problem for Python 2.7 hold outs?&lt;p&gt;Yes, but it seemed like libraries (such as NumPy here) were mainly switching because of the EOL of Python2 rather than for any actual benefit provided by Python3. I&amp;#x27;ve considered that as more of &amp;quot;Python 3 is a bad thing&amp;quot; by splitting the ecosystem further, and creating additional churn and rework of existing projects. Thus my question of why people seem to think this is a &lt;i&gt;good&lt;/i&gt; thing now -- i.e. what has changed in Python 3.6 that they&amp;#x27;re happy to do this now when they were &lt;i&gt;pissed off&lt;/i&gt; about it a couple years ago?&lt;p&gt;I&amp;#x27;ve gotten a couple interesting responses here, and I hope for more. I wasn&amp;#x27;t really aware of f-strings -- that does seems like a nice-to-have feature -- and I wasn&amp;#x27;t aware of improved JSON serialization performance either.&lt;p&gt;&amp;gt;  If you tried Python 3 a few releases ago, you should give it another go. It has matured a lot.&lt;p&gt;I may do that.</text></item><item><author>nas</author><text>&amp;gt; Frankly, I still haven&amp;#x27;t seen a single reason to switch to Python3 beyond the fact that the original authors have gotten bored of providing security and bugfix updates and will stop in 2020. That&amp;#x27;s it.&lt;p&gt;It seems pretty clear now that 3rd party library developers are going to stop releasing packages that support 2.x and target only 3.x.  Isn&amp;#x27;t that a bigger problem for Python 2.7 hold outs?&lt;p&gt;Originally, I was not super excited about Python 3.  I liked &amp;quot;print&amp;quot; as a keyword.  I liked the space efficiency and speed of latin-1 strings by default.  I did a lot of network protocol stuff and bytes() was a pain to use.  I knew how to use the &amp;#x27;u&amp;#x27; prefix to get unicode when I needed.  However, after using Python 3 for a few years now, I find Python 2 clumsy.  Print as a function &lt;i&gt;is&lt;/i&gt; better.  Unicode works better.  The implementation is just as fast or faster than Python 2 and getting faster every release.  If you tried Python 3 a few releases ago, you should give it another go.  It has matured a lot.</text></item><item><author>Figs</author><text>Frankly, I &lt;i&gt;still&lt;/i&gt; haven&amp;#x27;t seen a single reason to switch to Python3 beyond the fact that the original authors have gotten bored of providing security and bugfix updates and will stop in 2020. That&amp;#x27;s it.&lt;p&gt;The only thing in the last decade or so of Python3&amp;#x27;s existence that even got me slightly interested in using it was asyncio, and after looking into it a bit, it frankly seems like more trouble than its worth.&lt;p&gt;I know Python 2.7 extremely well. It works perfectly fine for just about everything I use it for. It&amp;#x27;s STABLE. For the tasks I use it for, it runs &lt;i&gt;faster&lt;/i&gt; than Python3... (Not that performance is my greatest concern when using Python.) So, please tell me -- why on earth is it a good thing that people are trying to kill off Python2? What exactly makes Python 3.6 a &amp;quot;decent step up&amp;quot; from 2.7? I&amp;#x27;m still at the point of thinking, as you said, that Python3 is a bad thing.</text></item><item><author>fredley</author><text>Good. The glacial migration from Python 2 to 3 is one of the worst things about an otherwise &lt;i&gt;fantastic&lt;/i&gt; ecosystem. The tide is turning though, with Django having already dropped support for 2, and now with Numpy too hopefully Python 2 can be properly consigned to the history books.&lt;p&gt;For people wondering why it&amp;#x27;s been like this for almost a decade(!) since Python 3.0 was released: Python 3.0 was actually terrible. It lacked many critical things, and was riddled with bugs and security flaws until 3.3, which was released &lt;i&gt;4 years&lt;/i&gt; after 3.0. This cemented in many people&amp;#x27;s minds the idea that Python 3 was a bad thing. Python 2 was and is a fantastic programming language, so it was a very high bar to move up from. Python 3 has come a long way since then, Python 3.6 is now a decent step up from 2.7.</text></item></parent_chain><comment><author>masklinn</author><text>* Not only is print better as a function (I can now call print in a lambda!) doing anything beyond just printing variables (e.g. printing to a stream&amp;#x2F;file or suppressing the final newline) is both more straightforward and more readable. Also print(xxx, end=&amp;quot;&amp;quot;, flush=True) is my bae.&lt;p&gt;* API-wise keyword-only parameters are absolutely fantastic, even (especially!) for non-default params.&lt;p&gt;* Extended unpacking, and the ability to unpack in collection literals, make the language much more &amp;quot;expressive&amp;quot; (in the sense there are more cases where you can make do with just expressions) which is very convenient.</text></comment>
<story><title>Numpy: Plan for dropping Python 2.7 support</title><url>https://github.com/numpy/numpy/blob/master/doc/neps/dropping-python2.7-proposal.rst</url></story><parent_chain><item><author>skierscott</author><text>&amp;gt; what has changed in Python 3.6 that they&amp;#x27;re happy to do this now when they were pissed off about it a couple years ago?&lt;p&gt;Most of mine have to do with developer productovity and I didn’t find until Python 3.5.&lt;p&gt;– @, the matmul operator&lt;p&gt;– fstrings (f”{foo}”)&lt;p&gt;– parameter typing (foo: int = 0) which has exciting work with Cython&lt;p&gt;– other async features. I forget what library it was (tensorflow?) but for Python 3 it had better async support</text></item><item><author>Figs</author><text>&amp;gt; Isn&amp;#x27;t that a bigger problem for Python 2.7 hold outs?&lt;p&gt;Yes, but it seemed like libraries (such as NumPy here) were mainly switching because of the EOL of Python2 rather than for any actual benefit provided by Python3. I&amp;#x27;ve considered that as more of &amp;quot;Python 3 is a bad thing&amp;quot; by splitting the ecosystem further, and creating additional churn and rework of existing projects. Thus my question of why people seem to think this is a &lt;i&gt;good&lt;/i&gt; thing now -- i.e. what has changed in Python 3.6 that they&amp;#x27;re happy to do this now when they were &lt;i&gt;pissed off&lt;/i&gt; about it a couple years ago?&lt;p&gt;I&amp;#x27;ve gotten a couple interesting responses here, and I hope for more. I wasn&amp;#x27;t really aware of f-strings -- that does seems like a nice-to-have feature -- and I wasn&amp;#x27;t aware of improved JSON serialization performance either.&lt;p&gt;&amp;gt;  If you tried Python 3 a few releases ago, you should give it another go. It has matured a lot.&lt;p&gt;I may do that.</text></item><item><author>nas</author><text>&amp;gt; Frankly, I still haven&amp;#x27;t seen a single reason to switch to Python3 beyond the fact that the original authors have gotten bored of providing security and bugfix updates and will stop in 2020. That&amp;#x27;s it.&lt;p&gt;It seems pretty clear now that 3rd party library developers are going to stop releasing packages that support 2.x and target only 3.x.  Isn&amp;#x27;t that a bigger problem for Python 2.7 hold outs?&lt;p&gt;Originally, I was not super excited about Python 3.  I liked &amp;quot;print&amp;quot; as a keyword.  I liked the space efficiency and speed of latin-1 strings by default.  I did a lot of network protocol stuff and bytes() was a pain to use.  I knew how to use the &amp;#x27;u&amp;#x27; prefix to get unicode when I needed.  However, after using Python 3 for a few years now, I find Python 2 clumsy.  Print as a function &lt;i&gt;is&lt;/i&gt; better.  Unicode works better.  The implementation is just as fast or faster than Python 2 and getting faster every release.  If you tried Python 3 a few releases ago, you should give it another go.  It has matured a lot.</text></item><item><author>Figs</author><text>Frankly, I &lt;i&gt;still&lt;/i&gt; haven&amp;#x27;t seen a single reason to switch to Python3 beyond the fact that the original authors have gotten bored of providing security and bugfix updates and will stop in 2020. That&amp;#x27;s it.&lt;p&gt;The only thing in the last decade or so of Python3&amp;#x27;s existence that even got me slightly interested in using it was asyncio, and after looking into it a bit, it frankly seems like more trouble than its worth.&lt;p&gt;I know Python 2.7 extremely well. It works perfectly fine for just about everything I use it for. It&amp;#x27;s STABLE. For the tasks I use it for, it runs &lt;i&gt;faster&lt;/i&gt; than Python3... (Not that performance is my greatest concern when using Python.) So, please tell me -- why on earth is it a good thing that people are trying to kill off Python2? What exactly makes Python 3.6 a &amp;quot;decent step up&amp;quot; from 2.7? I&amp;#x27;m still at the point of thinking, as you said, that Python3 is a bad thing.</text></item><item><author>fredley</author><text>Good. The glacial migration from Python 2 to 3 is one of the worst things about an otherwise &lt;i&gt;fantastic&lt;/i&gt; ecosystem. The tide is turning though, with Django having already dropped support for 2, and now with Numpy too hopefully Python 2 can be properly consigned to the history books.&lt;p&gt;For people wondering why it&amp;#x27;s been like this for almost a decade(!) since Python 3.0 was released: Python 3.0 was actually terrible. It lacked many critical things, and was riddled with bugs and security flaws until 3.3, which was released &lt;i&gt;4 years&lt;/i&gt; after 3.0. This cemented in many people&amp;#x27;s minds the idea that Python 3 was a bad thing. Python 2 was and is a fantastic programming language, so it was a very high bar to move up from. Python 3 has come a long way since then, Python 3.6 is now a decent step up from 2.7.</text></item></parent_chain><comment><author>x14</author><text>Don&amp;#x27;t forget how nice super().__init__() is.</text></comment>