Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for Python 4 #297

Closed
wants to merge 2 commits into from
Closed

Fix for Python 4 #297

wants to merge 2 commits into from

Conversation

hugovk
Copy link
Contributor

@hugovk hugovk commented Aug 25, 2019

We don't yet know if 3.10 or 4.0 will follow Python 3.9, but it will probably happen in 2020 when Python 3.9 reaches beta and as six is vendored and used in many codebases, it would be good for six to be ready for both.

There's several places in the codebase which essentially do:

if sys.version_info[0] == 3:
   pass  # Python 3+ stuff
else:
   pass  # Python 2 stuff

When run on Python 4, this will run the Python 2 code!

This PR flips it around:

if sys.version_info[0] == 2:
   pass  # Python 2 stuff
else:
   pass  # Python 3+ stuff

Thanks to @asottile for flake8-2020.


As an aside, there's a slight inconsistency here:

# Useful for very coarse version differentiation.
PY2 = sys.version_info[0] == 2
PY3 = sys.version_info[0] == 3
PY34 = sys.version_info[0:2] >= (3, 4)

PY34 is true on Python 4, but PY3 is not. Would it be too big a break to change it?

-PY3 = sys.version_info[0] == 3
+PY3 = sys.version_info[0] >= 3

@benjaminp
Copy link
Owner

I don't think this is worth worrying about unless Python 4 is actually concretely on the horizon, and people are still using six.

https://bitbucket.org/gutworth/six/issues/22/variable-sixpy3-is-time-bomb

@benjaminp benjaminp closed this Oct 25, 2019
@asottile
Copy link
Contributor

fwiw, there's already indication that python 4 will happen:

>>> from __future__ import annotations
>>> annotations
_Feature((3, 7, 0, 'beta', 1), (4, 0, 0, 'alpha', 0), 1048576)

that is, __future__ annotations will become the default in python 4

why wait to fix this?

@benjaminp
Copy link
Owner

I was just discussing with GvR this week that the annotations will probably have to move to 3.10 or 3.11.

@asottile
Copy link
Contributor

separately: why wait to fix this?

@benjaminp
Copy link
Owner

I don't think there's anything to fix.

@asottile
Copy link
Contributor

legacy code lives for a long time, I wouldn't be surprised to see six for a long long time (especially now with the addition of the new ensure_* helpers which have no direct replacement)

@benjaminp
Copy link
Owner

Yes, but again, for this to be more than a theoretical problem, Python 4 would have to be more than theoretical.

@asottile
Copy link
Contributor

we know it will eventually come, why wait until it's a problem when it's easy to fix now?

~/workspace/cpython $ git grep 'deprecated-removed::.*4\.0' | wc -l
23

@benjaminp
Copy link
Owner

We don't know it will eventually come. That PEP 563 and deprecation notices mention it just goes to show people consider it a safely vague indefinite future event. It's always "a while off".

@asottile
Copy link
Contributor

that's fair -- my concern is that since six is broken (and therefore a huge percentage of the ecosystem) it will force the issue to make it never happen 🤷‍♂

@benjaminp
Copy link
Owner

that's fair -- my concern is that since six is broken (and therefore a huge percentage of the ecosystem) it will force the issue to make it never happen man_shrugging

I'm not exactly sure what the antecedents of the "it"s in this sentence are.

@asottile
Copy link
Contributor

asottile commented Nov 5, 2019

that's fair -- my concern is that since six is broken (and therefore a huge percentage of the ecosystem) [six] will force the issue to make [python 4] never happen man_shrugging

I'm not exactly sure what the antecedents of the "it"s in this sentence are.

@asottile
Copy link
Contributor

asottile commented Nov 5, 2019

yeah sorry that sentence was a mess :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants