Skip to content

Rename pypi project to nixie cli - #31

Merged
leynos merged 9 commits into
mainfrom
rename-pypi-project-to-nixie-cli
Apr 18, 2026
Merged

Rename pypi project to nixie cli#31
leynos merged 9 commits into
mainfrom
rename-pypi-project-to-nixie-cli

Conversation

@leynos

@leynos leynos commented Apr 18, 2026

Copy link
Copy Markdown
Owner

Summary by Sourcery

Rename the packaged PyPI distribution to nixie-cli and tighten packaging so unit tests and stale build artifacts are excluded from published wheels.

Enhancements:

  • Adjust setuptools package discovery to include the main package but exclude test modules from the built wheel.

Build:

  • Rename the project artifact to nixie-cli in packaging metadata and ensure make clean removes the build directory before packaging.

Documentation:

  • Update README and changelog to describe installing the tool from PyPI as nixie-cli while keeping the nixie CLI command name.

Tests:

  • Add integration tests verifying wheel metadata, exclusion of unit tests from the wheel, and proper cleanup of the build directory via make clean.

leynos added 3 commits April 18, 2026 14:53
Switch setuptools to package discovery with an explicit exclusion for
`nixie.unittests`, so wheel builds no longer warn about the importable
subpackage and do not publish the unit test modules.

Extend `make clean` to remove `build/`, which prevents stale build
artefacts from leaking old test files into later wheels.

Add packaging regression tests that build a throwaway wheel copy and
verify that `nixie.unittests` stays out of the artefact.
Publish the package as `nixie-cli` while keeping the installed
console script as `nixie`.

Update the packaging regression test to assert both the wheel metadata
and the preserved console entry point, and refresh the user-facing
installation docs to match the new PyPI name.
Update the end-user installation guidance to recommend
`uv tool install nixie-cli`.

This keeps the README aligned with the new PyPI distribution name
and the preferred tool-install workflow for a CLI package.
@coderabbitai

coderabbitai Bot commented Apr 18, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Rename the PyPI distribution to nixie-cli, keep the nixie console entry point, update packaging metadata and README installation instructions, add integration tests that validate wheel metadata and exclusion of nixie.unittests, and extend the Makefile clean target to remove the build/ directory.

Changes

Cohort / File(s) Summary
Packaging metadata
pyproject.toml, docs/CHANGELOG.md
Rename project to nixie-cli in pyproject.toml; switch to setuptools package discovery (find); add Unreleased changelog entry about the distribution name.
Documentation / Install
README.md
Change installation instruction from pip install nixie to uv tool install nixie-cli while preserving description of the nixie console command.
Build config
Makefile
Extend make clean to also remove the build/ directory (rm -rf .venv build dist/ *.egg-info).
Integration tests
tests/integration/test_packaging.py
Add tests that require host tools, run uv build --wheel, assert wheel contains .dist-info/METADATA with Name: nixie-cli, entry point nixie = nixie.cli:cli, and no nixie/unittests/; add test that make clean removes build/.
Test fixtures / helpers
tests/integration/conftest.py
Add _build_packaging_project helper and two fixtures (packaging_project_root, packaging_project_root_with_makefile) that copy a minimal project tree; add runtime imports (shutil, uuid4, Path).

Poem

🐇 The nixie dons a -cli bright hue,
The nixie command stays faithful and true,
Tests spin the wheel and scan each archive,
Clean sweeps the build so projects thrive,
Packaging sings a tidy new cue.

🚥 Pre-merge checks | ✅ 5 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Developer Documentation ⚠️ Warning Pull request introduces new internal APIs and changes build requirements without documenting them in the developer guide, violating project documentation guidelines. Document new packaging test fixtures, helpers, and build changes in developer guide; explain the nixie-cli distribution rename, setuptools configuration, and new tooling prerequisites.
User-Facing Documentation ❓ Inconclusive Unable to assess documentation changes—repository structure and file system access unavailable for analysis. Provide access to the repository contents or specify which documentation files were modified in the custom check assessment.
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Rename pypi project to nixie cli' clearly and directly summarises the main change across the changeset: renaming the PyPI distribution from 'nixie' to 'nixie-cli'.
Description check ✅ Passed The description comprehensively details all changes made: package renaming, setuptools configuration adjustments, build artefact cleanup via Makefile, documentation updates, and integration test additions—all of which align directly with the changeset.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Testing ✅ Passed All new functionality is adequately guarded by behavioural integration tests that comprehensively verify the expected behaviour and degrade gracefully when required host tools are unavailable.
Module-Level Documentation ✅ Passed Both Python modules include proper module-level docstrings explaining their purpose: tests/integration/test_packaging.py and tests/integration/conftest.py.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch rename-pypi-project-to-nixie-cli

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

@leynos
leynos marked this pull request as ready for review April 18, 2026 14:07
@sourcery-ai

sourcery-ai Bot commented Apr 18, 2026

Copy link
Copy Markdown
Contributor

Reviewer's Guide

Renames the published PyPI distribution to nixie-cli while keeping the nixie console script, tightens setuptools package discovery to exclude unit tests from the wheel, updates install docs, extends make clean to remove build/, and adds integration tests to validate packaging metadata and clean behaviour.

Flow diagram for packaging configuration and clean behaviour

flowchart TD
  A[pyproject.toml project.name = nixie-cli] --> B[setuptools.find_packages<br>include = nixie<br>exclude = nixie.unittests and nixie.unittests.*<br>namespaces = false]
  B --> C[Build wheel distribution]
  C --> D[Wheel metadata shows distribution name nixie-cli]
  C --> E[Wheel contents include nixie package only]
  E --> F[Unit test modules are excluded from wheel]
  D --> G[uv tool install nixie-cli]
  G --> H[Environment installs nixie-cli distribution]
  H --> I[Entry point nixie = nixie.cli:cli]
  I --> J[nixie console command available to user]

  subgraph Makefile_clean_target
    K[make clean] --> L[Remove .venv]
    K --> M[Remove build directory]
    K --> N[Remove dist directory]
    K --> O[Remove *.egg-info]
  end
Loading

File-Level Changes

Change Details Files
Publish the project to PyPI as nixie-cli while keeping the installed CLI entry point as nixie and excluding test packages from the distribution.
  • Rename the project in pyproject metadata from nixie to nixie-cli.
  • Switch setuptools configuration to use package discovery with inclusion of nixie and exclusion of nixie.unittests packages.
  • Ensure the console_script entry point remains nixie = nixie.cli:cli and is validated via wheel inspection in integration tests.
pyproject.toml
tests/integration/test_packaging.py
Update documentation to reflect the new PyPI distribution name and preferred installation method using uv tools.
  • Change README installation instructions to recommend uv tool install nixie-cli instead of pip install nixie.
  • Document the new distribution name and behaviour in the changelog.
README.md
docs/CHANGELOG.md
Strengthen build cleanliness to avoid stale packaging artifacts and verify it via integration tests.
  • Extend the Makefile clean target to also remove the build/ directory in addition to virtualenv, dist, and egg-info.
  • Add an integration test that creates a fake build tree with unit tests, runs make clean, and asserts the build directory is removed.
Makefile
tests/integration/test_packaging.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

sourcery-ai[bot]

This comment was marked as resolved.

@coderabbitai coderabbitai Bot added the Roadmap label Apr 18, 2026
Skip the packaging integration tests when `uv` or `make` are not
installed instead of hard-failing the suite.

Also assert that the stale build artefact exists before running
`make clean` so the test proves the cleanup removed a real file.
@leynos

leynos commented Apr 18, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai Have the following now been resolved?

Please address the comments from this code review:

Overall Comments

  • The integration tests currently hard-fail if uv or make are not available (assert uv_executable is not None / assert make_executable is not None); consider using pytest.skip when these tools are missing so the suite degrades more gracefully on environments without those binaries.

Individual Comments

Comment 1

+def test_make_clean_removes_the_build_directory(tmp_path: Path) -> None: + """Ensure ``make clean`` clears stale build artefacts before packaging.""" + build_root = _copy_packaging_fixture(tmp_path, include_makefile=True) + stale_test_file = build_root / "build/lib/nixie/unittests/stale_test.py" + stale_test_file.parent.mkdir(parents=True, exist_ok=True) + stale_test_file.write_text("pass\n", encoding="utf-8") + + make_executable = shutil.which("make") **suggestion (testing):** Assert that the stale file exists before running `make clean` to prove the behaviour under test

