Skip to content
This repository was archived by the owner on Jan 23, 2026. It is now read-only.

Prepare jumpstarter-all for release-0.6 tags#434

Closed
mangelajo wants to merge 1 commit intomainfrom
prepare-0.6-all
Closed

Prepare jumpstarter-all for release-0.6 tags#434
mangelajo wants to merge 1 commit intomainfrom
prepare-0.6-all

Conversation

@mangelajo
Copy link
Copy Markdown
Member

@mangelajo mangelajo commented Apr 30, 2025

Ensure that jumpstarter-all depends on the 0.6 packages, and not any version

Summary by CodeRabbit

  • Chores
    • Updated package dependencies across projects to specify compatibility with version 0.6.
    • Improved configuration file formatting for better readability and consistency.
    • Introduced a new script to manage version pinning and unpinning of jumpstarter package dependencies.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 30, 2025

Warning

Rate limit exceeded

@mangelajo has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 7 minutes and 7 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 97ace41 and b64e70f.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (35)
  • .devfile/Containerfile.client (1 hunks)
  • Dockerfile (1 hunks)
  • examples/automotive/pyproject.toml (1 hunks)
  • examples/soc-pytest/pyproject.toml (1 hunks)
  • packages/jumpstarter-all/pyproject.toml (1 hunks)
  • packages/jumpstarter-cli-admin/pyproject.toml (1 hunks)
  • packages/jumpstarter-cli-common/pyproject.toml (1 hunks)
  • packages/jumpstarter-cli-driver/pyproject.toml (1 hunks)
  • packages/jumpstarter-cli/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-can/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-composite/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-corellium/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-dutlink/pyproject.toml (2 hunks)
  • packages/jumpstarter-driver-flashers/pyproject.toml (3 hunks)
  • packages/jumpstarter-driver-http/pyproject.toml (2 hunks)
  • packages/jumpstarter-driver-network/pyproject.toml (3 hunks)
  • packages/jumpstarter-driver-opendal/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-power/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-probe-rs/pyproject.toml (2 hunks)
  • packages/jumpstarter-driver-pyserial/pyproject.toml (2 hunks)
  • packages/jumpstarter-driver-qemu/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-raspberrypi/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-sdwire/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-shell/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-snmp/pyproject.toml (3 hunks)
  • packages/jumpstarter-driver-tftp/pyproject.toml (3 hunks)
  • packages/jumpstarter-driver-uboot/pyproject.toml (2 hunks)
  • packages/jumpstarter-driver-ustreamer/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-yepkit/pyproject.toml (2 hunks)
  • packages/jumpstarter-imagehash/pyproject.toml (1 hunks)
  • packages/jumpstarter-kubernetes/pyproject.toml (2 hunks)
  • packages/jumpstarter-testing/pyproject.toml (1 hunks)
  • packages/jumpstarter/pyproject.toml (3 hunks)
  • pyproject.toml (1 hunks)
  • scripts/pin_release_versions.py (1 hunks)

Walkthrough

The pull request primarily reformats multiple pyproject.toml files across many packages to improve readability by converting single-line arrays and inline tables into multi-line, indented arrays and tables. It also introduces explicit version constraints using the compatible release operator ~= with version 0.6 for jumpstarter-related dependencies, replacing previously unversioned or loosely specified dependencies. Additionally, two Dockerfiles were modified to insert an explicit unpinning step before building by running a Python script that removes version pins from jumpstarter dependencies. A new Python script pin_release_versions.py was added to automate pinning or unpinning of jumpstarter package versions in pyproject.toml files.

Changes

File(s) Change Summary
packages//pyproject.toml (including jumpstarter-all, jumpstarter-cli, jumpstarter-driver*, jumpstarter-imagehash, jumpstarter-kubernetes, jumpstarter-testing, jumpstarter) Reformatted arrays and tables from single-line to multi-line for readability; added explicit version constraints ~= 0.6 to jumpstarter-related dependencies; restructured [tool.hatch.version.raw-options] from inline to nested tables; no logic or exported entities changed.
examples/automotive/pyproject.toml, examples/soc-pytest/pyproject.toml Reformatted authors and dependencies lists to multi-line; added version constraints ~= 0.6 to jumpstarter dependencies; no functional changes.
.devfile/Containerfile.client, Dockerfile Replaced single make build command with a sequence: set working directory, run make sync, run pin_release_versions.py --unpin to remove version pins, then make build.
scripts/pin_release_versions.py Added new script to recursively find pyproject.toml files and pin or unpin version constraints on jumpstarter dependencies based on CLI arguments.

