{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":230469143,"defaultBranch":"master","name":"rules_128tech","ownerLogin":"128technology","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2019-12-27T15:38:30.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/13588912?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1713968304.0","currentOid":""},"activityList":{"items":[{"before":"a630fc7a1fd126d7e09ffffc743195cc2273681e","after":null,"ref":"refs/heads/py_unzip_bundle_v2","pushedAt":"2024-04-24T14:18:24.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"}},{"before":"34ac7c827ed47a668e1f0e02badc9666bcd6839a","after":"dbff0b391ad81162096ff1049c79dff832567757","ref":"refs/heads/master","pushedAt":"2024-04-24T14:18:19.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"Merge pull request #37 from 128technology/py_unzip_bundle_v2","shortMessageHtmlLink":"Merge pull request #37 from 128technology/py_unzip_bundle_v2"}},{"before":"8395e9ea368727bc60ef779cb2e821ab6143e041","after":"a630fc7a1fd126d7e09ffffc743195cc2273681e","ref":"refs/heads/py_unzip_bundle_v2","pushedAt":"2024-04-24T14:16:50.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"Merge branch 'master' into py_unzip_bundle_v2","shortMessageHtmlLink":"Merge branch 'master' into py_unzip_bundle_v2"}},{"before":"c7d2eba49a29f1c36c98bdfacc063e62e346a365","after":"8395e9ea368727bc60ef779cb2e821ab6143e041","ref":"refs/heads/py_unzip_bundle_v2","pushedAt":"2024-04-15T14:24:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"reduce disk-usage when packaging multiple `py_unzip`s\n\nPreviously `py_unzip` placed all artifacts in `{libdir}/unzip/{name}` which meant that setting the same `libdir` for multiple `py_unzip` artifacts put the artifacts in sibling directories.\nNow artifacts are placed in `{libdir}/unzip` so multiple `py_unzip` rules with the same `libdir` will be combined to share common libraries.\n\nExample output:\n\n```bzl\npy_unzip(\n name = \"one\",\n srcs = [\"one.py\"],\n main = [\"one.py\"],\n libdir = \"/lib\",\n deps = [\"@pypi//lxml\"],\n)\n\npy_unzip(\n name = \"two\",\n srcs = [\n \"two.py\",\n \"three.py\",\n ],\n main = [\"two.py\"],\n libdir = \"/lib\",\n)\n\npkg_tar(\n name = \"pkg\",\n deps = [\n \"one.tar\",\n \"two.tar\",\n ],\n)\n```\n\n`bazel build //:pkg` will create an archive with the following files,\n```\n/lib/unzip/\n one.py # generated file based on __main__.py.tmpl\n two.py # generated file based on __main__.py.tmpl\n runfiles/\n rules_128tech/\n one.py # user-specified `main` argument to `py_unzip (\"real main\") with boilerplate inserted\n two.py # user-specified `main` argument to `py_unzip (\"real main\") with boilerplate inserted\n three.py\n pypi/\n lxml/\n __init__.py\n etree.py\n```","shortMessageHtmlLink":"reduce disk-usage when packaging multiple py_unzips"}},{"before":null,"after":"c7d2eba49a29f1c36c98bdfacc063e62e346a365","ref":"refs/heads/py_unzip_bundle_v2","pushedAt":"2024-04-15T14:22:58.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"reduce disk-usage when packaging multiple `py_unzip`s\n\nPreviously `py_unzip` placed all artifacts in `{libdir}/unzip/{name}` which meant that setting the same `libdir` for multiple `py_unzip` artifacts put the artifacts in sibling directories.\nNow artifacts are placed in `{libdir}/unzip` so multiple `py_unzip` rules with the same `libdir` will be combined to share common libraries.\n\nExample output:\n\n```bzl\npy_unzip(\n name = \"one\",\n srcs = [\"one.py\"],\n main = [\"one.py\"],\n libdir = \"/lib\",\n deps = [\"@pypi//lxml\"],\n)\n\npy_unzip(\n name = \"two\",\n srcs = [\n \"two.py\",\n \"three.py\",\n ],\n main = [\"two.py\"],\n libdir = \"/lib\",\n)\n\npkg_tar(\n name = \"pkg\",\n deps = [\n \"one.tar\",\n \"two.tar\",\n ],\n)\n```\n\n`bazel build //:pkg` will create an archive with the following files,\n```\n/lib/unzip/\n one.py # generated file based on __main__.py.tmpl\n two.py # generated file based on __main__.py.tmpl\n runfiles/\n rules_128tech/\n one.py # user-specified `main` argument to `py_unzip (\"real main\") with boilerplate inserted\n two.py # user-specified `main` argument to `py_unzip (\"real main\") with boilerplate inserted\n three.py\n pypi/\n lxml/\n __init__.py\n etree.py\n```","shortMessageHtmlLink":"reduce disk-usage when packaging multiple py_unzips"}},{"before":"d6cde5aece6ab555d2b3fac52db5d4ee09d2876b","after":null,"ref":"refs/heads/fix/no-duplicate-header","pushedAt":"2024-02-22T16:48:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"}},{"before":"328fdb5c174b1d764fb1a4751ae75ac3e8301639","after":"34ac7c827ed47a668e1f0e02badc9666bcd6839a","ref":"refs/heads/master","pushedAt":"2024-02-22T16:48:05.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"},"commit":{"message":"Merge pull request #36 from 128technology/fix/no-duplicate-header","shortMessageHtmlLink":"Merge pull request #36 from 128technology/fix/no-duplicate-header"}},{"before":"04c58892721fd68d154251af2e5b70f066b5ffb8","after":"d6cde5aece6ab555d2b3fac52db5d4ee09d2876b","ref":"refs/heads/fix/no-duplicate-header","pushedAt":"2024-02-21T17:24:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"},"commit":{"message":"More obvious success in --quiet mode","shortMessageHtmlLink":"More obvious success in --quiet mode"}},{"before":null,"after":"04c58892721fd68d154251af2e5b70f066b5ffb8","ref":"refs/heads/fix/no-duplicate-header","pushedAt":"2024-02-21T17:06:25.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"},"commit":{"message":"Use pip-compile builtin header to avoid duplicates\n\nAlso turn down the verbosity by default, no need to spam with the full\ncontents of the file every time we generate it.","shortMessageHtmlLink":"Use pip-compile builtin header to avoid duplicates"}},{"before":"4fb7107bee68598d5310f3f4cec767985a7b0395","after":null,"ref":"refs/heads/ian/fix-shuffled-sharded-tests","pushedAt":"2024-02-07T20:59:53.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"}},{"before":"f61bc7e28e92ee7bc37330b74f5958303e1cb6d3","after":"328fdb5c174b1d764fb1a4751ae75ac3e8301639","ref":"refs/heads/master","pushedAt":"2024-02-07T20:59:51.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"},"commit":{"message":"Merge pull request #35 from 128technology/ian/fix-shuffled-sharded-tests","shortMessageHtmlLink":"Merge pull request #35 from 128technology/ian/fix-shuffled-sharded-tests"}},{"before":null,"after":"4fb7107bee68598d5310f3f4cec767985a7b0395","ref":"refs/heads/ian/fix-shuffled-sharded-tests","pushedAt":"2024-02-07T20:55:52.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"},"commit":{"message":"Always ensure sharding happens before test shuffle\n\nIf shuffling happens first (default for pytest-randomly since its hook\nhas `tryfirst=True`), different shards will start off with a base set of\nitems that are different from each other. As a result, the bucketizing\nwill be inconsistent across shards and some tests may be run multiple\ntimes or not run at all!\n\nEnsuring our plugin wraps the randomly plugin means we always shard\nconsistently first, then the tests within a shard will be shuffled\nrandomly instead.","shortMessageHtmlLink":"Always ensure sharding happens before test shuffle"}},{"before":"7ad194edfba50e6fecb9e77fd89361674efba6ac","after":null,"ref":"refs/heads/fix/allow-downstream-pytest-args-select","pushedAt":"2024-02-02T17:15:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"}},{"before":"b0d3df6bba3d64bce5ae8d07a4912f05d0dd812f","after":"f61bc7e28e92ee7bc37330b74f5958303e1cb6d3","ref":"refs/heads/master","pushedAt":"2024-02-02T17:14:54.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"},"commit":{"message":"Merge pull request #34 from 128technology/fix/allow-downstream-pytest-args-select","shortMessageHtmlLink":"Merge pull request #34 from 128technology/fix/allow-downstream-pytest…"}},{"before":"191549d70221c7176cc59af577779b5f9135fc6f","after":"7ad194edfba50e6fecb9e77fd89361674efba6ac","ref":"refs/heads/fix/allow-downstream-pytest-args-select","pushedAt":"2024-02-02T15:05:01.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"},"commit":{"message":"Allow select() in args by avoiding cast to list\n\nWith select(), downstream code can still concatenate args with `+` but casting\nto a list causes failures.","shortMessageHtmlLink":"Allow select() in args by avoiding cast to list"}},{"before":null,"after":"191549d70221c7176cc59af577779b5f9135fc6f","ref":"refs/heads/fix/allow-downstream-pytest-args-select","pushedAt":"2024-02-02T15:03:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"},"commit":{"message":"Allow select() in args by avoiding cast to list\n\nWith select(), downstream code can still concatenate args with `+` but casting\nto a list causes failures.","shortMessageHtmlLink":"Allow select() in args by avoiding cast to list"}},{"before":"41cb57846feb62ae2f4d75aa469c49a434677474","after":null,"ref":"refs/heads/fix/no-shuffle-py2","pushedAt":"2024-01-22T15:10:03.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"}},{"before":"585d0ccc4f58995048d447fc7cff60bd1c71b250","after":"b0d3df6bba3d64bce5ae8d07a4912f05d0dd812f","ref":"refs/heads/master","pushedAt":"2024-01-22T15:10:01.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"},"commit":{"message":"Merge pull request #33 from 128technology/fix/no-shuffle-py2\n\nDon't pass any shuffle args for PY2 tests","shortMessageHtmlLink":"Merge pull request #33 from 128technology/fix/no-shuffle-py2"}},{"before":null,"after":"41cb57846feb62ae2f4d75aa469c49a434677474","ref":"refs/heads/fix/no-shuffle-py2","pushedAt":"2024-01-19T21:46:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ian-h-chamberlain","name":"Ian Chamberlain","path":"/ian-h-chamberlain","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11131775?s=80&v=4"},"commit":{"message":"Don't pass any shuffle args for PY2 tests","shortMessageHtmlLink":"Don't pass any shuffle args for PY2 tests"}},{"before":"a4dfabce22644f894943b1f83b86aed7474ae903","after":null,"ref":"refs/heads/jbog/noshuffle","pushedAt":"2023-11-30T14:38:23.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"}},{"before":"b236e15e00d170b817ec2f82193af7f377b7b0e9","after":"585d0ccc4f58995048d447fc7cff60bd1c71b250","ref":"refs/heads/master","pushedAt":"2023-11-30T14:38:20.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"Merge pull request #32 from 128technology/jbog/noshuffle","shortMessageHtmlLink":"Merge pull request #32 from 128technology/jbog/noshuffle"}},{"before":"c0d5aff1f2e8cca55f02304aadb474bbc156c8c5","after":"a4dfabce22644f894943b1f83b86aed7474ae903","ref":"refs/heads/jbog/noshuffle","pushedAt":"2023-11-22T13:49:14.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"teach `pytest_test` how to not shuffle a test via the commandline\n\nIf an explicit value of `True` or `False` is not passed to `pytest_test` for the `shuffle` argument then the value can be configured on the command line.\nThe default is still to shuffle tests.\n\n```bzl\n\n # Will never be shuffled.\npytest_test(\n name = \"one\",\n shuffle = False,\n)\n\n # Will always be shuffled.\npytest_test(\n name = \"two\",\n shuffle = True,\n)\n\n # Will shuffle by default, can be disabled by `--config=noshuffle`.\npytest_test(\n name = \"three\",\n)\n```","shortMessageHtmlLink":"teach pytest_test how to not shuffle a test via the commandline"}},{"before":"f9a9dcd5f51c8964fa0fb2542ab4ef628f2b1b4a","after":"c0d5aff1f2e8cca55f02304aadb474bbc156c8c5","ref":"refs/heads/jbog/noshuffle","pushedAt":"2023-11-21T14:33:07.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"teach `pytest_test` how to not shuffle a test via the commandline\n\nIf an explicit value of `True` or `False` is not passed to `pytest_test` for the `shuffle` argument then the value can be configured on the command line.\nThe default is still to shuffle tests.\n\n```bzl\n\n # Will never be shuffled.\npytest_test(\n name = \"one\",\n shuffle = False,\n)\n\n # Will always be shuffled.\npytest_test(\n name = \"two\",\n shuffle = True,\n)\n\n # Will shuffle by default, can be disabled by `--config=noshuffle`.\npytest_test(\n name = \"three\",\n)\n```","shortMessageHtmlLink":"teach pytest_test how to not shuffle a test via the commandline"}},{"before":"720ede8b77643589213f2164cbfb1835fbd56488","after":"f9a9dcd5f51c8964fa0fb2542ab4ef628f2b1b4a","ref":"refs/heads/jbog/noshuffle","pushedAt":"2023-11-20T20:22:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"teach `pytest_test` how to not shuffle a test via the commandline\n\nIf an explicit value of `True` or `False` is not passed to `pytest_test` for the `shuffle` argument then the value can be configured on the command line.\nThe default is still to shuffle tests.\n\n```bzl\n\n # Will never be shuffled.\npytest_test(\n name = \"one\",\n shuffle = False,\n)\n\n # Will always be shuffled.\npytest_test(\n name = \"two\",\n shuffle = True,\n)\n\n # Will shuffle by default, can be disabled by `--config=noshuffle`.\npytest_test(\n name = \"three\",\n)\n```","shortMessageHtmlLink":"teach pytest_test how to not shuffle a test via the commandline"}},{"before":"560a0f6d7d3b64669e5b71f61cc68520dfc1838a","after":"720ede8b77643589213f2164cbfb1835fbd56488","ref":"refs/heads/jbog/noshuffle","pushedAt":"2023-11-20T20:21:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"teach `pytest_test` how to not shuffle a test via the commandline\n\nIf an explicit value of `True` or `False` is not passed to `pytest_test` for the `shuffle` argument then the value can be configured on the command line.\nThe default is still to shuffle tests.\n\n```bzl\npytest_test(\n name = \"one\",\n shuffle = False,\n)\n\npytest_test(\n name = \"two\",\n shuffle = True,\n)\n\npytest_test(\n name = \"three\",\n)\n```","shortMessageHtmlLink":"teach pytest_test how to not shuffle a test via the commandline"}},{"before":null,"after":"560a0f6d7d3b64669e5b71f61cc68520dfc1838a","ref":"refs/heads/jbog/noshuffle","pushedAt":"2023-11-20T20:20:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"teach `pytest_test` how to disable a test via the commandline\n\nIf an explicit value of `True` or `False` is not passed to `pytest_test` for the `shuffle` argument then the value can be configured on the command line.\nThe default is still to shuffle tests.\n\n```bzl\npytest_test(\n name = \"one\",\n shuffle = False,\n)\n\npytest_test(\n name = \"two\",\n shuffle = True,\n)\n\npytest_test(\n name = \"three\",\n)\n```","shortMessageHtmlLink":"teach pytest_test how to disable a test via the commandline"}},{"before":"3d75b9d0d7b562cf77827d1b5a203137cf9f244a","after":null,"ref":"refs/heads/python-path","pushedAt":"2023-11-17T18:22:01.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"}},{"before":"909fe60f0e3a428b49b96c9853b19f8e92e2baee","after":"b236e15e00d170b817ec2f82193af7f377b7b0e9","ref":"refs/heads/master","pushedAt":"2023-11-17T18:21:59.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"Merge pull request #31 from 128technology/python-path","shortMessageHtmlLink":"Merge pull request #31 from 128technology/python-path"}},{"before":"56fff45c3ee2a50a93ad3fadc4578390c330ca4e","after":"3d75b9d0d7b562cf77827d1b5a203137cf9f244a","ref":"refs/heads/python-path","pushedAt":"2023-11-17T18:21:01.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"unset `\"PYTHONPATH\"` && make boilerplate generation match an exact path","shortMessageHtmlLink":"unset \"PYTHONPATH\" && make boilerplate generation match an exact path"}},{"before":"d1b73f32fb664c12a1f2028bfd423ad367462052","after":"56fff45c3ee2a50a93ad3fadc4578390c330ca4e","ref":"refs/heads/python-path","pushedAt":"2023-11-17T18:03:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jacobbogdanov","name":"Jacob Bogdanov","path":"/jacobbogdanov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/48320751?s=80&v=4"},"commit":{"message":"unset `\"PYTHONPATH\"` && make boilerplate generation match an exact path","shortMessageHtmlLink":"unset \"PYTHONPATH\" && make boilerplate generation match an exact path"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEOTfE9wA","startCursor":null,"endCursor":null}},"title":"Activity · 128technology/rules_128tech"}