Skip to content

Conversation

@darshdinger
Copy link

Short description of the changes:

Migrate SNAPWrap build system from Conda to PIXI for improved environment management, reproducibility, and developer experience.

Long description of the changes:

This migration modernizes SNAPWrap's build and development workflow by replacing Conda with PIXI as the primary environment manager. Key improvements include:

  • Enhanced Environment Management: PIXI provides automatic lockfiles, faster dependency resolution, and cross-platform reproducibility
  • Streamlined Developer Experience: Single pixi install command sets up complete development environment with all dependencies
  • Modernized CI/CD: Updated GitHub workflows to use PIXI for faster, more reliable builds
  • Comprehensive Documentation: Updated README with clear installation instructions and command reference for both users and developers
  • Maintained Compatibility: Conda package building still supported for distribution while development uses PIXI

The migration includes proper integration of specialized neutron analysis dependencies (mantid, snapred) from ORNL channels, ensuring the scientific workflow remains fully functional.

Check list for the pull request

  • I have read the [CONTRIBUTING]
  • I have read the [CODE_OF_CONDUCT]
  • I have added tests for my changes
  • I have updated the documentation accordingly

Check list for the reviewer

  • I have read the [CONTRIBUTING]
  • I have verified the proposed changes
  • best software practices
    • all internal functions have an underbar, as is python standard
    • clearly named variables (better to be verbose in variable names)
    • code comments explaining the intent of code blocks
  • All the tests are passing
  • The documentation is up to date
  • code comments added when explaining intent

Manual test for the reviewer

  1. Environment Setup:

    pixi install
    pixi shell
  2. Verify Dependencies:

    pixi run python -c "import mantid; import snapred; import snapwrap; print('All imports successful')"
  3. Run Tests:

    pixi run test
  4. Build Verification:

    pixi run build-pypi    # Should create wheel file
    pixi run build-docs    # Should generate HTML documentation
  5. Conda Build Test (optional, takes 5+ minutes):

    pixi run build-conda

References

  • Migration follows PIXI best practices from pixi.sh documentation
  • Maintains compatibility with existing SNAPRed and Mantid workflows
  • Addresses environment reproducibility issues common with conda-based workflows

@darshdinger darshdinger changed the title git commit -m "Complete migration from Conda to PIXI environment mana… Migrate from CONDA to pixi Jul 15, 2025
Copy link
Member

@glass-ships glass-ships left a comment

Choose a reason for hiding this comment

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

Looks good overall, a few comments/questions but nothing I'm gonna hold you guys up on.

I'd recommend taking a look at the pixi migration guide i wrote if you haven't, just to get a sense of what these changes are looking like across the LSS packages and a few others.

but if it works for you and you're happy with it, feel free to disregard!

also sorry github decided to ignore what lines i highlighted when leaving my comments...

exclude: "tests/cis_tests/.*"

- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
Copy link
Member

Choose a reason for hiding this comment

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

you may want to add a hook to check that the lockfile is up to date, I've found it really convenient since I tend to forget to run "pixi lock" before committing and then CI fails and I have to make another one file commit...

@glass-ships
Copy link
Member

hmmm you shouldn't need a conda recipe, what was it complaining about?

@darshdinger darshdinger reopened this Jul 21, 2025
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.

4 participants