{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":746563162,"defaultBranch":"master","name":"redis-py","ownerLogin":"gerzse","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2024-01-22T09:03:47.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/5439601?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1720687175.0","currentOid":""},"activityList":{"items":[{"before":"1bb8eaba2d9dd30ebc123929dc3f22a137efcfde","after":"d1b4191f7a7918a39c1cb46e9e816389c3996233","ref":"refs/heads/master","pushedAt":"2024-07-11T15:00:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Add support for Python 3.12 (#2979)\n\nAdd support for Python 3.12. This required a bunch of changes all\r\nover the place, listed below in a random order.\r\n\r\nFix tests, especially around SSL connections.\r\n\r\nStop requiring typing-extensions.\r\n\r\nEnable tracemalloc for tests, and add the possibility to run the tests\r\nwith profiling enabled. Fix some issues identified by tracemalloc, like\r\nsockets not being closed in case of SSL handshake failures.\r\n\r\nRemove the CI test reporting plugin, it does not work easily with forked\r\nrepos anyway.\r\n\r\nFix checking of module versions, make the comparison accurate. Not\r\nsure how it worked before, but it looks like it did not match exactly\r\nthe format in the server INFO response, i.e. MMmmPP.\r\n\r\nRemove loggers from tests, it's just noise in the output. If we don't use\r\nasserts, nobody will check the log output from CI.\r\n\r\nSpeed up the computation for slots when initializing a cluster. After\r\nprofiling, this turned out to be very slow, when it does not have to be.\r\nIt does not make sense to recompute the same thing over and over\r\nin a loop.\r\n\r\nRun uvloop tests in matrix, i.e. don't bundle two tests executions\r\n(without uvloop and with it) in the same job. Easier to spot failures\r\nlike this, and arguably the jobs can be scheduled in parallel so the \r\noverall execution is faster.\r\n\r\nUnlock urllib version, to be able to use more recent pytest versions.\r\n\r\n---------\r\n\r\nCo-authored-by: Gabriel Erzse ","shortMessageHtmlLink":"Add support for Python 3.12 (redis#2979)"}},{"before":"7b3f0d652fdd08dfbe61656f148ddc0f4f2d4fde","after":"6a2a6368e6a76d0ab2eb7236d4a69ce13730d119","ref":"refs/heads/5.0","pushedAt":"2024-07-11T15:00:01.000Z","pushType":"push","commitsCount":37,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Decode search results at field level (#3309)\n\nMake it possible to configure at field level how search\nresults are decoded.\n\nFixes: #2772, #2275","shortMessageHtmlLink":"Decode search results at field level (redis#3309)"}},{"before":"8c79060be9f08004372a9e81778f796232a52d17","after":"62fc873a97231a614f3b1aed602501a12365016c","ref":"refs/heads/backport-redis74-features","pushedAt":"2024-07-11T08:56:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Decode search results at field level (#3309)\n\nMake it possible to configure at field level how search\nresults are decoded.\n\nFixes: #2772, #2275","shortMessageHtmlLink":"Decode search results at field level (redis#3309)"}},{"before":null,"after":"8c79060be9f08004372a9e81778f796232a52d17","ref":"refs/heads/backport-redis74-features","pushedAt":"2024-07-11T08:39:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Decode search results at field level (#3309)\n\nMake it possible to configure at field level how search\r\nresults are decoded.\r\n\r\nFixes: #2772, #2275","shortMessageHtmlLink":"Decode search results at field level (redis#3309)"}},{"before":"0be67bfdf609943e6ce8ecdb026c3234753bbfec","after":"1bb8eaba2d9dd30ebc123929dc3f22a137efcfde","ref":"refs/heads/master","pushedAt":"2024-07-11T06:49:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Decode search results at field level (#3309)\n\nMake it possible to configure at field level how search\r\nresults are decoded.\r\n\r\nFixes: #2772, #2275","shortMessageHtmlLink":"Decode search results at field level (redis#3309)"}},{"before":"57af28562dc042a10228cd2da6686a370cead823","after":"0be67bfdf609943e6ce8ecdb026c3234753bbfec","ref":"refs/heads/master","pushedAt":"2024-07-04T17:15:07.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Format connection errors in the same way everywhere (#3305)\n\nConnection errors are formatted in four places, sync and async, network\r\nsocket and unix socket. Each place has some small differences compared\r\nto the others, while they could be, and should be, formatted in an\r\nuniform way. Factor out the logic in a helper method and call that\r\nmethod in all four places. Arguably we lose some specificity, e.g. the\r\nwords \"unix socket\" won't be there anymore, but it is more valuable to not\r\nhave code duplication.","shortMessageHtmlLink":"Format connection errors in the same way everywhere (redis#3305)"}},{"before":"cb894705f924dd7085cad5707567d497ab6608d6","after":"b92f8d2f9df188933d985346aa4c28dec0a2ee0e","ref":"refs/heads/prepare-for-7.4-rc2","pushedAt":"2024-07-04T12:55:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Use Redis Stack 7.4 RC2 image for tests","shortMessageHtmlLink":"Use Redis Stack 7.4 RC2 image for tests"}},{"before":"359a1a5e815e221c6d2b384880366b323c132893","after":"bf189fc8a7532a979b4e480cbfb1c1f4c948b36e","ref":"refs/heads/streamline-error-formatting","pushedAt":"2024-07-04T09:51:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Stabilize async test","shortMessageHtmlLink":"Stabilize async test"}},{"before":"47df57161e70428864de7b582f9017400a0f5e75","after":"359a1a5e815e221c6d2b384880366b323c132893","ref":"refs/heads/streamline-error-formatting","pushedAt":"2024-07-04T08:25:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Stabilize async test","shortMessageHtmlLink":"Stabilize async test"}},{"before":"e4ac10caf32b69fd9b5e53ab561f060191f04278","after":"47df57161e70428864de7b582f9017400a0f5e75","ref":"refs/heads/streamline-error-formatting","pushedAt":"2024-07-04T08:10:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Also cover the async test","shortMessageHtmlLink":"Also cover the async test"}},{"before":"d6952a9bcc8a86e361fd87116084c7207a5f89b1","after":"e4ac10caf32b69fd9b5e53ab561f060191f04278","ref":"refs/heads/streamline-error-formatting","pushedAt":"2024-07-03T17:48:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Format connection errors in the same way everywhere\n\nConnection errors are formatted in four places, sync and async, network\nsocket and unix socket. Each place has some small differences compared\nto the others, while they could be, and should be, formatted in an\nuniform way. Factor out the logic in a helper method and call that\nmethod in all four places.","shortMessageHtmlLink":"Format connection errors in the same way everywhere"}},{"before":"b7f9a4c02aeb687d4db307a63cff0fb24aaec427","after":"57af28562dc042a10228cd2da6686a370cead823","ref":"refs/heads/master","pushedAt":"2024-07-03T17:46:27.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Add details to the asyncio connection error message (#3211)\n\nFor asyncio connection errors, include the details in the error message,\r\ninstead of only including the error code.\r\n\r\nCo-authored-by: dmitry.kanev \r\nCo-authored-by: Gabriel Erzse ","shortMessageHtmlLink":"Add details to the asyncio connection error message (redis#3211)"}},{"before":null,"after":"d6952a9bcc8a86e361fd87116084c7207a5f89b1","ref":"refs/heads/streamline-error-formatting","pushedAt":"2024-07-03T17:44:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Format connection errors in the same way everywhere\n\nConnection errors are formatted in four places, sync and async, network\nsocket and unix socket. Each place has some small differences compared\nto the others, while they could be, and should be, formatted in an\nuniform way. Factor out the logic in a helper method and call that\nmethod in all four places.","shortMessageHtmlLink":"Format connection errors in the same way everywhere"}},{"before":"13a6fee4e5cb0c1e4d89bc8e31a493e1c826af50","after":"cb894705f924dd7085cad5707567d497ab6608d6","ref":"refs/heads/prepare-for-7.4-rc2","pushedAt":"2024-07-02T11:57:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Fix Docker image tag","shortMessageHtmlLink":"Fix Docker image tag"}},{"before":null,"after":"13a6fee4e5cb0c1e4d89bc8e31a493e1c826af50","ref":"refs/heads/prepare-for-7.4-rc2","pushedAt":"2024-07-02T11:19:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Prepare for Redis 7.4 RC2\n\nAdapt the code and some of the tests to match the changes done in the\nRedis 7.4 RC2 release.","shortMessageHtmlLink":"Prepare for Redis 7.4 RC2"}},{"before":"12b040e6bf6f5210a3389c720c09a4796a95f443","after":"b7f9a4c02aeb687d4db307a63cff0fb24aaec427","ref":"refs/heads/master","pushedAt":"2024-07-01T08:59:43.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Fixes CAE-333 (#3290)\n\n* Fixes CAE-333, which uncovered that the init method of the base\r\nclass did override the initialization of the socket_timeout parameter.\r\n\r\n* Added missing blank lines\r\n\r\n* Removed blank line\r\n\r\n* Changed to quotes\r\n\r\n---------\r\n\r\nCo-authored-by: vladvildanov ","shortMessageHtmlLink":"Fixes CAE-333 (redis#3290)"}},{"before":"40a90926b97593d04591f4a3a67706c2a15a2b89","after":"7b3f0d652fdd08dfbe61656f148ddc0f4f2d4fde","ref":"refs/heads/5.0","pushedAt":"2024-07-01T08:58:34.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"[5.0] Fixes CAE-333 (#3293)\n\n* Fixes CAE-333 (#3290)\r\n\r\n* Fixes CAE-333, which uncovered that the init method of the base\r\nclass did override the initialization of the socket_timeout parameter.\r\n\r\n* Added missing blank lines\r\n\r\n* Removed blank line\r\n\r\n* Changed to quotes\r\n\r\n---------\r\n\r\nCo-authored-by: vladvildanov \r\n\r\n* Updated version in setup.py\r\n\r\n---------\r\n\r\nCo-authored-by: David Maier <60782329+dmaier-redislabs@users.noreply.github.com>","shortMessageHtmlLink":"[5.0] Fixes CAE-333 (redis#3293)"}},{"before":null,"after":"434715052c79354c01df84fc06ae9e6539ce5ab8","ref":"refs/heads/bump-version-5.1.0b7","pushedAt":"2024-06-20T07:38:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Version 5.1.0b7","shortMessageHtmlLink":"Version 5.1.0b7"}},{"before":"d288a297fd09f52c89ec6dcc46f89b3a6f1bfdf5","after":"12b040e6bf6f5210a3389c720c09a4796a95f443","ref":"refs/heads/master","pushedAt":"2024-06-20T07:17:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Re-enable Graph tests (#3287)\n\nAlthough the Graph module was deprecated, we want to have tests running\r\nas long as we keep the client code. Therefore re-enable the Graph tests, by\r\nadding to the docker-compose stack an older redis-stack-server image. The\r\nGraph tests run only with RESP2.\r\n\r\nTweak the CI so that it runs against the latest RC release for now. This way\r\nwe get all the features in RC release of server, so we can execute all tests,\r\nincluding the ones for hash field expiration.\r\n\r\nSome test failures brought to light issues with the RESP3 push message\r\ninvalidation handler, align a bit the code in that area.\r\n\r\nSome more housekeeping around tests, here and there.","shortMessageHtmlLink":"Re-enable Graph tests (redis#3287)"}},{"before":"5da33f2888115f51e183d243aa1d75078bf70586","after":"5eedb13310153f90fdfe73990cbe7612823c36ca","ref":"refs/heads/reenable-graph-tests","pushedAt":"2024-06-19T20:40:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Fix skip based on RESP version condition","shortMessageHtmlLink":"Fix skip based on RESP version condition"}},{"before":"5e87cc7eb1303f85165678c56dde7f143dacd5e4","after":"5da33f2888115f51e183d243aa1d75078bf70586","ref":"refs/heads/reenable-graph-tests","pushedAt":"2024-06-19T16:26:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Fix linter errors","shortMessageHtmlLink":"Fix linter errors"}},{"before":"2a9f95d444bee6bedcc5351c845de110bd8eefe3","after":"5e87cc7eb1303f85165678c56dde7f143dacd5e4","ref":"refs/heads/reenable-graph-tests","pushedAt":"2024-06-19T15:52:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Improve client kill maxage test","shortMessageHtmlLink":"Improve client kill maxage test"}},{"before":"c518bb4b692cf0da4a1f85c1126a0e3b3b8e9d1f","after":"2a9f95d444bee6bedcc5351c845de110bd8eefe3","ref":"refs/heads/reenable-graph-tests","pushedAt":"2024-06-19T14:57:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Fix invalidations push handler in RESP3","shortMessageHtmlLink":"Fix invalidations push handler in RESP3"}},{"before":"c2ff5b8b67975d4a185b505e5f8d3d9d272a5bf5","after":"c518bb4b692cf0da4a1f85c1126a0e3b3b8e9d1f","ref":"refs/heads/reenable-graph-tests","pushedAt":"2024-06-19T14:27:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Skip Graph tests with RESP3","shortMessageHtmlLink":"Skip Graph tests with RESP3"}},{"before":null,"after":"c2ff5b8b67975d4a185b505e5f8d3d9d272a5bf5","ref":"refs/heads/reenable-graph-tests","pushedAt":"2024-06-19T12:44:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Re-enable Graph tests\n\nAlthough the Graph module was deprecated, we want to have tests running\nas long as we keep the client code. So re-enable the Graph tests, by\nadding to the docker-compose stack a redis-stack-server container with\nan older version.\n\nTweak the CI so that it runs against the latest RC release for now, in\norder to have all tests executed, including the ones for hash field\nexpiration.\n\nTake the opportunity to mark all tests related to TimeSeries as modules\ntests.","shortMessageHtmlLink":"Re-enable Graph tests"}},{"before":"04391fd51f0ef672ea43ad240317523f0588cbc7","after":"d288a297fd09f52c89ec6dcc46f89b3a6f1bfdf5","ref":"refs/heads/master","pushedAt":"2024-06-19T11:46:38.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Do not restrict pytest dependencies versions (#3286)\n\nTry to not restrict the versions of pytest dependencies, see if we can\r\nget rid of the segmentation faults that we see pretty often in the CI.\r\n\r\nTake the opportunity to sort the dev_requirements.txt file.","shortMessageHtmlLink":"Do not restrict pytest dependencies versions (redis#3286)"}},{"before":null,"after":"f7e9c092d8d1be3fa12c07d18e80f95627e028bd","ref":"refs/heads/dont-restrict-pytest-versions","pushedAt":"2024-06-19T10:29:15.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Do not restrict pytest dependencies versions\n\nTry to not restrict the versions of pytest dependencies, see if we can\nget rid of the segmentation faults that we see pretty often in the CI.\n\nTake the opportunity to sort the dev_requirements.txt file.","shortMessageHtmlLink":"Do not restrict pytest dependencies versions"}},{"before":null,"after":"58af1ea218d821ec9e8f51e8d7d0bf7bc6908878","ref":"refs/heads/add-codecov-token","pushedAt":"2024-06-19T09:49:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Add CODECOV token to CI","shortMessageHtmlLink":"Add CODECOV token to CI"}},{"before":"893efc30b6f1d321e38d058657b757b1ec17aa99","after":"04391fd51f0ef672ea43ad240317523f0588cbc7","ref":"refs/heads/master","pushedAt":"2024-06-19T09:15:51.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Make sure the CI actually runs RESP3 tests (#3270)\n\nThe CI tests were not running with RESP3 protocol, it was just an\r\nillusion that they do. Fix this, and also preserve coverage and test\r\nartifacts from those runs too.\r\n\r\nSome issues have surfaced after the change.\r\n\r\nThe most notable issue is a bug in hiredis-py, which prevents it\r\nfrom being used in cluster mode at least. Make sure cluster tests do\r\nnot run with hiredis-py. Also make sure some specific unit tests do\r\nnot run with hiredis-py.\r\n\r\nOne other issue with hiredis-py is fixed in this commit. Use a\r\nsentinel object instance to signal lack of data in hiredis-py, instead\r\nof piggybacking of `False`, which can also be returned by parsing\r\nvalid RESP payloads.\r\n\r\nSome of the unit tests, mostly for modules, were failing, they are now\r\nupdated so that they pass.\r\n\r\nRemove async parser from test fixture params. Leave the decision for\r\nthe async parser to be used in tests to be taken based on the availability\r\nof hiredis-py, and on the protocol that is set for the tests. Otherwise \r\nwhen hiredis-py is available we would also run the non-hiredis tests.","shortMessageHtmlLink":"Make sure the CI actually runs RESP3 tests (redis#3270)"}},{"before":"7c75bfa2c38560d7f8400b6071b9e2d0dd419bea","after":"9ded3b5b86713067fb8546243685ade7b0878938","ref":"refs/heads/run-resp3-tests-in-ci","pushedAt":"2024-06-19T06:57:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gerzse","name":"Gabriel Erzse","path":"/gerzse","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5439601?s=80&v=4"},"commit":{"message":"Undo some more changes","shortMessageHtmlLink":"Undo some more changes"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEfPdzEAA","startCursor":null,"endCursor":null}},"title":"Activity ยท gerzse/redis-py"}