Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
10 changes: 7 additions & 3 deletions .github/workflows/build-notebooks-TEMPLATE.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -242,13 +242,17 @@ jobs:
# region Pytest image tests

# https://github.com/astral-sh/setup-uv
- name: Install the latest version of uv
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "latest"
python-version: "3.14"
version-file: uv.toml
enable-cache: true
cache-dependency-glob: "uv.lock"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove trailing whitespace at Line 251.

This is currently reported by static analysis and should be cleaned up.

Proposed fix
-      
+
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
🧰 Tools
🪛 GitHub Check: code-static-analysis

[failure] 251-251:
251:1 [trailing-spaces] trailing spaces

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/build-notebooks-TEMPLATE.yaml at line 251, Remove the
trailing whitespace from the blank line reported by static analysis in the
workflow template: edit the workflow YAML and delete the extra space at the end
of the empty line so there are no trailing spaces, save the file, and re-run the
linter/CI to verify the warning is cleared.

- name: Install Python
uses: actions/setup-python@v6
with:
python-version: "3.14"

- name: Check uv is installed correctly
run: uv version
Expand Down
14 changes: 9 additions & 5 deletions .github/workflows/code-quality.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,17 @@ jobs:
- uses: actions/checkout@v6

# https://github.com/astral-sh/setup-uv
- name: Install the latest version of uv
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "latest"
python-version: "3.14"
version-file: uv.toml
enable-cache: true
cache-dependency-glob: "uv.lock"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove trailing whitespace at Line 24.

This matches the lint failure reported by static analysis.

Proposed fix
-      
+
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
🧰 Tools
🪛 GitHub Check: code-static-analysis

[failure] 24-24:
24:1 [trailing-spaces] trailing spaces

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/code-quality.yaml at line 24, Remove the trailing
whitespace in the workflow file code-quality.yaml: edit the empty/blank line
around the top of the file (the line causing the lint failure) and delete any
spaces or tabs at the end of that line so there are no trailing whitespace
characters, then save and commit the change.

- name: Install Python
uses: actions/setup-python@v6
with:
python-version: "3.14"

- name: Rerun all code generators we have
run: bash ci/generate_code.sh
Expand All @@ -44,10 +48,10 @@ jobs:
- uses: actions/checkout@v6

# https://github.com/astral-sh/setup-uv
- name: Install the latest version of uv
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "latest"
version-file: uv.toml
python-version: "3.14"
enable-cache: true
cache-dependency-glob: "uv.lock"
Expand Down
10 changes: 7 additions & 3 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,17 @@ jobs:
- uses: actions/checkout@v6

# https://github.com/astral-sh/setup-uv
- name: Install the latest version of uv
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "latest"
python-version: "3.14"
version-file: uv.toml
enable-cache: true
cache-dependency-glob: "uv.lock"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove trailing whitespace at Line 28 to keep lint green.

This matches the current static-analysis failure and can block CI.

Proposed fix
-        
+
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
🧰 Tools
🪛 GitHub Check: code-static-analysis

[failure] 28-28:
28:1 [trailing-spaces] trailing spaces

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/docs.yaml at line 28, Remove the trailing whitespace
present at line 28 of the workflow YAML (the blank/empty line) — open the file,
delete the extraneous space characters at the end of that line (and ensure no
other lines have trailing spaces), save and commit so the linter no longer
fails; this targets the whitespace on the empty line in the docs workflow file.

- name: Install Python
uses: actions/setup-python@v6
with:
python-version: "3.14"

- name: Run the release notes script
run: |
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/piplock-renewal.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,9 @@ jobs:
run: pip install "pipenv==2025.0.4"

- name: Install uv
run: pip install "uv==0.8.12"
uses: astral-sh/setup-uv@v7
with:
version-file: uv.toml

- name: Run make refresh-pipfilelock-files
run: |
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/security.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@ jobs:
security-events: write
steps:

- name: Checkout code
uses: actions/checkout@v6

# https://github.com/astral-sh/setup-uv
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "latest"
version-file: uv.toml
activate-environment: false
ignore-empty-workdir: true
enable-cache: false

- name: Checkout code
uses: actions/checkout@v6

# Trivy does not support pylock.toml https://github.com/aquasecurity/trivy/discussions/9408
- run: find . -name pyproject.toml -execdir uv lock \;

Expand Down
16 changes: 11 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,21 @@
# https://github.com/pre-commit/pre-commit-hooks?tab=readme-ov-file#hooks-available
repos:
# https://docs.astral.sh/uv/guides/integration/pre-commit/
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.9.13
# Using a local hook instead of uv-pre-commit so it goes through ./uv,
# which handles version mismatches without requiring the exact system uv.
- repo: local
hooks:
- id: uv-lock
name: uv-lock
entry: ./uv lock --locked
language: system
files: '(^uv\.lock$|^pyproject\.toml$|^uv\.toml$)'
pass_filenames: false
# https://github.com/astral-sh/ruff-pre-commit
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.6
rev: v0.15.4
hooks:
- id: ruff
- id: ruff-check
types_or: [python, pyi]
args: [--fix]
files: 'ci/.*|tests/.*'
Expand All @@ -25,7 +31,7 @@ repos:
- id: pyright
name: Run Pyright on all files
# entry: /bin/bash -c 'find. -name "*.py" | xargs pyright --pythonversion 3.12'
entry: uv run pyright --pythonversion 3.12
entry: ./uv run pyright --pythonversion 3.14
pass_filenames: true
types_or: [python, pyi]
language: system
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ refresh-pipfilelock-files:
echo "Updating $(PYTHON_VERSION) uv.lock in $$dir"
cd $$dir
if [ -f "pyproject.toml" ]; then
uv lock && rm uv.lock
$(ROOT_DIR)/uv lock && rm uv.lock
else
echo "No pyproject.toml found in $$dir, skipping."
fi
Expand Down Expand Up @@ -526,4 +526,4 @@ print-release:
.PHONY: test
test:
@echo "Running quick static tests"
uv run pytest -m 'not buildonlytest'
./uv run pytest -m 'not buildonlytest'
Comment on lines 527 to +529
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Propagate KONFLUX in test target to keep build/test expectations aligned.

At Line 529, pytest is invoked without explicitly carrying KONFLUX, so test behavior can diverge from build-time manifest expectations.

🔧 Suggested fix
+KONFLUX ?= false
+
 .PHONY: test
 test:
 	`@echo` "Running quick static tests"
-	./uv run pytest -m 'not buildonlytest'
+	KONFLUX="$(KONFLUX)" "$(ROOT_DIR)/uv" run pytest -m 'not buildonlytest'

As per coding guidelines, Ensure the KONFLUX Makefile variable is set consistently across build and test steps since test scripts read imagestream manifests to derive expected package versions.

🧰 Tools
🪛 GitHub Actions: Code static analysis

[error] 528-528: Command 'make test' failed with exit code 2 due to pytest error during test collection.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Makefile` around lines 527 - 529, The test target invokes pytest without
exporting the KONFLUX Makefile variable, causing tests to run with different
manifest expectations; update the test target (symbol: test) so the pytest
invocation propagates KONFLUX to the subprocess (e.g., prepend the invocation
with KONFLUX=$(KONFLUX) or otherwise export the KONFLUX variable when calling
./uv run pytest -m 'not buildonlytest') so build and test use the same KONFLUX
value.

42 changes: 37 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,49 @@ Note: To ensure the GitHub Action runs successfully, users must add a `GH_ACCESS

#### Prepare Python + uv + pytest env

This project pins its uv version in `uv.toml` (`required-version`).
Use the `./uv` wrapper script at the repo root — it reads the pinned
version and runs it via `uvx`, so your system uv version doesn't matter:

```shell
# Linux
sudo dnf install python3.14
pip install --user uv
# MacOS
# macOS
brew install python@3.14 uv

uv venv --python $(which python3.14)
uv sync --locked
./uv venv --python $(which python3.14)
./uv sync --locked
```

<details>
<summary>Alternatives to <code>./uv</code></summary>

The `./uv` wrapper is the recommended way, but you can also
(replace `0.10.6` below with the version from `uv.toml`):

