{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":726554,"defaultBranch":"master","name":"multipart","ownerLogin":"defnull","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2010-06-17T19:36:11.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/62740?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1726919512.0","currentOid":""},"activityList":{"items":[{"before":"bf10119e779d1fb1b01ba1db5cf1da4ad873f6d7","after":"01f2d897c7ed092eba7c5ad7c7a2fbe265c3dc5e","ref":"refs/heads/master","pushedAt":"2024-09-28T12:59:12.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"fix: ResourceWarning when using parse_form_data\n\nparse_form_data() is responsible for closing MultipartPart instances that are not returned to the caller.\n\nfixes #57","shortMessageHtmlLink":"fix: ResourceWarning when using parse_form_data"}},{"before":"39ede40af324220d3e5a2e67e3b8feacd23dadab","after":"bf10119e779d1fb1b01ba1db5cf1da4ad873f6d7","ref":"refs/heads/master","pushedAt":"2024-09-26T13:07:24.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"fix: Raise on input with invalid line breaks\ndocs: Be clear about the more strict default behavior\n\nInput that contains LF instead of CRLF is clearly broken and should be rejected, even in non-strict mode. Instead of ignoring invalid input, the parser now complains and fail quickly with an exception.\n\nfixes #55","shortMessageHtmlLink":"fix: Raise on input with invalid line breaks"}},{"before":"10767fc32a324b403609413c37490e2ca59ea9bc","after":"39ede40af324220d3e5a2e67e3b8feacd23dadab","ref":"refs/heads/master","pushedAt":"2024-09-21T12:10:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Tweaked the readme example a bit","shortMessageHtmlLink":"docs: Tweaked the readme example a bit"}},{"before":"0c6d138935f755f8b44c1f166a3a7f3244e8e67f","after":"10767fc32a324b403609413c37490e2ca59ea9bc","ref":"refs/heads/master","pushedAt":"2024-09-21T11:53:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Fix examples in readme","shortMessageHtmlLink":"docs: Fix examples in readme"}},{"before":null,"after":"8af424637de47c12476fc9afb3de92ce9466b71a","ref":"refs/heads/feature-typing","pushedAt":"2024-09-21T11:51:52.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"feat: Added some more typing annotations","shortMessageHtmlLink":"feat: Added some more typing annotations"}},{"before":"fe2ddca1d61fff1d2edd39b5bf9980050170d3e6","after":"0c6d138935f755f8b44c1f166a3a7f3244e8e67f","ref":"refs/heads/master","pushedAt":"2024-09-20T19:56:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Format error","shortMessageHtmlLink":"docs: Format error"}},{"before":"7f867c615ccb4b51b04e18d1bdfe6bb17de3af58","after":"fe2ddca1d61fff1d2edd39b5bf9980050170d3e6","ref":"refs/heads/master","pushedAt":"2024-09-20T19:54:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Removed dates from changelog\n\nThose dates do not really add any relevant information.","shortMessageHtmlLink":"docs: Removed dates from changelog"}},{"before":"234ce48a199b8cc68585e089fe4531ba49184170","after":"7f867c615ccb4b51b04e18d1bdfe6bb17de3af58","ref":"refs/heads/master","pushedAt":"2024-09-20T19:17:36.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"Release of 1.0.0","shortMessageHtmlLink":"Release of 1.0.0"}},{"before":"d7cfd591bdddb177bceab2fb6363a4d666f2b345","after":null,"ref":"refs/heads/feature-async","pushedAt":"2024-09-20T18:30:39.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"}},{"before":"be5de45763039b77ea26af7a9f202e22ff545591","after":null,"ref":"refs/heads/feature-sansio2","pushedAt":"2024-09-20T18:30:27.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"}},{"before":"d156dc966c25d1a3a4dbbc8ac984a555157bd76f","after":"234ce48a199b8cc68585e089fe4531ba49184170","ref":"refs/heads/master","pushedAt":"2024-09-20T18:29:41.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Fancy badges","shortMessageHtmlLink":"docs: Fancy badges"}},{"before":"b98c5acd3019c2886c79a4c6af9aa74a78585870","after":"38b2e4819a903e6c6033dd7e28dcc2cb7d807850","ref":"refs/heads/feature-sansio","pushedAt":"2024-09-20T18:24:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Fancy badges","shortMessageHtmlLink":"docs: Fancy badges"}},{"before":"e581d332a946f1e595f2c4ace51638351ec497f4","after":"b98c5acd3019c2886c79a4c6af9aa74a78585870","ref":"refs/heads/feature-sansio","pushedAt":"2024-09-20T18:19:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Updated README with examples and change log.","shortMessageHtmlLink":"docs: Updated README with examples and change log."}},{"before":"e6cfb3b2ccf0d43d7b1f5a3e15647bde5c34113b","after":"d156dc966c25d1a3a4dbbc8ac984a555157bd76f","ref":"refs/heads/master","pushedAt":"2024-09-20T18:16:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"Prepare 1.0 release","shortMessageHtmlLink":"Prepare 1.0 release"}},{"before":"fc152ecc1a6c2219e80636fb868943c29cd58fe4","after":"e581d332a946f1e595f2c4ace51638351ec497f4","ref":"refs/heads/feature-sansio","pushedAt":"2024-09-20T18:16:04.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Updated README with examples and change log.","shortMessageHtmlLink":"docs: Updated README with examples and change log."}},{"before":null,"after":"e6cfb3b2ccf0d43d7b1f5a3e15647bde5c34113b","ref":"refs/heads/release-0.2","pushedAt":"2024-09-20T18:11:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"chore: Disable fail-fast for test runs\n\nWith the default fail-fast feature it is often not possible to see which Python versions would pass tests of some of them fail.","shortMessageHtmlLink":"chore: Disable fail-fast for test runs"}},{"before":"31e1c9fb7c3ed2666fe7fa5bcc6d2fd2072b0790","after":"fc152ecc1a6c2219e80636fb868943c29cd58fe4","ref":"refs/heads/feature-sansio","pushedAt":"2024-09-20T18:09:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"fix: Make Typing annotations compatible with python 3.8","shortMessageHtmlLink":"fix: Make Typing annotations compatible with python 3.8"}},{"before":"be5de45763039b77ea26af7a9f202e22ff545591","after":"31e1c9fb7c3ed2666fe7fa5bcc6d2fd2072b0790","ref":"refs/heads/feature-sansio","pushedAt":"2024-09-20T18:06:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Updated README with examples and change log.","shortMessageHtmlLink":"docs: Updated README with examples and change log."}},{"before":"a6f8173fe3c5da0c3370075b7cbb8bef157b40b1","after":"e6cfb3b2ccf0d43d7b1f5a3e15647bde5c34113b","ref":"refs/heads/master","pushedAt":"2024-09-20T18:06:08.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"chore: Disable fail-fast for test runs\n\nWith the default fail-fast feature it is often not possible to see which Python versions would pass tests of some of them fail.","shortMessageHtmlLink":"chore: Disable fail-fast for test runs"}},{"before":"e064ce8dd15adda7931855be6b17c9fd8a115fc8","after":"be5de45763039b77ea26af7a9f202e22ff545591","ref":"refs/heads/feature-sansio","pushedAt":"2024-09-20T18:01:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Updated README with examples and change log.","shortMessageHtmlLink":"docs: Updated README with examples and change log."}},{"before":"aad2dd7f2048fc9d0e91056a469634c67c13af85","after":"be5de45763039b77ea26af7a9f202e22ff545591","ref":"refs/heads/feature-sansio2","pushedAt":"2024-09-20T18:00:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Updated README with examples and change log.","shortMessageHtmlLink":"docs: Updated README with examples and change log."}},{"before":null,"after":"aad2dd7f2048fc9d0e91056a469634c67c13af85","ref":"refs/heads/feature-sansio2","pushedAt":"2024-09-20T17:54:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"docs: Updated README with examples and change log.","shortMessageHtmlLink":"docs: Updated README with examples and change log."}},{"before":"0f437a619fc028ec9174eb520527c97ae29289a0","after":"e064ce8dd15adda7931855be6b17c9fd8a115fc8","ref":"refs/heads/feature-sansio","pushedAt":"2024-09-08T13:44:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"feat: New push based (non-blocking) parser\n\nThe new PushMultipartParser avoids any form of blocking IO, which allows it to be used in async contexts.\nIt is also significantly faster (x2 - x10) and less susceptible for certain worst-case inputs.\n\nThe old (blocking) MultipartParser API now uses this new PushMultipartParser internally and benefits from all improvements.","shortMessageHtmlLink":"feat: New push based (non-blocking) parser"}},{"before":"db473864f701639e340c56495b855f7238f83fb6","after":"0f437a619fc028ec9174eb520527c97ae29289a0","ref":"refs/heads/feature-sansio","pushedAt":"2024-09-08T13:43:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"test: Improve test coverage to 100%","shortMessageHtmlLink":"test: Improve test coverage to 100%"}},{"before":"4e0e41d57a5a9b9cad08f03f42842ef6bee48ed3","after":"a6f8173fe3c5da0c3370075b7cbb8bef157b40b1","ref":"refs/heads/master","pushedAt":"2024-09-08T13:43:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"chore: Move dev dependencies to pyproject.toml","shortMessageHtmlLink":"chore: Move dev dependencies to pyproject.toml"}},{"before":"e4e1f3f97cf90494e2d99223bbc61f33e45addcb","after":"4e0e41d57a5a9b9cad08f03f42842ef6bee48ed3","ref":"refs/heads/master","pushedAt":"2024-09-02T15:17:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"Minor refactoring and docstrings","shortMessageHtmlLink":"Minor refactoring and docstrings"}},{"before":null,"after":"db473864f701639e340c56495b855f7238f83fb6","ref":"refs/heads/feature-sansio","pushedAt":"2024-09-02T15:11:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"feat: New push based (non-blocking) parser\n\nThe new PushMultipartParser avoids any form of blocking IO, which allows it to be used in async contexts.\nIt is also significantly faster (x2 - x10) and less susceptible for certain worst-case inputs.\n\nThe old (blocking) MultipartParser API now uses this new PushMultipartParser internally and benefits from all improvements.","shortMessageHtmlLink":"feat: New push based (non-blocking) parser"}},{"before":"53cf784d8539ae489c0e697feaca616c4cbbb106","after":"e4e1f3f97cf90494e2d99223bbc61f33e45addcb","ref":"refs/heads/master","pushedAt":"2024-08-26T15:55:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"fix: Handle ValueError in invalid content length headers\n\nThis turns the ValueError into a more helpful MultipartError","shortMessageHtmlLink":"fix: Handle ValueError in invalid content length headers"}},{"before":"c97df75e930825d559c3f3f30e340ffec2402cd1","after":"53cf784d8539ae489c0e697feaca616c4cbbb106","ref":"refs/heads/master","pushedAt":"2024-08-26T15:35:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"fix: Reach 100% test coverage and fix edge cases\n\nIn detail:\nfix: Fail on parts without header/data separator.\nfix: Fail on completely empty parts.\nfix: Fail on streams without end boundary.\nfix: Do not fail if there is junk after end boundary.","shortMessageHtmlLink":"fix: Reach 100% test coverage and fix edge cases"}},{"before":"494cd83e11d68d3e25819b15aa1439b746d602b1","after":"c97df75e930825d559c3f3f30e340ffec2402cd1","ref":"refs/heads/master","pushedAt":"2024-08-26T14:08:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"defnull","name":"Marcel Hellkamp","path":"/defnull","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/62740?s=80&v=4"},"commit":{"message":"fix: Github actions should call pytest instead of tox","shortMessageHtmlLink":"fix: Github actions should call pytest instead of tox"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0yOFQxMjo1OToxMi4wMDAwMDBazwAAAATDXWOq","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yNlQxNDowODozNC4wMDAwMDBazwAAAASkVZX4"}},"title":"Activity ยท defnull/multipart"}