Skip to content

fix: client wheel with a README and valid SPDX identifier#160

Open
saturley-hall wants to merge 3 commits intomainfrom
harrison/fix-client-python-wheel
Open

fix: client wheel with a README and valid SPDX identifier#160
saturley-hall wants to merge 3 commits intomainfrom
harrison/fix-client-python-wheel

Conversation

@saturley-hall
Copy link
Member

@saturley-hall saturley-hall commented Mar 9, 2026

The current pyproject.toml misses a couple things:

  • It should use a SPDX identifier for the license rather than a Classifier as that is EoL
  • The referenced readme file does not exist. I used Claude to generate a candidate one that will show up on PyPi when the wheel is hosted

Since this is a published artifact it will need to be cherry-picked into the release/0.3.0 branch.

Summary by CodeRabbit

  • Documentation

    • Added detailed Python ModelExpress client documentation covering installation methods, system prerequisites, quick-start examples for source and target vLLM instances, environment variable reference, programmatic usage examples, and performance tuning guidance.
  • Chores

    • Updated project metadata to support Python 3.12.

Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
@coderabbitai
Copy link

coderabbitai bot commented Mar 9, 2026

Walkthrough

Documentation and configuration updates for the Python ModelExpress client package, including a new comprehensive README file, .gitignore rule addition for Python packaging artifacts, and project metadata changes in pyproject.toml.

Changes

Cohort / File(s) Summary
Package Documentation
modelexpress_client/python/README.md
New comprehensive README covering installation, prerequisites, quick start examples, environment configuration, tuning guidance, package structure, and transfer workflow documentation.
Build & Project Configuration
modelexpress_client/python/.gitignore, modelexpress_client/python/pyproject.toml
Added .gitignore rule for *.egg-info artifacts and updated pyproject.toml metadata: converted license field to string format and updated Python version classifiers.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 A README blooms, so clear and bright,
Configuration tweaks set right,
Python eggs find hiding place,
With metadata updates in their grace,
The package hops forward in the light! 🌟

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately describes the main changes: fixing the Python wheel by adding a README and updating to a valid SPDX license identifier.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@modelexpress_client/python/README.md`:
- Around line 21-22: The README currently links to the local repo using a
relative URL "../../modelexpress_server/" which won't resolve on PyPI; update
the link in modelexpress_client/python/README.md to point to the canonical
GitHub repository URL for the ModelExpress server (replace
"../../modelexpress_server/" with the full GitHub HTTPS URL for the
modelexpress_server repo) so the reference renders correctly outside the
monorepo.
- Around line 7-15: Update the Installation section of README.md to lead with
the PyPI install command for end users (e.g., "pip install modelexpress"), then
add a separate "Development" subsection that contains the editable/source
install instructions and the dev-dependencies install (the current "pip install
-e ." and "pip install -e '.[dev]'" lines); ensure the README still includes the
dev commands but they are moved under the "Development" heading so the top-level
install is the PyPI command users see first.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ea92b9f0-e6fc-445b-8069-8fbd5b2a2b12

📥 Commits

Reviewing files that changed from the base of the PR and between 3376ee5 and cc9fab4.

📒 Files selected for processing (3)
  • modelexpress_client/python/.gitignore
  • modelexpress_client/python/README.md
  • modelexpress_client/python/pyproject.toml

Comment on lines +7 to +15
## Installation

```bash
# From source
pip install -e .

# With dev dependencies (pytest, grpcio-tools)
pip install -e ".[dev]"
```
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Lead with the PyPI install command.

This README is the package description users will see on PyPI, but the only commands here assume a local repo checkout. pip install -e . and pip install -e ".[dev]" are useful for contributors, not end users installing the published package.

Suggested README tweak
 ## Installation
 
 ```bash
-# From source
-pip install -e .
+pip install modelexpress
+```
+
+### Development
+
+```bash
+# From source
+pip install -e .
 
 # With dev dependencies (pytest, grpcio-tools)
 pip install -e ".[dev]"
</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **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.

```suggestion
## Installation

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

In `@modelexpress_client/python/README.md` around lines 7 - 15, Update the
Installation section of README.md to lead with the PyPI install command for end
users (e.g., "pip install modelexpress"), then add a separate "Development"
subsection that contains the editable/source install instructions and the
dev-dependencies install (the current "pip install -e ." and "pip install -e
'.[dev]'" lines); ensure the README still includes the dev commands but they are
moved under the "Development" heading so the top-level install is the PyPI
command users see first.

Copy link
Contributor

@nv-hwoo nv-hwoo left a comment

Choose a reason for hiding this comment

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

Looks good overall, and I left one small comment. Thanks for adding the readme!

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Harrison Saturley-Hall <harrison.saturley.hall@gmail.com>
Copy link
Contributor

@AndyDai-nv AndyDai-nv left a comment

Choose a reason for hiding this comment

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

Overall LGTM, just one small nit


vllm serve deepseek-ai/DeepSeek-V3 \
--load-format mx-source \
--tensor-parallel-size 8
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we need to specify --worker-cls modelexpress.vllm_worker.ModelExpressWorker? Correct me if I am wrong here. @nv-hwoo @KavinKrishnan

Copy link
Contributor

Choose a reason for hiding this comment

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

Ah good catch, yes, you are correct :)


```bash
# From source
pip install -e .
Copy link
Contributor

Choose a reason for hiding this comment

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

Should we also add pip install from PyPI?

Suggested change
pip install -e .
# From PyPI
pip install modelexpress
# From source
pip install -e .

- Lead with PyPI install command, move source installs to Development subsection
- Add --worker-cls modelexpress.vllm_worker.ModelExpressWorker to vLLM examples
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants