Skip to content

Conversation

@jreakin
Copy link
Member

@jreakin jreakin commented Nov 25, 2025

Summary

This PR adds continuous integration via GitHub Actions and status badges to the README.

Changes

GitHub Actions Workflow

Three separate jobs that run on push to main and pull requests:

  • Lint (Ruff): Checks code style and formatting
  • Type Check (Mypy): Static type checking
  • Test (Pytest): Runs the full test suite (65 tests)

All jobs use uv for fast, reliable dependency management.

README Badges

Added status badges for CI, Ruff, Mypy, Python 3.12+, and MIT License.

Summary by CodeRabbit

  • Documentation

    • Added status badges and shortened project description; clarified examples with inline comments (Pandas snippet, key features).
  • License

    • Added MIT License file.
  • Chores

    • Updated CI workflows: switched to a cached Python installer, streamlined dependency installation, preserved linting and tests, and added a MyPy type-checking workflow.

✏️ Tip: You can customize this high-level summary in your review settings.

- Add CI workflow with three jobs: lint (ruff), type-check (mypy), test (pytest)
- Uses uv for fast dependency management
- Add status badges to README: CI, Ruff, Mypy, Python version, License
Copilot AI review requested due to automatic review settings November 25, 2025 19:22
@coderabbitai
Copy link

coderabbitai bot commented Nov 25, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Updates add an MIT LICENSE, expand README badges and examples, adjust packaging includes in pyproject.toml, and replace Python setup steps in CI workflows to use astral-sh/setup-uv with explicit uv-based install and dependency sync; a new MyPy workflow was also added.

Changes

Cohort / File(s) Summary
Docs
README.md, LICENSE
Added MIT LICENSE; updated README.md with badges (Tests, Ruff, Mypy, Python 3.12+, MIT), shortened project description, adjusted Key Features text, and added inline comments/clarifications to the Pandas Integration example.
Packaging
pyproject.toml
Removed explicit wheel sources block and wheel.force-include mapping for uszips.csv; expanded sdist include to cover src/ryandata_address_utils/..., LICENSE, and README.md.
CI — Lint
.github/workflows/lint.yml
Replaced prior Python/uv setup step with a sequence using actions/checkout@v4, astral-sh/setup-uv@v4 (install uv + caching), uv python install 3.12, uv sync --group dev, then run Ruff checks.
CI — Tests
.github/workflows/tests.yml
Replaced setup with checkout + astral-sh/setup-uv@v4, added uv python install step per matrix, install dependencies via uv sync (dev & extras), preserved test run step with updated environment.
CI — Typecheck
.github/workflows/typecheck.yml
Added new MyPy workflow: checkout, install uv, set up Python 3.12 via uv, install dev deps, run mypy on src/.
Action helper
.github/actions/setup-python-uv/action.yml
Updated description (mentions caching with uv), reordered/adjusted install-extras input position, removed embedded actions/checkout@v4 step from the action definition, minor whitespace changes.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    participant Repo as Repository
    participant GH as GitHub Actions
    participant UV as astral-sh/setup-uv
    participant Py as Python runtime
    participant Dep as Dependency installer (uv)
    participant Tool as Lint/Test/Typecheck

    note over GH,UV `#DDEEFF`: CI workflow start (push / PR)
    Repo->>GH: trigger workflow
    GH->>Repo: actions/checkout@v4
    GH->>UV: install uv (astral-sh/setup-uv@v4) 
    UV->>Py: uv python install 3.12
    GH->>Dep: uv sync --group dev / uv sync (extras)
    Dep-->>GH: dependencies installed
    GH->>Tool: run Ruff / pytest / mypy
    Tool-->>GH: results (success / fail)
    GH->>Repo: report status
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

  • Inspect each workflow for correct step ordering, matrix usage, and secrets/caches.
  • Verify pyproject.toml sdist includes match intended package layout and no required data files were omitted.
  • Confirm README badge URLs and the inline code example changes are accurate and syntactically correct.
  • Review .github/actions/setup-python-uv/action.yml for unintended behavioral changes after removing checkout from the action.

