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

Release 1.0 planning #13685

Closed
10 of 17 tasks
ilevkivskyi opened this issue Sep 19, 2022 · 60 comments
Closed
10 of 17 tasks

Release 1.0 planning #13685

ilevkivskyi opened this issue Sep 19, 2022 · 60 comments
Labels
meta Issues tracking a broad area of work priority-0-high

Comments

@ilevkivskyi
Copy link
Member

ilevkivskyi commented Sep 19, 2022

It is decided to release mypy 1.0 in ~two months, as mypy is mature enough for such a milestone. We need to plan this well in advance, so I am already opening this issue.

The result of some preliminary discussions is captured in this doc (please let me know if you have access issues). I would propose to have a Zoom call on Monday Sep 26 afternoon Dublin time (unless there are objections) to discuss the release plans in more details.

If you have any comments, questions, ideas, please leave them here (note we will still have 0.990 release between 0.980 and 1.0).

cc @JukkaL @jhance @JelleZijlstra @hauntsaninja @AlexWaygood @Michael0x2a @sobolevn @ethanhs @ilinum @svalentin (also please tag anyone I forgot here)

Tasks

More important things (in arbitrary order):

  • Fix more crash bugs (everyone)
  • Give an error if annotated variable appears in un-annotated function (with an error code to opt-out)
  • Safe handling of empty bodies (with a flag to opt-out, + new error codes) @ilevkivskyi
  • Split --enable-incomplete-features
  • Implement as much of Unpack and TypeVarTuple as possible @jhance
  • Enable recursive types by default @ilevkivskyi
  • Make implicit_optional off by default (with a code transform tool to fix existing annotations) @hauntsaninja
  • Detect unbound variables @ilinum
  • Use unions for ternary joins @JelleZijlstra
  • Full support for non-typing 3.11 features, see Python 3.11 tracking issue #12840
  • Support as many typing 3.11 features as we can (including Enum)
  • Make --namespace-packages the default @hauntsaninja
  • Allow/disallow PEP 561 packages @ethanhs

Less important things:

@ilevkivskyi ilevkivskyi added priority-0-high meta Issues tracking a broad area of work labels Sep 19, 2022
@hauntsaninja
Copy link
Collaborator

hauntsaninja commented Sep 19, 2022

I wasn't able to access. I requested access from hauntsaninja at gmail dot com

@JelleZijlstra
Copy link
Member

Same for me (jelle.ziijlstra@gmail.com).

I think the biggest risk here is that we commit to too many things before 1.0 and end up not releasing anything for a long time. That's bad for users because it means the improvements that do make it into master won't get to users. So I'm wary of committing to too many things that must be done before 1.0.

@ilevkivskyi
Copy link
Member Author

I didn't see any objections, so here is a Zoom link I scheduled for Monday, Sep 26, 5PM Dublin time.

(I also added access to the doc for everyone who requested, let me know if it still doesn't work for some people)

@JukkaL
Copy link
Collaborator

JukkaL commented Sep 20, 2022

I scheduled for Monday, Sep 26, 5PM Dublin time.

That's 9am Pacific.

@JelleZijlstra
Copy link
Member

The Zoom link asks for a passcode that I don't have.

@ilevkivskyi
Copy link
Member Author

Hm, weird, can you try 466977?

@ilevkivskyi
Copy link
Member Author

ilevkivskyi commented Sep 26, 2022

Are you clicking on the Zoom link above? It includes the password.

@AlexWaygood
Copy link
Member

Hm, weird, can you try 466977?

That works, but you need to let us out of the waiting room ;)

@hauntsaninja
Copy link
Collaborator

Btw, one thing we didn't discuss is documentation.
I've been making a series of docs PRs linked to this issue: #13681
If anyone has docs requests or suggestions, chime in there!

@hauntsaninja
Copy link
Collaborator

I just merged --no-implicit-optional and --namespace-packages. Will add the suggestion for the --no-implicit-optional codemod now.

One other change to get in for 1.0 we didn't mention: show error codes by default #13542

@ilevkivskyi
Copy link
Member Author

Btw we forgot to discuss one idea in the meeting: how do people feel about having separate versioning for plugin API? Like every time we have a breaking change, we bump the plugin API version, so that plugin authors can check it and give a better error message instead of crashing.

@ilevkivskyi
Copy link
Member Author

One other change to get in for 1.0 we didn't mention: show error codes by default #13542

FWIW I like this idea, @JukkaL what do you think?

@JukkaL
Copy link
Collaborator

JukkaL commented Sep 27, 2022

FWIW I like this idea, @JukkaL what do you think?

Showing error codes by default sounds good to me. We probably still give the misc error code too often still, and we may want to switch some of them to non-misc error codes. At least the most common messages probably have reasonable error codes already, so the breakage from tweaking error codes in the future is probably acceptable.

@cdce8p
Copy link
Collaborator

cdce8p commented Nov 9, 2022

It might make sense to change the default branch name to main, now that most repos in the python space are doing so as well (e.g. cpython, typeshed and others). Opened #13985 with more details.

@ilevkivskyi
Copy link
Member Author

It looks like 1.0 is coming closer and closer. I think we should aim to release 1.0 in first half of December. Overall it looks quite good in terms of 3.11 support and fixing crashes and top bugs. Few questions:

  • @ethanhs Do you think you will have time to work on allowing/disallowing PEP 561 packages?
  • @JelleZijlstra Do you still want to implement the switch from join to union in ternary expressions?
  • @sobolevn Will you have time to finish the LiteralString support?

Thanks!

@sobolevn
Copy link
Member

sobolevn commented Nov 23, 2022

Yes!

Side question: during the last meeting we decided to have some regular calls.
What do you think about pre-holidays post-release chat and small zoom party? ;)
Should I organize it? (Upvote this post if you like this idea)

@JelleZijlstra
Copy link
Member

* @JelleZijlstra Do you still want to implement the switch from join to union in ternary expressions?

I think it should be done but I probably won't have time to work on it.

@yedpodtrzitko
Copy link
Contributor

hi,
is there any plan to fix #10768 or eventually address #10600 in 1.0?

@ilevkivskyi
Copy link
Member Author

I think there are no specific plans on these.

@ethanhs
Copy link
Collaborator

ethanhs commented Nov 25, 2022

@ethanhs Do you think you will have time to work on allowing/disallowing PEP 561 packages?

I will try to work on this tomorrow/this weekend. If I don't get to it then, I probably will not have time to work on it for a while.

@ilevkivskyi
Copy link
Member Author

@Michael0x2a It is almost December, so to be able to release mypy before holidays, I think you should start working on internal mypy pin move at Dropbox now (if you didn't already). This may discover some bugs/regressions that we will need to fix. Also please feel free to assign me to any issue caused by one of my PRs (but even if it is not my, I can still take a look).

@JukkaL
Copy link
Collaborator

JukkaL commented Jan 31, 2023

I wouldn't include dataclass_transform in 1.0, since the implementation is still incomplete and we haven't had much time to play around with it.

The bug fixes seem good to include. Also fixing #14565 would be nice but I agree that we don't need to block the release on it.

@JukkaL
Copy link
Collaborator

JukkaL commented Jan 31, 2023

I'll try to have a look at #14150 soon to decide if we should include it in 1.0. I'm on the fence about including it at the last minute, since it's quite a big change, but on the other hand if we'd have it, the overall performance improvement in 1.0 would be more impressive.

@hauntsaninja
Copy link
Collaborator

hauntsaninja commented Feb 3, 2023

I just cherry picked a bunch of docs changes onto the release branch (and one testing change)

@ilinum
Copy link
Collaborator

ilinum commented Feb 3, 2023

We believe we have all of the necessary changes in the release-1.0 branch (speak now if you know that's not the case). We'll aim to release early next week.

@ilinum
Copy link
Collaborator

ilinum commented Feb 6, 2023

mypy 1.0.0 has been released (blog post)!

If we need to do any point releases for bugfixes, I will announce it on this issue.

@ilinum ilinum closed this as completed Feb 6, 2023
@JohnVillalovos
Copy link

JohnVillalovos commented Feb 6, 2023

Just tried it and ran it and got an error when I tried it on the python-gitlab project:

python-gitlab/python-gitlab#2481

Logfile: https://github.com/python-gitlab/python-gitlab/actions/runs/4107691730/jobs/7087478909

.tox/mypy/lib64/python3.10/site-packages/mypy/typeshed/stdlib/unittest/mock.pyi: error: Source file found twice under different module names: "unittest.mock" and "mypy.typeshed.stdlib.unittest.mock"
Found 1 error in 1 file (errors prevented further checking)

@hauntsaninja
Copy link
Collaborator

@JohnVillalovos thanks for the report. Please report any problems you encounter in new issues.

With that said, your issue isn't anything to do with mypy 1.0.
It's caused by broken code in a third party package you use getsentry/responses#560 that was exposed by the change to always enable namespace packages in mypy 0.991. Please upgrade to responses>=0.22.0.

@intgr
Copy link
Contributor

intgr commented Feb 7, 2023

Ping @ymyzk, please add to mypy-play.net :)

@ymyzk
Copy link

ymyzk commented Feb 7, 2023

Thanks for the heads-up, @intgr. mypy-play.net now supports mypy 1.0.0

Congratulations to everyone who made the 1.0.0 release possible. 🎉

@hauntsaninja
Copy link
Collaborator

hauntsaninja commented Feb 7, 2023

Here's a list of reported issues thus far, in priority order, that would be worth fixing in a patch release:

@ilevkivskyi
Copy link
Member Author

I can look at the first and the third later this week (If no one else does it before).

@hauntsaninja
Copy link
Collaborator

hauntsaninja commented Feb 8, 2023

I looked at the first, should be an easy fix (on the lines of some other fix you made recently)

Edit: PR here #14642

@ilinum
Copy link
Collaborator

ilinum commented Feb 8, 2023

Reopening for the bugfix release. I think we should wait a few more days in case more bugs surface.

I've sent out the PR #14646 to fix the used-before-def issue above.

@ilinum
Copy link
Collaborator

ilinum commented Feb 9, 2023

Is #14580 something we want to cherry-pick (given that it fixes a regression -- #14629)? That PR is pretty big, so it's unclear to me if it's worth fixing this issue considering the risk of new errors from a large PR.

@AlexWaygood
Copy link
Member

#14629 is a regression in the "user experience" of mypy, in that mypy now emits a false-positive error on code where it previously didn't. But strictly speaking this speaks to the absence of a feature in mypy 1.0, rather than a regression in mypy's functionality. The reason why mypy now emits an error on that code when it didn't previously is because mypy previously had no understanding of dataclass_transform at all. In version 1.0, mypy now has some understanding of dataclass_transform, just not an understanding that's quite sophisticated enough for the code in #14629.

@wesleywright
Copy link
Collaborator

wesleywright commented Feb 9, 2023

#14580 will also cause new false-negatives and false-positives because field_specifiers is not yet implemented. I'm working on that now, but these are big, featureful changes so I'm not sure whether they're fitting for a fix release (and also not sure how they would align with this timeline).

@hauntsaninja
Copy link
Collaborator

+1, we should not cherry pick it. Note that while #14629 has a new error, overall mypy 1.0 will complain less about the code in their example (e.g. mypy will let them instantiate their objects now)

@JukkaL
Copy link
Collaborator

JukkaL commented Feb 13, 2023

Another potential PR to cherry-pick (very safe since this is a test-only change):

@ilinum
Copy link
Collaborator

ilinum commented Feb 16, 2023

Looks like most of the important fixes are in and cherry-picked to release-1.0 branch. I'll make a 1.0.1 release tomorrow, unless anyone objects.

@ilinum
Copy link
Collaborator

ilinum commented Feb 17, 2023

mypy 1.0.1 has been released with the latest commit from release-1.0 branch!

Going to close this issue and will reopen if we need to do another point release (although hopefully not :P).

@ilinum ilinum closed this as completed Feb 17, 2023
br3ndonland added a commit to br3ndonland/fastenv that referenced this issue Feb 26, 2023
This commit will update to mypy 1. In the past, releases were managed by
Dropbox (python/mypy#12210), and were done at infrequent intervals. They
plan to release more regularly in the future.

Mypy does not keep a changelog, but did provide a 1.0 release blog post:
https://mypy-lang.blogspot.com/2023/02/mypy-10-released.html

A changelog has been requested (python/mypy#2859, python/mypy#13279),
but has been dismissed because "you can view the git history easily."

The new release versioning scheme is in the format `major.minor.patch`,
but is not SemVer-compliant, as explained in their blog post and wiki.
https://github.com/python/mypy/wiki/Release-Process

The update to mypy 1 was postponed until bug fixes were available in the
1.0.1 patch release (python/mypy#13685).
br3ndonland added a commit to br3ndonland/inboard that referenced this issue Feb 26, 2023
This commit will update to mypy 1. In the past, releases were managed by
Dropbox (python/mypy#12210), and were done at infrequent intervals. They
plan to release more regularly in the future.

Mypy does not keep a changelog, but did provide a 1.0 release blog post:
https://mypy-lang.blogspot.com/2023/02/mypy-10-released.html

A changelog has been requested (python/mypy#2859, python/mypy#13279),
but has been dismissed because "you can view the git history easily."

The new release versioning scheme is in the format `major.minor.patch`,
but is not SemVer-compliant, as explained in their blog post and wiki.
https://github.com/python/mypy/wiki/Release-Process

The update to mypy 1 was postponed until bug fixes were available in the
1.0.1 patch release (python/mypy#13685).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta Issues tracking a broad area of work priority-0-high
Projects
None yet
Development

No branches or pull requests