git-goose 0.3.2__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. git_goose-0.5.0/.github/workflows/run.yaml +34 -0
  2. git_goose-0.5.0/.goose/python/manifest.json +1 -0
  3. git_goose-0.5.0/.goose/python/requirements.txt +25 -0
  4. git_goose-0.5.0/.goose/type-check/manifest.json +1 -0
  5. git_goose-0.5.0/.goose/type-check/requirements.txt +162 -0
  6. {git_goose-0.3.2 → git_goose-0.5.0}/Makefile +1 -1
  7. {git_goose-0.3.2 → git_goose-0.5.0}/PKG-INFO +55 -10
  8. {git_goose-0.3.2 → git_goose-0.5.0}/README.md +53 -9
  9. {git_goose-0.3.2 → git_goose-0.5.0}/goose.yaml +5 -5
  10. {git_goose-0.3.2 → git_goose-0.5.0}/pyproject.toml +3 -5
  11. {git_goose-0.3.2 → git_goose-0.5.0}/requirements.txt +23 -3
  12. {git_goose-0.3.2 → git_goose-0.5.0}/src/git_goose.egg-info/PKG-INFO +55 -10
  13. {git_goose-0.3.2 → git_goose-0.5.0}/src/git_goose.egg-info/SOURCES.txt +2 -0
  14. git_goose-0.5.0/src/git_goose.egg-info/entry_points.txt +2 -0
  15. {git_goose-0.3.2 → git_goose-0.5.0}/src/git_goose.egg-info/requires.txt +1 -0
  16. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/__main__.py +1 -1
  17. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/_version.py +2 -2
  18. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/asyncio.py +1 -6
  19. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/backend/python.py +33 -21
  20. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/manifest.py +3 -7
  21. git_goose-0.3.2/.goose/python/manifest.json +0 -1
  22. git_goose-0.3.2/.goose/python/requirements.txt +0 -25
  23. git_goose-0.3.2/.goose/type-check/manifest.json +0 -1
  24. git_goose-0.3.2/.goose/type-check/requirements.txt +0 -162
  25. {git_goose-0.3.2 → git_goose-0.5.0}/.dockerignore +0 -0
  26. {git_goose-0.3.2 → git_goose-0.5.0}/.editorconfig +0 -0
  27. {git_goose-0.3.2 → git_goose-0.5.0}/.github/dependabot.yml +0 -0
  28. {git_goose-0.3.2 → git_goose-0.5.0}/.github/workflows/ci.yaml +0 -0
  29. {git_goose-0.3.2 → git_goose-0.5.0}/.github/workflows/release.yaml +0 -0
  30. {git_goose-0.3.2 → git_goose-0.5.0}/.gitignore +0 -0
  31. {git_goose-0.3.2 → git_goose-0.5.0}/.goose/node/manifest.json +0 -0
  32. {git_goose-0.3.2 → git_goose-0.5.0}/.goose/node/package-lock.json +0 -0
  33. {git_goose-0.3.2 → git_goose-0.5.0}/.goose/node/package.json +0 -0
  34. {git_goose-0.3.2 → git_goose-0.5.0}/Dockerfile +0 -0
  35. {git_goose-0.3.2 → git_goose-0.5.0}/LICENSE +0 -0
  36. {git_goose-0.3.2 → git_goose-0.5.0}/ruff.toml +0 -0
  37. {git_goose-0.3.2 → git_goose-0.5.0}/setup.cfg +0 -0
  38. {git_goose-0.3.2 → git_goose-0.5.0}/src/git_goose.egg-info/dependency_links.txt +0 -0
  39. {git_goose-0.3.2 → git_goose-0.5.0}/src/git_goose.egg-info/top_level.txt +0 -0
  40. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/__init__.py +0 -0
  41. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/_utils/__init__.py +0 -0
  42. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/_utils/pydantic.py +0 -0
  43. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/backend/__init__.py +0 -0
  44. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/backend/base.py +0 -0
  45. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/backend/index.py +0 -0
  46. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/backend/node.py +0 -0
  47. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/config.py +0 -0
  48. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/context.py +0 -0
  49. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/environment.py +0 -0
  50. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/executable_unit.py +0 -0
  51. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/filter.py +0 -0
  52. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/git/__init__.py +0 -0
  53. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/git/shared.py +0 -0
  54. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/git/status.py +0 -0
  55. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/orphan_environments.py +0 -0
  56. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/parallel.py +0 -0
  57. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/paths.py +0 -0
  58. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/process.py +0 -0
  59. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/py.typed +0 -0
  60. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/scheduler.py +0 -0
  61. {git_goose-0.3.2 → git_goose-0.5.0}/src/goose/targets.py +0 -0
  62. {git_goose-0.3.2 → git_goose-0.5.0}/tests/__init__.py +0 -0
  63. {git_goose-0.3.2 → git_goose-0.5.0}/tests/test_targets.py +0 -0
