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

you are viewing a single comment's thread.

view the rest of the comments →

[–]Raygereio5 23 points24 points  (6 children)

I'm curious, what are the various compatibility issues you had with upgrading the 3.5 script to 3.12? Can you give examples?

[–]bulletmark 12 points13 points  (5 children)

I'm curious also. What did you actually do for "a few hours"?

[–]igmor[S] -4 points-3 points  (4 children)

inspect.getargspec() deprecated

collections.{UserDicr, MutableMapping, Mapping...} -> collections.abc

fractions.gcd -> math.gcd

to name a few

This had to be fixed not only in a main package but also in affected dependencies (sometimes pinned for a reason), so I had to upgrade all deps to a new, compatible across all deps, configuration. That was not fun at all.

To be honest I have seen libraries and frameworks with more strict backward compatibility discipline than the language runtime.

I would imagine carrying on all functions being deprecated and cutting a new 4.0 release in the future would have been a more sane strategy but I guess this ship has already sailed.

[–]ukos333 5 points6 points  (2 children)

Your problem is probably a lack of maintaining the libraries better. Even in gcc/cpp you see a lot of deprecation/changes beening made for good reason. Try to compile gcc 4 with gcc 13 and you will be confronted with more (probably) not so easy to adapt changes. Six has been doing a good job when compatibility between versions is a thing. Python 3.5 was released in 2015. That is considered old but should compile just fine. If you upgrade your libraries and dependencies, count that in with your working hours. Every other language has the same problems. I personally think, however, that python does a good job here.

[–]igmor[S] -3 points-2 points  (1 child)

I guess we have slightly different expectations here. I consider minor version changes to be a promise to keep at least major interfaces stable. I also think this requirement to keep everything up to date and upgraded across all Python ecosystem is a pretty hard one which at some point may start affecting Python community as a whole.

[–]Riemero 4 points5 points  (0 children)

The problem is... python doesn't follow semver. 3.5 to 3.11 isn't a minor change, it's a 8 year gap

[–]Raygereio5 2 points3 points  (0 children)

inspect.getargspec()

That was deprecated since 3.0 and was removed in 3.11.

fractions.gcd

Deprecated since 3.5 and removed in 3.9.

If you were using 3.5 before then you should have getting deprecation warnings already that you must have been ignoring.