🐰 I hop through code with cheer and glee,
Badges gleam and CI runs for me,
Licenses signed, workflows now in tune,
Tests and types hum a merry tune,
A nibble of carrots, then back to the tree!

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add GitHub Actions CI workflow and README badges' accurately summarizes the main changes: adding CI workflows and README badges.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch ci/add-github-workflows

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

@jreakin
Copy link
Member Author

jreakin commented Nov 25, 2025

@cursor review

@cursor
Copy link

cursor bot commented Nov 25, 2025

Skipping Bugbot: Bugbot is disabled for this repository

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds continuous integration infrastructure to the project by introducing a GitHub Actions workflow and status badges to the README.

Key Changes

  • GitHub Actions CI workflow with three separate jobs for linting (Ruff), type checking (Mypy), and testing (Pytest)
  • Five status badges added to README for CI status, code quality tools, Python version, and license
  • All jobs use uv for dependency management

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
.github/workflows/ci.yml Implements CI pipeline with three jobs (lint, type-check, test) that run on push to main and pull requests
README.md Adds status badges for CI workflow, Ruff, Mypy, Python 3.12+, and MIT license

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.

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

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7fc0b43 and 4154a47.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml (1 hunks)
  • README.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[style] ~3-~3: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 2045 characters long)
