{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":7053637,"defaultBranch":"master","name":"mypy","ownerLogin":"python","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2012-12-07T13:30:23.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1525981?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1718039085.0","currentOid":""},"activityList":{"items":[{"before":"4fa4657d7d9e41b5b3b7ae093ccdc360ce6e1b95","after":"317533c5589c5778bad4dbf3b0205974491debac","ref":"refs/heads/master","pushedAt":"2024-06-10T22:09:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ilevkivskyi","name":"Ivan Levkivskyi","path":"/ilevkivskyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12005495?s=80&v=4"},"commit":{"message":"Fix crash on TypedDict unpacking for ParamSpec (#17358)\n\nFixes https://github.com/python/mypy/issues/17345\r\nFixes https://github.com/python/mypy/issues/17112\r\nFixes https://github.com/python/mypy/issues/16616\r\n\r\nOh well, I clearly remember I have put those lines before `if` only\r\nbecause otherwise the line would be 101 chars long, and I didn't want to\r\nwrap arguments. Now I see it was a bad idea, LOL.\r\n\r\n---------\r\n\r\nCo-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Fix crash on TypedDict unpacking for ParamSpec (#17358)"}},{"before":"6427da62add428d452f690aabbb6c272ff713710","after":"4fa4657d7d9e41b5b3b7ae093ccdc360ce6e1b95","ref":"refs/heads/master","pushedAt":"2024-06-10T19:40:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ilevkivskyi","name":"Ivan Levkivskyi","path":"/ilevkivskyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12005495?s=80&v=4"},"commit":{"message":"Fix type application for classes with generic constructors (#17354)\n\nFixes https://github.com/python/mypy/issues/17212\r\n\r\nNote I removed the problematic asset after all. It is hard to maintain\r\nit, since this function may be called from both explicit application,\r\nand from type inference code paths. And these two cases may have\r\ndifferent min/max type argument count (see tests and comments for\r\nexamples).","shortMessageHtmlLink":"Fix type application for classes with generic constructors (#17354)"}},{"before":"83d54ffb01af9cba76a36d2ec0938acc7dfa2197","after":"6427da62add428d452f690aabbb6c272ff713710","ref":"refs/heads/master","pushedAt":"2024-06-10T19:12:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ilevkivskyi","name":"Ivan Levkivskyi","path":"/ilevkivskyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12005495?s=80&v=4"},"commit":{"message":"Properly handle unpacks in overlap checks (#17356)\n\nFixes https://github.com/python/mypy/issues/17319\r\n\r\nThis is still not 100% robust, but at least it should not crash, and\r\nshould cover correctly vast majority of cases.","shortMessageHtmlLink":"Properly handle unpacks in overlap checks (#17356)"}},{"before":"5ae9e69480985d5eba423b718c675ea8714ac66c","after":"83d54ffb01af9cba76a36d2ec0938acc7dfa2197","ref":"refs/heads/master","pushedAt":"2024-06-10T19:11:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ilevkivskyi","name":"Ivan Levkivskyi","path":"/ilevkivskyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12005495?s=80&v=4"},"commit":{"message":"Use polymorphic inference in unification (#17348)\n\nMoving towards https://github.com/python/mypy/issues/15907\r\nFixes https://github.com/python/mypy/issues/17206\r\n\r\nThis PR enables polymorphic inference during unification. This will\r\nallow us to handle even more tricky situations involving generic\r\nhigher-order functions (see a random example I added in tests).\r\nImplementation is mostly straightforward, few notes:\r\n* This uncovered another issue with unions in solver, unfortunately\r\ncurrent constraint inference algorithm can sometimes infer weird\r\nconstraints like `T <: Union[T, int]`, that later confuse the solver.\r\n* This uncovered another possible type variable clash scenario that was\r\nnot handled properly. In overloaded generic function, each overload\r\nshould have a different namespace for type variables (currently they all\r\njust get function name). I use `module.some_func#0` etc. for overloads\r\nnamespaces instead.\r\n* Another thing with overloads is that the switch caused unsafe overlap\r\ncheck to change: after some back and forth I am keeping it mostly the\r\nsame to avoid possible regressions (unfortunately this requires some\r\nextra refreshing of type variables).\r\n* This makes another `ParamSpec` crash to happen more often so I fix it\r\nin this same PR.\r\n* Finally this uncovered a bug in handling of overloaded `__init__()`\r\nthat I am fixing here as well.\r\n\r\n---------\r\n\r\nCo-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Use polymorphic inference in unification (#17348)"}},{"before":null,"after":"09445666f91aeac8618290922549c58b3364598e","ref":"refs/heads/mypyc-type-var-syntax","pushedAt":"2024-06-10T17:04:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"Update test case","shortMessageHtmlLink":"Update test case"}},{"before":"7c391ddb2f72833822309e5baef1ab533b149e1b","after":"5ae9e69480985d5eba423b718c675ea8714ac66c","ref":"refs/heads/master","pushedAt":"2024-06-09T22:32:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ilevkivskyi","name":"Ivan Levkivskyi","path":"/ilevkivskyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12005495?s=80&v=4"},"commit":{"message":"Fix crash involving recursive union of tuples (#17353)\n\nFixes https://github.com/python/mypy/issues/17236\r\n\r\nIt turns out we were calculating tuple fallbacks where we don't really\r\nneed to. We can rely on the fact that tuple fallback is trivial for\r\nnon-trivial partial fallbacks to simplify the logic and avoid the\r\ninfinite recursion.","shortMessageHtmlLink":"Fix crash involving recursive union of tuples (#17353)"}},{"before":"09e6a2bea4cb4a523791220b37b5c664db895760","after":"7c391ddb2f72833822309e5baef1ab533b149e1b","ref":"refs/heads/master","pushedAt":"2024-06-09T20:33:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ilevkivskyi","name":"Ivan Levkivskyi","path":"/ilevkivskyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12005495?s=80&v=4"},"commit":{"message":"Fix crash on invalid callable property override (#17352)\n\nFixes https://github.com/python/mypy/issues/16896\r\n\r\nFix is simple, do not assume that an error context given by the caller\r\nof the override check for callable type is a method defining such type,\r\nbecause it may be a property.","shortMessageHtmlLink":"Fix crash on invalid callable property override (#17352)"}},{"before":"428a0354867911ef9666266bb060ce6d1d203e5a","after":"09e6a2bea4cb4a523791220b37b5c664db895760","ref":"refs/heads/master","pushedAt":"2024-06-09T20:04:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ilevkivskyi","name":"Ivan Levkivskyi","path":"/ilevkivskyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12005495?s=80&v=4"},"commit":{"message":"Fix crash on unpacking self in NamedTuple (#17351)\n\nFixes https://github.com/python/mypy/issues/17010\r\n\r\nFix is trivial: replicate the `TypeVar` handling logic in the caller.","shortMessageHtmlLink":"Fix crash on unpacking self in NamedTuple (#17351)"}},{"before":"3518f2499f5677792888bc97484cc53404472fca","after":"428a0354867911ef9666266bb060ce6d1d203e5a","ref":"refs/heads/master","pushedAt":"2024-06-09T19:50:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ilevkivskyi","name":"Ivan Levkivskyi","path":"/ilevkivskyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12005495?s=80&v=4"},"commit":{"message":"Fix crash on recursive alias with an optional type (#17350)\n\nFixes https://github.com/python/mypy/issues/17132\r\n\r\nFix is trivial, we don't need that extra `get_proper_type()`.\r\n\r\n---------\r\n\r\nCo-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Fix crash on recursive alias with an optional type (#17350)"}},{"before":"8dd268ffd84ccf549b3aa9105dd35766a899b2bd","after":"3518f2499f5677792888bc97484cc53404472fca","ref":"refs/heads/master","pushedAt":"2024-06-08T19:01:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ilevkivskyi","name":"Ivan Levkivskyi","path":"/ilevkivskyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12005495?s=80&v=4"},"commit":{"message":"Move apply_type() to applytype.py (#17346)\n\nMoving towards https://github.com/python/mypy/issues/15907\r\n\r\nThis is a pure refactoring. It was surprisingly easy, this didn't add\r\nnew import cycles, because there is already (somewhat fundamental) cycle\r\n`applytype.py` <-> `subtypes.py`.","shortMessageHtmlLink":"Move apply_type() to applytype.py (#17346)"}},{"before":"516e1bb6eb5418fb2be5b774f53867620e03baab","after":"ff1c839d1566edcb6af8ffdc2783cfe60c2368dd","ref":"refs/heads/type-var-syntax-error-checks","pushedAt":"2024-06-06T12:05:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"Attempt to work around mypyc error","shortMessageHtmlLink":"Attempt to work around mypyc error"}},{"before":"21834c5b1c0a9af0e6744a42ed20e0c54d94d5ce","after":"516e1bb6eb5418fb2be5b774f53867620e03baab","ref":"refs/heads/type-var-syntax-error-checks","pushedAt":"2024-06-06T11:24:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"Black","shortMessageHtmlLink":"Black"}},{"before":null,"after":"21834c5b1c0a9af0e6744a42ed20e0c54d94d5ce","ref":"refs/heads/type-var-syntax-error-checks","pushedAt":"2024-06-06T11:22:42.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"Black","shortMessageHtmlLink":"Black"}},{"before":"09c48a4d9da2b0d8bf5ce116ca35d51a46c415f2","after":"8dd268ffd84ccf549b3aa9105dd35766a899b2bd","ref":"refs/heads/master","pushedAt":"2024-06-06T10:43:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"[PEP 695] Fix handling of undefined name in generic function annotation (#17338)\n\nThis was generating a false positive.\r\n\r\nWork on #15238.","shortMessageHtmlLink":"[PEP 695] Fix handling of undefined name in generic function annotati…"}},{"before":"dc3103b92a48b2c8ef2643f7430cb46cb8586be3","after":null,"ref":"refs/heads/type-var-syntax-undefined","pushedAt":"2024-06-06T10:43:12.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"}},{"before":null,"after":"dc3103b92a48b2c8ef2643f7430cb46cb8586be3","ref":"refs/heads/type-var-syntax-undefined","pushedAt":"2024-06-06T10:19:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"[PEP 695] Fix handling of undefined name in generic function annotation\n\nWork on #15238.","shortMessageHtmlLink":"[PEP 695] Fix handling of undefined name in generic function annotation"}},{"before":"919e69657508f21ae331a14668a88397ba444373","after":null,"ref":"refs/heads/mypyc-int-inline","pushedAt":"2024-06-06T09:35:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"}},{"before":"f989414d9db8c94268e593200ab94b4aec2cc3d3","after":"09c48a4d9da2b0d8bf5ce116ca35d51a46c415f2","ref":"refs/heads/master","pushedAt":"2024-06-06T09:35:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"[mypyc] Inline tagged integer arithmetic and bitwise operations (#17265)\n\nInline the fast path of various tagged integer operations by using C\r\ninline functions. Most of these operations are very quick, so getting \r\nrid of the overhead of a C call improves performance significantly. \r\nThis also enables the C compiler to optimize things more, if there \r\nare constant operands, for example.\r\n\r\nThis speeds up an older version of the richards benchmark, which didn't\r\nuse native integers, by 10% (on CPython 3.12). Even bigger \r\nimprovements are possible in some microbenchmarks.\r\n\r\nWe didn't do this in the past because of worries about compilation time.\r\nHowever, I couldn't measure an impact to self-compilation speed, and \r\nthe binary size is only increased by about 0.1%.\r\n\r\nWork on mypyc/mypyc#757.","shortMessageHtmlLink":"[mypyc] Inline tagged integer arithmetic and bitwise operations (#17265)"}},{"before":"7a22997e5700d8fb7a79c3aebc240610c41eaabc","after":null,"ref":"refs/heads/type-var-syntax-fix-crash","pushedAt":"2024-06-06T09:34:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"}},{"before":"668256364bc320a371e0a705436f1a700a724edc","after":"f989414d9db8c94268e593200ab94b4aec2cc3d3","ref":"refs/heads/master","pushedAt":"2024-06-06T09:34:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"[PEP 695] Don't crash when redefining something as a type alias (#17335)\n\nGenerate an error instead.\r\n\r\nWork on #15238.","shortMessageHtmlLink":"[PEP 695] Don't crash when redefining something as a type alias (#17335)"}},{"before":"6bdd854083604e4416123edf87a8f549356f783f","after":"668256364bc320a371e0a705436f1a700a724edc","ref":"refs/heads/master","pushedAt":"2024-06-05T22:11:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ilevkivskyi","name":"Ivan Levkivskyi","path":"/ilevkivskyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12005495?s=80&v=4"},"commit":{"message":"Use namespaces for function type variables (#17311)\n\nFixes https://github.com/python/mypy/issues/16582\r\n\r\nIMO this is long overdue. Currently, type variable IDs are 99% unique,\r\nbut when they accidentally clash, it causes hard to debug issues. The\r\nimplementation is generally straightforward, but it uncovered a whole\r\nbunch of unrelated bugs. Few notes:\r\n* This still doesn't fix the type variables in nested generic callable\r\ntypes (those that appear in return types of another generic callable).\r\nIt is non-trivial to put namespace there, and luckily this situation is\r\nalready special-cased in `checkexpr.py` to avoid ID clashes.\r\n* This uncovered a bug in overloaded dunder overrides handling, fix is\r\nsimple.\r\n* This also uncovered a deeper problem in unsafe overload overlap logic\r\n(w.r.t. partial parameters overlap). Here proper fix would be hard, so\r\ninstead I tweak current logic so it will not cause false positives, at a\r\ncost of possible false negatives.\r\n* This makes explicit that we use a somewhat ad-hoc logic for join/meet\r\nof generic callables. FWIW I decided to keep it, since it seems to work\r\nreasonably well.\r\n* This accidentally highlighted two bugs in error message locations. One\r\nvery old one related to type aliases, I fixed newly discovered cases by\r\nextending a previous partial fix. Second, the error locations generated\r\nby `partial` plugin were completely off (you can see examples in\r\n`mypy_primer` where there were errors on empty lines etc).\r\n* This PR (naturally) causes a significant amount of new valid errors\r\n(fixed false negatives). To improve the error messages, I extend the\r\nname disambiguation logic to include type variables (and also type\r\naliases, while I am at it), previously it only applied to `Instance`s.\r\nNote that I use a notation `TypeVar@namespace`, which is a semantic\r\nequivalent of qualified name for type variables. For now, I shorten the\r\nnamespace to only the last component, to make errors less verbose. We\r\ncan reconsider this if it causes confusion.\r\n* Finally, this PR will hopefully allow a more principled implementation\r\nof https://github.com/python/mypy/issues/15907\r\n\r\n---------\r\n\r\nCo-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Use namespaces for function type variables (#17311)"}},{"before":"ddcf90d1c43b078b8acc5a341074a1c9ab260569","after":"6bdd854083604e4416123edf87a8f549356f783f","ref":"refs/heads/master","pushedAt":"2024-06-05T21:32:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ilevkivskyi","name":"Ivan Levkivskyi","path":"/ilevkivskyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12005495?s=80&v=4"},"commit":{"message":"Do not forget that a `TypedDict` was wrapped in `Unpack` after a `name-defined` error occurred. (#17226)\n\nDo not set the `unpacked_kwargs` attribute of `CallableType` to False\r\nwhen visiting a callable of which the `Unpack` wrapper of a `TypedDict`\r\nhas already been removed.\r\n\r\nFixes #17225","shortMessageHtmlLink":"Do not forget that a TypedDict was wrapped in Unpack after a `nam…"}},{"before":null,"after":"7a22997e5700d8fb7a79c3aebc240610c41eaabc","ref":"refs/heads/type-var-syntax-fix-crash","pushedAt":"2024-06-05T15:51:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"Update test case","shortMessageHtmlLink":"Update test case"}},{"before":"bfc18e817f67a6c9056699ad32a67152e3ff85f0","after":null,"ref":"refs/heads/type-var-syntax-alias-nested","pushedAt":"2024-06-05T15:16:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"}},{"before":"fbaa7e0121a180051c28d72bf1ed73f5c3c3b947","after":"ddcf90d1c43b078b8acc5a341074a1c9ab260569","ref":"refs/heads/master","pushedAt":"2024-06-05T15:16:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"[PEP 695] Add tests for type alias in class body or function (#17334)\n\nWork on #15238.","shortMessageHtmlLink":"[PEP 695] Add tests for type alias in class body or function (#17334)"}},{"before":null,"after":"bfc18e817f67a6c9056699ad32a67152e3ff85f0","ref":"refs/heads/type-var-syntax-alias-nested","pushedAt":"2024-06-05T14:54:53.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"[PEP 695] Add tests for type alias in class body or function\n\nWork on #15238.","shortMessageHtmlLink":"[PEP 695] Add tests for type alias in class body or function"}},{"before":"618663f2394ec8b8edd2a09b0effff66906fa585","after":null,"ref":"refs/heads/type-var-syntax-8-alias-more","pushedAt":"2024-06-05T09:49:14.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"}},{"before":"ad0e180659f8bb1ef0c270045c655888b3b1223a","after":"fbaa7e0121a180051c28d72bf1ed73f5c3c3b947","ref":"refs/heads/master","pushedAt":"2024-06-05T09:49:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"[PEP 695] Add tests for type aliases with bounds and value restrictions (#17330)\n\nThe functionality already works, but there was missing test coverage.\r\n\r\nWork on #15238.","shortMessageHtmlLink":"[PEP 695] Add tests for type aliases with bounds and value restrictio…"}},{"before":"16d5aaf7f7f1e7f267c0a51924f6ca53ac5abe99","after":"ad0e180659f8bb1ef0c270045c655888b3b1223a","ref":"refs/heads/master","pushedAt":"2024-06-04T19:38:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"JelleZijlstra","name":"Jelle Zijlstra","path":"/JelleZijlstra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/906600?s=80&v=4"},"commit":{"message":"Fix false positive for Final local scope variable in Protocol (#17308)\n\nThis PR fixes and closes #17281 ,which reported a false positive when\r\nusing Final within the local function scope of a protocol method.\r\n\r\nWith these changes:\r\n- Local variables within protocol methods can be marked as Final.\r\n- Protocol members still cannot be marked as Final\r\n\r\nModified ``semanal.py`` file and added a unit test in\r\n``test-data/unit/check.final.test``\r\n\r\n---------\r\n\r\nCo-authored-by: Jelle Zijlstra \r\nCo-authored-by: Stanislav Terliakov","shortMessageHtmlLink":"Fix false positive for Final local scope variable in Protocol (#17308)"}},{"before":null,"after":"618663f2394ec8b8edd2a09b0effff66906fa585","ref":"refs/heads/type-var-syntax-8-alias-more","pushedAt":"2024-06-04T15:46:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"[PEP 695] Add tests for type aliases with bounds and value restrictions\n\nWork on #15238.","shortMessageHtmlLink":"[PEP 695] Add tests for type aliases with bounds and value restrictions"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEYZb2QQA","startCursor":null,"endCursor":null}},"title":"Activity · python/mypy"}