Possibly related PRs

Poem

In the garden of code where dependencies sprawl,
The bunny hopped in to tidy them all.
With a wiggle of nose and a flick of the pen,
Now version 0.6 is the rule for each friend.
No more wild guesses, just harmony’s call—
Thanks to the rabbit, it’s smooth for us all! 🐇✨

✨ Finishing Touches
  • 📝 Generate Docstrings

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 30, 2025

Deploy Preview for jumpstarter-docs ready!

Name Link
🔨 Latest commit b64e70f
🔍 Latest deploy log https://app.netlify.com/sites/jumpstarter-docs/deploys/68124b6e188a3300081a3f0e
😎 Deploy Preview https://deploy-preview-434--jumpstarter-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@mangelajo mangelajo changed the base branch from main to release-0.6 April 30, 2025 11:58
@mangelajo mangelajo force-pushed the prepare-0.6-all branch 2 times, most recently from cd2b807 to dc2a733 Compare April 30, 2025 15:46
@mangelajo mangelajo changed the base branch from release-0.6 to main April 30, 2025 15:46
Copy link
Copy Markdown
Contributor

@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

🔭 Outside diff range comments (1)
scripts/pin_release_versions.py (1)

1-105: 💡 Verification agent

🧩 Analysis chain

Pipeline execution failure needs to be addressed.

The pipeline is failing with: ERROR: failed to solve: process "/bin/sh -c uv ./scripts/pin_release_versions.py --unpin" did not complete successfully: exit code: 2. This may be related to the issues identified in this review.

Also verify that 'uv' is a valid command in your environment. You may need to use 'python' or 'python3' explicitly if uv is not available.


🏁 Script executed:

#!/bin/bash
# Check if the script dependencies are available in the environment
echo "Checking if tomli and tomli_w are available:"
pip list | grep -E 'tomli|tomli-w'

# Make sure the script is executable
echo "Checking file permissions:"
ls -la ./scripts/pin_release_versions.py

Length of output: 371


Fix pipeline execution by calling the script with Python and installing tomli-w

The failure is due to two issues in the CI environment:

• The command uv ./scripts/pin_release_versions.py --unpin is invalid—uv isn’t a recognized interpreter.
– Update your CI/Dockerfile (or pipeline command) to:
bash python3 ./scripts/pin_release_versions.py --unpin
• The tomli_w module isn’t installed (pip list only shows tomli).
– Add tomli-w to your project’s dependencies (e.g. in requirements.txt or pyproject.toml) so that import tomli_w succeeds.

With those two changes, the script should execute without exit code 2.

🧰 Tools
🪛 GitHub Actions: Build and push container image

[error] 1-1: buildx failed with: ERROR: failed to solve: process "/bin/sh -c uv ./scripts/pin_release_versions.py --unpin" did not complete successfully: exit code: 2

🧹 Nitpick comments (1)
scripts/pin_release_versions.py (1)

45-68: Improve error handling to be more specific.

The error handling in the modify_pyproject function is quite generic. Consider using more specific exception handling to provide better error messages.

    try:
        with open(file_path, "rb") as f:
            pyproject = tomli.load(f)

        modified = False

        # Process dependencies in [project.dependencies]
        if "project" in pyproject and "dependencies" in pyproject["project"]:
            deps = pyproject["project"]["dependencies"]
            new_deps = process_dependencies(deps, version, unpin)
            if new_deps != deps:
                pyproject["project"]["dependencies"] = new_deps
                modified = True

        # Write back if modified
        if modified:
            with open(file_path, "wb") as f:
                tomli_w.dump(pyproject, f)
            return True

        return False