The test currently relies on the stale file being created but never verifies it. Please add assert stale_test_file.exists() before invoking make so the test proves make clean removed an existing file rather than passing due to a setup issue.

    stale_test_file.parent.mkdir(parents=True, exist_ok=True)
    stale_test_file.write_text("pass\n", encoding="utf-8")

    assert stale_test_file.exists(), "Expected stale test file to exist before running `make clean`"

    make_executable = shutil.which("make")

</issue_to_address>

@coderabbitai

coderabbitai Bot commented Apr 18, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
cat tests/integration/test_packaging.py

Length of output: 3758


@leynos — yes, both issues are fully resolved in the current branch:

  1. pytest.skip for missing binaries — a _require_executable helper has been introduced that calls pytest.skip(f"{name} must be available to {purpose}") when the tool is not on PATH. Both uv and make lookups go through it, so neither test hard-fails any longer.

  2. Pre-condition assertion on the stale fileassert stale_test_file.exists(), "Expected stale test file to exist before running \make clean`"` is now present immediately after the file is written, exactly as suggested.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

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

Inline comments:
In `@tests/integration/test_packaging.py`:
- Around line 54-68: The test currently uses next() without defaults which
raises StopIteration and yields unhelpful tracebacks; change the three next()
usages to provide a default (e.g. next(..., None)) and then assert the result is
not None with a clear failure message. Concretely, for wheel_path, use
wheel_path = next((build_root / "dist").glob("*.whl"), None) and assert
wheel_path is not None with "wheel file not found", and for metadata_name and
entry_points_name use next(packaged_file_generator, None) then assert
metadata_name is not None with "METADATA file not found in wheel" and similarly
assert entry_points_name is not None with "entry_points.txt not found in wheel";
this preserves packaged_files usage and only updates the three identifiers
wheel_path, metadata_name, and entry_points_name.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 328de637-978f-4ef6-9749-29ebc4b82b5b

📥 Commits

Reviewing files that changed from the base of the PR and between 7505726 and c0c94c8.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (5)
  • Makefile
  • README.md
  • docs/CHANGELOG.md
  • pyproject.toml
  • tests/integration/test_packaging.py

Comment thread tests/integration/test_packaging.py Outdated
Replace bare `next()` calls in the packaging integration test with
`next(..., None)` plus explicit assertions.

This keeps the test behaviour unchanged on the happy path while
producing clearer failures when the wheel or wheel metadata is missing.
coderabbitai[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

leynos added 2 commits April 18, 2026 15:36
Add explicit timeouts to the packaging integration test subprocess
calls so CI cannot hang indefinitely.

Also document the `S603` suppressions inline because both invocations
use static argv in a controlled test environment with `shell=False`.
Move the packaging project copy logic into integration fixtures so the
packaging tests receive prepared project roots instead of managing
local setup helpers.

Also add explicit failure messages to the remaining bare assertions in
`test_packaging.py` so packaging mismatches are easier to diagnose.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

♻️ Duplicate comments (2)
tests/integration/test_packaging.py (2)

13-35: ⚠️ Potential issue | 🟠 Major

Replace helper-led shared setup with pytest fixtures.

Move project-copy setup and executable provisioning into fixtures under conftest.py, then inject them into test functions. Eliminate orchestration logic from test bodies.

As per coding guidelines, "Use pytest fixtures for shared setup (conftest.py or fixtures/)."

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

In `@tests/integration/test_packaging.py` around lines 13 - 35, The helper
function _copy_packaging_fixture is being used for shared test setup instead of
pytest fixtures; move its logic into one or more fixtures in conftest.py (e.g.,
a packaging_project or copy_packaging_fixture fixture) that create the
build_root directory, copy the listed files (names =
["pyproject.toml","README.md","LICENSE","nixie"] and optionally "Makefile") and
return the Path to the created project, and then update tests to accept that
fixture instead of calling _copy_packaging_fixture directly; ensure the fixture
encapsulates the include_makefile behavior (via parameterized fixtures or two
fixtures) and preserves the use of shutil.copytree/copy2 for directories/files
and use the same build_root naming.

92-93: ⚠️ Potential issue | 🟡 Minor

Add explicit failure messages to all bare asserts.

Attach clear assertion messages so failures report expected and actual values immediately.

Diff proposal
-    assert "Name: nixie-cli" in metadata
-    assert "nixie = nixie.cli:cli" in entry_points
+    assert "Name: nixie-cli" in metadata, (
+        f"Expected 'Name: nixie-cli' in wheel METADATA, got: {metadata!r}"
+    )
+    assert "nixie = nixie.cli:cli" in entry_points, (
+        "Expected console entry point 'nixie = nixie.cli:cli' "
+        f"in entry_points.txt, got: {entry_points!r}"
+    )
@@
-    assert unittest_entries == []
+    assert unittest_entries == [], (
+        f"Expected wheel to exclude nixie/unittests/, got: {unittest_entries!r}"
+    )
@@
-    assert not (build_root / "build").exists()
+    assert not (build_root / "build").exists(), (
+        "Expected `make clean` to remove build/ directory"
+    )

As per coding guidelines, "Use assert …, "message" over bare asserts".

Also applies to: 100-100, 125-125

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

In `@tests/integration/test_packaging.py` around lines 92 - 93, Replace bare
asserts with assertions that include clear failure messages: change assertions
like assert "Name: nixie-cli" in metadata and assert "nixie = nixie.cli:cli" in
entry_points to include messages (e.g., assert "Name: nixie-cli" in metadata,
f"expected package name 'Name: nixie-cli' in metadata; got: {metadata!r}" and
assert "nixie = nixie.cli:cli" in entry_points, f"expected entry point 'nixie =
nixie.cli:cli' in entry_points; got: {entry_points!r}"). Apply the same pattern
to the other bare asserts in this test file (the other assertions referenced in
the review) so failures print expected vs actual values.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@tests/integration/test_packaging.py`:
- Around line 13-35: The helper function _copy_packaging_fixture is being used
for shared test setup instead of pytest fixtures; move its logic into one or
more fixtures in conftest.py (e.g., a packaging_project or
copy_packaging_fixture fixture) that create the build_root directory, copy the
listed files (names = ["pyproject.toml","README.md","LICENSE","nixie"] and
optionally "Makefile") and return the Path to the created project, and then
update tests to accept that fixture instead of calling _copy_packaging_fixture
directly; ensure the fixture encapsulates the include_makefile behavior (via
parameterized fixtures or two fixtures) and preserves the use of
shutil.copytree/copy2 for directories/files and use the same build_root naming.
- Around line 92-93: Replace bare asserts with assertions that include clear
failure messages: change assertions like assert "Name: nixie-cli" in metadata
and assert "nixie = nixie.cli:cli" in entry_points to include messages (e.g.,
assert "Name: nixie-cli" in metadata, f"expected package name 'Name: nixie-cli'
in metadata; got: {metadata!r}" and assert "nixie = nixie.cli:cli" in
entry_points, f"expected entry point 'nixie = nixie.cli:cli' in entry_points;
got: {entry_points!r}"). Apply the same pattern to the other bare asserts in
this test file (the other assertions referenced in the review) so failures print
expected vs actual values.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 80dbce35-bb3a-43ba-a7b8-0f8b0ba8d12d

📥 Commits

Reviewing files that changed from the base of the PR and between f4c0f01 and 86080fc.

📒 Files selected for processing (1)
  • tests/integration/test_packaging.py

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

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

Inline comments:
In `@tests/integration/conftest.py`:
- Around line 46-47: The test fixture currently hardcodes build_root =
destination_root / "package-copy" and calls build_root.mkdir(), which can
collide when multiple fixtures are requested; change to create a unique
directory per fixture by appending a unique suffix (e.g. uuid4 or a timestamp)
to "package-copy" or use a temporary unique directory API, or call
build_root.mkdir(exist_ok=True) combined with a unique name; update the code
referencing build_root (the build_root and destination_root variables) so each
fixture instance gets its own target directory.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: e3772af0-f286-4a89-a8fd-a7e1419f1ab1

📥 Commits

Reviewing files that changed from the base of the PR and between 86080fc and 2facf9f.

📒 Files selected for processing (2)
  • tests/integration/conftest.py
  • tests/integration/test_packaging.py

Comment thread tests/integration/conftest.py Outdated
@leynos

leynos commented Apr 18, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai Have the following now been resolved?

Annul any requirements that violate the en-GB-oxendict spelling (-ize / -yse / -our) conventions (for example a request to replace "normalize" with "normalise" or "artefact" with "artifact"), or where the requirement unnecessarily increases cyclomatic complexity.

Please address the comments from this code review:

## Overall Comments
- The integration tests currently hard-fail if `uv` or `make` are not available (`assert uv_executable is not None` / `assert make_executable is not None`); consider using `pytest.skip` when these tools are missing so the suite degrades more gracefully on environments without those binaries.

## Individual Comments

### Comment 1
<location path="tests/integration/test_packaging.py" line_range="87-90" />
<code_context>
+def test_make_clean_removes_the_build_directory(tmp_path: Path) -> None:
+    """Ensure ``make clean`` clears stale build artefacts before packaging."""
+    build_root = _copy_packaging_fixture(tmp_path, include_makefile=True)
+    stale_test_file = build_root / "build/lib/nixie/unittests/stale_test.py"
+    stale_test_file.parent.mkdir(parents=True, exist_ok=True)
+    stale_test_file.write_text("pass\n", encoding="utf-8")
+
+    make_executable = shutil.which("make")
</code_context>
<issue_to_address>
**suggestion (testing):** Assert that the stale file exists before running `make clean` to prove the behaviour under test

The test currently relies on the stale file being created but never verifies it. Please add `assert stale_test_file.exists()` before invoking `make` so the test proves `make clean` removed an existing file rather than passing due to a setup issue.

```suggestion
    stale_test_file.parent.mkdir(parents=True, exist_ok=True)
    stale_test_file.write_text("pass\n", encoding="utf-8")

    assert stale_test_file.exists(), "Expected stale test file to exist before running `make clean`"

    make_executable = shutil.which("make")
```
</issue_to_address>

@coderabbitai

coderabbitai Bot commented Apr 18, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

Let me read the current state of the file to confirm.


🏁 Script executed:

#!/bin/bash
cat tests/integration/test_packaging.py

Length of output: 4167


@leynos — both issues are fully resolved in the current branch, and neither requirement is subject to annulment:

  1. pytest.skip for missing binaries_require_executable (lines 16–22) calls pytest.skip(f"{name} must be available to {purpose}") when the tool is absent from PATH. Both uv and make lookups go through it; there are no bare hard-failing assertions at the call sites.

  2. Pre-condition assertion on the stale fileassert stale_test_file.exists(), "Expected stale test file to exist before running \make clean`"is present immediately afterwrite_text`, exactly as suggested.

No annulments apply: neither requirement touches spelling (the docstring already uses the correct British form "artefacts"), and neither increases cyclomatic complexity.

Give each copied packaging project a unique target directory instead of
always using `package-copy` under `tmp_path`.

This avoids fixture collisions when multiple packaging fixtures are
requested within the same test and preserves the existing copy logic.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

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

Inline comments:
In `@tests/integration/conftest.py`:
- Around line 50-52: The fixture currently builds a mutable list named "names"
and appends "Makefile" when include_makefile is true; change this to use an
immutable tuple by defining names = ("pyproject.toml", "README.md", "LICENSE",
"nixie") and, when include_makefile is true, extend via tuple concatenation
(e.g. names = names + ("Makefile",)); ensure any downstream usage that expects a
list either accepts a tuple or explicitly converts names to list at the call
site.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 96a66ab9-0a78-4a99-8805-0fa0cfcbc149

📥 Commits

Reviewing files that changed from the base of the PR and between 2facf9f and b533ac1.

📒 Files selected for processing (1)
  • tests/integration/conftest.py

Comment thread tests/integration/conftest.py Outdated
@leynos

leynos commented Apr 18, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai pause

@coderabbitai

coderabbitai Bot commented Apr 18, 2026

Copy link
Copy Markdown
Contributor
✅ Actions performed

Reviews paused.

Replace the mutable `names` list in the packaging fixture helper with
an immutable tuple.

Keep the optional `Makefile` handling inside tuple construction so the
fixture remains side-effect free and still copies the same files.
@leynos
leynos merged commit fbb77a0 into main Apr 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant