-
Notifications
You must be signed in to change notification settings - Fork 656
Update Windows download popup and list for 3.9. (#1611) #1655
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
Conversation
| {% if os.slug == 'windows' and r.name >= 'Python 3.5' %} | ||
| <p><strong>Note that {{ r.name }} <em>cannot</em> be used on Windows XP or earlier.</strong></p> | ||
| {% if os.slug == 'windows' %} | ||
| {% if r.name >= 'Python 3.9' %} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wouldn't this return False if r.name is 'Python 3.10'?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably! But that's just what the existing code does. I was going to open a separate issue to go through the whole repo to fix all similar version checks prior to 3.10.0 a year from now. Do you have any idea if there are other such version checks?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yep!
>>> 'Python 3.10' >= 'Python 3.9'
FalseA quick grep doesn't show any more of this pattern:
$ git grep -E "[23]\..* [<>][=]? "
$ git grep -E " [<>][=]? .*[23]\."
static/sass/_layout.scss: & > .column { width: 33.3333%; }
templates/downloads/os_list.html: {% if os.slug == 'windows' and r.name >= 'Python 3.5' %}Running https://github.com/asottile/flake8-2020/ doesn't find anything:
$ pip install -qU flake8-2020 && flake8 --select YTT
$Still worth a more thorough review.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If anyone wants to come up with a proper version test, please feel free to do so! My immediate concern is the imminent 3.9.0 release.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed, this PR looks good for 3.9.0, and we've a year to fix it properly for 3.10.0.
Something like this?
>>> from packaging import version # pip install packaging
>>> def parse_version(version_string):
... return version.parse(version_string.split()[1])
...
>>> parse_version("Python 3.10") >= parse_version("Python 3.9")
True
>>> parse_version("Python 3.10") <= parse_version("Python 3.9")
False
>>> parse_version("Python 3.10") == parse_version("Python 3.10")
True
>>>There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, that looks like a good approach. I forgot about packaging.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And rather than the .split()[1], looks like we could use r.get_version():
def parse_version(version_string):
return version.parse(version_string)pythondotorg/downloads/models.py
Lines 121 to 125 in 0f07e9d
| def get_version(self): | |
| version = re.match(r'Python\s([\d.]+)', self.name) | |
| if version is not None: | |
| return version.group(1) | |
| return None |
pythondotorg/downloads/tests/test_models.py
Lines 63 to 66 in 0f07e9d
| def test_get_version_27(self): | |
| release = Release.objects.create(name='Python 2.7.12') | |
| self.assertEqual(release.name, 'Python 2.7.12') | |
| self.assertEqual(release.get_version(), '2.7.12') |
|
OK, including this is urgent for 3.9 to not mislead the users to think 3.9 works on Windows Vista and Windows 7. My vote is: let's merge the current state, unblocking 3.9.0, and fix forward for 3.10. |
As of Python 3.9, only Windows 7 and later systems are supported. With the release of 3.9.0, change the download popup to state that (since we assume the download popup button will never move back to 3.8.x or earlier) and change the Windows download list to show Windows 7 for 3.9 and later releases and continue to show Windows XP for 3.5 through 3.8..