Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
a58cf50
feat(pypi): add toml2json tool for converting uv.lock TOML to JSON
aignas May 16, 2026
363c141
test(pypi): add tests for toml2json tool
aignas May 16, 2026
6f4e925
feat(pypi): add uv_lock utility for uv.lock to JSON conversion
aignas May 16, 2026
29a7993
feat(uv): update lock rule with uv.lock JSON conversion support
aignas May 16, 2026
a063d53
feat(pypi): add uv.lock parsing support to parse_requirements
aignas May 16, 2026
9fea66c
test(pypi): add tests for uv.lock parsing in parse_requirements
aignas May 16, 2026
aa19ceb
test(uv): add lock rule integration tests for uv.lock format
aignas May 16, 2026
ee069e4
test: add uv_pypi end-to-end integration test
aignas May 16, 2026
dd53e29
docs: add uv.lock documentation and sample files
aignas May 16, 2026
d5709ea
remove dead code and add plan.md for iterating
aignas May 16, 2026
8e4a264
fix: address PR review comments and add uv.lock test coverage
aignas May 16, 2026
d615209
feat: add Python 3.14 toolchain and simplify uv.lock reading code
aignas May 16, 2026
f1b201a
test: add uv.lock integration test and remove dead test data
aignas May 16, 2026
6db3345
docs: update plan.md with completed stages
aignas May 16, 2026
1f7b695
wip
aignas May 18, 2026
a7f000a
refactor: replace toml2json with pure Starlark toml decoder, fix tests
aignas May 18, 2026
1f78473
refactor(uv): detect lock format from output filename, add Windows uv…
aignas May 19, 2026
b46e0fd
add deps for workspace
aignas May 19, 2026
be3012a
fix the lock rule
aignas May 19, 2026
e3646a5
avoid eager loading of the hub repo
aignas May 19, 2026
9c1e30d
toml bump
aignas May 24, 2026
41427dc
wip: merge main
aignas Jun 1, 2026
a165d8e
wip
aignas Jun 20, 2026
e3f6e9e
use artisanal intelligence to craft a better structure for the code
aignas Jun 20, 2026
e2c0de2
fixup
aignas Jun 20, 2026
7c7417d
fixup
aignas Jun 20, 2026
fad0083
move the templates to a separate dir
aignas Jun 20, 2026
0b57ff3
fix(uv): align Windows .bat templates with Linux .sh behavior
aignas Jun 20, 2026
bc126d0
fix(uv): fix lock type detection and test setup
aignas Jun 20, 2026
f6be465
wip
aignas Jun 20, 2026
0e0f871
fixup
aignas Jun 20, 2026
8e18213
add a converter of uv.lock to requirements.txt
aignas Jun 20, 2026
bb3054f
make the extras work
aignas Jun 20, 2026
afc795c
remove the unnecessary fail
aignas Jun 20, 2026
3271c5a
fix the bug
aignas Jun 20, 2026
0f41b18
the wheel matching by platforms
aignas Jun 20, 2026
0b5cccc
wip
aignas Jun 20, 2026
d6f4d38
fix extras
aignas Jun 20, 2026
2a09aa7
finish
aignas Jun 20, 2026
7736b81
finish the spike
aignas Jun 21, 2026
864962b
actually use the same template for locking inside action
aignas Jun 21, 2026
abcfb2d
improvements to the scripts
aignas Jun 21, 2026
1203fd8
git attributes
aignas Jun 21, 2026
585bb0e
spec out how things should work
aignas Jun 21, 2026
f557def
fix the bat file
aignas Jun 21, 2026
569a824
revert the lock fle
aignas Jun 21, 2026
eca6014
remove the plan
aignas Jun 21, 2026
c404c22
wip
aignas Jun 21, 2026
9bbf636
doc: changelog
aignas Jun 21, 2026
08dbdb6
add more tests
aignas Jun 21, 2026
6eadd5d
fix tests
aignas Jun 21, 2026
4230f92
wip
aignas Jun 21, 2026
89aab85
fixup
aignas Jun 21, 2026
4206988
update lockfile
aignas Jun 21, 2026
78545ed
fix(uv): use path instead of short_path for Windows action args
rickeylev Jun 21, 2026
4c21d31
Merge branch 'main' of https://github.com/bazel-contrib/rules_python …
rickeylev Jun 22, 2026
c8a3685
Merge branch 'main' of https://github.com/bazelbuild/rules_python int…
rickeylev Jun 22, 2026
e168640
Merge branch 'aignas.feat.uv-lock' of github.com:aignas/rules_python …
rickeylev Jun 22, 2026
9c1fc5c
fix(uv): resolve Windows CI test failures and path mismatches
rickeylev Jun 22, 2026
897db65
test(uv): add diff debugging and fix batch exit codes
rickeylev Jun 22, 2026
4cd6473
Pin requests and its dependencies in uv lock integration tests to sta…
rickeylev Jun 22, 2026
f100a2c
temp: add debug prints to lock_run_test.py on Windows failure
rickeylev Jun 22, 2026
8490066
Fix Windows Batch variable expansion and exit code masking in templates.
rickeylev Jun 22, 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
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ tools/publish/*.txt linguist-generated=true
tests/uv/lock/testdata/requirements.txt text eol=lf
python/private/runtimes_manifest_workspace.bzl text eol=lf
python/private/runtimes_manifest.txt text eol=lf

*.bat text eol=crlf
2 changes: 2 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ bazel_dep(name = "bazel_skylib", version = "1.8.2")
bazel_dep(name = "package_metadata", version = "0.0.7")
bazel_dep(name = "platforms", version = "0.0.11")
bazel_dep(name = "rules_cc", version = "0.2.17")
bazel_dep(name = "toml.bzl", version = "0.4.1")

# Those are loaded only when using py_proto_library
# Use py_proto_library directly from protobuf repository
Expand Down Expand Up @@ -183,6 +184,7 @@ dev_pip = use_extension(
"{os}_{arch}",
"{os}_{arch}_freethreaded",
],
uv_lock = "//docs:uv.lock",
)
for python_version in [
"3.9",
Expand Down
9 changes: 9 additions & 0 deletions docs/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -223,3 +223,12 @@ lock(
python_version = "3.9",
visibility = ["//:__subpackages__"],
)

# Run bazel run //docs:uv_lock.update
lock(
name = "uv_lock",
srcs = ["pyproject.toml"],
out = "uv.lock",
python_version = "3.9",
visibility = ["//:__subpackages__"],
)
60 changes: 34 additions & 26 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ babel==2.18.0 \
--hash=sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d \
--hash=sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35
# via sphinx
certifi==2026.2.25 \
--hash=sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa \
--hash=sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7
certifi==2026.6.17 \
--hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \
--hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db
# via requests
charset-normalizer==3.4.7 \
--hash=sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc \
Expand Down Expand Up @@ -183,9 +183,9 @@ docutils==0.22.4 ; python_full_version >= '3.11' \
# myst-parser
# sphinx
# sphinx-rtd-theme
idna==3.11 \
--hash=sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea \
--hash=sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902
idna==3.18 \
--hash=sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2 \
--hash=sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848
# via requests
imagesize==1.5.0 ; python_full_version < '3.10' \
--hash=sha256:32677681b3f434c2cb496f00e89c5a291247b35b1f527589909e008057da5899 \
Expand Down Expand Up @@ -216,9 +216,9 @@ markdown-it-py==3.0.0 ; python_full_version < '3.11' \
# via
# mdit-py-plugins
# myst-parser
markdown-it-py==4.0.0 ; python_full_version >= '3.11' \
--hash=sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147 \
--hash=sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3
markdown-it-py==4.2.0 ; python_full_version >= '3.11' \
--hash=sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49 \
--hash=sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a
# via
# mdit-py-plugins
# myst-parser
Expand Down Expand Up @@ -319,9 +319,9 @@ mdit-py-plugins==0.4.2 ; python_full_version < '3.10' \
--hash=sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636 \
--hash=sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5
# via myst-parser
mdit-py-plugins==0.5.0 ; python_full_version >= '3.10' \
--hash=sha256:07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f \
--hash=sha256:f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6
mdit-py-plugins==0.6.1 ; python_full_version >= '3.10' \
--hash=sha256:214c82fb2ac524472ab6a5bcab1de80f73b50443e187f401bfd77efbc7c6481d \
--hash=sha256:a2bca0f039f39dbd35fb74ae1b5f998608c437463371f0ff7f49a19a17a114d0
# via myst-parser
mdurl==0.1.2 \
--hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
Expand All @@ -335,24 +335,28 @@ myst-parser==4.0.1 ; python_full_version == '3.10.*' \
--hash=sha256:5cfea715e4f3574138aecbf7d54132296bfd72bb614d31168f48c477a830a7c4 \
--hash=sha256:9134e88959ec3b5780aedf8a99680ea242869d012e8821db3126d427edc9c95d
# via rules-python-docs (docs/pyproject.toml)
myst-parser==5.0.0 ; python_full_version >= '3.11' \
--hash=sha256:ab31e516024918296e169139072b81592336f2fef55b8986aa31c9f04b5f7211 \
--hash=sha256:f6f231452c56e8baa662cc352c548158f6a16fcbd6e3800fc594978002b94f3a
myst-parser==5.1.0 ; python_full_version >= '3.11' \
--hash=sha256:9c91c52b3cdb4d94a6506e4fab4e2f296c7623a0da0dcbe6de1565c3dad67a8a \
--hash=sha256:ab69322dc6719dcc7f296479dbb70181b66df6ed315064f92dbc85c0e1bf2f02
# via rules-python-docs (docs/pyproject.toml)
packaging==26.1 \
--hash=sha256:5d9c0669c6285e491e0ced2eee587eaf67b670d94a19e94e3984a481aba6802f \
--hash=sha256:f042152b681c4bfac5cae2742a55e103d27ab2ec0f3d88037136b6bfe7c9c5de
packaging==26.2 \
--hash=sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e \
--hash=sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661
# via
# readthedocs-sphinx-ext
# sphinx
pefile==2024.8.26 \
--hash=sha256:3ff6c5d8b43e8c37bb6e6dd5085658d658a7a0bdcd20b6a07b1fcfc1c4e9d632 \
--hash=sha256:76f8b485dcd3b1bb8166f1128d395fa3d87af26360c2358fb75b80019b957c6f
# via rules-python-docs (docs/pyproject.toml)
pyelftools==0.32 \
pyelftools==0.32 ; python_full_version < '3.10' \
--hash=sha256:013df952a006db5e138b1edf6d8a68ecc50630adbd0d83a2d41e7f846163d738 \
--hash=sha256:6de90ee7b8263e740c8715a925382d4099b354f29ac48ea40d840cf7aa14ace5
# via rules-python-docs (docs/pyproject.toml)
pyelftools==0.33 ; python_full_version >= '3.10' \
--hash=sha256:660d82dcbeb8e83d1702bd97f223f761625da06111c0cc988eac6b8ab0c1b61f \
--hash=sha256:f215ad5f47d3f1373a21496a6c9e0707c622840d0622f23ff7ce08678b020036
# via rules-python-docs (docs/pyproject.toml)
pygments==2.20.0 \
--hash=sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f \
--hash=sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176
Expand Down Expand Up @@ -442,19 +446,19 @@ requests==2.32.5 ; python_full_version < '3.10' \
# via
# readthedocs-sphinx-ext
# sphinx
requests==2.33.1 ; python_full_version >= '3.10' \
--hash=sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517 \
--hash=sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a
requests==2.34.2 ; python_full_version >= '3.10' \
--hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \
--hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed
# via
# readthedocs-sphinx-ext
# sphinx
roman-numerals==4.1.0 ; python_full_version >= '3.11' \
--hash=sha256:1af8b147eb1405d5839e78aeb93131690495fe9da5c91856cb33ad55a7f1e5b2 \
--hash=sha256:647ba99caddc2cc1e55a51e4360689115551bf4476d90e8162cf8c345fe233c7
# via sphinx
snowballstemmer==3.0.1 \
--hash=sha256:6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064 \
--hash=sha256:6d5eeeec8e9f84d4d56b847692bacf79bc2c8e90c7f80ca4444ff8b6f2e52895
snowballstemmer==3.1.1 \
--hash=sha256:7e207fa178741da09cdee59d3ecec3827ad5f92b1fc5c9ff3755b639f71f5752 \
--hash=sha256:e07bbc54a0d798fe6010a12398422e62a8bfbba95c394fd0956ef58cb4d3e260
# via sphinx
sphinx==7.4.7 ; python_full_version < '3.10' \
--hash=sha256:242f92a7ea7e6c5b406fdc2615413890ba9f699114a9c09192d7dfead2ee9cfe \
Expand Down Expand Up @@ -594,10 +598,14 @@ typing-extensions==4.15.0 \
# rules-python-docs (docs/pyproject.toml)
# astroid
# sphinx-autodoc2
urllib3==2.6.3 \
urllib3==2.6.3 ; python_full_version < '3.10' \
--hash=sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed \
--hash=sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4
# via requests
urllib3==2.7.0 ; python_full_version >= '3.10' \
--hash=sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c \
--hash=sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897
# via requests
zipp==3.23.1 ; python_full_version < '3.10' \
--hash=sha256:0b3596c50a5c700c9cb40ba8d86d9f2cc4807e9bedb06bcdf7fac85633e444dc \
--hash=sha256:32120e378d32cd9714ad503c1d024619063ec28aad2248dc6672ad13edfa5110
Expand Down
Loading