-    except Exception as e:
-        print(f"Error processing {file_path}: {e}")
-        raise e
+    except FileNotFoundError:
+        print(f"Error: File not found - {file_path}")
+        return False
+    except tomli.TOMLDecodeError as e:
+        print(f"Error: Invalid TOML format in {file_path}: {e}")
+        return False
+    except Exception as e:
+        print(f"Unexpected error processing {file_path}: {e}")
+        raise
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 336da10 and e46bb56.

📒 Files selected for processing (34)
  • .devfile/Containerfile.client (1 hunks)
  • Dockerfile (1 hunks)
  • examples/automotive/pyproject.toml (1 hunks)
  • examples/soc-pytest/pyproject.toml (1 hunks)
  • packages/jumpstarter-all/pyproject.toml (1 hunks)
  • packages/jumpstarter-cli-admin/pyproject.toml (1 hunks)
  • packages/jumpstarter-cli-common/pyproject.toml (1 hunks)
  • packages/jumpstarter-cli-driver/pyproject.toml (1 hunks)
  • packages/jumpstarter-cli/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-can/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-composite/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-corellium/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-dutlink/pyproject.toml (2 hunks)
  • packages/jumpstarter-driver-flashers/pyproject.toml (3 hunks)
  • packages/jumpstarter-driver-http/pyproject.toml (2 hunks)
  • packages/jumpstarter-driver-network/pyproject.toml (3 hunks)
  • packages/jumpstarter-driver-opendal/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-power/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-probe-rs/pyproject.toml (2 hunks)
  • packages/jumpstarter-driver-pyserial/pyproject.toml (2 hunks)
  • packages/jumpstarter-driver-qemu/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-raspberrypi/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-sdwire/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-shell/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-snmp/pyproject.toml (3 hunks)
  • packages/jumpstarter-driver-tftp/pyproject.toml (3 hunks)
  • packages/jumpstarter-driver-uboot/pyproject.toml (2 hunks)
  • packages/jumpstarter-driver-ustreamer/pyproject.toml (1 hunks)
  • packages/jumpstarter-driver-yepkit/pyproject.toml (2 hunks)
  • packages/jumpstarter-imagehash/pyproject.toml (1 hunks)
  • packages/jumpstarter-kubernetes/pyproject.toml (2 hunks)
  • packages/jumpstarter-testing/pyproject.toml (1 hunks)
  • packages/jumpstarter/pyproject.toml (3 hunks)
  • scripts/pin_release_versions.py (1 hunks)
✅ Files skipped from review due to trivial changes (27)
  • examples/automotive/pyproject.toml
  • packages/jumpstarter-imagehash/pyproject.toml
  • packages/jumpstarter-driver-raspberrypi/pyproject.toml
  • packages/jumpstarter-driver-shell/pyproject.toml
  • packages/jumpstarter-testing/pyproject.toml
  • packages/jumpstarter-driver-opendal/pyproject.toml
  • packages/jumpstarter-driver-dutlink/pyproject.toml
  • packages/jumpstarter-driver-power/pyproject.toml
  • packages/jumpstarter-driver-probe-rs/pyproject.toml
  • examples/soc-pytest/pyproject.toml
  • packages/jumpstarter-driver-composite/pyproject.toml
  • packages/jumpstarter/pyproject.toml
  • packages/jumpstarter-driver-yepkit/pyproject.toml
  • packages/jumpstarter-driver-ustreamer/pyproject.toml
  • packages/jumpstarter-driver-corellium/pyproject.toml
  • packages/jumpstarter-driver-snmp/pyproject.toml
  • packages/jumpstarter-driver-uboot/pyproject.toml
  • packages/jumpstarter-driver-sdwire/pyproject.toml
  • packages/jumpstarter-cli-common/pyproject.toml
  • packages/jumpstarter-driver-can/pyproject.toml
  • packages/jumpstarter-kubernetes/pyproject.toml
  • packages/jumpstarter-driver-http/pyproject.toml
  • packages/jumpstarter-cli-driver/pyproject.toml
  • packages/jumpstarter-cli-admin/pyproject.toml
  • packages/jumpstarter-cli/pyproject.toml
  • packages/jumpstarter-driver-pyserial/pyproject.toml
  • packages/jumpstarter-driver-qemu/pyproject.toml
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/jumpstarter-all/pyproject.toml
🧰 Additional context used
🪛 GitHub Actions: Build and push container image
scripts/pin_release_versions.py

[error] 1-1: buildx failed with: ERROR: failed to solve: process "/bin/sh -c uv ./scripts/pin_release_versions.py --unpin" did not complete successfully: exit code: 2

⏰ Context from checks skipped due to timeout of 90000ms (4)
  • GitHub Check: pytest-matrix (3.11)
  • GitHub Check: pytest-matrix (3.13)
  • GitHub Check: pytest-matrix (3.12)
  • GitHub Check: e2e
🔇 Additional comments (13)
packages/jumpstarter-driver-flashers/pyproject.toml (6)

3-6: Clean formatting improvement

Converting the dynamic array from single-line to multi-line format improves readability and maintainability.


18-24: Well-defined version constraints added

Adding the ~= 0.6 version constraints to jumpstarter dependencies ensures compatibility with release-0.6 tags, which aligns with the PR objective.


30-31: Improved table formatting

Converting the inline table to a multi-line format improves readability.


41-43: Better readability for testpaths

Converting the testpaths array from single-line to multi-line format enhances code clarity.


45-46: Clearer structure for uv sources

Restructuring from a single-line key-value pair to a nested table improves readability.


49-52: Consistent multi-line formatting

Converting arrays from single-line to multi-line format maintains a consistent style throughout the file.

Also applies to: 56-59

Dockerfile (1)

17-21: Improved build process with explicit unpinning step

The changes add a more structured build process that:

  1. Sets the working directory explicitly
  2. Runs dependency sync first
  3. Unpins jumpstarter dependencies using the new script
  4. Then runs the build

This ensures consistent builds while allowing for version-pinned dependencies in the source files.

.devfile/Containerfile.client (1)

9-13: Mirror of main Dockerfile build process

These changes mirror the improvements made to the main Dockerfile, ensuring a consistent build process across different container environments with the same explicit unpinning step.

packages/jumpstarter-driver-tftp/pyproject.toml (3)

3-6: Consistent formatting improvements

Converting arrays from single-line to multi-line format improves readability and matches the style used across other pyproject.toml files in the project.

Also applies to: 10-12, 43-45, 49-52


16-18: Version constraints added for 0.6 release

Adding ~= 0.6 version constraints to jumpstarter dependencies aligns this package with the release-0.6 tags, ensuring consistent version requirements across packages.


33-34: Improved table formatting

Converting the inline table to a multi-line format improves readability while maintaining the same configuration.

packages/jumpstarter-driver-network/pyproject.toml (2)

3-6: Formatting improvements enhance readability.

The changes to convert single-line arrays and tables to multi-line formats with proper indentation make the TOML file more readable and maintainable. This consistent formatting style will make future changes easier to track in version control.

Also applies to: 9-11, 15-21, 37-43, 52-54, 57-60


16-16: Version constraint aligns with release strategy.

Adding the compatible release operator ~= 0.6 for the jumpstarter dependency properly implements the PR objective of ensuring this package works with the 0.6.x release versions while preventing automatic upgrades to 0.7.0+ which might introduce breaking changes.

Comment thread scripts/pin_release_versions.py
Comment thread scripts/pin_release_versions.py Outdated
@mangelajo mangelajo force-pushed the prepare-0.6-all branch 4 times, most recently from b81c3b2 to d561827 Compare April 30, 2025 16:09
@mangelajo
Copy link
Copy Markdown
Member Author

Closing in favor of jumpstarter-dev/jumpstarter#435 which is cleaner

@mangelajo mangelajo closed this May 5, 2025
@mangelajo mangelajo added this to the 0.6.0 milestone May 8, 2025
@NickCao NickCao deleted the prepare-0.6-all branch May 16, 2025 14:01
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant