Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
026280c
openRepoShape: `--install` records the ref it runs at in `openRepoSha…
Oct 14, 2026
d0cdbf4
install.sh: one line, `curl -fsSL https://github.com/opensoft/openRep…
Oct 14, 2026
319b005
openRepoShape and install.sh, the fix round on #577: `--install` reco…
Oct 15, 2026
322a305
README.md, docs/handbook.html, AGENTS.md and the v1.0.1 release notes…
Oct 15, 2026
868c9bf
docs/release-notes/v1.0.1.md: the "Before tagging" steps are safe to …
Oct 15, 2026
892a041
Merge remote-tracking branch 'origin/l3-564-one-line-install' into l3…
Oct 15, 2026
b2f0be3
tests/readme-cap.d/564.txt: README.md's cap is 1449, raised by 22 for…
Oct 15, 2026
68b999f
docs/handbook.html: the consent rules say every action the tool OFFER…
Oct 15, 2026
53416db
Merge remote-tracking branch 'origin/main' into l3-564-carry-to-main
Oct 15, 2026
a155945
Merge remote-tracking branch 'origin/main' into l3-564-carry-to-main
Oct 15, 2026
c1e6b82
README.md: the NOTE says the preflight installs nothing without the t…
Oct 15, 2026
5191f0e
docs/handbook.html: the consent rules say install.sh asks nothing bef…
Oct 15, 2026
ba83231
openRepoShape: --install refuses a target that is a symbolic link, su…
Oct 15, 2026
8cae45c
install.sh: the one-line installer refuses a target that is a symboli…
Oct 15, 2026
604fbda
pyproject.toml, src/openreposhape/: the openreposhape package gives o…
Oct 15, 2026
4759eea
.github/workflows/tests.yml: a package job builds the openreposhape w…
Oct 15, 2026
ab8bfe3
tests/test_openreposhape_command.py: the symlink-target test asserts …
Oct 15, 2026
bfd927a
install.sh, tests/test_install_sh.py: the symlink-target check uses `…
Oct 15, 2026
cb910c4
src/openreposhape/, tests/test_openreposhape_package.py: the argument…
Oct 15, 2026
9b0a29e
.github/workflows/tests.yml: the package job runs pipx 1.11.1 on the …
Oct 15, 2026
d53080a
.github/workflows/tests.yml: the package job installs pipx from wheel…
Oct 15, 2026
25b2aee
Merge branch 'main' into l3-564-carry-to-main
brettheap Oct 15, 2026
a20c469
Merge remote-tracking branch 'origin/l3-564-carry-to-main' into l3-56…
Oct 15, 2026
22ade8e
openRepoShape: the comment over `--install`'s record says the target …
Oct 15, 2026
66bb2c7
src/openreposhape/, pyproject.toml, tests/test_openreposhape_package.…
Oct 15, 2026
6179bd7
tests/test_repo_hygiene.py: every module of src/openreposhape/ is pur…
Oct 15, 2026
d090f0c
src/openreposhape/standard.py, tests/test_openreposhape_package.py: a…
Oct 15, 2026
c7ef427
.github/release-build-requirements.txt, .github/release-pipx-requirem…
Oct 15, 2026
3c91176
.github/workflows/release.yml: a dispatch on the annotated tag v<vers…
Oct 15, 2026
e98f5ee
pyproject.toml: the comment over the build backend's pin says the rel…
Oct 15, 2026
67468a9
tests/test_release_workflow.py: release.yml is read and held to its s…
Oct 15, 2026
e11c3f1
.github/workflows/release.yml: the three-OS gate counts only the jobs…
Oct 15, 2026
a412012
.github/workflows/tests.yml: actionlint reads the release workflow on…
Oct 15, 2026
fa31fdc
pyproject.toml: the comment says the release shows the wheel path-ind…
Oct 15, 2026
9a632c4
tests/test_release_workflow.py: every RV599 mutation fails a test, th…
Oct 15, 2026
b23b245
Merge remote-tracking branch 'origin/main' into l3-564-carry-to-main
Oct 15, 2026
19fe64a
.github/workflows/release.yml: the gate requires the tests job alone,…
Oct 15, 2026
d2fdc6b
tests/test_release_workflow.py: the gate is `("tests",)`, and its own…
Oct 15, 2026
e814c39
.github/workflows/release.yml: the header's step 1 and each refusal o…
Oct 15, 2026
b0182e2
tests/test_release_workflow.py: a cancelled tests run refuses and a l…
Oct 15, 2026
d5011b1
Merge branch 'main' into l3-564-carry-to-main
brettheap Oct 15, 2026
f9b07c9
Merge remote-tracking branch 'origin/main' into l3-564-carry-to-main
Oct 15, 2026
3d8fa05
Merge branch 'main' into l3-564-carry-to-main
brettheap Oct 15, 2026
06dad85
Merge #587's final head (3d8fa05e) into l3-563-pypi-package
Oct 15, 2026
3c208e9
Merge origin/main (22eaceed, #587's squash) into l3-563-pypi-package
Oct 15, 2026
1c8a708
.github/workflows/tests.yml, tests/test_openreposhape_package.py: the…
Oct 15, 2026
995e138
Merge branch 'main' into l3-563-pypi-package
brettheap Oct 15, 2026
cfbe59d
Merge origin/main (4cf5fb07, with #596's tests-git-bash job) into l3-…
Oct 16, 2026
4410da0
tests/test_install_sh.py, tests/test_openreposhape_command.py: the tw…
Oct 16, 2026
70955e4
.github/workflows/tests.yml: the header says what is the `package` jo…
Oct 16, 2026
750366b
Merge remote-tracking branch 'origin/l3-563-pypi-package' into l3-563…
Oct 16, 2026
eaa0cda
Merge remote-tracking branch 'origin/main' into l3-563-release-workflow
Oct 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 136 additions & 0 deletions .github/release-build-requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# THE RELEASE BUILD'S OWN TOOLS, LOCKED BY HASH (#563, decision 5; review
# RV590, SHOULD 6).
#
# `.github/workflows/release.yml` installs exactly the files named here, with
# `--only-binary :all: --require-hashes`, into a virtual environment of its
# own, and builds the wheel with `python -m build --wheel --no-isolation` in
# it. So every program that touches the wheel before it is uploaded, the
# `build` frontend and the `hatchling` backend, is a file this list names by
# its digest, and so is each of hatchling's own requirements: packaging,
# pathspec, pluggy, trove-classifiers, and tomli below Python 3.11.
# `pyproject.toml` pins hatchling alone, so a build that installs it the
# ordinary way, in pip's isolated build environment, resolves those five on
# the day it runs.
#
# `hatchling==1.27.0` IS `pyproject.toml`'s OWN PIN, and must stay so: with
# `--no-isolation`, `build` refuses a backend that does not satisfy
# `[build-system] requires`, and `tests/test_release_workflow.py` holds the
# two equal.
#
# UNIVERSAL: one file for every Python from 3.9, the oldest the package
# supports, on every system, so a build on 3.9 can be held to it too. The
# release builds on Python 3.12, and the markers choose what pip installs
# there.
#
# RESOLVED, NOT WRITTEN BY HAND, with uv 0.12.18, from PyPI as it stood at
# 2026-10-01T00:00:00Z. To change it, run the command below with a newer
# date, put this header back above the output, and commit the diff as its
# own act:
#
# printf 'build\nhatchling==1.27.0\n' \
# | uv pip compile --universal --python-version 3.9 --generate-hashes \
# --no-header --index-url https://pypi.org/simple --only-binary :all: \
# --exclude-newer <date> - -o .github/release-build-requirements.txt

build==1.4.4 ; python_full_version < '3.10' \
--hash=sha256:8c3f48a6090b39edec1a273d2d57949aaf13723b01e02f9d518396887519f64d \
--hash=sha256:f832ae053061f3fb524af812dc94b8b84bac6880cd587630e3b5d91a6a9c1703
build==1.6.1 ; python_full_version >= '3.10' \
--hash=sha256:51cc11666391ab6f092070437ac747002ff46f3e4113a3622177ee6b488bfc53 \
--hash=sha256:ecd351a4be9d35a9eaaba244a7687143c9c7d4aea6ac964e7e7ddab20cbcf4e7
colorama==0.4.6 ; os_name == 'nt' \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via build
hatchling==1.27.0 \
--hash=sha256:971c296d9819abb3811112fc52c7a9751c8d381898f36533bb16f9791e941fd6 \
--hash=sha256:d3a2f3567c4f926ea39849cdf924c7e99e6686c9c8e288ae1037c8fa2a5d937b
importlib-metadata==8.7.1 ; python_full_version < '3.10' \
--hash=sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb \
--hash=sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151
# via build
importlib-metadata==9.0.1 ; python_full_version >= '3.10' and python_full_version < '3.10.2' \
--hash=sha256:ab830580bc0ef3db61ce8fae716389e5462b67e033018bab6d8f80ef17172f99 \
--hash=sha256:bba5600596a7e21f3eef53281cf28d6a5195634d2f2b78ff9501a3272c6eaab0
# via build
packaging==26.3 \
--hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \
--hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c
# via
# build
# hatchling
pathspec==1.1.1 \
--hash=sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a \
--hash=sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189
# via hatchling
pluggy==1.6.0 \
--hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \
--hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746
# via hatchling
pyproject-hooks==1.3.3 \
--hash=sha256:5fc53fdac9f7bd63fbcdc868fb5f90b4784d78a53a3d3388cd738b807441a20b \
--hash=sha256:defda19b854fa0d3bd4f76ea4ddcba8abd7dcfcdd585a6690ade050744fc5f43
# via build
tomli==2.4.1 ; python_full_version < '3.11' \
--hash=sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853 \
--hash=sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe \
--hash=sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5 \
--hash=sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d \
--hash=sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd \
--hash=sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26 \
--hash=sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54 \
--hash=sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6 \
--hash=sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c \
--hash=sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a \
--hash=sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd \
--hash=sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f \
--hash=sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5 \
--hash=sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9 \
--hash=sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662 \
--hash=sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9 \
--hash=sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1 \
--hash=sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585 \
--hash=sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e \
--hash=sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c \
--hash=sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41 \
--hash=sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f \
--hash=sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085 \
--hash=sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15 \
--hash=sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7 \
--hash=sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c \
--hash=sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36 \
--hash=sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076 \
--hash=sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac \
--hash=sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8 \
--hash=sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232 \
--hash=sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece \
--hash=sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a \
--hash=sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897 \
--hash=sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d \
--hash=sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4 \
--hash=sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917 \
--hash=sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396 \
--hash=sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a \
--hash=sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc \
--hash=sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba \
--hash=sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f \
--hash=sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257 \
--hash=sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30 \
--hash=sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf \
--hash=sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9 \
--hash=sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049
# via
# build
# hatchling
trove-classifiers==2026.9.21.13 \
--hash=sha256:0a9ebc8d4e2f3e8a22848c5258033035bec17a3012ac3fea16dbaa764489eb71 \
--hash=sha256:8b1ff4f9c191b1040b71c37f1e445ab99732911e3cd91de52838453a854d7a17
# via hatchling
zipp==3.23.1 ; python_full_version < '3.10' \
--hash=sha256:0b3596c50a5c700c9cb40ba8d86d9f2cc4807e9bedb06bcdf7fac85633e444dc \
--hash=sha256:32120e378d32cd9714ad503c1d024619063ec28aad2248dc6672ad13edfa5110
# via importlib-metadata
zipp==4.1.0 ; python_full_version >= '3.10' and python_full_version < '3.10.2' \
--hash=sha256:25ad4e16390cd314347dd8f1de67a2ac538ae658ed4ab9db16029c07c188e97f \
--hash=sha256:4cb57381f544315db7688e976e922a2b18cdb513d21cc194eb42232ba2a3e602
# via importlib-metadata
118 changes: 118 additions & 0 deletions .github/release-pipx-requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# THE INSTALL CHECK'S pipx, LOCKED BY HASH (#563, decision 5).
#
# The install check in `.github/workflows/release.yml` installs exactly the
# files named here, with `--only-binary :all: --require-hashes`, on each of
# its four legs, then installs the openreposhape wheel with that pipx, as a
# person does. UNIVERSAL, for Linux, macOS and Windows: pipx 1.11.1 below
# Python 3.10, the newest pipx that installs on 3.9 (the package's oldest
# Python), and the newest pipx above it. pipx then installs pip into its own
# shared environment, which no lock here reaches; the job's `PIP_INDEX_URL`
# holds every pip it runs to PyPI.
#
# RESOLVED, NOT WRITTEN BY HAND, with uv 0.12.18, from PyPI as it stood at
# 2026-10-01T00:00:00Z. To change it, run the command below with a newer
# date, put this header back above the output, and commit the diff as its
# own act:
#
# printf 'pipx\n' \
# | uv pip compile --universal --python-version 3.9 --generate-hashes \
# --no-header --index-url https://pypi.org/simple --only-binary :all: \
# --exclude-newer <date> - -o .github/release-pipx-requirements.txt

argcomplete==3.7.0 ; python_full_version < '3.10' \
--hash=sha256:afde224f753f874807b1dc1414e883ab8fe0cda9c04807b6047dcb8e1ac23913 \
--hash=sha256:d8f0f22d2a8a7caa383be1e22b6caf1ecaf0ebd10d8f83cc125e36540c95830c
# via pipx
argcomplete==3.7.2 ; python_full_version >= '3.10' \
--hash=sha256:6029205678bdd9c1c728a155f5f9ecf5812393f969eef58807641a2bc2aa5b19 \
--hash=sha256:aad8b69a0b9969edb62db0d1752354c0d50717b10e0cbb00e2a958381b9fc6b9
# via pipx
click==8.1.8 ; python_full_version < '3.10' \
--hash=sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2 \
--hash=sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a
# via userpath
click==8.5.0 ; python_full_version >= '3.10' \
--hash=sha256:255bc9599cf7748b4b1a446ccc735421bd08a2ae529a8b88597d3de5664ee360 \
--hash=sha256:ba0d2089de75ea0310e2dde03160e6ca10009947fb95a182f9b54021bb272e34
# via userpath
colorama==0.4.6 ; sys_platform == 'win32' \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via
# click
# pipx
filelock==4.0.7 ; python_full_version >= '3.10' \
--hash=sha256:a93c4d93269b339a6af4848342c7e940d0f9928ad95eff64764699e5f1bf8a6a \
--hash=sha256:da5915714a70b55d167fdc7e251ad91302b0a36816fb574dfafae8f4f2c9bb21
# via pipx
packaging==26.3 \
--hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \
--hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c
# via pipx
pipx==1.11.1 ; python_full_version < '3.10' \
--hash=sha256:e57354c3308b0abb75106d3b73a0d1ffa5c25f24f29e9f4a45e575776dbab85c \
--hash=sha256:f854fbf01c179db4331adcf6e1b95836b524100135b5d35822497a47a3857e89
pipx==1.17.8 ; python_full_version >= '3.10' \
--hash=sha256:19387d1ef29f9192dfb084f22a68f5f663c2e80c6c814bef193b3203a4fc2dc3 \
--hash=sha256:90810ac9a12a5141364294a1abc24bcc8fab4572d18a6dae165895512e336966
platformdirs==4.4.0 ; python_full_version < '3.10' \
--hash=sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85 \
--hash=sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf
# via pipx
platformdirs==4.12.2 ; python_full_version >= '3.10' \
--hash=sha256:29dbf06d96c500bc6bdbce75fb0a14d63279c93b1842f97e72a135b33e856983 \
--hash=sha256:eab5f70271a490ef74618bb314fbb86e3c7e82fa3b9c922c2ea0e0a1a155d329
# via pipx
tomli==2.4.1 ; python_full_version < '3.11' \
--hash=sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853 \
--hash=sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe \
--hash=sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5 \
--hash=sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d \
--hash=sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd \
--hash=sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26 \
--hash=sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54 \
--hash=sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6 \
--hash=sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c \
--hash=sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a \
--hash=sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd \
--hash=sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f \
--hash=sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5 \
--hash=sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9 \
--hash=sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662 \
--hash=sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9 \
--hash=sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1 \
--hash=sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585 \
--hash=sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e \
--hash=sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c \
--hash=sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41 \
--hash=sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f \
--hash=sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085 \
--hash=sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15 \
--hash=sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7 \
--hash=sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c \
--hash=sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36 \
--hash=sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076 \
--hash=sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac \
--hash=sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8 \
--hash=sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232 \
--hash=sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece \
--hash=sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a \
--hash=sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897 \
--hash=sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d \
--hash=sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4 \
--hash=sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917 \
--hash=sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396 \
--hash=sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a \
--hash=sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc \
--hash=sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba \
--hash=sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f \
--hash=sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257 \
--hash=sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30 \
--hash=sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf \
--hash=sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9 \
--hash=sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049
# via pipx
userpath==1.9.2 \
--hash=sha256:2cbf01a23d655a1ff8fc166dfb78da1b641d1ceabf0fe5f970767d380b14e89d \
--hash=sha256:6c52288dab069257cc831846d15d48133522455d4677ee69a9781f11dbefd815
# via pipx
Loading
Loading