- **Use `uvx` directly** with an explicit version:
```shell
uvx uv@0.10.6 sync --locked
```
- **Use `uv tool run`** (equivalent, longer form):
```shell
uv tool run uv@0.10.6 sync --locked
```
- **Install the exact version** so `uv` works directly:
```shell
# Standalone installer (any OS)
curl -LsSf https://astral.sh/uv/0.10.6/install.sh | sh
# Or with pip
pip install uv==0.10.6
```
Comment on lines +84 to +100
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Update hardcoded uv version examples to match the current pin.

Line 84/88/92/97/99 still use 0.10.6, but this PR pins uv to 0.8.12. Copy-pasting these commands as-is installs/runs the wrong version.

📝 Suggested doc fix
-The `./uv` wrapper is the recommended way, but you can also
-(replace `0.10.6` below with the version from `uv.toml`):
+The `./uv` wrapper is the recommended way, but you can also
+(commands below use the current pinned version from `uv.toml`):
@@
-  uvx uv@0.10.6 sync --locked
+  uvx uv@0.8.12 sync --locked
@@
-  uv tool run uv@0.10.6 sync --locked
+  uv tool run uv@0.8.12 sync --locked
@@
-  curl -LsSf https://astral.sh/uv/0.10.6/install.sh | sh
+  curl -LsSf https://astral.sh/uv/0.8.12/install.sh | sh
@@
-  pip install uv==0.10.6
+  pip install uv==0.8.12
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 84 - 100, Update the three hardcoded uv version
strings in the README examples (instances like "uvx uv@0.10.6", "uv tool run
uv@0.10.6", and the installer/pip examples referencing 0.10.6) to the current
pinned version from uv.toml (0.8.12) so copy-pasted commands install/run the
correct release; ensure all occurrences of "0.10.6" are replaced with "0.8.12"
in those command snippets and, if helpful, mention the version comes from
uv.toml for future sync.


If your system uv matches the pinned version, you can use `uv` directly —
`required-version` in `uv.toml` will let it through. If it doesn't match,
uv exits with a clear error telling you which version is required.

</details>

#### Running Python selftests in Pytest
By completing configuration in previous section, you are able to run any tests that don't need to start a container using following command:

Expand Down Expand Up @@ -106,15 +138,15 @@ sudo dnf install podman
systemctl --user start podman.service
systemctl --user status podman.service
systemctl --user status podman.socket
DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock uv run pytest tests/containers -m 'not openshift and not cuda and not rocm' --image quay.io/opendatahub/workbench-images@sha256:e98d19df346e7abb1fa3053f6d41f0d1fa9bab39e49b4cb90b510ca33452c2e4
DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock ./uv run pytest tests/containers -m 'not openshift and not cuda and not rocm' --image quay.io/opendatahub/workbench-images@sha256:e98d19df346e7abb1fa3053f6d41f0d1fa9bab39e49b4cb90b510ca33452c2e4

# Mac OS
brew install podman
podman machine init
podman machine set --rootful=false
sudo podman-mac-helper install
podman machine start
uv run pytest tests/containers -m 'not openshift' --image quay.io/opendatahub/workbench-images@sha256:e98d19df346e7abb1fa3053f6d41f0d1fa9bab39e49b4cb90b510ca33452c2e4
./uv run pytest tests/containers -m 'not openshift' --image quay.io/opendatahub/workbench-images@sha256:e98d19df346e7abb1fa3053f6d41f0d1fa9bab39e49b4cb90b510ca33452c2e4
```

When using lima on macOS, it might be useful to give yourself access to rootful podman socket
Expand Down
6 changes: 5 additions & 1 deletion ci/generate_code.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
#!/usr/bin/env bash
set -Eeuxo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"

uv --version || pip install "uv==0.8.12"

uv run scripts/dockerfile_fragments.py
"${REPO_ROOT}/uv" run scripts/dockerfile_fragments.py
"${REPO_ROOT}/uv" run manifests/tools/generate_kustomization.py
bash scripts/pylocks_generator.sh
20 changes: 14 additions & 6 deletions scripts/pylocks_generator.sh
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ MAIN_DIRS=("jupyter" "runtimes" "rstudio" "codeserver")
# CVE constraints file - applied to all lock file generations
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
UV="${ROOT_DIR}/uv"
CVE_CONSTRAINTS_FILE="$ROOT_DIR/dependencies/cve-constraints.txt"

# ----------------------------
Expand Down Expand Up @@ -89,13 +90,18 @@ read_conf_value() {
# ----------------------------
# PRE-FLIGHT CHECK
# ----------------------------
if [[ ! -x "$UV" ]]; then
error "Expected uv wrapper at '$UV' but it is missing or not executable."
exit 1
fi

if ! command -v uv &>/dev/null; then
error "uv command not found. Please install uv: https://github.com/astral-sh/uv"
exit 1
fi

UV_MIN_VERSION="0.4.0"
UV_VERSION=$(uv --version 2>/dev/null | awk '{print $2}' || echo "0.0.0")
UV_VERSION=$("$UV" --version 2>/dev/null | awk '{print $2}' || echo "0.0.0")

version_ge() {
[ "$(printf '%s\n' "$2" "$1" | sort -V | head -n1)" = "$2" ]
Expand Down Expand Up @@ -273,7 +279,9 @@ for TARGET_DIR in "${TARGET_DIRS[@]}"; do
echo "➡️ Generating $(uppercase "$flavor") lock file..."
fi

# The behavior has changed in uv 0.9.17 (https://github.com/astral-sh/uv/pull/16956)
# Tag filtering was added in uv 0.9.16 (https://github.com/astral-sh/uv/pull/16956)
# but bypassed in --universal mode. uv 0.10.5 (https://github.com/astral-sh/uv/pull/18081)
# now filters wheels by requires-python and marker disjointness even in --universal mode.
# Documentation at https://docs.astral.sh/uv/reference/cli/#uv-pip-compile--python-platform says that
# `--python-platform linux` is alias for `x86_64-unknown-linux-gnu`; we cannot use this to get a multiarch pylock
# Let's use --universal temporarily, and in the future we can switch to using uv.lock
Expand All @@ -285,17 +293,17 @@ for TARGET_DIR in "${TARGET_DIRS[@]}"; do
# Build constraints flag if CVE constraints file exists
# Use relative path to avoid absolute paths in pylock.toml headers
# (which would differ between CI and local environments)
local constraints_flag=""
local -a constraints_flag=()
if [[ -f "$CVE_CONSTRAINTS_FILE" ]]; then
local relative_constraints
# Use Python for cross-platform relative path computation (realpath --relative-to is GNU-only)
relative_constraints=$(python3 -c "import os; print(os.path.relpath('$CVE_CONSTRAINTS_FILE', '$PWD'))")
constraints_flag="--constraints=$relative_constraints"
constraints_flag=(--constraints "$relative_constraints")
fi

set +e
# shellcheck disable=SC2086
uv pip compile pyproject.toml \
"$UV" pip compile pyproject.toml \
--output-file "$output" \
--format pylock.toml \
--generate-hashes \
Expand All @@ -305,7 +313,7 @@ for TARGET_DIR in "${TARGET_DIRS[@]}"; do
--no-annotate \
--quiet \
$UPGRADE_FLAG \
$constraints_flag \
"${constraints_flag[@]}" \
$index
local status=$?
set -e
Expand Down
37 changes: 35 additions & 2 deletions scripts/sync-python-lockfiles.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
#!/usr/bin/env bash
set -Eeuxo pipefail

error() {
printf '%s\n' "$*" >&2
}

# Red Hat's build tooling depends on requirements.txt files with hashes
# Namely, Konflux (https://konflux-ci.dev/), and Cachi2 (https://github.com/containerbuildsystem/cachi2).

Expand All @@ -9,6 +13,12 @@ set -Eeuxo pipefail
# ground-up relock and force upgrades using `uv pip compile --upgrade`.
# This is intended for scheduled runs, while manual runs should default to off.

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
# Default to the repo-root ./uv wrapper; override with UV=/path/to/your/wrapper
UV="${UV:-$ROOT_DIR/uv}"
export UV

ADDITIONAL_UV_FLAGS=""
for arg in "$@"; do
case "$arg" in
Expand All @@ -23,12 +33,35 @@ if [[ "${FORCE_LOCKFILES_UPGRADE:-0}" == "1" ]]; then
fi
export ADDITIONAL_UV_FLAGS

if [[ ! -x "$UV" ]]; then
error "Expected uv wrapper at '$UV' but it is missing or not executable."
exit 1
fi

if ! command -v uv &>/dev/null; then
error "uv command not found. Please install uv: https://github.com/astral-sh/uv"
exit 1
fi

UV_MIN_VERSION="0.4.0"
UV_VERSION=$("$UV" --version 2>/dev/null | awk '{print $2}' || echo "0.0.0")

version_ge() {
[ "$(printf '%s\n' "$2" "$1" | sort -V | head -n1)" = "$2" ]
}

if ! version_ge "$UV_VERSION" "$UV_MIN_VERSION"; then
error "uv version $UV_VERSION found, but >= $UV_MIN_VERSION is required."
error "Please upgrade uv: https://github.com/astral-sh/uv"
exit 1
fi

# The following will create a pylock.toml file for every pyproject.toml we have.
uv --version || pip install "uv==0.8.12"
${UV} --version
find . -name pylock.toml -execdir bash -c '
pwd
# derives python-version from directory suffix (e.g., "ubi9-python-3.12")
uv pip compile pyproject.toml \
${UV} pip compile pyproject.toml \
Comment on lines +60 to +64
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
# Verify current call sites and quoting in the changed region
nl -ba scripts/sync-python-lockfiles.sh | sed -n '56,72p'

Repository: red-hat-data-services/notebooks

Length of output: 117


🏁 Script executed:

cat -n scripts/sync-python-lockfiles.sh | head -75 | tail -25

Repository: red-hat-data-services/notebooks

Length of output: 1024


🏁 Script executed:

cat -n scripts/sync-python-lockfiles.sh | head -80 | head -40

Repository: red-hat-data-services/notebooks

Length of output: 1445


🏁 Script executed:

cat -n scripts/sync-python-lockfiles.sh | grep -E '\$UV|${UV}'

Repository: red-hat-data-services/notebooks

Length of output: 418


🏁 Script executed:

cat -n scripts/sync-python-lockfiles.sh | sed -n '55,75p'

Repository: red-hat-data-services/notebooks

Length of output: 771


🏁 Script executed:

cat -n scripts/sync-python-lockfiles.sh | wc -l

Repository: red-hat-data-services/notebooks

Length of output: 77


Quote $UV when executing it for consistency and to avoid path word-splitting.

Lines 60 and 64 invoke ${UV} unquoted, while line 47 correctly quotes it as "$UV". Quoting ensures the variable is treated as a single word, preventing word-splitting if the wrapper path ever contains spaces.

🔧 Suggested hardening
-${UV} --version
+"$UV" --version
@@
-  ${UV} pip compile pyproject.toml \
+  "$UV" pip compile pyproject.toml \
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
${UV} --version
find . -name pylock.toml -execdir bash -c '
pwd
# derives python-version from directory suffix (e.g., "ubi9-python-3.12")
uv pip compile pyproject.toml \
${UV} pip compile pyproject.toml \
"$UV" --version
find . -name pylock.toml -execdir bash -c '
pwd
# derives python-version from directory suffix (e.g., "ubi9-python-3.12")
"$UV" pip compile pyproject.toml \
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/sync-python-lockfiles.sh` around lines 60 - 64, Two invocations of
the UV wrapper are unquoted: replace ${UV} with "$UV" in the calls so the
wrapper path is treated as a single word; specifically update the standalone
"${UV} --version" invocation and the "${UV} pip compile pyproject.toml"
invocation inside the find -execdir bash -c block (i.e., change ${UV} to "$UV"
wherever the UV variable is executed).

--output-file pylock.toml \
--format pylock.toml \
--generate-hashes \
Expand Down
Loading
Loading