@@ -0,0 +1,34 @@
1
+ # This is a reusable workflow that's meant to be the canonical way of running goose in
2
+ # Github Actions workflows. See README for an example of how to use this in your
3
+ # workflows.
4
+
5
+ on:
6
+ workflow_call: {}
7
+
8
+ env:
9
+ PYTHON_VERSION: "3.13"
10
+ COLUMNS: "120"
11
+ FORCE_COLOR: "1"
12
+ PYTHONUNBUFFERED: "1"
13
+
14
+ jobs:
15
+ goose-run:
16
+ name: Run goose checks
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ - uses: actions/setup-python@v5
21
+ with:
22
+ python-version: 3.13
23
+ cache: pip
24
+ check-latest: true
25
+ - name: goose cache
26
+ uses: actions/cache@v4
27
+ with:
28
+ path: ~/.cache/goose
29
+ key: "${{ runner.os }}-goose-${{ env.PYTHON_VERSION }}-${{ hashFiles('.goose/**/manifest.json') }}"
30
+ restore-keys: |
31
+ ${{ runner.os }}-goose-${{ env.PYTHON_VERSION }}
32
+ ${{ runner.os }}-goose
33
+ - run: pip install --upgrade git-goose
34
+ - run: goose run --select=all --delete-orphan-environments
@@ -0,0 +1 @@
1
+ {"source_ecosystem":{"language":"python","version":"3.13"},"source_dependencies":["pre-commit-hooks","ruff"],"lock_files":[{"path":"requirements.txt","checksum":"sha256:615115981a484ab089b6cdbf0d42f2b98d4ce6a67a846762647903834f0a0476"}],"checksum":"sha256:d76b1704c915ac48f3740f10fd8b31b1a7e8beef041af516e6332b33fda78db3"}
@@ -0,0 +1,25 @@
1
+ pre-commit-hooks==5.0.0 \
2
+ --hash=sha256:10626959a9eaf602fbfc22bc61b6e75801436f82326bfcee82bb1f2fc4bc646e \
3
+ --hash=sha256:8d71cfb582c5c314a5498d94e0104b6567a8b93fb35903ea845c491f4e290a7a
4
+ ruamel-yaml==0.18.6 \
5
+ --hash=sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636 \
6
+ --hash=sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b
7
+ ruff==0.7.2 \
8
+ --hash=sha256:21aae53ab1490a52bf4e3bf520c10ce120987b047c494cacf4edad0ba0888da2 \
9
+ --hash=sha256:28bd8220f4d8f79d590db9e2f6a0674f75ddbc3847277dd44ac1f8d30684b828 \
10
+ --hash=sha256:2b14e77293380e475b4e3a7a368e14549288ed2931fce259a6f99978669e844f \
11
+ --hash=sha256:576305393998b7bd6c46018f8104ea3a9cb3fa7908c21d8580e3274a3b04b691 \
12
+ --hash=sha256:5b813ef26db1015953daf476202585512afd6a6862a02cde63f3bafb53d0b2d4 \
13
+ --hash=sha256:7b792468e9804a204be221b14257566669d1db5c00d6bb335996e5cd7004ba80 \
14
+ --hash=sha256:853277dbd9675810c6826dad7a428d52a11760744508340e66bf46f8be9701d9 \
15
+ --hash=sha256:9fd67094e77efbea932e62b5d2483006154794040abb3a5072e659096415ae1e \
16
+ --hash=sha256:b19fafe261bf741bca2764c14cbb4ee1819b67adb63ebc2db6401dcd652e3748 \
17
+ --hash=sha256:b73f873b5f52092e63ed540adefc3c36f1f803790ecf2590e1df8bf0a9f72cb8 \
18
+ --hash=sha256:bb8368cd45bba3f57bb29cbb8d64b4a33f8415d0149d2655c5c8539452ce7760 \
19
+ --hash=sha256:ccc7e0fc6e0cb3168443eeadb6445285abaae75142ee22b2b72c27d790ab60ba \
20
+ --hash=sha256:dba53ed84ac19ae4bfb4ea4bf0172550a2285fa27fbb13e3746f04c80f7fa088 \
21
+ --hash=sha256:dd8800cbe0254e06b8fec585e97554047fb82c894973f7ff18558eee33d1cb88 \
22
+ --hash=sha256:e00163fb897d35523c70d71a46fbaa43bf7bf9af0f4534c53ea5b96b2e03397b \
23
+ --hash=sha256:f3c54b538633482dc342e9b634d91168fe8cc56b30a4b4f99287f4e339103e88 \
24
+ --hash=sha256:fa993cfc9f0ff11187e82de874dfc3611df80852540331bc85c75809c93253a8 \
25
+ --hash=sha256:fd77877a4e43b3a98e5ef4715ba3862105e299af0c48942cc6d51ba3d97dc859
@@ -0,0 +1 @@
1
+ {"source_ecosystem":{"language":"python","version":"3.13"},"source_dependencies":["identify","mypy","pydantic","rich","typer","types-pyyaml"],"lock_files":[{"path":"requirements.txt","checksum":"sha256:81ffb57f0c0fba86bcecb5f8ad623195fdff7c6933076861bf9bcb6aee955614"}],"checksum":"sha256:a9216c079fbd845e19479ad52e5206d15a4f1f8d3d50e5cb35e051f602b956be"}
@@ -0,0 +1,162 @@
1
+ annotated-types==0.7.0 \
2
+ --hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \
3
+ --hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89
4
+ click==8.1.7 \
5
+ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \
6
+ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de
7
+ identify==2.6.1 \
8
+ --hash=sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0 \
9
+ --hash=sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98
10
+ markdown-it-py==3.0.0 \
11
+ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \
12
+ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb
13
+ mdurl==0.1.2 \
14
+ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
15
+ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba
16
+ mypy==1.13.0 \
17
+ --hash=sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc \
18
+ --hash=sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e \
19
+ --hash=sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f \
20
+ --hash=sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74 \
21
+ --hash=sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a \
22
+ --hash=sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2 \
23
+ --hash=sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b \
24
+ --hash=sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73 \
25
+ --hash=sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e \
26
+ --hash=sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d \
27
+ --hash=sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d \
28
+ --hash=sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6 \
29
+ --hash=sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca \
30
+ --hash=sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d \
31
+ --hash=sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5 \
32
+ --hash=sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62 \
33
+ --hash=sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a \
34
+ --hash=sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc \
35
+ --hash=sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7 \
36
+ --hash=sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb \
37
+ --hash=sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7 \
38
+ --hash=sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732 \
39
+ --hash=sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80 \
40
+ --hash=sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a \
41
+ --hash=sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc \
42
+ --hash=sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2 \
43
+ --hash=sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0 \
44
+ --hash=sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24 \
45
+ --hash=sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7 \
46
+ --hash=sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b \
47
+ --hash=sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372 \
48
+ --hash=sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8
49
+ mypy-extensions==1.0.0 \
50
+ --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \
51
+ --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782
52
+ pydantic==2.9.2 \
53
+ --hash=sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f \
54
+ --hash=sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12
55
+ pydantic-core==2.23.4 \
56
+ --hash=sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36 \
57
+ --hash=sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05 \
58
+ --hash=sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071 \
59
+ --hash=sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327 \
60
+ --hash=sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c \
61
+ --hash=sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36 \
62
+ --hash=sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29 \
63
+ --hash=sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744 \
64
+ --hash=sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d \
65
+ --hash=sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec \
66
+ --hash=sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e \
67
+ --hash=sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e \
68
+ --hash=sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577 \
69
+ --hash=sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232 \
70
+ --hash=sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863 \
71
+ --hash=sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6 \
72
+ --hash=sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368 \
73
+ --hash=sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480 \
74
+ --hash=sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2 \
75
+ --hash=sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2 \
76
+ --hash=sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6 \
77
+ --hash=sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769 \
78
+ --hash=sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d \
79
+ --hash=sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2 \
80
+ --hash=sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84 \
81
+ --hash=sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166 \
82
+ --hash=sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271 \
83
+ --hash=sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5 \
84
+ --hash=sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb \
85
+ --hash=sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13 \
86
+ --hash=sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323 \
87
+ --hash=sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556 \
88
+ --hash=sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665 \
89
+ --hash=sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef \
90
+ --hash=sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb \
91
+ --hash=sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119 \
92
+ --hash=sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126 \
93
+ --hash=sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510 \
94
+ --hash=sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b \
95
+ --hash=sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87 \
96
+ --hash=sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f \
97
+ --hash=sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc \
98
+ --hash=sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8 \
99
+ --hash=sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21 \
100
+ --hash=sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f \
101
+ --hash=sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6 \
102
+ --hash=sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658 \
103
+ --hash=sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b \
104
+ --hash=sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3 \
105
+ --hash=sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb \
106
+ --hash=sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59 \
107
+ --hash=sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24 \
108
+ --hash=sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9 \
109
+ --hash=sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3 \
110
+ --hash=sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd \
111
+ --hash=sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753 \
112
+ --hash=sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55 \
113
+ --hash=sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad \
114
+ --hash=sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a \
115
+ --hash=sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605 \
116
+ --hash=sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e \
117
+ --hash=sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b \
118
+ --hash=sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433 \
119
+ --hash=sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8 \
120
+ --hash=sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07 \
121
+ --hash=sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728 \
122
+ --hash=sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0 \
123
+ --hash=sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327 \
124
+ --hash=sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555 \
125
+ --hash=sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64 \
126
+ --hash=sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6 \
127
+ --hash=sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea \
128
+ --hash=sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b \
129
+ --hash=sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df \
130
+ --hash=sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e \
131
+ --hash=sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd \
132
+ --hash=sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068 \
133
+ --hash=sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3 \
134
+ --hash=sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040 \
135
+ --hash=sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12 \
136
+ --hash=sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916 \
137
+ --hash=sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f \
138
+ --hash=sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f \
139
+ --hash=sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801 \
140
+ --hash=sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231 \
141
+ --hash=sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5 \
142
+ --hash=sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8 \
143
+ --hash=sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee \
144
+ --hash=sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607
145
+ pygments==2.18.0 \
146
+ --hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \
147
+ --hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a
148
+ rich==13.9.4 \
149
+ --hash=sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098 \
150
+ --hash=sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90
151
+ shellingham==1.5.4 \
152
+ --hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \
153
+ --hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de
154
+ typer==0.12.5 \
155
+ --hash=sha256:62fe4e471711b147e3365034133904df3e235698399bc4de2b36c8579298d52b \
156
+ --hash=sha256:f592f089bedcc8ec1b974125d64851029c3b1af145f04aca64d69410f0c9b722
157
+ types-pyyaml==6.0.12.20240917 \
158
+ --hash=sha256:392b267f1c0fe6022952462bf5d6523f31e37f6cea49b14cee7ad634b6301570 \
159
+ --hash=sha256:d1405a86f9576682234ef83bcb4e6fff7c9305c8b1fbad5e0bcd4f7dbdc9c587
160
+ typing-extensions==4.12.2 \
161
+ --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \
162
+ --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8
@@ -1,4 +1,4 @@
1
1
  .PHONY: requirements
2
2
  requirements: export CUSTOM_COMPILE_COMMAND='make requirements'
3
3
  requirements:
4
- @pip-compile
4
+ @uv pip compile --generate-hashes --strip-extras --upgrade requirements.txt
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: git-goose
3
- Version: 0.3.2
3
+ Version: 0.5.0
4
4
  Summary: A picky and eager Git hook runner.
5
5
  Author-email: Anton Agestam <git@antonagestam.se>
6
6
  License: BSD 3-Clause
@@ -13,6 +13,7 @@ Classifier: Typing :: Typed
13
13
  Requires-Python: <3.14,>=3.13
14
14
  Description-Content-Type: text/markdown; charset=UTF-8
15
15
  License-File: LICENSE
16
+ Requires-Dist: uv
16
17
  Requires-Dist: pydantic
17
18
  Requires-Dist: PyYAML
18
19
  Requires-Dist: nodeenv
@@ -35,22 +36,51 @@ Requires-Dist: shellingham
35
36
 
36
37
  <p align=center>A <i>picky</i> and <i>eager</i> <a href=https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks>Git hook</a> runner.</p>
37
38
 
38
- - Reproducible builds.
39
- - Dynamic parallelism.
40
- - Small file-system footprint.
39
+ - 🔒 Reproducible builds.
40
+ - ⚡ Dynamic parallelism.
41
+ - 💨 Small file-system footprint.
42
+ - 🏃 Fast Python environmnent and dependency management thanks to [uv].
43
+
44
+ [uv]: https://github.com/astral-sh/uv
41
45
 
42
46
  ### Installation
43
47
 
48
+ #### Via PyPI
49
+
50
+ ```shell
51
+ pip install --require-venv git-goose
52
+ ```
53
+
54
+ #### Via uvx
55
+
56
+ ```shell
57
+ uvx install git-goose
58
+ ```
59
+
60
+ #### Via pipx
61
+
62
+ ```shell
63
+ pipx install git-goose
64
+ ```
65
+
44
66
  #### Docker alias
45
67
 
46
68
  ```sh
47
69
  alias goose='docker run --rm -it -v ${PWD}:/wd -v ~/.cache/goose-docker:/home/nonroot/.cache -e "GOOSE_AUGMENTED_CWD=${PWD}" ghcr.io/antonagestam/goose:latest'
48
70
  ```
49
71
 
50
- #### Via PyPI
72
+ #### Github Actions
51
73
 
52
- ```shell
53
- pip install --require-venv git-goose
74
+ ```yaml
75
+ name: CI
76
+ on:
77
+ push:
78
+ branches: ["main"]
79
+ pull_request:
80
+ jobs:
81
+ lint:
82
+ name: Run goose checks
83
+ uses: antonagestam/goose/.github/workflows/run.yaml@main
54
84
  ```
55
85
 
56
86
  ### Features
@@ -84,6 +114,21 @@ the appropriate lock files under a `.goose/` directory. The `.goose/` directory
84
114
  to be checked into git, so that future invocations of `goose run` can use the lock files
85
115
  it contains to produce identical environments for hooks to run in.
86
116
 
117
+ ```mermaid
118
+ ---
119
+ title: Lock file workflow
120
+ ---
121
+ flowchart LR
122
+ cfg["Config in goose.yaml"] -- goose upgrade --> lf
123
+ lf["Lock files under .goose/"] -- goose run --> env
124
+ env["Environments"]
125
+ ```
126
+
127
+ - Invoking `goose upgrade` creates lock files under the in-tree `.goose` directory.
128
+ - Invoking `goose run` creates out-of-tree environments from the lock files. By default
129
+ they live under `~/.cache/goose`.
130
+ - Hooks are executed in the generated environments.
131
+
87
132
  ## Usage
88
133
 
89
134
  Create a `goose.yaml` file in the repository root.
@@ -114,13 +159,13 @@ hooks:
114
159
  Bootstrap environments, generate lock files, and install dependencies.
115
160
 
116
161
  ```sh
117
- $ python -m goose upgrade
162
+ $ goose upgrade
118
163
  ```
119
164
 
120
165
  Run all hooks over all files.
121
166
 
122
167
  ```sh
123
- $ python -m goose run --select=all
168
+ $ goose run --select=all
124
169
  ```
125
170
 
126
171
  Commit configuration and lock files.
@@ -137,7 +182,7 @@ configuration to upgrade hook dependency versions, instead you just run the upgr
137
182
  command.
138
183
 
139
184
  ```sh
140
- $ python -m goose upgrade
185
+ $ goose upgrade
141
186
  $ git add .goose
142
187
  $ git commit -m 'Bump goose dependencies'
143
188
  ```
@@ -12,22 +12,51 @@
12
12
 
13
13
  <p align=center>A <i>picky</i> and <i>eager</i> <a href=https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks>Git hook</a> runner.</p>
14
14
 
15
- - Reproducible builds.
16
- - Dynamic parallelism.
17
- - Small file-system footprint.
15
+ - 🔒 Reproducible builds.
16
+ - ⚡ Dynamic parallelism.
17
+ - 💨 Small file-system footprint.
18
+ - 🏃 Fast Python environmnent and dependency management thanks to [uv].
19
+
20
+ [uv]: https://github.com/astral-sh/uv
18
21
 
19
22
  ### Installation
20
23
 
24
+ #### Via PyPI
25
+
26
+ ```shell
27
+ pip install --require-venv git-goose
28
+ ```
29
+
30
+ #### Via uvx
31
+
32
+ ```shell
33
+ uvx install git-goose
34
+ ```
35
+
36
+ #### Via pipx
37
+
38
+ ```shell
39
+ pipx install git-goose
40
+ ```
41
+
21
42
  #### Docker alias
22
43
 
23
44
  ```sh
24
45
  alias goose='docker run --rm -it -v ${PWD}:/wd -v ~/.cache/goose-docker:/home/nonroot/.cache -e "GOOSE_AUGMENTED_CWD=${PWD}" ghcr.io/antonagestam/goose:latest'
25
46
  ```
26
47
 
27
- #### Via PyPI
48
+ #### Github Actions
28
49
 
29
- ```shell
30
- pip install --require-venv git-goose
50
+ ```yaml
51
+ name: CI
52
+ on:
53
+ push:
54
+ branches: ["main"]
55
+ pull_request:
56
+ jobs:
57
+ lint:
58
+ name: Run goose checks
59
+ uses: antonagestam/goose/.github/workflows/run.yaml@main
31
60
  ```
32
61
 
33
62
  ### Features
@@ -61,6 +90,21 @@ the appropriate lock files under a `.goose/` directory. The `.goose/` directory
61
90
  to be checked into git, so that future invocations of `goose run` can use the lock files
62
91
  it contains to produce identical environments for hooks to run in.
63
92
 
93
+ ```mermaid
94
+ ---
95
+ title: Lock file workflow
96
+ ---
97
+ flowchart LR
98
+ cfg["Config in goose.yaml"] -- goose upgrade --> lf
99
+ lf["Lock files under .goose/"] -- goose run --> env
100
+ env["Environments"]
101
+ ```
102
+
103
+ - Invoking `goose upgrade` creates lock files under the in-tree `.goose` directory.
104
+ - Invoking `goose run` creates out-of-tree environments from the lock files. By default
105
+ they live under `~/.cache/goose`.
106
+ - Hooks are executed in the generated environments.
107
+
64
108
  ## Usage
65
109
 
66
110
  Create a `goose.yaml` file in the repository root.
@@ -91,13 +135,13 @@ hooks:
91
135
  Bootstrap environments, generate lock files, and install dependencies.
92
136
 
93
137
  ```sh
94
- $ python -m goose upgrade
138
+ $ goose upgrade
95
139
  ```
96
140
 
97
141
  Run all hooks over all files.
98
142
 
99
143
  ```sh
100
- $ python -m goose run --select=all
144
+ $ goose run --select=all
101
145
  ```
102
146
 
103
147
  Commit configuration and lock files.
@@ -114,7 +158,7 @@ configuration to upgrade hook dependency versions, instead you just run the upgr
114
158
  command.
115
159
 
116
160
  ```sh
117
- $ python -m goose upgrade
161
+ $ goose upgrade
118
162
  $ git add .goose
119
163
  $ git commit -m 'Bump goose dependencies'
120
164
  ```
@@ -5,11 +5,11 @@ environments:
5
5
  version: "3.13"
6
6
  dependencies:
7
7
  - mypy
8
- - pydantic==2.8.2
9
- - types-pyyaml==6.0.12.20240724
10
- - typer==0.12.3
11
- - identify==2.6.0
12
- - rich==13.7.1
8
+ - pydantic
9
+ - types-pyyaml
10
+ - typer
11
+ - identify
12
+ - rich
13
13
 
14
14
  - id: python
15
15
  ecosystem:
@@ -37,6 +37,7 @@ classifiers = [
37
37
  ]
38
38
  dynamic = ["version", "readme"]
