ethanlin01x commented on code in PR #3825:
URL: https://github.com/apache/iggy/pull/3825#discussion_r3730279838
##########
foreign/python/README.md:
##########
@@ -38,33 +39,111 @@ pip install apache-iggy
### Local Development
-```bash
-# Start server for testing using docker
-docker compose -f docker-compose.test.yml up --build
-
-# Or use cargo
-cargo run --bin iggy-server -- --with-default-root-credentials --fresh
-
-# Using uv:
-uv sync --all-extras
-uv run maturin develop
-uv run pytest tests/ -v # Run tests (requires iggy-server running)
-
-# Using pip:
-python3 -m venv .venv
-source .venv/bin/activate
-pip install -e ".[all]"
-maturin develop
-pytest tests/ -v # Run tests (requires iggy-server running)
-```
+1. Build a project for development
+
+ With `uv`:
+
+ > Create a venv:
+ >
+ > ```bash
+ > uv venv
+ > ```
+ >
+ > Sync the environment without updating it:
+ >
+ > ```bash
+ > uv sync --frozen --all-extras --no-install-project
+ > ```
+ >
+ > Build the project - this runs cargo build and performs an editable
install:
+ >
+ > ```bash
+ > uv run maturin develop
+ > ```
+
+ With `pip`:
+
+ > Create a venv:
+ >
+ > ```bash
+ > python3 -m venv .venv
+ > ```
+ >
+ > Activate the venv:
+ >
+ > ```bash
+ > source .venv/bin/activate
+ > ```
+ >
+ > Install the dependencies with `pip`:
+ >
+ > ```bash
+ > pip install -e ".[all]"
+ > ```
+
+2. Run the server to be able to run the tests
+
+ ```bash
+ cargo run --bin iggy-server -- --with-default-root-credentials --fresh
+ ```
+
+3. Run the tests
+
+ `uv`:
+
+ ```bash
+ uv run --no-sync pytest tests/ -v
+ ```
+
+ `pip`:
+
+ ```bash
+ pytest tests/ -v # make sure iggy-server is running and the venv is
activated
+ ```
+
+4. To update the stubs, use
+
+ ```bash
+ cargo run --bin stub_gen
+ ```
+
+5. Before committing, test the pre-commit and pre-push hooks. `prek` only
inspects staged content, so stage your work first:
+
+ ```bash
+ git add -A
+ prek run # runs pre-commit hooks
Review Comment:
same `--no-sync` issue as line 61, but in the hook and with the opposite
outcome. `.pre-commit-config.yaml:45` runs `uv run pyrefly check` with no
`--no-sync`, on any staged `foreign/python/**.{py,pyi}` - which step 4's
regenerated `.pyi` plus the `git add -A` above makes routine. on line 61 the
sync lands before `maturin develop`, so the release build is the one thrown
away and you still end up with debug. here it lands after step 1, so the
release build wins and installs over the debug `.so` you were testing against.
the real fix is in the hook, which is outside this diff and wants its own
pr. for now a note under step 5 would do: "`prek run` reinstalls the package as
a side effect, re-run `uv run --no-sync maturin develop` before going back to
step 3" - removable once the hook is fixed. happy to open an issue for it.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]