Skip to content

Biopython pledges to drop Python 2 support in or before 2020. #84

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

Merged
merged 2 commits into from
Jul 31, 2017

Conversation

peterjc
Copy link
Contributor

@peterjc peterjc commented Jul 31, 2017

See biopython/biopython@054f9c6

Note I have not seen the rendering of this change - please let me know if you need eg a smaller logo.

peterjc added 2 commits July 31, 2017 17:39
Copyright Patrick Kunzmann (2017), licensed under the user's
choice of the Biopython License Agreement or the BSD 3-Clause
License.

See http://biopython.org/DIST/LICENSE and
https://opensource.org/licenses/BSD-3-Clause
@takluyver
Copy link
Member

Thanks, and welcome aboard! Hopefully the logo should work nicely - I'm going to merge it and find out.

@takluyver takluyver merged commit 5973458 into python3statement:master Jul 31, 2017
@Carreau
Copy link
Member

Carreau commented Jul 31, 2017

Welcome ! And thanks for the pull request ! Don't forget to look at the practicalities page, and feel free to add anything that you feel is missing !

Also side questions are the snakes head on the logo 3' or 5' ?

@peterjc peterjc deleted the biopython branch August 1, 2017 09:50
@peterjc
Copy link
Contributor Author

peterjc commented Aug 1, 2017

Thank you both - the logo looks good on http://www.python3statement.org/ - I don't recall if we ever discussed if the tail/head orientation of the logo snakes specifically match the conventional DNA ordering from 3' to 5', maybe something to add to http://biopython.org/wiki/Logo ?

I've looked over the practicalities page, and noted we don't yet recommend updating pip and setuptools (indeed we have only just moved over to providing wheels with Biopython 1.70 and recommending pip).

@Carreau
Copy link
Member

Carreau commented Aug 1, 2017

I've looked over the practicalities page, and noted we don't yet recommend updating pip and setuptools (indeed we have only just moved over to providing wheels with Biopython 1.70 and recommending pip).

I would suggest looking on bigquerry with a request like this one to see the number of download for each version of pip. In above link I do not filter by python version, but what would (likely) matter is the number of pip < 9 user on Python 2.

Here is what we got for IPython:

download

First dashed line is release of IPython 6.0, and you can see that a large number of "old pip" user downloaded IPython 6, on Python 2, and the installation failed with a clear error message that they need to upgrade pip (or pin IPython). If you draw this graph, the less orange users you have by the time you release the less problem you will potentially have.

Note that you won't see all your old pip users as if they have the latest pip will just says:
"No new versions available" and it wont count on the download page.

Second dash line is release of 5.4 and 6.1, lighter gray line is when requests broke for a couple of hours.

@peterjc
Copy link
Contributor Author

peterjc commented Aug 2, 2017

That's intriguing - I've not used Google's BigQuery before - thanks! Is it easy to show how to get your graph?

I've found some other illuminating examples like https://langui.sh/2016/12/09/data-driven-decisions/ and https://gist.github.com/juanpabloaj/dffc6900f80abcfe8ce121a39cffa743 which produces much simpler graphs.

It looks like over the last year most of our PyPI downloads are via pip (ignoring things like the bandersnatch PyPI mirror tool). There were 215,971 pip downloads of which only 28.8% were for Python 3:

SELECT
  ROUND(100 * SUM(CASE WHEN REGEXP_EXTRACT(details.python, r"^([^\.]+)") = "3" THEN 1 ELSE 0 END) / COUNT(*), 1) AS percent_3,
  COUNT(*) as download_count,
FROM
  TABLE_DATE_RANGE(
    [the-psf:pypi.downloads],
    DATE_ADD(CURRENT_TIMESTAMP(), -365, "day"),
    DATE_ADD(CURRENT_TIMESTAMP(), -1, "day")
  )
WHERE
  file.project = 'biopython'
  AND details.installer.name == 'pip'
ORDER BY
  download_count DESC
LIMIT 100

@Carreau
Copy link
Member

Carreau commented Aug 2, 2017

Is it easy to show how to get your graph?

Yes, you can have a look here I'm still working on it, so the code is ugly. I'm giving a talk in ~10 days at PyBay about that and I'm still churning through the data and thinking about the best graph to show, and the one that are interesting.

For IPython we are at 34.6% for the past year, 42.7% over the past month. What is important is also how many of your Python 2 user have old pip vs new pip. And you also have to wonder how many users have pinned version. I know we still have users that stuck with IPython 4, as it is still using readline by default. SO I believe it is more complex than just looking at the % of users on which Python :-)

@peterjc
Copy link
Contributor Author

peterjc commented Aug 2, 2017

Thanks for the link, and good luck for your talk.

I can see why the number of Python 2 users with an old version of pip will be quite important once we prepare to drop Python 2 support.

You've given me (us) lots to think about - thank you!

@Carreau
Copy link
Member

Carreau commented Aug 10, 2017

So small update (while I'm preparing my talks). here isa graph of the pip breakdown through time for IPython.

4-pip-breakdown

You see that before release we are at about 65% new pip (I queried PyPI on a month of data before release). When we release there is a sharp decrease to ~45% for a week. My guess is that's because most of pip install --upgrade on systems that already have IPython install do not download a new version and thus do not count in the PyPI database count.

The second thing, is: we did not tell our users how to pin IPython in the error message in case they can't upgrade pip. Thus I think many pinned with ipython==5.3 instead of ipython<6, which lead to a chuck not upgrading once 5.4 was released:

6-minor_download_do_5x_pin

(Orange: 6.0/6.1, Blue: 5.3/5.4)

@peterjc
Copy link
Contributor Author

peterjc commented Aug 11, 2017

Thank you - beautiful graphs with an interesting story to tell. I hope we can read your slides after the talk, which together with the notebook https://github.com/Carreau/talks/blob/master/2017-08-13-pybay/IPython-dls_2.ipynb ought to be of interest to many project developers.

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.

3 participants