Context: ...Address-Utils/actions/workflows/ci.yml) Ruff Checked with mypy [![Python 3.12+](https://img.shields.io/ba...

(EN_EXCESSIVE_EXCLAMATION)

🪛 YAMLlint (1.37.1)
.github/workflows/ci.yml

[warning] 3-3: truthy value should be one of [false, true]

(truthy)


[error] 72-72: too many blank lines (1 > 0)

(empty-lines)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Upload results
🔇 Additional comments (1)
README.md (1)

3-7: Badge additions look solid.

The CI, Ruff, Mypy, Python version, and MIT license badges are correctly formatted with proper URLs and link targets. They provide clear visibility into project quality and CI status at a glance.

@jreakin
Copy link
Member Author

jreakin commented Nov 25, 2025

@copilot open a new pull request to apply changes based on the comments in this thread

Copy link
Contributor

Copilot AI commented Nov 25, 2025

@jreakin I've opened a new pull request, #2, to work on those changes. Once the pull request is ready, I'll request review from you.

Copy link
Contributor

Copilot AI commented Nov 25, 2025

@jreakin I've opened a new pull request, #3, to work on those changes. Once the pull request is ready, I'll request review from you.

Copy link
Contributor

Copilot AI commented Nov 25, 2025

@jreakin I've opened a new pull request, #4, to work on those changes. Once the pull request is ready, I'll request review from you.

- tests.yml: Pytest test suite
- lint.yml: Ruff linting and formatting
- typecheck.yml: Mypy type checking

Each workflow now has its own badge that shows pass/fail status
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: 5

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 725cda9 and 202cabd.

📒 Files selected for processing (4)
  • .github/workflows/lint.yml (1 hunks)
  • .github/workflows/tests.yml (1 hunks)
  • .github/workflows/typecheck.yml (1 hunks)
  • README.md (3 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[style] ~3-~3: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 2107 characters long)
Context: ...ress-Utils/actions/workflows/tests.yml) Ruff Mypy [![Python 3.12+](https://img.shields.io/ba...

(EN_EXCESSIVE_EXCLAMATION)

🪛 YAMLlint (1.37.1)
.github/workflows/tests.yml

[warning] 3-3: truthy value should be one of [false, true]

(truthy)


[error] 29-29: too many blank lines (1 > 0)

(empty-lines)

.github/workflows/lint.yml

[warning] 3-3: truthy value should be one of [false, true]

(truthy)


[error] 32-32: too many blank lines (1 > 0)

(empty-lines)

.github/workflows/typecheck.yml

[warning] 3-3: truthy value should be one of [false, true]

(truthy)


[error] 29-29: too many blank lines (1 > 0)

(empty-lines)

🔇 Additional comments (1)
README.md (1)

3-7: Status badges are well-structured and link correctly.

The five badges (Tests, Ruff, Mypy, Python 3.12+, MIT License) follow markdown best practices, use proper URLs to the respective workflow definitions, and provide clear visual indicators of CI status and project requirements.

Incorporated from PR #2 (copilot/sub-pr-1):
- Added permissions: contents: read for security
- Added enable-cache: true to setup-uv for faster builds
- Added Python version matrix (3.12, 3.13) for test workflow

Incorporated from PR #4 (copilot/sub-pr-1-another-one):
- Added composite action .github/actions/setup-python-uv/action.yml
- Updated composite action with caching and python-version input

Cleaned up:
- Removed Copilot conflict resolution documentation and scripts
- Removed resolved-workflows directory (changes applied directly)
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: 1

♻️ Duplicate comments (2)
.github/workflows/lint.yml (1)

31-35: Remove trailing blank line at end of file.

This issue was already flagged in a previous review; ensure the trailing blank line is removed.

       - name: Run Ruff format check
         run: uv run ruff format --check src/ tests/
-
.github/workflows/tests.yml (1)

34-35: Remove trailing blank line at end of file.

This issue was already flagged in a previous review; ensure the trailing blank line is removed.

       - name: Run tests
         run: uv run pytest tests/ -v --tb=short
-
📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 202cabd and d256929.

📒 Files selected for processing (4)
  • .github/actions/setup-python-uv/action.yml (2 hunks)
  • .github/workflows/lint.yml (1 hunks)
  • .github/workflows/tests.yml (1 hunks)
  • .github/workflows/typecheck.yml (1 hunks)
🧰 Additional context used
🪛 YAMLlint (1.37.1)
.github/actions/setup-python-uv/action.yml

[error] 35-35: too many blank lines (1 > 0)

(empty-lines)

🔇 Additional comments (3)
.github/workflows/lint.yml (1)

17-29: Uv-based setup is consistent and correct.

The refactored setup using astral-sh/setup-uv@v4 with caching and explicit uv python install followed by uv sync --group dev aligns with standardized tooling across workflows.

.github/workflows/typecheck.yml (1)

1-32: New MyPy workflow is well-structured.

The type-checking workflow correctly uses the standardized astral-sh/setup-uv@v4 setup pattern, installs dev dependencies, and runs MyPy against src/ only (appropriate for type checking, not tests). Hard-coding Python 3.12 is suitable since MyPy compatibility is typically version-independent for this project's scope.

Ensure there is no trailing blank line at the end of the file (past review flagged this; verify in your commit).

.github/workflows/tests.yml (1)

16-32: Test matrix and uv setup are correctly configured.

The matrix strategy properly tests across Python 3.12 and 3.13, and the uv python install ${{ matrix.python-version }} correctly interpolates the matrix variable. The uv sync --group dev --all-extras ensures optional dependencies (e.g., pandas) are installed for comprehensive test coverage.

else
uv sync --group dev
fi
Copy link

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 blank line.

YAMLlint reports too many blank lines at the end of the file.

        else
          uv sync --group dev
        fi
-
📝 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
else
uv sync --group dev
fi
🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 35-35: too many blank lines (1 > 0)

(empty-lines)

🤖 Prompt for AI Agents
.github/actions/setup-python-uv/action.yml around line 35: the file ends with an
extra trailing blank line which YAMLlint flags; remove the extra blank line(s)
at the end so the file ends with a single newline (no empty lines after the last
content line).

@jreakin jreakin merged commit f11783f into main Nov 25, 2025
6 checks passed
@jreakin jreakin deleted the ci/add-github-workflows branch November 25, 2025 20:09
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