{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":500394165,"defaultBranch":"main","name":"systemd_ctypes","ownerLogin":"allisonkarlitskaya","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-06-06T10:49:36.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/36541154?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1717742188.0","currentOid":""},"activityList":{"items":[{"before":"36fb9fba9b4c56c36cb3f22144f2558065b2d509","after":null,"ref":"refs/heads/c10","pushedAt":"2024-06-07T06:36:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"martinpitt","name":"Martin Pitt","path":"/martinpitt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/200109?s=80&v=4"}},{"before":"20daa124e443f36d06bc2e4843f56b0dfa0fa660","after":"0bfa45859b05f0b4fb0a20b9447a955f00e35959","ref":"refs/heads/main","pushedAt":"2024-06-07T06:29:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"tests: Drop EOL CentOS 8, add CentOS 10","shortMessageHtmlLink":"tests: Drop EOL CentOS 8, add CentOS 10"}},{"before":"2d21f136951ba0e5c05432813e4e932bc6ee2421","after":"36fb9fba9b4c56c36cb3f22144f2558065b2d509","ref":"refs/heads/c10","pushedAt":"2024-06-07T05:15:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"martinpitt","name":"Martin Pitt","path":"/martinpitt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/200109?s=80&v=4"},"commit":{"message":"tests: Drop EOL CentOS 8, add CentOS 10","shortMessageHtmlLink":"tests: Drop EOL CentOS 8, add CentOS 10"}},{"before":null,"after":"2d21f136951ba0e5c05432813e4e932bc6ee2421","ref":"refs/heads/c10","pushedAt":"2024-06-07T05:14:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"martinpitt","name":"Martin Pitt","path":"/martinpitt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/200109?s=80&v=4"},"commit":{"message":"tests: Drop EOL CentOS 8, add CentOS 10","shortMessageHtmlLink":"tests: Drop EOL CentOS 8, add CentOS 10"}},{"before":"833f5cee8ea5d4c93aecf0ac2bf517cd5b52f5ec","after":"20daa124e443f36d06bc2e4843f56b0dfa0fa660","ref":"refs/heads/main","pushedAt":"2024-06-05T13:22:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"Fix CI failing to build dbus-python\n\nby installing required python3-devel package","shortMessageHtmlLink":"Fix CI failing to build dbus-python"}},{"before":"fbb8e570ffaf3ede768dbfaa584d10018332a6e0","after":null,"ref":"refs/heads/trampoline-rescue","pushedAt":"2024-02-02T08:42:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"martinpitt","name":"Martin Pitt","path":"/martinpitt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/200109?s=80&v=4"}},{"before":"ad0939bb54e50082724aed91f69ab326c45ab3ca","after":"833f5cee8ea5d4c93aecf0ac2bf517cd5b52f5ec","ref":"refs/heads/main","pushedAt":"2024-02-02T08:41:03.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"Be careful about freeing callback trampolines\n\nOur approach to handling Source and Slot objects is fairly clever: we\ntie the call trampoline and closure to the same object that holds a\nreference to the source object on the C side. When we are about to\n`__del__()` that object, we unref the source, preventing any further\nevents from being dispatched. In this way, we can be completely sure\nthat systemd will never call our trampoline after it's been freed.\n\nUnfortunately, this isn't good enough: we have a lot of cases where we\nfree a Source while it is currently being dispatched. Until now we've\nnever noticed a problem, but Cockpit recently added a stress-test for\ninotify (`test_fsinfo_watch_identity_changes`) which dispatches thousand\nof events and runs long enough that garbage collection gets invoked,\nfreeing trampolines while they are currently running. Python does not\nhold a reference to the data, and this causes crashes on some\narchitectures.\n\nLet's give Source and Slot a common base class (Trampoline) that models\ntheir common behaviour. This helper class also changes the `__del__()`\nbehaviour: in case some external caller has requested deferral of the\ndestruction of trampolines, we add them to a list just before we get\ndeleted, to prevent the FFI wrapper from being destroyed with us.\n\nWe know that the problem described above is only a problem if we're\ndispatching from systemd's event loop, so setup deferral on entry to the\nloop and drop the deferred objects on exit.\n\nCloses #63","shortMessageHtmlLink":"Be careful about freeing callback trampolines"}},{"before":"5788fa27a643a409b9ccca236127ca18c3bdf284","after":"fbb8e570ffaf3ede768dbfaa584d10018332a6e0","ref":"refs/heads/trampoline-rescue","pushedAt":"2024-02-02T08:34:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"Be careful about freeing callback trampolines\n\nOur approach to handling Source and Slot objects is fairly clever: we\ntie the call trampoline and closure to the same object that holds a\nreference to the source object on the C side. When we are about to\n`__del__()` that object, we unref the source, preventing any further\nevents from being dispatched. In this way, we can be completely sure\nthat systemd will never call our trampoline after it's been freed.\n\nUnfortunately, this isn't good enough: we have a lot of cases where we\nfree a Source while it is currently being dispatched. Until now we've\nnever noticed a problem, but Cockpit recently added a stress-test for\ninotify (`test_fsinfo_watch_identity_changes`) which dispatches thousand\nof events and runs long enough that garbage collection gets invoked,\nfreeing trampolines while they are currently running. Python does not\nhold a reference to the data, and this causes crashes on some\narchitectures.\n\nLet's give Source and Slot a common base class (Trampoline) that models\ntheir common behaviour. This helper class also changes the `__del__()`\nbehaviour: in case some external caller has requested deferral of the\ndestruction of trampolines, we add them to a list just before we get\ndeleted, to prevent the FFI wrapper from being destroyed with us.\n\nWe know that the problem described above is only a problem if we're\ndispatching from systemd's event loop, so setup deferral on entry to the\nloop and drop the deferred objects on exit.\n\nCloses #63","shortMessageHtmlLink":"Be careful about freeing callback trampolines"}},{"before":"38a2f77f41c99f4f87635236ac65abe7edffb041","after":"5788fa27a643a409b9ccca236127ca18c3bdf284","ref":"refs/heads/trampoline-rescue","pushedAt":"2024-02-01T20:49:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"Be careful about freeing callback trampolines\n\nOur approach to handling Source and Slot objects is fairly clever: we\ntie the call trampoline and closure to the same object that holds a\nreference to the source object on the C side. When we are about to\n`__del__()` that object, we unref the source, preventing any further\nevents from being dispatched. In this way, we can be completely sure\nthat systemd will never call our trampoline after it's been freed.\n\nUnfortunately, this isn't good enough: we have a lot of cases where we\nfree a Source while it is currently being dispatched. Until now we've\nnever noticed a problem, but Cockpit recently added a stress-test for\ninotify (`test_fsinfo_watch_identity_changes`) which dispatches thousand\nof events and runs long enough that garbage collection gets invoked,\nfreeing trampolines while they are currently running. Python does not\nhold a reference to the data, and this causes crashes on some\narchitectures.\n\nLet's give Source and Slot a common base class (Trampoline) that models\ntheir common behaviour. This helper class also changes the `__del__()`\nbehaviour: in case some external caller has requested deferral of the\ndestruction of trampolines, we add them to a list just before we get\ndeleted, to prevent the FFI wrapper from being destroyed with us.\n\nWe know that the problem described above is only a problem if we're\ndispatching from systemd's event loop, so setup deferral on entry to the\nloop and drop the deferred objects on exit.\n\nCloses #63","shortMessageHtmlLink":"Be careful about freeing callback trampolines"}},{"before":"08e0ee99b2f3723e316c319e065d22fcad2d8c40","after":"38a2f77f41c99f4f87635236ac65abe7edffb041","ref":"refs/heads/trampoline-rescue","pushedAt":"2024-02-01T20:40:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"Be careful about freeing callback trampolines\n\nOur approach to handling Source and Slot objects is fairly clever: we\ntie the call trampoline and closure to the same object that holds a\nreference to the source object on the C side. When we are about to\n`__del__()` that object, we unref the source, preventing any further\nevents from being dispatched. In this way, we can be completely sure\nthat systemd will never call our trampoline after it's been freed.\n\nUnfortunately, this isn't good enough: we have a lot of cases where we\nfree a Source while it is currently being dispatched. Until now we've\nnever noticed a problem, but Cockpit recently added a stress-test for\ninotify (`test_fsinfo_watch_identity_changes`) which dispatches thousand\nof events and runs long enough that garbage collection gets invoked,\nfreeing trampolines while they are currently running. Python does not\nhold a reference to the data, and this causes crashes on some\narchitectures.\n\nLet's give Source and Slot a common base class (Trampoline) that models\ntheir common behaviour. This helper class also changes the `__del__()`\nbehaviour: in case some external caller has requested deferral of the\ndestruction of trampolines, we add them to a list just before we get\ndeleted, to prevent the FFI wrapper from being destroyed with us.\n\nWe know that the problem described above is only a problem if we're\ndispatching from systemd's event loop, so setup deferral on entry to the\nloop and drop the deferred objects on exit.\n\nCloses #63","shortMessageHtmlLink":"Be careful about freeing callback trampolines"}},{"before":null,"after":"08e0ee99b2f3723e316c319e065d22fcad2d8c40","ref":"refs/heads/trampoline-rescue","pushedAt":"2024-02-01T20:38:11.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"Be careful about freeing callback trampolines\n\nOur approach to handling Source and Slot objects is fairly clever: we\ntie the call trampoline and closure to the same object that holds a\nreference to the source object on the C side. When we are about to\n`__del__()` that object, we unref the source, preventing any further\nevents from being dispatched. In this way, we can be completely sure\nthat systemd will never call our trampoline after it's been freed.\n\nUnfortunately, this isn't good enough: we have a lot of cases where we\nfree a Source while it is currently being dispatched. Until now we've\nnever noticed a problem, but Cockpit recently added a stress-test for\ninotify (`test_fsinfo_watch_identity_changes`) which dispatches thousand\nof events and runs long enough that garbage collection gets invoked,\nfreeing trampolines while they are currently running. Python does not\nhold a reference to the data, and this causes crashes on some\narchitectures.\n\nLet's give Source and Slot a common base class (Trampoline) that models\ntheir common behaviour. This helper class also changes the `__del__()`\nbehaviour: in case some external caller has requested deferral of the\ndestruction of trampolines, we add them to a list just before we get\ndeleted, to prevent the FFI wrapper from being destroyed with us.\n\nWe know that the problem described above is only a problem if we're\ndispatching from systemd's event loop, so setup deferral on entry to the\nloop and drop the deferred objects on exit.\n\nCloses #63","shortMessageHtmlLink":"Be careful about freeing callback trampolines"}},{"before":"149a058e37c12ee941902d3507c5301dd4803b94","after":"ad0939bb54e50082724aed91f69ab326c45ab3ca","ref":"refs/heads/main","pushedAt":"2023-09-25T13:40:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"systemd_ctypes: drop leftover debug prints","shortMessageHtmlLink":"systemd_ctypes: drop leftover debug prints"}},{"before":"096f5fe7fc931cc3ac116d1d262ff6e1a2aa49d0","after":null,"ref":"refs/heads/types","pushedAt":"2023-06-27T08:45:10.135Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"}},{"before":"eb43179170c05eb3123e2d72ca57e5639e63b86e","after":null,"ref":"refs/heads/typed","pushedAt":"2023-06-27T08:44:57.095Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"}},{"before":"f866731c6171f37819b18ad0210369d70614e83b","after":"149a058e37c12ee941902d3507c5301dd4803b94","ref":"refs/heads/main","pushedAt":"2023-06-27T08:40:31.272Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"Add py.typed marker\n\nFixes #42","shortMessageHtmlLink":"Add py.typed marker"}},{"before":null,"after":"eb43179170c05eb3123e2d72ca57e5639e63b86e","ref":"refs/heads/typed","pushedAt":"2023-06-27T08:32:04.311Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"Add py.typed marker\n\nFixes #42","shortMessageHtmlLink":"Add py.typed marker"}},{"before":"46c18b5783f674e28fe2fab17e4a691b0762bbf4","after":"f866731c6171f37819b18ad0210369d70614e83b","ref":"refs/heads/main","pushedAt":"2023-06-22T14:25:32.000Z","pushType":"pr_merge","commitsCount":11,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"various: turn on more ruff rules, fix things up\n\nCopy over the ruff config from Cockpit, more or less, with some slight\ntweaks. Fix up the things that got picked up.\n\nThe biggest change is that we can't reasonably use any of the FBT rules\nhere because systemd has booleans on several of its APIs and the binding\nlayer only supports positional parameters.","shortMessageHtmlLink":"various: turn on more ruff rules, fix things up"}},{"before":"391893142ac45099f89c74c5449a6349957047a6","after":"096f5fe7fc931cc3ac116d1d262ff6e1a2aa49d0","ref":"refs/heads/types","pushedAt":"2023-06-22T12:35:19.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"various: turn on more ruff rules, fix things up\n\nCopy over the ruff config from Cockpit, more or less, with some slight\ntweaks. Fix up the things that got picked up.\n\nThe biggest change is that we can't reasonably use any of the FBT rules\nhere because systemd has booleans on several of its APIs and the binding\nlayer only supports positional parameters.","shortMessageHtmlLink":"various: turn on more ruff rules, fix things up"}},{"before":"d08b4c7440b2b6f35ccfcc9cc5e5c248c61b8ce1","after":"391893142ac45099f89c74c5449a6349957047a6","ref":"refs/heads/types","pushedAt":"2023-06-22T12:26:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"daemon!","shortMessageHtmlLink":"daemon!"}},{"before":"9cc422dfd6cd3fa72fac49a9adad58c0fb2c6b0f","after":"d08b4c7440b2b6f35ccfcc9cc5e5c248c61b8ce1","ref":"refs/heads/types","pushedAt":"2023-06-22T12:22:31.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"merge these again","shortMessageHtmlLink":"merge these again"}},{"before":"01e87f8c2e411b67252a68e3a540698598ca7b91","after":"9cc422dfd6cd3fa72fac49a9adad58c0fb2c6b0f","ref":"refs/heads/types","pushedAt":"2023-06-22T12:18:01.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"omg an actual change","shortMessageHtmlLink":"omg an actual change"}},{"before":"c90b4988087c7bf7227e6639e81fea16deaca871","after":"01e87f8c2e411b67252a68e3a540698598ca7b91","ref":"refs/heads/types","pushedAt":"2023-06-22T12:01:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"hmmm","shortMessageHtmlLink":"hmmm"}},{"before":"3c896c0b2cd043147e9c6cf521ebc1d43033d1d7","after":"c90b4988087c7bf7227e6639e81fea16deaca871","ref":"refs/heads/types","pushedAt":"2023-06-22T11:56:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"lala","shortMessageHtmlLink":"lala"}},{"before":"4ac92a39d163df3c003e30265ba7b818ecab722c","after":"3c896c0b2cd043147e9c6cf521ebc1d43033d1d7","ref":"refs/heads/types","pushedAt":"2023-06-22T11:51:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"moar","shortMessageHtmlLink":"moar"}},{"before":"10371fcd69879c060c7b32b9a1f32306e4d48207","after":"4ac92a39d163df3c003e30265ba7b818ecab722c","ref":"refs/heads/types","pushedAt":"2023-06-22T11:48:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"fix","shortMessageHtmlLink":"fix"}},{"before":"4b7f7eb8cc6542054fc90d45a43eaa7ab7e8d2df","after":"10371fcd69879c060c7b32b9a1f32306e4d48207","ref":"refs/heads/types","pushedAt":"2023-06-22T11:46:07.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"various: turn on more ruff rules, fix things up\n\nCopy over the ruff config from Cockpit, more or less, with some slight\ntweaks. Fix up the things that got picked up.\n\nThe biggest change is that we can't reasonably use any of the FBT rules\nhere because systemd has booleans on several of its APIs and the binding\nlayer only supports positional parameters.","shortMessageHtmlLink":"various: turn on more ruff rules, fix things up"}},{"before":"65b0ceead84df9d520f09bbb37a05b48c6008e90","after":"4b7f7eb8cc6542054fc90d45a43eaa7ab7e8d2df","ref":"refs/heads/types","pushedAt":"2023-06-22T07:31:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"allisonkarlitskaya","name":"Allison Karlitskaya","path":"/allisonkarlitskaya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36541154?s=80&v=4"},"commit":{"message":"various: turn on more ruff rules, fix things up\n\nCopy over the ruff config from Cockpit, more or less, with some slight\ntweaks. Fix up the things that got picked up.\n\nThe biggest change is that we can't reasonably use any of the FBT rules\nhere because systemd has booleans on several of its APIs and the binding\nlayer only supports positional parameters.","shortMessageHtmlLink":"various: turn on more ruff rules, fix things up"}},{"before":"5497b7f2fb9716168dd5f96846e9c7f5467f816d","after":null,"ref":"refs/heads/values","pushedAt":"2023-06-21T06:36:26.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"martinpitt","name":"Martin Pitt","path":"/martinpitt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/200109?s=80&v=4"}},{"before":"a556a4f6332273e08c2f8db1bff1b0c4c9b16cf3","after":null,"ref":"refs/heads/cancel-take-two","pushedAt":"2023-06-21T06:36:26.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"martinpitt","name":"Martin Pitt","path":"/martinpitt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/200109?s=80&v=4"}},{"before":"d904d8211f4e7e54306860bbe9fd18ca7c7d9598","after":null,"ref":"refs/heads/the-future-has-been-cancelled","pushedAt":"2023-06-21T06:36:25.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"martinpitt","name":"Martin Pitt","path":"/martinpitt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/200109?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEXufyWwA","startCursor":null,"endCursor":null}},"title":"Activity ยท allisonkarlitskaya/systemd_ctypes"}