39
39
  dependencies = [
40
+ "uv",
40
41
  "pydantic",
41
42
  "PyYAML",
42
43
  "nodeenv",
@@ -51,11 +52,8 @@ dependencies = [
51
52
  [project.urls]
52
53
  "Source Repository" = "https://github.com/antonagestam/goose"
53
54
 
54
-
55
- [tool.pip-tools]
56
- generate-hashes = true
57
- strip-extras = true
58
- upgrade = true
55
+ [project.scripts]
56
+ goose = "goose.__main__:cli"
59
57
 
60
58
 
61
59
  [tool.mypy]
@@ -182,9 +182,9 @@ pyyaml==6.0.2 \
182
182
  --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \
183
183
  --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4
184
184
  # via git-goose (pyproject.toml)
185
- rich==13.9.2 \
186
- --hash=sha256:51a2c62057461aaf7152b4d611168f93a9fc73068f8ded2790f29fe2b5366d0c \
187
- --hash=sha256:8c82a3d3f8dcfe9e734771313e606b39d8247bb6b826e196f4914b333b743cf1
185
+ rich==13.9.4 \
186
+ --hash=sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098 \
187
+ --hash=sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90
188
188
  # via
189
189
  # git-goose (pyproject.toml)
190
190
  # typer
@@ -205,3 +205,23 @@ typing-extensions==4.12.2 \
205
205
  # pydantic
206
206
  # pydantic-core
207
207
  # typer
208
+ uv==0.4.30 \
209
+ --hash=sha256:0c89f2eff63a08d04e81629611f43b1ffa668af6de0382b95a71599af7d4b77c \
210
+ --hash=sha256:1a83df281c5d900b4758b1a3969b3cff57231f9027db8508b71dce1f2da78684 \
211
+ --hash=sha256:232575f30ed971ea32d4a525b7146c4b088a07ed6e70a31da63792d563fcac44 \
212
+ --hash=sha256:353617bfcf72e1eabade426d83fb86a69d11273d1612aabc3f4566d41c596c97 \
213
+ --hash=sha256:444468ad0e94b35cbf6acfc8a28589cfe1247136d43895e60a18955ff89a07ad \
214
+ --hash=sha256:44c5aeb5b374f9fd1083959934daa9020db3610f0405198c5e3d8ec1f23d961d \
215
+ --hash=sha256:4aecd9fb39cf018e129627090a1d35af2b0184bb87078d573c9998f5e4072416 \
216
+ --hash=sha256:4d41d09cabba1988728c2d9b9ad25f79233c2aa3d6ecd724c36f4678c4c89711 \
217
+ --hash=sha256:4ddad09385221fa5c609169e4a0dd5bee27cf56c1dc450d4cdc113122c54bb09 \
218
+ --hash=sha256:63196143f45018364c450ba94279a5bcff8562c14ba63deb41a92ed30baa6e22 \
219
+ --hash=sha256:6395820540f368f622e818735862abd633dfe7e729c450fca56b65bab4b46661 \
220
+ --hash=sha256:7f09bd6a853767863e2fb905f0eb1a0ed7afa9ea118852e5c02d2b451944e1cf \
221
+ --hash=sha256:9e17a799c6279800996828e10288ca8ccc40cc883d8998802b938aa671dfa9ce \
222
+ --hash=sha256:9ed0183e747065b9b1bcfb699ff10df671ebe6259709ce83e709f86cea564aee \
223
+ --hash=sha256:d9de718380e2f167243ca5e1dccea781e06404158442491255fec5955d57fed9 \
224
+ --hash=sha256:dedcae3619f0eb181459b597fefefd99cb21fe5a5a48a530be6f5ad934399bfb \
225
+ --hash=sha256:ea55ca0fe5bdd04e46deaf395b3daf4fa92392f774e83610d066a2b272af5d3f \
226
+ --hash=sha256:f63d6646acdf2f38a5afca9fb9eeac62efa663a57f3c134f735a5f575b4e748f
227
+ # via git-goose (pyproject.toml)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: git-goose
3
- Version: 0.3.2
3
+ Version: 0.5.0
4
4
  Summary: A picky and eager Git hook runner.
5
5
  Author-email: Anton Agestam <git@antonagestam.se>
6
6
  License: BSD 3-Clause
@@ -13,6 +13,7 @@ Classifier: Typing :: Typed
13
13
  Requires-Python: <3.14,>=3.13
14
14
  Description-Content-Type: text/markdown; charset=UTF-8
15
15
  License-File: LICENSE
16
+ Requires-Dist: uv
16
17
  Requires-Dist: pydantic
17
18
  Requires-Dist: PyYAML
18
19
  Requires-Dist: nodeenv
@@ -35,22 +36,51 @@ Requires-Dist: shellingham
35
36
 
36
37
  <p align=center>A <i>picky</i> and <i>eager</i> <a href=https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks>Git hook</a> runner.</p>
37
38
 
38
- - Reproducible builds.
39
- - Dynamic parallelism.
40
- - Small file-system footprint.
39
+ - 🔒 Reproducible builds.
40
+ - ⚡ Dynamic parallelism.
41
+ - 💨 Small file-system footprint.
42
+ - 🏃 Fast Python environmnent and dependency management thanks to [uv].
43
+
44
+ [uv]: https://github.com/astral-sh/uv
41
45
 
42
46
  ### Installation
43
47
 
48
+ #### Via PyPI
49
+
50
+ ```shell
51
+ pip install --require-venv git-goose
52
+ ```
53
+
54
+ #### Via uvx
55
+
56
+ ```shell
57
+ uvx install git-goose
58
+ ```
59
+
60
+ #### Via pipx
61
+
62
+ ```shell
63
+ pipx install git-goose
64
+ ```
65
+
44
66
  #### Docker alias
45
67
 
46
68
  ```sh
47
69
  alias goose='docker run --rm -it -v ${PWD}:/wd -v ~/.cache/goose-docker:/home/nonroot/.cache -e "GOOSE_AUGMENTED_CWD=${PWD}" ghcr.io/antonagestam/goose:latest'
48
70
  ```
49
71
 
50
- #### Via PyPI
72
+ #### Github Actions
51
73
 
52
- ```shell
53
- pip install --require-venv git-goose
74
+ ```yaml
75
+ name: CI
76
+ on:
77
+ push:
78
+ branches: ["main"]
79
+ pull_request:
80
+ jobs:
81
+ lint:
82
+ name: Run goose checks
83
+ uses: antonagestam/goose/.github/workflows/run.yaml@main
54
84
  ```
55
85
 
56
86
  ### Features
@@ -84,6 +114,21 @@ the appropriate lock files under a `.goose/` directory. The `.goose/` directory
84
114
  to be checked into git, so that future invocations of `goose run` can use the lock files
85
115
  it contains to produce identical environments for hooks to run in.
86
116
 
117
+ ```mermaid
118
+ ---
119
+ title: Lock file workflow
120
+ ---
121
+ flowchart LR
122
+ cfg["Config in goose.yaml"] -- goose upgrade --> lf
123
+ lf["Lock files under .goose/"] -- goose run --> env
124
+ env["Environments"]
125
+ ```
126
+
127
+ - Invoking `goose upgrade` creates lock files under the in-tree `.goose` directory.
128
+ - Invoking `goose run` creates out-of-tree environments from the lock files. By default
129
+ they live under `~/.cache/goose`.
130
+ - Hooks are executed in the generated environments.
131
+
87
132
  ## Usage
88
133
 
89
134
  Create a `goose.yaml` file in the repository root.
@@ -114,13 +159,13 @@ hooks:
114
159
  Bootstrap environments, generate lock files, and install dependencies.
115
160
 
116
161
  ```sh
117
- $ python -m goose upgrade
162
+ $ goose upgrade
118
163
  ```
119
164
 
120
165
  Run all hooks over all files.
121
166
 
122
167
  ```sh
123
- $ python -m goose run --select=all
168
+ $ goose run --select=all
124
169
  ```
125
170
 
126
171
  Commit configuration and lock files.
@@ -137,7 +182,7 @@ configuration to upgrade hook dependency versions, instead you just run the upgr
137
182
  command.
138
183
 
139
184
  ```sh
140
- $ python -m goose upgrade
185
+ $ goose upgrade
141
186
  $ git add .goose
142
187
  $ git commit -m 'Bump goose dependencies'
143
188
  ```
@@ -12,6 +12,7 @@ ruff.toml
12
12
  .github/dependabot.yml
13
13
  .github/workflows/ci.yaml
14
14
  .github/workflows/release.yaml
15
+ .github/workflows/run.yaml
15
16
  .goose/node/manifest.json
16
17
  .goose/node/package-lock.json
17
18
  .goose/node/package.json
@@ -22,6 +23,7 @@ ruff.toml
22
23
  src/git_goose.egg-info/PKG-INFO
23
24
  src/git_goose.egg-info/SOURCES.txt
24
25
  src/git_goose.egg-info/dependency_links.txt
26
+ src/git_goose.egg-info/entry_points.txt
25
27
  src/git_goose.egg-info/requires.txt
26
28
  src/git_goose.egg-info/top_level.txt
27
29
  src/goose/__init__.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ goose = goose.__main__:cli
@@ -1,3 +1,4 @@
1
+ uv
1
2
  pydantic
2
3
  PyYAML
3
4
  nodeenv
@@ -307,7 +307,7 @@ async def select(
307
307
  template = """\
308
308
  #!/usr/bin/env bash
309
309
  set -euo pipefail
310
- python -m goose run '--config={config_path}'
310
+ goose run '--config={config_path}'
311
311
  """
312
312
 
313
313
 
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.3.2'
16
- __version_tuple__ = version_tuple = (0, 3, 2)
15
+ __version__ = version = '0.5.0'
16
+ __version_tuple__ = version_tuple = (0, 5, 0)
@@ -2,14 +2,9 @@ import asyncio
2
2
  import functools
3
3
  from collections.abc import Callable
4
4
  from collections.abc import Coroutine
5
- from typing import ParamSpec
6
- from typing import TypeVar
7
5
 
8
- P = ParamSpec("P")
9
- R = TypeVar("R")
10
6
 
11
-
12
- def asyncio_entrypoint(
7
+ def asyncio_entrypoint[R, **P](
13
8
  fn: Callable[P, Coroutine[None, None, R]],
14
9
  ) -> Callable[P, R]:
15
10
  @functools.wraps(fn)
@@ -37,10 +37,16 @@ def _run_env(env_path: Path) -> dict[str, str]:
37
37
  }
38
38
 
39
39
 
40
- async def _create_virtualenv(env_path: Path) -> None:
40
+ async def _create_virtualenv(env_path: Path, version: str) -> None:
41
41
  process = await asyncio.create_subprocess_exec(
42
42
  system_python(),
43
- *("-m", "venv", str(env_path)),
43
+ "-m",
44
+ "uv",
45
+ "venv",
46
+ "--no-project",
47
+ "--python-preference=only-managed",
48
+ f"--python={version}",
49
+ str(env_path),
44
50
  env=_bootstrap_env(),
45
51
  stdout=asyncio.subprocess.PIPE,
46
52
  stderr=asyncio.subprocess.PIPE,
@@ -56,8 +62,11 @@ async def _pip_install(
56
62
  dependencies: Iterable[str],
57
63
  ) -> None:
58
64
  process = await asyncio.create_subprocess_exec(
59
- _venv_python(env_path),
60
- *("-m", "pip", "install", *dependencies),
65
+ "uv",
66
+ "pip",
67
+ "install",
68
+ f"--python={_venv_python(env_path)}",
69
+ *dependencies,
61
70
  env=_bootstrap_env(),
62
71
  stdout=asyncio.subprocess.PIPE,
63
72
  stderr=asyncio.subprocess.PIPE,
@@ -73,7 +82,12 @@ async def _pip_sync(
73
82
  requirements_txt: Path,
74
83
  ) -> None:
75
84
  process = await asyncio.create_subprocess_exec(
76
- env_path / "bin" / "pip-sync",
85
+ system_python(),
86
+ "-m",
87
+ "uv",
88
+ "pip",
89
+ "sync",
90
+ f"--python={_venv_python(env_path)}",
77
91
  str(requirements_txt),
78
92
  env=_bootstrap_env(),
79
93
  stdout=asyncio.subprocess.PIPE,
@@ -90,10 +104,7 @@ async def bootstrap(
90
104
  config: EnvironmentConfig,
91
105
  ) -> None:
92
106
  print(f"Creating virtualenv {env_path.name}", file=sys.stderr)
93
- await _create_virtualenv(env_path)
94
-
95
- print("Installing pip-tools ...", file=sys.stderr)
96
- await _pip_install(env_path, ("pip-tools",))
107
+ await _create_virtualenv(env_path, config.ecosystem.version)
97
108
 
98
109
 
99
110
  async def freeze(
@@ -115,18 +126,19 @@ async def freeze(
115
126
  print(dependency, file=fd)
116
127
 
117
128
  process = await asyncio.create_subprocess_exec(
118
- env_path / "bin" / "pip-compile",
119
- *(
120
- "--upgrade",
121
- "--strip-extras",
122
- "--generate-hashes",
123
- "--resolver=backtracking",
124
- "--no-annotate",
125
- "--no-header",
126
- "--allow-unsafe",
127
- f"--output-file={requirements_txt}",
128
- f"{tmp_requirements_in}",
129
- ),
129
+ system_python(),
130
+ "-m",
131
+ "uv",
132
+ "pip",
133
+ "compile",
134
+ f"--python={_venv_python(env_path)}",
135
+ "--upgrade",
136
+ "--strip-extras",
137
+ "--generate-hashes",
138
+ "--no-annotate",
139
+ "--no-header",
140
+ f"--output-file={requirements_txt}",
141
+ f"{tmp_requirements_in}",
130
142
  env=_bootstrap_env(),
131
143
  stdout=asyncio.subprocess.PIPE,
132
144
  stderr=asyncio.subprocess.PIPE,
@@ -6,7 +6,6 @@ from collections.abc import Iterable
6
6
  from functools import total_ordering
7
7
  from pathlib import Path
8
8
  from typing import Self
9
- from typing import TypeVar
10
9
  from typing import final
11
10
 
12
11
  from pydantic import ValidationInfo
@@ -32,9 +31,6 @@ class LockFile(BaseModel):
32
31
  return self.path < other.path
33
32
 
34
33
 
35
- C = TypeVar("C", bound=Collection)
36
-
37
-
38
34
  class LockManifest(BaseModel):
39
35
  source_ecosystem: EcosystemConfig
40
36
  source_dependencies: tuple[str, ...]
@@ -43,21 +39,21 @@ class LockManifest(BaseModel):
43
39
 
44
40
  @field_validator("source_dependencies", "lock_files")
45
41
  @classmethod
46
- def validate_sorted(cls, v: C) -> C:
42
+ def validate_sorted[C: Collection](cls, v: C) -> C:
47
43
  if sorted(v) != list(v):
48
44
  raise ValueError("must be sorted")
49
45
  return v
50
46
 
51
47
  @field_validator("source_dependencies", "lock_files")
52
48
  @classmethod
53
- def validate_unique(cls, v: C) -> C:
49
+ def validate_unique[C: Collection](cls, v: C) -> C:
54
50
  if len(set(v)) != len(v):
55
51
  raise ValueError("must be unique")
56
52
  return v
57
53
 
58
54
  @field_validator("source_dependencies", "lock_files")
59
55
  @classmethod
60
- def validate_non_empty(cls, v: C) -> C:
56
+ def validate_non_empty[C: Collection](cls, v: C) -> C:
61
57
  if len(v) == 0:
62
58
  raise ValueError("must not be empty")
63
59
  return v
@@ -1 +0,0 @@
1
- {"source_ecosystem":{"language":"python","version":"3.13"},"source_dependencies":["pre-commit-hooks","ruff"],"lock_files":[{"path":"requirements.txt","checksum":"sha256:f649a1f943c1cfbd71571de02aedcf7d88e7427c0e985ec26f399d8c40970c8e"}],"checksum":"sha256:2087aaf2b95093aae8f2cfef2b6a55aaddd9e94d1814b268ea2fd699f0a10f11"}
@@ -1,25 +0,0 @@
1
- pre-commit-hooks==5.0.0 \
2
- --hash=sha256:10626959a9eaf602fbfc22bc61b6e75801436f82326bfcee82bb1f2fc4bc646e \
3
- --hash=sha256:8d71cfb582c5c314a5498d94e0104b6567a8b93fb35903ea845c491f4e290a7a
4
- ruamel-yaml==0.18.6 \
5
- --hash=sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636 \
6
- --hash=sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b
7
- ruff==0.7.0 \
8
- --hash=sha256:0cdf20c2b6ff98e37df47b2b0bd3a34aaa155f59a11182c1303cce79be715628 \
9
- --hash=sha256:10842f69c245e78d6adec7e1db0a7d9ddc2fff0621d730e61657b64fa36f207e \
10
- --hash=sha256:194d6c46c98c73949a106425ed40a576f52291c12bc21399eb8f13a0f7073495 \
11
- --hash=sha256:1eb54986f770f49edb14f71d33312d79e00e629a57387382200b1ef12d6a4ef9 \
12
- --hash=sha256:211d877674e9373d4bb0f1c80f97a0201c61bcd1e9d045b6e9726adc42c156aa \
13
- --hash=sha256:214b88498684e20b6b2b8852c01d50f0651f3cc6118dfa113b4def9f14faaf06 \
14
- --hash=sha256:47a86360cf62d9cd53ebfb0b5eb0e882193fc191c6d717e8bef4462bc3b9ea2b \
15
- --hash=sha256:496494d350c7fdeb36ca4ef1c9f21d80d182423718782222c29b3e72b3512737 \
16
- --hash=sha256:4b406c2dce5be9bad59f2de26139a86017a517e6bcd2688da515481c05a2cb11 \
17
- --hash=sha256:630fce3fefe9844e91ea5bbf7ceadab4f9981f42b704fae011bb8efcaf5d84be \
18
- --hash=sha256:82c2579b82b9973a110fab281860403b397c08c403de92de19568f32f7178598 \
19
- --hash=sha256:9af971fe85dcd5eaed8f585ddbc6bdbe8c217fb8fcf510ea6bca5bdfff56040e \
20
- --hash=sha256:ab7d98c7eed355166f367597e513a6c82408df4181a937628dbec79abb2a1fe4 \
21
- --hash=sha256:b641c7f16939b7d24b7bfc0be4102c56562a18281f84f635604e8a6989948914 \
22
- --hash=sha256:d71672336e46b34e0c90a790afeac8a31954fd42872c1f6adaea1dff76fd44f9 \
23
- --hash=sha256:dc452ba6f2bb9cf8726a84aa877061a2462afe9ae0ea1d411c53d226661c601d \
24
- --hash=sha256:f6c968509f767776f524a8430426539587d5ec5c662f6addb6aa25bc2e8195ec \
25
- --hash=sha256:ff4aabfbaaba880e85d394603b9e75d32b0693152e16fa659a3064a85df7fce2
@@ -1 +0,0 @@
1
- {"source_ecosystem":{"language":"python","version":"3.13"},"source_dependencies":["identify==2.6.0","mypy","pydantic==2.8.2","rich==13.7.1","typer==0.12.3","types-pyyaml==6.0.12.20240724"],"lock_files":[{"path":"requirements.txt","checksum":"sha256:30a32dcd426ab99471b1d43f5a575db3d8df2b5b64ce3dc756ce730f7f0b388c"}],"checksum":"sha256:40b81307cd69b710976f92453cdf92ef743fdd9882eabea9c6b6b6688779a516"}
@@ -1,162 +0,0 @@
1
- annotated-types==0.7.0 \
2
- --hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \
3
- --hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89
4
- click==8.1.7 \
5
- --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \
6
- --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de
7
- identify==2.6.0 \
8
- --hash=sha256:cb171c685bdc31bcc4c1734698736a7d5b6c8bf2e0c15117f4d469c8640ae5cf \
9
- --hash=sha256:e79ae4406387a9d300332b5fd366d8994f1525e8414984e1a59e058b2eda2dd0
10
- markdown-it-py==3.0.0 \
11
- --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \
12
- --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb
13
- mdurl==0.1.2 \
14
- --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
15
- --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba
16
- mypy==1.12.0 \
17
- --hash=sha256:060a07b10e999ac9e7fa249ce2bdcfa9183ca2b70756f3bce9df7a92f78a3c0a \
18
- --hash=sha256:06de0498798527451ffb60f68db0d368bd2bae2bbfb5237eae616d4330cc87aa \
19
- --hash=sha256:0eff042d7257f39ba4ca06641d110ca7d2ad98c9c1fb52200fe6b1c865d360ff \
20
- --hash=sha256:1ebf9e796521f99d61864ed89d1fb2926d9ab6a5fab421e457cd9c7e4dd65aa9 \
21
- --hash=sha256:20c7c5ce0c1be0b0aea628374e6cf68b420bcc772d85c3c974f675b88e3e6e57 \
22
- --hash=sha256:233e11b3f73ee1f10efada2e6da0f555b2f3a5316e9d8a4a1224acc10e7181d3 \
23
- --hash=sha256:2c40658d4fa1ab27cb53d9e2f1066345596af2f8fe4827defc398a09c7c9519b \
24
- --hash=sha256:2f106db5ccb60681b622ac768455743ee0e6a857724d648c9629a9bd2ac3f721 \
25
- --hash=sha256:4397081e620dc4dc18e2f124d5e1d2c288194c2c08df6bdb1db31c38cd1fe1ed \
26
- --hash=sha256:48d3e37dd7d9403e38fa86c46191de72705166d40b8c9f91a3de77350daa0893 \
27
- --hash=sha256:4ae8959c21abcf9d73aa6c74a313c45c0b5a188752bf37dace564e29f06e9c1b \
28
- --hash=sha256:4b86de37a0da945f6d48cf110d5206c5ed514b1ca2614d7ad652d4bf099c7de7 \
29
- --hash=sha256:52b9e1492e47e1790360a43755fa04101a7ac72287b1a53ce817f35899ba0521 \
30
- --hash=sha256:5bc81701d52cc8767005fdd2a08c19980de9ec61a25dbd2a937dfb1338a826f9 \
31
- --hash=sha256:5feee5c74eb9749e91b77f60b30771563327329e29218d95bedbe1257e2fe4b0 \
32
- --hash=sha256:65a22d87e757ccd95cbbf6f7e181e6caa87128255eb2b6be901bb71b26d8a99d \
33
- --hash=sha256:684a9c508a283f324804fea3f0effeb7858eb03f85c4402a967d187f64562469 \
34
- --hash=sha256:6b5df6c8a8224f6b86746bda716bbe4dbe0ce89fd67b1fa4661e11bfe38e8ec8 \
35
- --hash=sha256:6cabe4cda2fa5eca7ac94854c6c37039324baaa428ecbf4de4567279e9810f9e \
36
- --hash=sha256:77278e8c6ffe2abfba6db4125de55f1024de9a323be13d20e4f73b8ed3402bd1 \
37
- --hash=sha256:8462655b6694feb1c99e433ea905d46c478041a8b8f0c33f1dab00ae881b2164 \
38
- --hash=sha256:923ea66d282d8af9e0f9c21ffc6653643abb95b658c3a8a32dca1eff09c06475 \
39
- --hash=sha256:9b9ce1ad8daeb049c0b55fdb753d7414260bad8952645367e70ac91aec90e07e \
40
- --hash=sha256:a64ee25f05fc2d3d8474985c58042b6759100a475f8237da1f4faf7fcd7e6309 \
41
- --hash=sha256:bfe012b50e1491d439172c43ccb50db66d23fab714d500b57ed52526a1020bb7 \
42
- --hash=sha256:c72861b7139a4f738344faa0e150834467521a3fba42dc98264e5aa9507dd601 \
43
- --hash=sha256:dcfb754dea911039ac12434d1950d69a2f05acd4d56f7935ed402be09fad145e \
44
- --hash=sha256:dee78a8b9746c30c1e617ccb1307b351ded57f0de0d287ca6276378d770006c0 \
45
- --hash=sha256:e478601cc3e3fa9d6734d255a59c7a2e5c2934da4378f3dd1e3411ea8a248642 \
46
- --hash=sha256:eafc1b7319b40ddabdc3db8d7d48e76cfc65bbeeafaa525a4e0fa6b76175467f \
47
- --hash=sha256:faca7ab947c9f457a08dcb8d9a8664fd438080e002b0fa3e41b0535335edcf7f \
48
- --hash=sha256:fd313226af375d52e1e36c383f39bf3836e1f192801116b31b090dfcd3ec5266
49
- mypy-extensions==1.0.0 \
50
- --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \
51
- --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782
52
- pydantic==2.8.2 \
53
- --hash=sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a \
54
- --hash=sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8
55
- pydantic-core==2.20.1 \
56
- --hash=sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d \
57
- --hash=sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f \
58
- --hash=sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686 \
59
- --hash=sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482 \
60
- --hash=sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006 \
61
- --hash=sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83 \
62
- --hash=sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6 \
63
- --hash=sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88 \
64
- --hash=sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86 \
65
- --hash=sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a \
66
- --hash=sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6 \
67
- --hash=sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a \
68
- --hash=sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6 \
69
- --hash=sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6 \
70
- --hash=sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43 \
71
- --hash=sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c \
72
- --hash=sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4 \
73
- --hash=sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e \
74
- --hash=sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203 \
75
- --hash=sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd \
76
- --hash=sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1 \
77
- --hash=sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24 \
78
- --hash=sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc \
79
- --hash=sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc \
80
- --hash=sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3 \
81
- --hash=sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598 \
82
- --hash=sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98 \
83
- --hash=sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331 \
84
- --hash=sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2 \
85
- --hash=sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a \
86
- --hash=sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6 \
87
- --hash=sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688 \
88
- --hash=sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91 \
89
- --hash=sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa \
90
- --hash=sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b \
91
- --hash=sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0 \
92
- --hash=sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840 \
93
- --hash=sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c \
94
- --hash=sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd \
95
- --hash=sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3 \
96
- --hash=sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231 \
97
- --hash=sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1 \
98
- --hash=sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953 \
99
- --hash=sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250 \
100
- --hash=sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a \
101
- --hash=sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2 \
102
- --hash=sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20 \
103
- --hash=sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434 \
104
- --hash=sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab \
105
- --hash=sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703 \
106
- --hash=sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a \
107
- --hash=sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2 \
108
- --hash=sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac \
109
- --hash=sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611 \
110
- --hash=sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121 \
111
- --hash=sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e \
112
- --hash=sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b \
113
- --hash=sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09 \
114
- --hash=sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906 \
115
- --hash=sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9 \
116
- --hash=sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7 \
117
- --hash=sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b \
118
- --hash=sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987 \
119
- --hash=sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c \
120
- --hash=sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b \
121
- --hash=sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e \
122
- --hash=sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237 \
123
- --hash=sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1 \
124
- --hash=sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19 \
125
- --hash=sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b \
126
- --hash=sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad \
127
- --hash=sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0 \
128
- --hash=sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94 \
129
- --hash=sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312 \
130
- --hash=sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f \
131
- --hash=sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669 \
132
- --hash=sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1 \
133
- --hash=sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe \
134
- --hash=sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99 \
135
- --hash=sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a \
136
- --hash=sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a \
137
- --hash=sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52 \
138
- --hash=sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c \
139
- --hash=sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad \
140
- --hash=sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1 \
141
- --hash=sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a \
142
- --hash=sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f \
143
- --hash=sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a \
144
- --hash=sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27
145
- pygments==2.18.0 \
146
- --hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \
147
- --hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a
148
- rich==13.7.1 \
149
- --hash=sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222 \
150
- --hash=sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432
151
- shellingham==1.5.4 \
152
- --hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \
153
- --hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de
154
- typer==0.12.3 \
155
- --hash=sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914 \
156
- --hash=sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482
157
- types-pyyaml==6.0.12.20240724 \
158
- --hash=sha256:cf7b31ae67e0c5b2919c703d2affc415485099d3fe6666a6912f040fd05cb67f \
159
- --hash=sha256:e5becec598f3aa3a2ddf671de4a75fa1c6856fbf73b2840286c9d50fae2d5d48
160
- typing-extensions==4.12.2 \
161
- --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \
162
- --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes