{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":445267642,"defaultBranch":"master","name":"spinach","ownerLogin":"0xDEC0DE","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2022-01-06T18:14:32.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1404587?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1715303521.0","currentOid":""},"activityList":{"items":[{"before":"b895af1ae577a32dfca5619e535274f0d5fa25de","after":"abdcc7cb4d6a713485a559a1a566579128327c3e","ref":"refs/heads/issue/33","pushedAt":"2024-06-03T01:27:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"Add a build target for the docs\n\nGenerate the documentation with `hatch run docs:build $TYPE`","shortMessageHtmlLink":"Add a build target for the docs"}},{"before":"5e523150ddf1aab058c097e11a323c1df4aaaee6","after":null,"ref":"refs/heads/issue/45","pushedAt":"2024-05-10T01:12:01.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"}},{"before":null,"after":"5e523150ddf1aab058c097e11a323c1df4aaaee6","ref":"refs/heads/issue/45","pushedAt":"2024-05-10T01:05:32.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"fix: RedisBroker: Remove non-idempotent jobs from running, too\n\nAdds a test that the running job is actually gone.\n\nFixes: Issue #45","shortMessageHtmlLink":"fix: RedisBroker: Remove non-idempotent jobs from running, too"}},{"before":"e00eef5300e53c3e15d78da60acedc4c71079501","after":null,"ref":"refs/heads/issue/18","pushedAt":"2024-03-27T22:27:10.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"}},{"before":"a3bbea795005e4a81f71c9739ece89094bc8ff27","after":null,"ref":"refs/heads/issue/15","pushedAt":"2024-03-27T22:26:56.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"}},{"before":"00e6567985833baeca27a212603319c0936f7535","after":"a3bbea795005e4a81f71c9739ece89094bc8ff27","ref":"refs/heads/issue/15","pushedAt":"2024-03-27T04:21:26.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"fix: only increment the `current_concurrency` counter if the job max `max_concurrency` set\n\nSeems to have been a small oversight when popping idempotent jobs\nfrom the queue on Redis.\n\nFixes: Issue #15","shortMessageHtmlLink":"fix: only increment the current_concurrency counter if the job max …"}},{"before":"0aaefa96e28361f33dc3eb6473105b07c32519e2","after":"00e6567985833baeca27a212603319c0936f7535","ref":"refs/heads/issue/15","pushedAt":"2024-03-26T18:35:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"fix: only increment the `current_concurrency` counter if the job max `max_concurrency` set\n\nSeems to have been a small oversight when popping idempotent jobs\nfrom the queue on Redis.\n\nFixes: Issue #15","shortMessageHtmlLink":"fix: only increment the current_concurrency counter if the job max …"}},{"before":null,"after":"0aaefa96e28361f33dc3eb6473105b07c32519e2","ref":"refs/heads/issue/15","pushedAt":"2024-03-26T18:31:08.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"fix: only increment the `current_concurrency` counter if the job max `max_concurrency` set\n\nSeems to have been a small oversight when popping idempotent jobs\nfrom the queue on Redis.\n\nFixes: Issue #15","shortMessageHtmlLink":"fix: only increment the current_concurrency counter if the job max …"}},{"before":"f7261f2d93d780ba0e524942d8e2757c1f88c27d","after":null,"ref":"refs/heads/issue/35","pushedAt":"2024-03-25T05:17:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"}},{"before":"a28379a1375b44f116a07e60f1daa0ef203b363b","after":"e00eef5300e53c3e15d78da60acedc4c71079501","ref":"refs/heads/issue/18","pushedAt":"2024-03-24T17:33:59.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"RedisBroker: Track non-idempotent jobs as running, too\n\nPush running-job markers down into the Redis for all jobs, and move\nthe logic for re-enqueueing jobs from dead brokers into the script\nitself. Non-idempotent jobs running on a dead broker are still NOT\nre-enqueued.\n\nThis should cause non-idempotent jobs to no longer run \"invisibly\"\non a Redis broker, as well as causing dead brokers to signal any\nnon-idempotent jobs that were running on them as failed.\n\nFixes: Issue #18","shortMessageHtmlLink":"RedisBroker: Track non-idempotent jobs as running, too"}},{"before":"dcf8254761a9600807d35d055bb573a12c9552ae","after":"a28379a1375b44f116a07e60f1daa0ef203b363b","ref":"refs/heads/issue/18","pushedAt":"2024-03-23T19:12:29.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"RedisBroker: Track non-idempotent jobs as running, too\n\nPush running-job markers down into the Redis for all jobs, and move\nthe logic for re-enqueueing jobs from dead brokers into the script\nitself. Non-idempotent jobs running on a dead broker are still NOT\nre-enqueued.\n\nThis should cause non-idempotent jobs to no longer run \"invisibly\"\non a Redis broker, as well as causing dead brokers to signal any\nnon-idempotent jobs that were running on them as failed.\n\nFixes: Issue #18","shortMessageHtmlLink":"RedisBroker: Track non-idempotent jobs as running, too"}},{"before":null,"after":"dcf8254761a9600807d35d055bb573a12c9552ae","ref":"refs/heads/issue/18","pushedAt":"2024-03-23T19:08:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"RedisBroker: Track non-idempotent jobs as running, too\n\nPush running-job markers down into the Redis for all jobs, and move\nthe logic for re-enqueueing jobs from dead brokers into the script\nitself. Non-idempotent jobs running on a dead broker are still NOT\nre-enqueued.\n\nThis should cause non-idempotent jobs to no longer run \"invisibly\"\non a Redis broker, as well as causing dead brokers to signal any\nnon-idempotent jobs that were running on them as failed.\n\nFixes: Issue #18","shortMessageHtmlLink":"RedisBroker: Track non-idempotent jobs as running, too"}},{"before":"1de8b09743e7bb9c9ff9d5e6cae2e728653e6510","after":"b895af1ae577a32dfca5619e535274f0d5fa25de","ref":"refs/heads/issue/33","pushedAt":"2024-02-28T23:25:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"Add a build target for the docs\n\nGenerate the documentation with `hatch run docs:build $TYPE`","shortMessageHtmlLink":"Add a build target for the docs"}},{"before":"f6eeec926e4e5c34f6c70ab0b7d5d5b3cfb9ed8d","after":"1de8b09743e7bb9c9ff9d5e6cae2e728653e6510","ref":"refs/heads/issue/33","pushedAt":"2024-02-28T23:15:29.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"Add a build target for the docs\n\nGenerate the documentation with `hatch run docs:build $TYPE`","shortMessageHtmlLink":"Add a build target for the docs"}},{"before":"5dbd2d46cfc145a94d6b0aa47ea0a1281d6f74e5","after":"f6eeec926e4e5c34f6c70ab0b7d5d5b3cfb9ed8d","ref":"refs/heads/issue/33","pushedAt":"2024-02-28T23:00:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"Update docs\n\nNow that they're building with Hatch, update them to reflect updated\nusage.","shortMessageHtmlLink":"Update docs"}},{"before":"7aa60511537848a82d9c9f9009683865f9ffbc57","after":"5dbd2d46cfc145a94d6b0aa47ea0a1281d6f74e5","ref":"refs/heads/issue/33","pushedAt":"2024-02-28T20:54:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"Add a build target for the docs\n\nGenerate the documentation with `hatch run docs:build $TYPE`","shortMessageHtmlLink":"Add a build target for the docs"}},{"before":"96b42765a86039a0cc490e8611b8f10c95197035","after":"f7261f2d93d780ba0e524942d8e2757c1f88c27d","ref":"refs/heads/issue/35","pushedAt":"2024-02-28T19:57:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"fix: correct a busted test setup\n\nThis was throwing warnings unrelated to the code under test, which\nwas annoying. Fix it.\n\nFixes: Issue #35","shortMessageHtmlLink":"fix: correct a busted test setup"}},{"before":null,"after":"96b42765a86039a0cc490e8611b8f10c95197035","ref":"refs/heads/issue/35","pushedAt":"2024-02-28T19:55:27.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"fix: correct a busted test setup\n\nThis was throwing warnings unrelated to the code under test, which\nwas annoying. Fix it.","shortMessageHtmlLink":"fix: correct a busted test setup"}},{"before":"7e40978da5902b7878ff6701041d01879bafae47","after":"7aa60511537848a82d9c9f9009683865f9ffbc57","ref":"refs/heads/issue/33","pushedAt":"2024-02-28T19:33:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"Update publishing step to use `hatch publish` action\n\nThis is the recommended best practice, according to some.","shortMessageHtmlLink":"Update publishing step to use hatch publish action"}},{"before":"4f57896ad696fce4c45492ec73001f2b2b52a035","after":"7e40978da5902b7878ff6701041d01879bafae47","ref":"refs/heads/issue/33","pushedAt":"2024-02-28T19:10:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"Modernize Python tooling\n\nMove all configs into `pyproject.toml`, switch test/packaging to\nuse Hatch, and do all the linting with Ruff.\n\nFix issues that Ruff turned up, and annotate/ignore the pieces that\nit got wrong.\n\nFixes: Issue #33","shortMessageHtmlLink":"Modernize Python tooling"}},{"before":null,"after":"4f57896ad696fce4c45492ec73001f2b2b52a035","ref":"refs/heads/issue/33","pushedAt":"2024-02-28T19:00:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"Modernize Python tooling\n\nMove all configs into `pyproject.toml`, switch test/packaging to\nuse Hatch, and do all the linting with Ruff.\n\nFix issues that Ruff turned up, and annotate/ignore the pieces that\nit got wrong.\n\nFixes: Issue #33","shortMessageHtmlLink":"Modernize Python tooling"}},{"before":"aab97c36ca0b563a5f2209daf9fdec45d17bbc34","after":"fdfcfd58e3807ceec29fc8325cdb478521b7def1","ref":"refs/heads/issue/27","pushedAt":"2024-02-28T01:46:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"RedisBroker: Leave existing max_concurrency values alone\n\nLeave already-set concurrency values alone, always.\n\nFixes: Issue #27","shortMessageHtmlLink":"RedisBroker: Leave existing max_concurrency values alone"}},{"before":"f864a1d37af425029fc213a417e1301f0538d0b8","after":null,"ref":"refs/heads/issue/29","pushedAt":"2024-02-28T01:38:19.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"}},{"before":"330fde64210347936b66f8ffe38ffa417f0e2719","after":"f864a1d37af425029fc213a417e1301f0538d0b8","ref":"refs/heads/issue/29","pushedAt":"2024-02-28T01:33:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"fix: fix busted test method\n\nIt's `assert_called_once()`, not `called_once()`.\n\nAlso, never use that; always call `assert_called_once_with()`","shortMessageHtmlLink":"fix: fix busted test method"}},{"before":"55ca23fb5f762727e2e803985151d07142ac01ac","after":null,"ref":"refs/heads/update-tests","pushedAt":"2024-02-28T01:26:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"}},{"before":"95b860cce4bb29768fe99844e34cb7c0c3ecf9e8","after":"330fde64210347936b66f8ffe38ffa417f0e2719","ref":"refs/heads/issue/29","pushedAt":"2024-02-28T01:26:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"fix: use actual Mock objects fo test setup\n\nNewer Python runtimes do more stringent method signature checking,\nso use an actual Mock for dummy tasks rather than a \"random\" callable\n\nPartial fix for Issue #29","shortMessageHtmlLink":"fix: use actual Mock objects fo test setup"}},{"before":"9d1a5e3f5350b5183f70f0547a16753773e4394b","after":"95b860cce4bb29768fe99844e34cb7c0c3ecf9e8","ref":"refs/heads/issue/29","pushedAt":"2024-02-28T01:11:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"fix: update utils.exponential_backoff to broker in ints only\n\nPython 3.12 finally made good on their promise to start throwing\nerrors when trying to use `random` with non-ints, so make a good-faith\neffort to do that in all versions.\n\nRemove a now-useless test for passing floats that should now be\nimpossible to hit.\n\nPartial fix for Issue #29","shortMessageHtmlLink":"fix: update utils.exponential_backoff to broker in ints only"}},{"before":"0630e58761806e36da410c3270b559132cc018b3","after":"55ca23fb5f762727e2e803985151d07142ac01ac","ref":"refs/heads/update-tests","pushedAt":"2024-02-28T01:03:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"chore: update tests to run on node 20\n\nFix workflows, tox.ini\n\nDrop Python < 3.8 support","shortMessageHtmlLink":"chore: update tests to run on node 20"}},{"before":"55ca23fb5f762727e2e803985151d07142ac01ac","after":"0630e58761806e36da410c3270b559132cc018b3","ref":"refs/heads/update-tests","pushedAt":"2024-02-28T00:59:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"put pypy back","shortMessageHtmlLink":"put pypy back"}},{"before":"8377d2a5d8cba06e04bc3708c903d381c07476d8","after":"55ca23fb5f762727e2e803985151d07142ac01ac","ref":"refs/heads/update-tests","pushedAt":"2024-02-28T00:57:09.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"0xDEC0DE","name":"Nicolas Simonds","path":"/0xDEC0DE","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1404587?s=80&v=4"},"commit":{"message":"chore: update tests to run on node 20\n\nFix workflows, tox.ini\n\nDrop Python < 3.8 support","shortMessageHtmlLink":"chore: update tests to run on node 20"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEWnFP2gA","startCursor":null,"endCursor":null}},"title":"Activity · 0xDEC0DE/spinach"}