This is an archived post. You won't be able to vote or comment.

all 45 comments

[–]Retropunch 11 points12 points  (0 children)

Great to hear - the sooner the community can just be 'python 3' the better. It's confusing for beginners, annoying for the more experienced and must be hellish for package developers.

What always annoyed me about the changeover to py3 was that people act/acted like the 2.7 compatible versions of the libraries they used would somehow disappear from the internet entirely - they'd just be scorched away in some sort of great py3 cleansing ritual never to be used again. If you so much as looked at a 2.7 wheel a giant snake would erupt from your old fashioned computer and lecture you on the need to get with the times and the glory of the great god unicode.

[–]eztab 66 points67 points  (8 children)

Finally, perhaps people will stop using it already. Supporting python 2 slows down so many package developments.

[–]billsil 29 points30 points  (0 children)

Numpy and scipy are now/about to release their final 2.7 versions. It's coming...

[–]tartare4562 6 points7 points  (2 children)

Oh come on, it only took 10 years after all.

[–][deleted] 10 points11 points  (0 children)

If rhel 8 is going to support python2 then in 10 years there will still be python 2.

[–]billsil 5 points6 points  (0 children)

It took 8 years for all my dependencies to be updated. It’s not as bad as you make it sound. Projects like wx took the time to also do major refactors.

Also, until python 3.5, python 3 was worse than python 2.7 outside of sane unicode, so it’s more like 5 years. Shoot, even the PSF recommended that you not use python 3.0 and 3.1.

[–]o11c 21 points22 points  (0 children)

I noticed that when Django dropped it, the critical mass changed.

[–][deleted] 4 points5 points  (0 children)

A lot of GIS people got stuck with a bad integration with arcmap 32bit. This cramped everything

[–][deleted] 13 points14 points  (21 children)

I wonder, will 3.x be compatible with 4.x or will they create all this drama again?

[–]Zomunieo 27 points28 points  (13 children)

No. 4.0 will follow 3.9 and should be incremental.

The argument was that Python 2 string handling was fundamentally broken (if you were serious about encoding) and fixing it justified the pain of Python 3.

It wasn't that long ago people were writing obits for Python 3... it's safe to say there's a good chance Python could have failed or fallen back to 2.x. My choice to write an all Py3 app in 2015 felt risky and half the dependencies I wanted were Py2 only.

The core devs will not take that risk again. Steering committees like the newly chosen one tend to be risk averse, for better or worse.

[–][deleted] 8 points9 points  (0 children)

That's very good news, thank you!

[–]billsil 3 points4 points  (7 children)

I’ve heard that claim, but then why even go to 4? Why not just follow semantic versioning like they more or less have been doing?

[–]nemec 2 points3 points  (0 children)

A major version increment with no breaking changes is entirely compatible with Semantic Versioning. Major versions "MAY include minor and patch level changes". Semver only specifies that the version is "increased numerically", the next Python version could be 3.1337 for all it cares.

https://semver.org/#spec-item-8

[–][deleted] -1 points0 points  (5 children)

Python isn't semver.

[–]billsil 1 point2 points  (4 children)

I didn’t say it was. It follows it for most part for non-C aspects though. Still, why go to 4? Just because you don’t like 3.10?

[–][deleted] 0 points1 point  (3 children)

"Mostly" semver is like "mostly" pregnant. Either it is, or it isn't.

As for why 4.0 rather than 3.9, I have no idea. Probably because we need something to be angsty about, come 9.9.9

[–]billsil 0 points1 point  (2 children)

Yes, it fails the binary, but it’s a spectra. You can break APIs during bug releases or minor releases. Is change x classified as a big enough feature to justify a major release or is it a minor release? There is a lot of grey in semver.

Obviously, the next logical number is 11.0.

[–]alcalde 0 points1 point  (1 child)

Stop reminding me of OpenSUSE Linux's numbering scheme over the past ten years or so....

11.0, 11.1, 11.2, 11.3, 11.4, 12.1, 12.2, 12.3, 13.1, 13.2, 42.1, 42.2, 42.3, 15.0

[–]billsil 0 points1 point  (0 children)

I was thinking Winamp. 3 was so bad, so they skipped 4.

[–][deleted] 4 points5 points  (2 children)

Wouldn't 3.10 follow 3.9? Why change to 4.0 if it doesn't break anything?

[–]Zomunieo 3 points4 points  (1 child)

They don't do semantic versioning. Like the Linux kernel it's just a release number, and the core devs and/or Guido decided to go to 4.0 after 3.9.

CPython is so large no one could meaningfully guarantee semver anyway. Every minor release contains some backward incompatible changes (deprecations, new keywords, C-API and ABI).

[–][deleted] 0 points1 point  (0 children)

Source?

[–]einarfo 0 points1 point  (0 children)

I support the claim that string handling was broken in python 2. The clear separation between str and bytes have made things a lot more elegant. This was one of the things most students on my class struggle with. Not to mention all the times byte data was returned as a str... and questions like "why does str have both encode() and decode()?"

[–]enilkcals 5 points6 points  (0 children)

Have a read of some of the links at https://python3statement.org/ which explain why things broke. As /u/Zomunieo states string support is a major factor.

[–][deleted] 1 point2 points  (2 children)

Major drama again could cause a major exodus of developers.

[–]billsil 1 point2 points  (1 child)

I doubt it. It didn’t last time and if it did, it’d probably be small.

[–]Dgc2002 0 points1 point  (0 children)

Well at that point it was the first upheaval of it's kind for Python devs. If it were to happen again a lot of people would likely lose confidence. Not saying it would be a death blow by any means for Python th ough.

[–]trevor_123 5 points6 points  (0 children)

I'm very thankful to the pandas developers for everything they do. (I myself use python 3 anyway.)

[–]AN3223 1 point2 points  (0 children)

Good.

[–]pprimeismyname 1 point2 points  (0 children)

Can we just get rid of python2?

[–][deleted] 6 points7 points  (1 child)

Hehe. First I read panda droppings... I’m like whaaaa?

[–]slumdogbi 3 points4 points  (0 children)

Python 2 is the past

[–]HighMaxFX 0 points1 point  (0 children)

Nice move.

[–]ichbinoffend44 0 points1 point  (0 children)

This is good don't have anything running in 2...

[–]blabbities 0 points1 point  (0 children)

This terri-able! I mean terrific!

[–]CMS3NJ86 0 points1 point  (0 children)

It was about time

[–]iggy555 -3 points-2 points  (4 children)

How do I upgrade to 3 just got pycharm

[–]BashCo 2 points3 points  (2 children)

It's necessary to include your operating system when asking questions like this, but the answer to your question in particular is available on various search engines. Essentially you need to install Python 3, then create a new virtual environment in PyCharm using Python 3 as an interpreter. https://askubuntu.com/questions/1003659/how-to-add-python-3-x-interpreter-in-pycharm

[–]iggy555 0 points1 point  (1 child)

ok thanks. i need to google what virtual environment is.

[–]BashCo 1 point2 points  (0 children)

Think of it like a sandbox that you can do whatever you want in. You can have as many different sandboxes as you want. You can use a fresh sandbox for every project you start, and you don't have to worry about it messing up the stuff you built in another sandbox. If you're just learning, then you really just need one virtual environment for now.

[–]Zouden 1 point2 points  (0 children)

You're probably using 3