{"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:1726758669.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"d7b65137b144be0bf919513a384fa321c253c88e","ref":"refs/heads/fix-generic-crash","pushedAt":"2024-09-19T15:11:09.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 crash on invalid type var reference","shortMessageHtmlLink":"[PEP 695] Fix crash on invalid type var reference"}},{"before":null,"after":"9ae3b3059cb7ad19744e0cbed7308d179755c462","ref":"refs/heads/variance-inherited","pushedAt":"2024-09-19T13:56:19.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] Inherit variance if base class has explicit variance\n\nPreviously we only inferred variance based on member types, but\nif a base class has explicit variance for some type variables, we\nneed to consider it as well.","shortMessageHtmlLink":"[PEP 695] Inherit variance if base class has explicit variance"}},{"before":null,"after":"5cc88e88f3cde20bce0b3897c400ad3de365ef3f","ref":"refs/heads/variance-self-type","pushedAt":"2024-09-19T13:14:51.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] Allow Self return types with contravariance\n\nFix variance inference in this fragment from a typing conformance test:\n```\nclass ClassA[T1, T2, T3](list[T1]):\n def method1(self, a: T2) -> None:\n ...\n\n def method2(self) -> T3:\n ...\n```\n\nPreviously T2 was incorrectly inferred as invariant due to `list` having\nmethods that return `Self`. Be more flexible with return types to allow\ninferring contravariance for type variables even if there are `Self` return\ntypes, in particular.\n\nWe could probably make this even more lenient, but after thinking about\nthis for a while, I wasn't sure what the most general rule would be, so\nI decided to just make a tweak to support the likely most common use case\n(which is probably actually not that common either).\n\nLink to conformance test:\nhttps://github.com/python/typing/blob/main/conformance/tests/generics_variance_inference.py#L15C1-L20C12","shortMessageHtmlLink":"[PEP 695] Allow Self return types with contravariance"}},{"before":"9d7a04277ebb5edcfe649977fb5bb45ac91573f6","after":"4554bd0c6d49506a4a1c77dcf344dca4efee92e1","ref":"refs/heads/master","pushedAt":"2024-09-18T21:22:06.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":"Added error code for overlapping function signatures (#17597)\n\nCloses #17570. This is my first contribution to mypy! 🐍 \r\nAdded an error code for overlapping function signatures.\r\nTest in check-errorcodes.test is a derivative of this post:\r\nhttps://stackoverflow.com/q/69341607\r\n\r\nCo-authored-by: Jelle Zijlstra \r\nCo-authored-by: Alex Waygood ","shortMessageHtmlLink":"Added error code for overlapping function signatures (#17597)"}},{"before":"4a479dd4efd6d7ae2d559bc236ed9ba8cb715012","after":null,"ref":"refs/heads/variance-dataclass","pushedAt":"2024-09-18T13:42:28.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":"fce14a0284b2c32d373cee57c9ed06f764769d93","after":"9d7a04277ebb5edcfe649977fb5bb45ac91573f6","ref":"refs/heads/master","pushedAt":"2024-09-18T13:42:25.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 covariance of frozen dataclasses (#17783)\n\nFix this conformance test:\r\n```\r\n@dataclass(frozen=True)\r\nclass ShouldBeCovariant4[T]:\r\n x: T\r\n\r\nvo4_1: ShouldBeCovariant4[float] = ShouldBeCovariant4[int](1) # OK\r\nvo4_2: ShouldBeCovariant4[int] = ShouldBeCovariant4[float](1) # E\r\n```\r\nLink:\r\n\r\nhttps://github.com/python/typing/blob/main/conformance/tests/generics_variance_inference.py#L66","shortMessageHtmlLink":"[PEP 695] Fix covariance of frozen dataclasses (#17783)"}},{"before":"7961bd006262e1e8f399cadfb3add43785d554f6","after":null,"ref":"refs/heads/variance-underscore","pushedAt":"2024-09-18T13:42: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":"a47f301fc8f3fb71b0a4b4998c74f9a5b326db08","after":"fce14a0284b2c32d373cee57c9ed06f764769d93","ref":"refs/heads/master","pushedAt":"2024-09-18T13:42: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] Allow covariance with attribute that has \"_\" name prefix (#17782)\n\nFix this conformance test:\r\n```\r\nclass ShouldBeCovariant5[T]:\r\n def __init__(self, x: T) -> None:\r\n self._x = x\r\n\r\n @property\r\n def x(self) -> T:\r\n return self._x\r\n\r\nvo5_1: ShouldBeCovariant5[float] = ShouldBeCovariant5[int](1) # OK\r\nvo5_2: ShouldBeCovariant5[int] = ShouldBeCovariant5[float](1) # E\r\n```\r\n\r\nMy fix is to treat such attributes as not settable when inferring\r\nvariance.\r\n\r\nLink:\r\n\r\nhttps://github.com/python/typing/blob/main/conformance/tests/generics_variance_inference.py#L79","shortMessageHtmlLink":"[PEP 695] Allow covariance with attribute that has \"_\" name prefix (#…"}},{"before":null,"after":"4a479dd4efd6d7ae2d559bc236ed9ba8cb715012","ref":"refs/heads/variance-dataclass","pushedAt":"2024-09-18T13:04:33.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 covariance of frozen dataclasses\n\nFix this conformance test:\n```\n@dataclass(frozen=True)\nclass ShouldBeCovariant4[T]:\n x: T\n\nvo4_1: ShouldBeCovariant4[float] = ShouldBeCovariant4[int](1) # OK\nvo4_2: ShouldBeCovariant4[int] = ShouldBeCovariant4[float](1) # E\n```\nLink:\nhttps://github.com/python/typing/blob/main/conformance/tests/generics_variance_inference.py#L66","shortMessageHtmlLink":"[PEP 695] Fix covariance of frozen dataclasses"}},{"before":null,"after":"7961bd006262e1e8f399cadfb3add43785d554f6","ref":"refs/heads/variance-underscore","pushedAt":"2024-09-18T12:37:00.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] Allow covariance with attribute that has \"_\" name prefix\n\nFix this conformance test:\n```\nclass ShouldBeCovariant5[T]:\n def __init__(self, x: T) -> None:\n self._x = x\n\n @property\n def x(self) -> T:\n return self._x\n\nvo5_1: ShouldBeCovariant5[float] = ShouldBeCovariant5[int](1) # OK\nvo5_2: ShouldBeCovariant5[int] = ShouldBeCovariant5[float](1) # E\n```\n\nMy fix is to treat such attributes a not settable when inferring variance.\n\nLink:\nhttps://github.com/python/typing/blob/main/conformance/tests/generics_variance_inference.py#L79","shortMessageHtmlLink":"[PEP 695] Allow covariance with attribute that has \"_\" name prefix"}},{"before":"12aad040aa25a3be90e16547cdd23aef7c3c1fe3","after":null,"ref":"refs/heads/type-alias-annotated","pushedAt":"2024-09-18T11:31:31.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":"f68f76d7ab7a5a6277a47fbadd6012ddd16ea731","after":"a47f301fc8f3fb71b0a4b4998c74f9a5b326db08","ref":"refs/heads/master","pushedAt":"2024-09-18T11:31:29.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] Support Annotated[...] in new-style type aliases (#17777)\n\nThe rvalue expression isn't semantically analyzed, so we can't rely on\r\nthe `fullname` attribute to check if there is a reference to\r\n`Annotated`. Instead, use a lookup function provided by the caller to\r\ndetermine the fullname.\r\n\r\nError reporting in the second argument to `Annotated` is still\r\ninconsistent, but this seems lower priority. I'll create a follow-up\r\nissue about (or update an existing issue if one exists).\r\n\r\nFixes #17751.","shortMessageHtmlLink":"[PEP 695] Support Annotated[...] in new-style type aliases (#17777)"}},{"before":"713a2b11bc8917add7f5b1b9caddf7386275269d","after":"12aad040aa25a3be90e16547cdd23aef7c3c1fe3","ref":"refs/heads/type-alias-annotated","pushedAt":"2024-09-18T11:26:24.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"JukkaL","name":"Jukka Lehtosalo","path":"/JukkaL","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1107911?s=80&v=4"},"commit":{"message":"Merge branch 'master' into type-alias-annotated","shortMessageHtmlLink":"Merge branch 'master' into type-alias-annotated"}},{"before":"5c4cbd2bc24e1310ac9e818ced1524e5c76b210f","after":null,"ref":"refs/heads/generics-nested-class","pushedAt":"2024-09-18T11:22:23.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":"5c38427a53f409bae068c314e119fecc77730d76","after":"f68f76d7ab7a5a6277a47fbadd6012ddd16ea731","ref":"refs/heads/master","pushedAt":"2024-09-18T11:22:21.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 nested generic classes (#17776)\n\nThere was confusion about the fullnames of type variables in nested\r\ngeneric classes. A type variable could be defined internally as\r\n`m.OuterClass.T`, but it was sometimes accessed as `m.T`. The root cause\r\nwas that the semantic analyzer didn't initialize the attribute that\r\nrefers to the enclosing class consistently.\r\n\r\nFixes #17596. Fixes #17630.","shortMessageHtmlLink":"[PEP 695] Fix nested generic classes (#17776)"}},{"before":null,"after":"713a2b11bc8917add7f5b1b9caddf7386275269d","ref":"refs/heads/type-alias-annotated","pushedAt":"2024-09-17T15:40:14.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] Support Annotated[...] in new-style type aliases\n\nThe rvalue expression isn't semantically analyzed, so we can't rely\non the `fullname` attribute to check if there is a reference to\n`Annotated`. Instead, use a lookup function provided by the caller\nto determine the fullname.\n\nFixes #17751.","shortMessageHtmlLink":"[PEP 695] Support Annotated[...] in new-style type aliases"}},{"before":null,"after":"5c4cbd2bc24e1310ac9e818ced1524e5c76b210f","ref":"refs/heads/generics-nested-class","pushedAt":"2024-09-17T12:31:03.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":"Add daemon test case","shortMessageHtmlLink":"Add daemon test case"}},{"before":"774d8c70381327bdd57333fe79da5c1b5823d5fd","after":null,"ref":"refs/heads/issue-17769","pushedAt":"2024-09-15T22:46:10.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hauntsaninja","name":"Shantanu","path":"/hauntsaninja","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12621235?s=80&v=4"}},{"before":"77919cfdd11340a7965fb3c850b5cd19bb0e289a","after":"5c38427a53f409bae068c314e119fecc77730d76","ref":"refs/heads/master","pushedAt":"2024-09-15T22:46:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hauntsaninja","name":"Shantanu","path":"/hauntsaninja","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12621235?s=80&v=4"},"commit":{"message":"Check for `truthy-bool` in `not ...` unary expressions (#17773)\n\nCloses https://github.com/python/mypy/issues/17769","shortMessageHtmlLink":"Check for truthy-bool in not ... unary expressions (#17773)"}},{"before":"8b1e6064928bdb173822df639a73c8cbac0845ec","after":"77919cfdd11340a7965fb3c850b5cd19bb0e289a","ref":"refs/heads/master","pushedAt":"2024-09-15T22:45:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hauntsaninja","name":"Shantanu","path":"/hauntsaninja","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12621235?s=80&v=4"},"commit":{"message":"Add missing lines-covered and lines-valid attributes (#17738)\n\nThis PR resolves an issue where the Cobertura XML report generated by\r\nMyPy was missing the lines-covered and lines-valid attributes in the\r\n element.\r\n\r\nChanges made:\r\n\r\n- Added the lines-covered and lines-valid attributes to the \r\nelement in the Cobertura XML report.\r\n- Updated the CoberturaReportSuite test suite to validate that these\r\nattributes are correctly included in the generated XML.\r\n\r\nFixes #17689","shortMessageHtmlLink":"Add missing lines-covered and lines-valid attributes (#17738)"}},{"before":"f8195bc735e4a4a424a863fd9e40b2448f79d616","after":"8b1e6064928bdb173822df639a73c8cbac0845ec","ref":"refs/heads/master","pushedAt":"2024-09-15T22:44:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hauntsaninja","name":"Shantanu","path":"/hauntsaninja","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12621235?s=80&v=4"},"commit":{"message":"Make changelog visible in mypy documentation (#17742)\n\nResolves #17717","shortMessageHtmlLink":"Make changelog visible in mypy documentation (#17742)"}},{"before":"e475679f6632cc54fda3e3e976c39b4b2135315f","after":null,"ref":"refs/heads/mypybot/sync-typeshed","pushedAt":"2024-09-15T22:39:26.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"JelleZijlstra","name":"Jelle Zijlstra","path":"/JelleZijlstra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/906600?s=80&v=4"}},{"before":"72c413d2352da5ce1433ef241faca8f40fa1fe27","after":"f8195bc735e4a4a424a863fd9e40b2448f79d616","ref":"refs/heads/master","pushedAt":"2024-09-15T22:39:24.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":"Sync typeshed (#17772)\n\n\r\nSource commit:\r\n\r\nhttps://github.com/python/typeshed/commit/9e506eb5e8fc2823db8c60ad561b1145ff114947","shortMessageHtmlLink":"Sync typeshed (#17772)"}},{"before":null,"after":"774d8c70381327bdd57333fe79da5c1b5823d5fd","ref":"refs/heads/issue-17769","pushedAt":"2024-09-15T06:19:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"sobolevn","name":null,"path":"/sobolevn","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4660275?s=80&v=4"},"commit":{"message":"Check for `truthy-bool` in `not ...` unary expressions","shortMessageHtmlLink":"Check for truthy-bool in not ... unary expressions"}},{"before":null,"after":"e475679f6632cc54fda3e3e976c39b4b2135315f","ref":"refs/heads/mypybot/sync-typeshed","pushedAt":"2024-09-15T00:06:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Revert typeshed ctypes change Since the plugin provides superior type checking: https://github.com/python/mypy/pull/13987#issuecomment-1310863427 A manual cherry-pick of e437cdf.","shortMessageHtmlLink":"Revert typeshed ctypes change Since the plugin provides superior type…"}},{"before":"0c1036717578b00e35625cc353a538e4eb63bc37","after":"72c413d2352da5ce1433ef241faca8f40fa1fe27","ref":"refs/heads/master","pushedAt":"2024-09-12T14:26:36.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":"stubgen: Use `Generator` type var defaults (#17670)\n\nFixes #17669","shortMessageHtmlLink":"stubgen: Use Generator type var defaults (#17670)"}},{"before":"0412590ba13395a04f122a5dd83764db9d001fe6","after":"0c1036717578b00e35625cc353a538e4eb63bc37","ref":"refs/heads/master","pushedAt":"2024-09-07T20:42:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hauntsaninja","name":"Shantanu","path":"/hauntsaninja","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12621235?s=80&v=4"},"commit":{"message":"Use newer Python in docs build (#17747)\n\nHelps with #17742","shortMessageHtmlLink":"Use newer Python in docs build (#17747)"}},{"before":"0ca47e8db3240d56b93eb75337b2393a09306dd6","after":"0412590ba13395a04f122a5dd83764db9d001fe6","ref":"refs/heads/master","pushedAt":"2024-09-02T13:26:54.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":"[nit] conf.py: annotate the type, instead of ignoring the error (#17727)\n\nThere was a type-ignore here. But we can simply do what mypy is asking\r\nus to do; in fact, the comment even already tells us these have to be\r\nstrings, (like the other arrays).","shortMessageHtmlLink":"[nit] conf.py: annotate the type, instead of ignoring the error (#17727)"}},{"before":"1c8324b0de72c3d136a29fec72ef8e9ced3975f5","after":null,"ref":"refs/heads/mypybot/sync-typeshed","pushedAt":"2024-09-01T07:27:58.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"JelleZijlstra","name":"Jelle Zijlstra","path":"/JelleZijlstra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/906600?s=80&v=4"}},{"before":"0a6d40b125f6b353621016d8a9022212104f7877","after":"0ca47e8db3240d56b93eb75337b2393a09306dd6","ref":"refs/heads/master","pushedAt":"2024-09-01T07:27:57.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":"Sync typeshed (#17729)\n\n\r\nSource commit:\r\n\r\nhttps://github.com/python/typeshed/commit/23d867efb2df6de5600f64656f1aa8a83e06109e\r\n\r\nNote that you will need to close and re-open the PR in order to trigger\r\nCI.\r\n\r\n---------\r\n\r\nCo-authored-by: mypybot <>\r\nCo-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>\r\nCo-authored-by: AlexWaygood ","shortMessageHtmlLink":"Sync typeshed (#17729)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xOVQxNToxMTowOS4wMDAwMDBazwAAAAS7BExp","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xOVQxNToxMTowOS4wMDAwMDBazwAAAAS7BExp","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wMVQwNzoyNzo1Ny4wMDAwMDBazwAAAASpt-jw"}},"title":"Activity · python/mypy"}