Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(ci): use astral-sh/setup-uv action #2282

Merged
merged 1 commit into from
Oct 5, 2024

Conversation

njzjz-bot
Copy link
Collaborator

@njzjz-bot njzjz-bot commented Oct 5, 2024

Generated by the task: njzjz-bot/njzjz-bot#9.

Summary by CodeRabbit

  • New Features
    • Introduced a dynamic runner selection for ARM64 builds.
    • Enhanced wheel building with a matrix strategy across multiple operating systems and Python versions.
  • Improvements
    • Streamlined source distribution building and artifact uploads.
    • Optimized caching for package installation using GitHub Actions.

Copy link
Contributor

coderabbitai bot commented Oct 5, 2024

Warning

Rate limit exceeded

@njzjz-bot has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 19 minutes and 19 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

Files that changed from the base of the PR and between 36cdbaa and 32a5142.

📝 Walkthrough
📝 Walkthrough

Walkthrough

The changes in the .github/workflows/wheel.yml file enhance the workflow for building and uploading Python packages. A new job, determine-arm64-runner, is introduced to select the appropriate runner for ARM64 builds based on the repository owner. The build_wheels job is updated to utilize a matrix strategy for building across multiple operating systems and Python versions. Additionally, modifications are made to streamline the build_sdist job and to ensure that the upload_pypi job runs only after successful completion of the previous jobs.

Changes

File Path Change Summary
.github/workflows/wheel.yml - Added job: determine-arm64-runner
- Modified job: build_wheels to use a matrix strategy for OS and Python versions
- Modified job: build_sdist to streamline source distribution build and artifact upload
- Modified job: upload_pypi to depend on build_wheels and build_sdist, with conditional triggers

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant GitHub Actions
    participant ARM64 Runner
    participant Build Wheels
    participant Build SDist
    participant Upload PyPI

    User->>GitHub Actions: Trigger merge or push
    GitHub Actions->>ARM64 Runner: Determine runner based on owner
    ARM64 Runner-->>GitHub Actions: Return runner type
    GitHub Actions->>Build Wheels: Start building wheels
    Build Wheels-->>GitHub Actions: Complete wheel builds
    GitHub Actions->>Build SDist: Start building source distribution
    Build SDist-->>GitHub Actions: Complete source distribution build
    GitHub Actions->>Upload PyPI: Upload packages to PyPI
Loading

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ 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 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.

Copy link

codecov bot commented Oct 5, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 96.05%. Comparing base (ac39c96) to head (32a5142).
Report is 1 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #2282   +/-   ##
=======================================
  Coverage   96.05%   96.05%           
=======================================
  Files          17       17           
  Lines        1418     1418           
=======================================
  Hits         1362     1362           
  Misses         56       56           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

codspeed-hq bot commented Oct 5, 2024

CodSpeed Performance Report

Merging #2282 will not alter performance

Comparing njzjz-bot:replace_uv (32a5142) with master (ac39c96)

Summary

✅ 8 untouched benchmarks

Copy link
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: 0

🧹 Outside diff range and nitpick comments (2)
.github/workflows/wheel.yml (2)

Line range hint 30-61: LGTM: Excellent improvements to the build_wheels job.

The modifications to the build_wheels job are well-implemented and align with the PR objectives:

  1. The matrix strategy for building wheels across different OS and Python versions improves parallelization and efficiency.
  2. Using the astral-sh/setup-uv@v3 action is a more maintainable approach for installing uv.
  3. The enable-cache: true option in the setup-uv action can potentially improve build times.
  4. Setting CIBW_BUILD_FRONTEND to 'build[uv]' ensures consistent use of uv as the build frontend.

Consider adding a comment explaining why the setup-uv step is skipped for Linux runners:

- name: Install uv
  uses: astral-sh/setup-uv@v3
  with:
    enable-cache: true
  if: runner.os != 'Linux'
  # Skip for Linux as it's handled differently in the cibuildwheel environment

Line range hint 83-99: LGTM: Excellent improvements to the upload_pypi job.

The modifications to the upload_pypi job are well-implemented and improve the overall workflow:

  1. Depending on both build_wheels and build_sdist jobs ensures that the upload only occurs after successful builds.
  2. The condition to run only on push events with version tags prevents unnecessary uploads on non-release pushes.
  3. Adding the id-token: write permission is crucial for secure, trusted publishing to PyPI.

Consider adding a brief comment explaining the version tag condition for clarity:

if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
# Only run on version tags (e.g., v1.0.0) to ensure we only upload official releases
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between ac39c96 and 36cdbaa.

📒 Files selected for processing (1)
  • .github/workflows/wheel.yml (1 hunks)
🔇 Additional comments (3)
.github/workflows/wheel.yml (3)

Line range hint 18-29: LGTM: Excellent addition of dynamic ARM64 runner selection.

The new determine-arm64-runner job is a well-implemented solution for dynamically selecting the appropriate runner for ARM64 builds. It provides flexibility by using a specialized ARM64 runner for the "deepmodeling" organization while defaulting to ubuntu-latest for other cases. This approach optimizes resource usage and build performance.


Line range hint 78-79: LGTM: Well-implemented changes to the build_sdist job.

The modifications to the build_sdist job are excellent:

  1. Using pipx run uv tool run ensures that uv is used in an isolated environment, which is a good practice for maintaining a clean build environment.
  2. The --with build[uv] flag ensures that the build package is installed with the uv extra, aligning with the PR objectives.
  3. The --installer uv flag guarantees that uv is used as the installer, which is consistent with the overall goal of integrating uv into the build process.

These changes effectively integrate uv into the source distribution build process while maintaining isolation and consistency.


Line range hint 1-99: Overall excellent improvements to the wheel build and upload workflow.

The changes made to this workflow file significantly enhance the build and upload process for Python packages:

  1. Integration of astral-sh/setup-uv action improves consistency and maintainability.
  2. Dynamic selection of ARM64 runners optimizes resource usage.
  3. Matrix strategy for wheel builds improves parallelization and efficiency.
  4. Consistent use of uv across different build steps aligns with PR objectives.
  5. Improved security with trusted publishing to PyPI.
  6. Better control over when uploads occur, preventing unnecessary actions.

These changes collectively result in a more robust, efficient, and secure workflow for building and uploading Python packages. Great job on these improvements!

@njzjz njzjz added this pull request to the merge queue Oct 5, 2024
Merged via the queue into deepmodeling:master with commit 2375261 Oct 5, 2024
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants