{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":524153874,"defaultBranch":"master","name":"mypy","ownerLogin":"svalentin","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2022-08-12T16:23:10.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/250871?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1715766502.0","currentOid":""},"activityList":{"items":[{"before":"35fbd2a852be2c47e8006429afe9b3ad4b1bfac2","after":"ac8a5a76d4944890b14da427b75d93c329c68003","ref":"refs/heads/master","pushedAt":"2024-05-20T11:25:38.000Z","pushType":"push","commitsCount":12,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"[mypyc] Allow specifying primitives as pure (#17263)\n\nPure primitives have no side effects, take only immutable arguments,\r\nand never fail. These properties will enable additional\r\noptimizations. For example, it doesn't matter in which order\r\nthese primitives are evaluated, and we can perform common\r\nsubexpression elimination on them.\r\n\r\nOnly mark a few primitives as pure for now, but we can generalize\r\nthis later.","shortMessageHtmlLink":"[mypyc] Allow specifying primitives as pure (python#17263)"}},{"before":"2aca8b0aae4b951a7db9530d27bfdf30209956f0","after":null,"ref":"refs/heads/dmypy-bug","pushedAt":"2024-05-15T09:48:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"}},{"before":null,"after":"2aca8b0aae4b951a7db9530d27bfdf30209956f0","ref":"refs/heads/dmypy-bug","pushedAt":"2024-05-14T22:04:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"[dmypy] sort list of files for update by extension\n\ndmypy receives the list of updated files via `--update` flag.\nIf this list contains both `foo.py` and `foo.pyi`, the order matters.\nIt seems to process the first file in the list first. But if we have a\n`.pyi` file, we want this to be processed first since this one contains\nthe typing information.\nLet's reverse sort the list of updated files by the extension. This\nshould be a simple enough fix to resolve this.","shortMessageHtmlLink":"[dmypy] sort list of files for update by extension"}},{"before":"400eece0731772b8c584bc335f13b08eee4e3b61","after":"35fbd2a852be2c47e8006429afe9b3ad4b1bfac2","ref":"refs/heads/master","pushedAt":"2024-05-14T21:53:01.000Z","pushType":"push","commitsCount":9,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Add Error format support, and JSON output option (#11396)\n\n### Description\r\n\r\nResolves #10816 \r\n\r\nThe changes this PR makes are relatively small.\r\nIt currently:\r\n- Adds an `--output` option to mypy CLI\r\n- Adds a `ErrorFormatter` abstract base class, which can be subclassed\r\nto create new output formats\r\n- Adds a `MypyError` class that represents the external format of a mypy\r\nerror.\r\n- Adds a check for `--output` being `'json'`, in which case the\r\n`JSONFormatter` is used to produce the reported output.\r\n\r\n#### Demo:\r\n\r\n```console\r\n$ mypy mytest.py \r\nmytest.py:2: error: Incompatible types in assignment (expression has type \"str\", variable has type \"int\")\r\nmytest.py:3: error: Name \"z\" is not defined\r\nFound 2 errors in 1 file (checked 1 source file)\r\n\r\n$ mypy mytest.py --output=json\r\n{\"file\": \"mytest.py\", \"line\": 2, \"column\": 4, \"severity\": \"error\", \"message\": \"Incompatible types in assignment (expression has type \\\"str\\\", variable has type \\\"int\\\")\", \"code\": \"assignment\"}\r\n{\"file\": \"mytest.py\", \"line\": 3, \"column\": 4, \"severity\": \"error\", \"message\": \"Name \\\"z\\\" is not defined\", \"code\": \"name-defined\"}\r\n```\r\n---\r\nA few notes regarding the changes:\r\n- I chose to re-use the intermediate `ErrorTuple`s created during error\r\nreporting, instead of using the more general `ErrorInfo` class, because\r\na lot of machinery already exists in mypy for sorting and removing\r\nduplicate error reports, which produces `ErrorTuple`s at the end. The\r\nerror sorting and duplicate removal logic could perhaps be separated out\r\nfrom the rest of the code, to be able to use `ErrorInfo` objects more\r\nfreely.\r\n- `ErrorFormatter` doesn't really need to be an abstract class, but I\r\nthink it would be better this way. If there's a different method that\r\nwould be preferred, I'd be happy to know.\r\n- The `--output` CLI option is, most probably, not added in the correct\r\nplace. Any help in how to do it properly would be appreciated, the mypy\r\noption parsing code seems very complex.\r\n- The ability to add custom output formats can be simply added by\r\nsubclassing the `ErrorFormatter` class inside a mypy plugin, and adding\r\na `name` field to the formatters. The mypy runtime can then check\r\nthrough the `__subclasses__` of the formatter and determine if such a\r\nformatter is present.\r\nThe \"checking for the `name` field\" part of this code might be\r\nappropriate to add within this PR itself, instead of hard-coding\r\n`JSONFormatter`. Does that sound like a good idea?\r\n\r\n---------\r\n\r\nCo-authored-by: Tushar Sadhwani <86737547+tushar-deepsource@users.noreply.github.com>\r\nCo-authored-by: Tushar Sadhwani ","shortMessageHtmlLink":"Add Error format support, and JSON output option (python#11396)"}},{"before":"f9e8e0bda5cfbb54d6a8f9e482aa25da28a1a635","after":"400eece0731772b8c584bc335f13b08eee4e3b61","ref":"refs/heads/master","pushedAt":"2024-04-23T19:25:35.000Z","pushType":"push","commitsCount":121,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Update CHANGELOG.md (#17159)\n\n- add typeshed updates note\r\n- remove unreleased","shortMessageHtmlLink":"Update CHANGELOG.md (python#17159)"}},{"before":"bc591c756a453bb6a78a31e734b1f0aa475e90e0","after":"f9e8e0bda5cfbb54d6a8f9e482aa25da28a1a635","ref":"refs/heads/master","pushedAt":"2024-01-02T15:29:53.000Z","pushType":"push","commitsCount":77,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Allow unary + in Literal (#16729)\n\nImplements python/typing#1550\r\n\r\nFixes #16727 (a trivial bug I found while implementing this feature)","shortMessageHtmlLink":"Allow unary + in Literal (python#16729)"}},{"before":"285519cca8c64f5fc35bde6bfa52c48d1fb1cea1","after":"bc591c756a453bb6a78a31e734b1f0aa475e90e0","ref":"refs/heads/master","pushedAt":"2023-11-08T20:49:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"fix dmypy after junit_xml change (#16421)\n\nhttps://github.com/python/mypy/pull/16388/ changed the definition of\r\n`write_junit_xml` but missed a call site in dmypy. This fixes it.","shortMessageHtmlLink":"fix dmypy after junit_xml change (python#16421)"}},{"before":"dd2947bf37830def91c12bff2cb7bddda8f3afe2","after":null,"ref":"refs/heads/dmypy-fix","pushedAt":"2023-11-08T13:41:48.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"}},{"before":"d0bdb3c07366f9def754a56c967ea983a33aa745","after":"dd2947bf37830def91c12bff2cb7bddda8f3afe2","ref":"refs/heads/dmypy-fix","pushedAt":"2023-11-08T13:41:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"fix dmypy after junit_xml change","shortMessageHtmlLink":"fix dmypy after junit_xml change"}},{"before":null,"after":"d0bdb3c07366f9def754a56c967ea983a33aa745","ref":"refs/heads/dmypy-fix","pushedAt":"2023-11-08T13:39:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"fix dmypy after junit_xml change","shortMessageHtmlLink":"fix dmypy after junit_xml change"}},{"before":"2bcec24635670bcff6efab3d21641f39f0f35857","after":"285519cca8c64f5fc35bde6bfa52c48d1fb1cea1","ref":"refs/heads/master","pushedAt":"2023-11-08T13:37:58.000Z","pushType":"push","commitsCount":51,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Fix junit writing bug introduced in #16388 (#16417)\n\n#16388 introduced a bug where, with `--junit-format=global`, the junit\r\nfile would indicate an error (with no message) even if everything\r\npassed. That was because `_generate_junit_contents` would check if\r\n`messages_by_file` was empty or not to determine if there were failures,\r\nbut with `--junit-format=global` we'd pass in a dictionary of the form\r\n`{None: all_messages}`; `all_messages` would be empty, but the resulting\r\ndictionary wouldn't be.\r\n\r\nThe fix is to pass in an empty dictionary if there are no messages.\r\n\r\nI've tested manually with `--junit-format=global` and\r\n`--junit-format=per_file` in the successful case to make sure the files\r\nare written correctly now.","shortMessageHtmlLink":"Fix junit writing bug introduced in python#16388 (python#16417)"}},{"before":"2e52e98fd2873775a58616c097e93c96f58fc991","after":"2bcec24635670bcff6efab3d21641f39f0f35857","ref":"refs/heads/master","pushedAt":"2023-10-16T19:02:27.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Stream dmypy output instead of dumping everything at the end (#16252)\n\nThis does 2 things:\r\n1. It changes the IPC code to work with multiple messages.\r\n2. It changes the dmypy client/server communication so that it streams\r\nstdout/stderr instead of dumping everything at the end.\r\n\r\nFor 1, we have to provide a way to separate out different messages. I\r\nchose to frame messages as bytes separated by whitespace character. That\r\nmeans we have to encode the message in a scheme that escapes whitespace.\r\nThe `codecs.encode(, 'base64')` seems reasonable. It encodes more\r\nthan needed but the application is not IPC IO limited so it should be fine.\r\nWith this convention in place, all we have to do is read from the socket\r\nstream until we have a whitespace character.\r\nThe framing logic can be easily changed.\r\n\r\nFor 2, since we communicate with JSONs, it's easy to add a \"finished\"\r\nkey that tells us it's the final response from dmypy. Anything else is\r\njust stdout/stderr output.\r\n\r\nNote: dmypy server also returns out/err which is the output of actual\r\nmypy type checking. Right now this change does not stream that output.\r\nWe can stream that in a followup change. We just have to decide on how\r\nto differenciate the 4 text streams (stdout/stderr/out/err) that will\r\nnow be interleaved.\r\n\r\nThe WriteToConn class could use more love. I just put a bare minimum.\r\n\r\n---------\r\n\r\nCo-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Stream dmypy output instead of dumping everything at the end (python#…"}},{"before":"4851cdd3097840e5b0e89625953e5c1da763fa10","after":null,"ref":"refs/heads/stream-output","pushedAt":"2023-10-16T17:37:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"}},{"before":"dfb95002649928591daf8947308d146f9ef59766","after":"4851cdd3097840e5b0e89625953e5c1da763fa10","ref":"refs/heads/stream-output","pushedAt":"2023-10-13T10:55:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pre-commit-ci[bot]","name":null,"path":"/apps/pre-commit-ci","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/68672?s=80&v=4"},"commit":{"message":"[pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci","shortMessageHtmlLink":"[pre-commit.ci] auto fixes from pre-commit.com hooks"}},{"before":"73ecb8a26d7b730426db19da7b9e6c0932d82b09","after":"dfb95002649928591daf8947308d146f9ef59766","ref":"refs/heads/stream-output","pushedAt":"2023-10-13T10:54:37.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Merge branch 'master' into stream-output","shortMessageHtmlLink":"Merge branch 'master' into stream-output"}},{"before":"8b6d21373f44959d8aa194723e871e5468ad5c71","after":"2e52e98fd2873775a58616c097e93c96f58fc991","ref":"refs/heads/master","pushedAt":"2023-10-13T10:53:20.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Fix crash on ParamSpec unification (for real) (#16259)\n\nFixes https://github.com/python/mypy/issues/16257\r\n\r\nParenthesis strike back. I hope this is the last place where I had put\r\nthem wrong.","shortMessageHtmlLink":"Fix crash on ParamSpec unification (for real) (python#16259)"}},{"before":"9081b1e5055812ae0716bad39e45b47715fac9e9","after":"73ecb8a26d7b730426db19da7b9e6c0932d82b09","ref":"refs/heads/stream-output","pushedAt":"2023-10-13T10:52:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Better tests + fix bug with multiple frames in buffer + base64 encoding","shortMessageHtmlLink":"Better tests + fix bug with multiple frames in buffer + base64 encoding"}},{"before":"68910d50b05b06bdbcc55ca8741999eb142bed87","after":null,"ref":"refs/heads/daemon-error","pushedAt":"2023-10-12T10:58:24.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"}},{"before":"c160551409e9a77b76aabb85fba616eaed650afc","after":"9081b1e5055812ae0716bad39e45b47715fac9e9","ref":"refs/heads/stream-output","pushedAt":"2023-10-11T22:27:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pre-commit-ci[bot]","name":null,"path":"/apps/pre-commit-ci","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/68672?s=80&v=4"},"commit":{"message":"[pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci","shortMessageHtmlLink":"[pre-commit.ci] auto fixes from pre-commit.com hooks"}},{"before":null,"after":"c160551409e9a77b76aabb85fba616eaed650afc","ref":"refs/heads/stream-output","pushedAt":"2023-10-11T22:26:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Stream dmypy output instead of dumping everything at the end\n\nThis does 2 things:\n1. It changes the IPC code to work with multiple messages.\n2. It changes the dmypy client/server communication so that it streams\nstdout/stderr instead of dumping everything at the end.\n\nFor 1, we have to provide a way to separate out different messages.\nWe can frame messages as bytes separated by whitespace character. That\nmeans we have to encode the message in a scheme that escapes whitespace.\nThe urllib.parse quote/unquote seems reasonable. It encodes more than\nneeded but the application is not IPC IO limited so it should be fine.\nWith this convention in place, all we have to do is read from the socket\nstream until we have a whitespace character.\n\nFor 2, since we communicate with JSONs, it's easy to add a \"finished\"\nkey that tells us it's the final response from dmypy. Anything else is\njust stdout/stderr output.\n\nNote: dmypy server also returns out/err which is the output of actual\nmypy type checking. Right now this change does not stream that output.\nWe can stream that in a followup change. We just have to decide on how\nto differenciate the 4 text streams (stdout/stderr/out/err) that will\nnow be interleaved.\n\nPlayed around with it on Linux quite a bit. Will also test it some more\non Windows.\n\nThe WriteToConn class could use more love. I just put a bare minimum to\ntest the rest.","shortMessageHtmlLink":"Stream dmypy output instead of dumping everything at the end"}},{"before":null,"after":"68910d50b05b06bdbcc55ca8741999eb142bed87","ref":"refs/heads/daemon-error","pushedAt":"2023-10-11T19:40:57.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"show dmypy errors post serving\n\nAfter dmypy starts serving, stdout and stderr gets captured.\nIf we have an error, we assume we can send it to the client.\nHowever, if we have an error outside of client communication, that error\nis lost. The easiest way to see this is to run dmypy in daemonize mode,\nrun a check once, then Control-C to send a KeyboardInterrupt. That\nexception is not printed though it should. After this change you can\nclearly see it.","shortMessageHtmlLink":"show dmypy errors post serving"}},{"before":"d7d502e5e63092322d57c607e2affac6cb5234b8","after":"8b6d21373f44959d8aa194723e871e5468ad5c71","ref":"refs/heads/master","pushedAt":"2023-10-11T13:33:01.000Z","pushType":"push","commitsCount":106,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Fix partially defined in the case of missing type maps (#15995)\n\nThanks AlexWaygood for sending me on this adventure. This took me a\r\nwhile for me to debug!\r\n\r\nWhen we don't need to warn about unreachable code, we don't end up\r\ncalling `self.is_noop_for_reachability(s)` (which is meant to tell us\r\nwhether the code should be warned about or is `raise AssertionError` or\r\n`typing.assert_never(never)` or something).\r\nhttps://github.com/python/mypy/blob/6f650cff9ab21f81069e0ae30c92eae94219ea63/mypy/checker.py#L2748\r\n\r\nThis innocuous check has a side effect that turns out to be important\r\nfor the partially undefined checks. These checks work by reaching into\r\nthe type map populated by the checker. But if we never actually ended up\r\nanalysing the code, we never populate the type map.\r\n\r\nThis therefore changes things to assume that if we couldn't find the\r\nexpression in the type map, it's probably because it was unreachable.","shortMessageHtmlLink":"Fix partially defined in the case of missing type maps (python#15995)"}},{"before":"c8b8327e85a9a76e51f58ad8a974ce44eeadabb4","after":null,"ref":"refs/heads/dmypy-output","pushedAt":"2023-08-19T17:48:41.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"}},{"before":"cfd01d9f7fdceb5eb8e367e8f1a6a1efb5ede38c","after":"d7d502e5e63092322d57c607e2affac6cb5234b8","ref":"refs/heads/master","pushedAt":"2023-08-19T17:48:11.000Z","pushType":"push","commitsCount":23,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Support self-types containing ParamSpec (#15903)\n\nFixes https://github.com/python/mypy/issues/14968\r\nFixes https://github.com/python/mypy/issues/13911\r\n\r\nThe fix is simple, as I predicted on Discord, we simply should use\r\n`get_all_type_vars()` instead of `get_type_vars()` (that specifically\r\nreturns only `TypeVarType`). I also use this opportunity to tidy-up code\r\nin `bind_self()`, it should be now more readable, and much faster\r\n(especially when compiled with mypyc).\r\n\r\ncc @A5rocks\r\n\r\n---------\r\n\r\nCo-authored-by: Alex Waygood ","shortMessageHtmlLink":"Support self-types containing ParamSpec (python#15903)"}},{"before":null,"after":"c8b8327e85a9a76e51f58ad8a974ce44eeadabb4","ref":"refs/heads/dmypy-output","pushedAt":"2023-08-15T23:27:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"[dmypy] special case stdout and stderr in show_stats too\n\nWhen running dmypy, the communication between client and server is via\nJSON. The JSON contains the keys \"out\" and \"err\" for the actual result\nof \"check\" command, and \"stdout\" and \"stderr\" for the any other stdout\nand stderr text.\nshow_stats is shown when running with --verbose. It's meant to show\nother keys in the JSON response, like python version or time taken.\nIt already had some special casing to only show 1 line of text for \"out\"\nand \"err\". Let's add \"stdout\" and \"stderr\" to the special casing as\nwell. Also, let's show the remaining number of characters as well.","shortMessageHtmlLink":"[dmypy] special case stdout and stderr in show_stats too"}},{"before":"a538cc98d54031f25e44787a90649ea909877f12","after":"cfd01d9f7fdceb5eb8e367e8f1a6a1efb5ede38c","ref":"refs/heads/master","pushedAt":"2023-08-11T16:04:12.000Z","pushType":"push","commitsCount":38,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Improve error code disabling documentation (#15841)\n\nProvide a concrete example of what file level comments would look like.\r\nSort text into sections a little better.","shortMessageHtmlLink":"Improve error code disabling documentation (python#15841)"}},{"before":"2c3bc1982729fc5f7cbe06bbdc60c09491d44f65","after":null,"ref":"refs/heads/revert","pushedAt":"2023-07-14T13:53:58.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"}},{"before":null,"after":"2c3bc1982729fc5f7cbe06bbdc60c09491d44f65","ref":"refs/heads/revert","pushedAt":"2023-07-14T13:16:30.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"},"commit":{"message":"Manually revert \"Add support for attrs.fields (#15021)\"\n\nThis reverts commit 391ed85.\nSimilar to the revert for release-1.4 in commit 3bf9fdc.\n\nHad to do it manually since it won't revert cleanly.","shortMessageHtmlLink":"Manually revert \"Add support for attrs.fields (python#15021)\""}},{"before":"ce62034a8cb8ffb2c78787c02cdc2ef717a52e19","after":null,"ref":"refs/heads/sync-typeshed-cp-fail","pushedAt":"2023-07-14T11:36:52.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"}},{"before":"2aa90a985e787807882a901b89a5dae289e28265","after":null,"ref":"refs/heads/sync-typeshed-commits","pushedAt":"2023-07-14T11:36:41.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"svalentin","name":"Valentin Stanciu","path":"/svalentin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/250871?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAETredqAA","startCursor":null,"endCursor":null}},"title":"Activity · svalentin/mypy"}