Skip to content

Change to use Pixi for package & environment management#194

Merged
douglatornell merged 23 commits into
mainfrom
pixi
Apr 23, 2026
Merged

Change to use Pixi for package & environment management#194
douglatornell merged 23 commits into
mainfrom
pixi

Conversation

@douglatornell
Copy link
Copy Markdown
Member

@douglatornell douglatornell commented Apr 22, 2026

  • Initialize Pixi in pyproject.toml
  • Add exclude-newer = "14d" workspace configuration setting
  • Import envs/environment-user.yaml to provide dependencies for default environment
  • Drop envs/environment-user.yaml because it is no longer needed
  • Create test environment and tasks based on envs/environment-test.yaml and dev docs "Running the Unit Tests" section
  • Update dev docs to use Pixi tasks to run tests and produce coverage reports
  • Change GitHub Actions pytest-with-coverage workflow to use reusable Pixi workflow
  • Create docs environment and tasks based on envs/environment-test.yaml, envs/environment-rtd.yaml, and dev docs "Building and Previewing the Documentation" section
  • Update dev docs to use Pixi tasks to build HTML docs and run link checker
  • Change GitHub Actions sphinx-linkcheck workflow to use reusable Pixi workflow
  • Change .readthedocs.yaml to use customized build process for Pixi from readthedocs build config docs
  • Drop envs/environment-rtd.yaml because it is no longer needed
  • Drop envs/environment-test.yaml because it is no longer needed
  • Create dev environment based on envs/environment-dev.yaml
  • Update package development docs re: the use of Pixi for package and environments management
  • Drop envs/environment-dev.yaml because it is no longer needed
  • Move requirements.txt to top level directory
  • Add task to update requirements.txt via pip list
  • Update installation docs to use Pixi
  • Update use docs to pixi run reshapr ...
  • Add Pixi badge to README and dev docs
  • Update release process docs to use Pixi

The requirements.txt file is retained so that we will continue to get security update notifications and PRs from dependabot. It will be dropped when dependabot adds support for the pixi.lock file.

Included `.pixi` environment handling in `.gitignore` and added `.gitattributes`
for `pixi.lock` to enforce binary merge rules and syntax highlighting. Updated
`pyproject.toml` to configure Pixi workspace, dependencies, and tasks, while
also adjusting `license-files` formatting.
@douglatornell douglatornell added documentation Improvements or additions to documentation enhancement New feature or request maintenance Package or repo maintenance labels Apr 22, 2026
@github-actions github-actions Bot added this to the v26.1 milestone Apr 22, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 22, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.69%. Comparing base (a82c4b0) to head (2186aa6).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #194   +/-   ##
=======================================
  Coverage   98.69%   98.69%           
=======================================
  Files          17       17           
  Lines        2224     2224           
  Branches       64       64           
=======================================
  Hits         2195     2195           
  Misses         23       23           
  Partials        6        6           
Flag Coverage Δ
unittests 98.69% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

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

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

That provides the minimal set of dependency packages for a working installation.
Dropped the environment file as it is no longer required. It has been
replaced by the default Pixi environment.
`conda` shim to enable use of PyCharm with Pixi environments.
@douglatornell douglatornell marked this pull request as draft April 22, 2026 22:03
- Introduced a new "test" environment with corresponding features and
tasks
- Added dependencies for testing: `pytest`, `pytest-cov`, `pytest-randomly`, and
`tomli` (from `environment-test.yaml`)
- Updated dev docs to use `pixi run` tasks to run tests and produce test
coverage reports
- Added `coverage` config setting to omit `.pixi/` directory from test coverage
scanning
- Introduced `test-py312` and `test-py313` environments with appropriate
dependencies.
- Adjusted `pyproject.toml` to register and configure environments.
- Set Python version requirement in default environment to "*" in `pyproject
.toml`.
- Introduced `test-py314` environment with appropriate dependencies.
- Updated `pyproject.toml` and `pixi.lock` to reflect the new environment.
- Adjusted documentation to include updated test commands using the `-e test`
flag.

This is primarily to make what we see on GitHub Actions explicit and consistent.
Keeping the `test` environment makes the developer experience Python version
agnostic.
- Introduced a new "docs" environment with corresponding features and tasks
- Added dependencies for docs builds from `environment-test.yaml`,
`environment-rtd.yaml`, and recently identified packages and versions for Sphinx
 9.1.0 builds on ReadTheDocs
- Updated dev docs to use `pixi run` tasks to build html docs and run link
checker
Replaced the Conda-based environment configuration with Pixi in
`.readthedocs .yaml`. Updated build commands to leverage `pixi run` tasks for
documentation generation. This aligns the ReadTheDocs workflow with the
migration to Pixi for consistency across environments.
Dropped the environment file as it is no longer required. It has been replaced
by a Pixi-customized build process in `.readthedocs.yaml`.
Dropped the environment file as it is no longer required. It has been replaced
by the several Pixi test environments in `pyproject.toml` and a Pixi-customized
build process in ` .readthedocs.yaml`.
Introduced `exclude-newer` setting with a 14-day threshold in the Pixi
workspace configuration. This helps avoid "security patch churn" on new
dependency version releases. Modified `pyproject.toml` to adjust versions for
`rich` and `xarray` dependencies to satisfy `exclude-newer``. Updated `pixi.lock`
with corresponding dependency changes.
- Introduced a new `dev` environment with appropriate dependencies necessary for
development workflows.
- Updated package development docs re: using Pixi for package and environments
management
Dropped the environment file as it is no longer required. It has been replaced
by the `dev` Pixi environment.
* Moved `requirements.txt` to top level directory
* Added task to update `requirements.txt` via `pip list`

The `requirements.txt` file is retained so that we will continue to get security
update notifications and PRs from dependabot. It will be dropped when dependabot
adds support for the `pixi.lock` file.
Revised the installation and usage documentation to replace Conda instructions
with Pixi. Added detailed guidance on setting up the environment, running
commands, and development workflows using Pixi, aligning with the recent
migration.
Expanded the installation documentation with an example illustrating the use of
the `pixi run -m` command option to execute `reshapr extract` from a directory
other than `Reshapr/`.
Replaced all `reshapr` and `conda` commands in the documentation with `pixi run`
equivalents. Updated examples, workflows, and explanatory sections to align with
the Pixi-based environment setup and execution.
Added missing files for example to demonstrate extracting heterotrophic
bacteria data using Reshapr from the SHEM tuning/pred_flag runs. Added a YAML
configuration file and a corresponding SLURM script showcasing the workflow.

These files should have been included in PR#169.
Added a shield.io Pixi badge to the README and package development docs. The
badge links to the latest Pixi version and improves visibility of the Pixi
integration.
Revised the package development documentation to align the release workflow with
`pixi run` commands. Updated steps to include using `pixi update` to update the
Pixi lock file each time the version identifier is changed. Adjust the version
bump commands to reflect the Pixi-based environment setup.
@douglatornell douglatornell marked this pull request as ready for review April 23, 2026 20:00
@douglatornell douglatornell merged commit 7b398d4 into main Apr 23, 2026
7 of 10 checks passed
@douglatornell douglatornell deleted the pixi branch April 23, 2026 20:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request maintenance Package or repo maintenance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant