{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":353151059,"defaultBranch":"main","name":"warehouse","ownerLogin":"miketheman","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2021-03-30T21:53:23.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/529516?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1726848697.0","currentOid":""},"activityList":{"items":[{"before":"30846f6061d63b8c41a3275d1958efe3749524d8","after":"5e05c1eefaf681d96a24c2f3c9f55c519a62a41f","ref":"refs/heads/main","pushedAt":"2024-09-23T13:08:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Combined PRs (#16776)\n\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\r\nCo-authored-by: pypi-combine-prs[bot] <144945619+pypi-combine-prs[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Combined PRs (pypi#16776)"}},{"before":"362f6b7a39e5e34aa061c3f9769e3989ca115088","after":"30846f6061d63b8c41a3275d1958efe3749524d8","ref":"refs/heads/main","pushedAt":"2024-09-20T18:19:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"feat: add notes to registration page (#16765)","shortMessageHtmlLink":"feat: add notes to registration page (pypi#16765)"}},{"before":"c81393c4a20fca3067bc0b0b6024082e9fbd616e","after":null,"ref":"refs/heads/miketheman/16135-admin-prohibited-domains","pushedAt":"2024-09-20T16:11:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"}},{"before":null,"after":"a52cf1c1f3b015c431fe019007e2e02c2bafe04e","ref":"refs/heads/miketheman/registration-page-summary","pushedAt":"2024-09-20T16:04:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"make translations\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"make translations"}},{"before":"0a0b7e01becfab4f8a4eecf17cc59f824123b94d","after":"362f6b7a39e5e34aa061c3f9769e3989ca115088","ref":"refs/heads/main","pushedAt":"2024-09-20T15:41:46.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"feat(admin): add prohibited email domains (#16747)\n\n* feat(admin): add prohibited email domains\n\nSigned-off-by: Mike Fiedler \n\n* add permissions\n\nSigned-off-by: Mike Fiedler \n\n* add views and templates\n\nSigned-off-by: Mike Fiedler \n\n* feat: handle non-exact domain inputs\n\nSigned-off-by: Mike Fiedler \n\n* refactor query to use `exists()` subquery\n\nSigned-off-by: Mike Fiedler \n\n* fix: disallow using the live service during extraction\n\nIf we have to do this a third time, we probably want to wrap the\nextractor in a utility function.\n\nSigned-off-by: Mike Fiedler \n\n---------\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"feat(admin): add prohibited email domains (pypi#16747)"}},{"before":"0f6d2291a8c4c89cab4306558a5bfa644eb8a67f","after":"c81393c4a20fca3067bc0b0b6024082e9fbd616e","ref":"refs/heads/miketheman/16135-admin-prohibited-domains","pushedAt":"2024-09-20T02:27:13.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Merge branch 'main' into miketheman/16135-admin-prohibited-domains","shortMessageHtmlLink":"Merge branch 'main' into miketheman/16135-admin-prohibited-domains"}},{"before":"59702712ad063fd7953f07f430d1db99e5c5132c","after":"0f6d2291a8c4c89cab4306558a5bfa644eb8a67f","ref":"refs/heads/miketheman/16135-admin-prohibited-domains","pushedAt":"2024-09-19T18:51:20.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Merge branch 'main' into miketheman/16135-admin-prohibited-domains","shortMessageHtmlLink":"Merge branch 'main' into miketheman/16135-admin-prohibited-domains"}},{"before":"dcadf7a42257cf4975d2c510c3aa18bef5fc376d","after":"0a0b7e01becfab4f8a4eecf17cc59f824123b94d","ref":"refs/heads/main","pushedAt":"2024-09-19T17:35:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Don't wrap exception views (#16759)\n\n* Move view deriver lower\r\n\r\n* Add some failing tests\r\n\r\n* Don't wrap exception views\r\n\r\n* Fix unit tests","shortMessageHtmlLink":"Don't wrap exception views (pypi#16759)"}},{"before":"5e09950c9977a38d532c488adafd14b77c719691","after":"59702712ad063fd7953f07f430d1db99e5c5132c","ref":"refs/heads/miketheman/16135-admin-prohibited-domains","pushedAt":"2024-09-19T17:05:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"fix: disallow using the live service during extraction\n\nIf we have to do this a third time, we probably want to wrap the\nextractor in a utility function.\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"fix: disallow using the live service during extraction"}},{"before":"d3ed6e0085d8bd815f62a3a5d335dcaae0f24842","after":"dcadf7a42257cf4975d2c510c3aa18bef5fc376d","ref":"refs/heads/main","pushedAt":"2024-09-19T17:04:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Debug issues with duplicate POST keys (#16755)\n\n* Exercise duplicate POST keys in functional test\r\n\r\n* Assert on response text too\r\n\r\n* Explicitly just count keys instead of casting\r\n\r\n* Include URL in error message\r\n\r\n* Add classifiers to test too\r\n\r\n* Linting\r\n\r\n* Failing test\r\n\r\n* Test both ways of providing the action","shortMessageHtmlLink":"Debug issues with duplicate POST keys (pypi#16755)"}},{"before":"5709680daf1ed27b9abef18501cdc4cb3438f93d","after":"5e09950c9977a38d532c488adafd14b77c719691","ref":"refs/heads/miketheman/16135-admin-prohibited-domains","pushedAt":"2024-09-19T15:51:26.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Merge branch 'miketheman/16135-admin-prohibited-domains' of https://github.com/miketheman/warehouse into miketheman/16135-admin-prohibited-domains","shortMessageHtmlLink":"Merge branch 'miketheman/16135-admin-prohibited-domains' of https://g…"}},{"before":"73165b8fa719b2292bcd06c0031a55d362f8a831","after":"d3ed6e0085d8bd815f62a3a5d335dcaae0f24842","ref":"refs/heads/main","pushedAt":"2024-09-19T15:49:46.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Implement Alternate Repository Location for PEP 708 (#15716)\n\n* initial attempt at adding alternate repository location details\r\n\r\n* implement per-project alternate locations metadata\r\n\r\n* starting to add tests\r\n\r\n* starting to add tests\r\n\r\n* added tests\r\n\r\nFixed rendering for detail.html.\r\nMoved api mimetypes to const vars.\r\nCheck delete confirmation name matches.\r\n\r\n* updated translations\r\n\r\n* satisfy test coverage\r\n\r\n* update translations\r\n\r\n* update translations\r\n\r\n* register cache and purge keys for AlternateRepository objects\r\n\r\n* change db migration down revision to most recent migration\r\n\r\nThis allows the migrations to run.\r\n\r\n* update test after adding alternate repository cache and purge key\r\n\r\n* increment api version to 1.2\r\n\r\n* add url the response was fetched from\r\n\r\n* change db migration down revision to most recent migration\r\n\r\nThis allows the migrations to run.\r\n\r\n* name is already normalized\r\n\r\n* update translations\r\n\r\n* match functionality between JSON and HTML simple API\r\n\r\n- route_path -> route_url to get full URL rather than path\r\n- move self reference to the _simple_detail helper\r\n\r\n* update migration\r\n\r\n* remove self-reference from Simple HTML and JSON\r\n\r\nThe PEP reads as though they can be implied \"When using alternate locations, clients MUST implicitly assume that the url the response was fetched from was included in the list.\"\r\n\r\n* add a callout in project management settings around Alternate Locations\r\n\r\n* translations\r\n\r\n---------\r\n\r\nCo-authored-by: Ee Durbin ","shortMessageHtmlLink":"Implement Alternate Repository Location for PEP 708 (pypi#15716)"}},{"before":"5e519f66b9802f0ef9e1f9183dcd44a9e890d2a5","after":"5709680daf1ed27b9abef18501cdc4cb3438f93d","ref":"refs/heads/miketheman/16135-admin-prohibited-domains","pushedAt":"2024-09-19T15:38:53.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Merge branch 'main' into miketheman/16135-admin-prohibited-domains","shortMessageHtmlLink":"Merge branch 'main' into miketheman/16135-admin-prohibited-domains"}},{"before":"f893b9fe3fe7bb65df234c162e07385452086b2a","after":"5e519f66b9802f0ef9e1f9183dcd44a9e890d2a5","ref":"refs/heads/miketheman/16135-admin-prohibited-domains","pushedAt":"2024-09-19T15:35:47.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"refactor query to use `exists()` subquery\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"refactor query to use exists() subquery"}},{"before":"0640484a7a2fb3424c890e2a981340508dd4607e","after":"f893b9fe3fe7bb65df234c162e07385452086b2a","ref":"refs/heads/miketheman/16135-admin-prohibited-domains","pushedAt":"2024-09-18T20:49:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"add views and templates\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"add views and templates"}},{"before":null,"after":"0640484a7a2fb3424c890e2a981340508dd4607e","ref":"refs/heads/miketheman/16135-admin-prohibited-domains","pushedAt":"2024-09-18T20:45:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"add views and templates\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"add views and templates"}},{"before":"a908ffd2e1974884bc9524368ebb15f3bffd50ba","after":"73165b8fa719b2292bcd06c0031a55d362f8a831","ref":"refs/heads/main","pushedAt":"2024-09-18T20:44:18.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Fix project detail sidebar issues. (#16746)\n\n* Meta details should not be vertical tabs\r\n\r\n* Remove inline style and per-link checks\r\n\r\n* Update translations","shortMessageHtmlLink":"Fix project detail sidebar issues. (pypi#16746)"}},{"before":"a36ae299d043bb4a770d6fd0f4e73b8e99dd6461","after":"a908ffd2e1974884bc9524368ebb15f3bffd50ba","ref":"refs/heads/main","pushedAt":"2024-09-18T15:20:28.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Prevent duplicate `POST` keys in requests (#16732)\n\n* Add form IDs and update functional test\r\n\r\n* Reformat comment\r\n\r\n* Remove unnecessary cast to MultiDict\r\n\r\n* Add a failing test\r\n\r\n* Add view deriver to prohibit duplicate POST keys\r\n\r\n* Permit duplicate POST keys for file_upload view\r\n\r\n* Update translations","shortMessageHtmlLink":"Prevent duplicate POST keys in requests (pypi#16732)"}},{"before":"7f9232b2e9e585096044eb14ed569d089d3468ff","after":null,"ref":"refs/heads/miketheman/track-registration-outcomes","pushedAt":"2024-09-18T15:09:12.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"}},{"before":"9d1c27a65623c7038efacb9b29fd9ea902bf55a1","after":"7f9232b2e9e585096044eb14ed569d089d3468ff","ref":"refs/heads/miketheman/track-registration-outcomes","pushedAt":"2024-09-18T14:59:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"make translations\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"make translations"}},{"before":"2e34c4b8db27c9f6748f30d67a6a90ee1338e817","after":"9d1c27a65623c7038efacb9b29fd9ea902bf55a1","ref":"refs/heads/miketheman/track-registration-outcomes","pushedAt":"2024-09-18T14:52:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"make translations\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"make translations"}},{"before":"c20f2182854e574e6639a5f2f059c7e2ccb17854","after":"2e34c4b8db27c9f6748f30d67a6a90ee1338e817","ref":"refs/heads/miketheman/track-registration-outcomes","pushedAt":"2024-09-18T14:42:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"make translations\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"make translations"}},{"before":null,"after":"c20f2182854e574e6639a5f2f059c7e2ccb17854","ref":"refs/heads/miketheman/track-registration-outcomes","pushedAt":"2024-09-18T14:41:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"feat: capture metrics during email validation\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"feat: capture metrics during email validation"}},{"before":null,"after":"597c1e93a01c27ee4363d9483f61bd0bad7aa316","ref":"refs/heads/miketheman/basic-return-types","pushedAt":"2024-09-17T19:36:22.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"lint: add return types\n\nTriggers type checking on the class' functions, in abscence of using\n`check_untyped_defs` in mypy configuration.\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"lint: add return types"}},{"before":"35c0f16940f9d00a76eaf883d2bcd48554e083d7","after":"a36ae299d043bb4a770d6fd0f4e73b8e99dd6461","ref":"refs/heads/main","pushedAt":"2024-09-17T18:30:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"test(functional): log in, change password (#16724)\n\n* test: prerequisites for running functional webtests\r\n\r\nSigned-off-by: Mike Fiedler \r\n\r\n* test: log in, change password\r\n\r\nSigned-off-by: Mike Fiedler \r\n\r\n* refactor: replace static secret with factory one\r\n\r\nSigned-off-by: Mike Fiedler \r\n\r\n* refactor: externalize password generation\r\n\r\nSigned-off-by: Mike Fiedler \r\n\r\n* Update tests/functional/manage/test_views.py\r\n\r\n* tests(ci): tell gha to also run redis\r\n\r\nSigned-off-by: Mike Fiedler \r\n\r\n* remove unneeded fixture\r\n\r\nSigned-off-by: Mike Fiedler \r\n\r\n---------\r\n\r\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"test(functional): log in, change password (pypi#16724)"}},{"before":"7d2bf5d4d98ae7fb42bdf470023e7f3c6de50ebf","after":null,"ref":"refs/heads/miketheman/functional-test-change-password","pushedAt":"2024-09-17T16:07:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"}},{"before":"039d187ac57013a763b87c5647ea65d79670a5fe","after":"7d2bf5d4d98ae7fb42bdf470023e7f3c6de50ebf","ref":"refs/heads/miketheman/functional-test-change-password","pushedAt":"2024-09-17T16:00:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"remove unneeded fixture\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"remove unneeded fixture"}},{"before":"b408001ae07cc34043f7b9bc0e9bb27f45acd49e","after":"039d187ac57013a763b87c5647ea65d79670a5fe","ref":"refs/heads/miketheman/functional-test-change-password","pushedAt":"2024-09-17T15:58:48.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Merge branch 'miketheman/functional-test-change-password' of https://github.com/miketheman/warehouse into miketheman/functional-test-change-password","shortMessageHtmlLink":"Merge branch 'miketheman/functional-test-change-password' of https://…"}},{"before":"817819cad0fb405e25b86748e9e124ad2aa9a18a","after":"b408001ae07cc34043f7b9bc0e9bb27f45acd49e","ref":"refs/heads/miketheman/functional-test-change-password","pushedAt":"2024-09-17T15:50:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"Update tests/functional/manage/test_views.py","shortMessageHtmlLink":"Update tests/functional/manage/test_views.py"}},{"before":"ab3d3db550715dbab483d38079255f0d65a139f6","after":"817819cad0fb405e25b86748e9e124ad2aa9a18a","ref":"refs/heads/miketheman/functional-test-change-password","pushedAt":"2024-09-17T15:49:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"miketheman","name":"Mike Fiedler","path":"/miketheman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/529516?s=80&v=4"},"commit":{"message":"refactor: externalize password generation\n\nSigned-off-by: Mike Fiedler ","shortMessageHtmlLink":"refactor: externalize password generation"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0yM1QxMzowODo0MC4wMDAwMDBazwAAAAS9_Iet","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0yM1QxMzowODo0MC4wMDAwMDBazwAAAAS9_Iet","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xN1QxNTo0OTozOC4wMDAwMDBazwAAAAS4uZYk"}},"title":"Activity · miketheman/warehouse"}