Skip to content

Add pixi support - #132

Open
ahoarau wants to merge 4 commits into
qpsolvers:mainfrom
ahoarau:add-pixi-support
Open

Add pixi support#132
ahoarau wants to merge 4 commits into
qpsolvers:mainfrom
ahoarau:add-pixi-support

Conversation

@ahoarau

@ahoarau ahoarau commented May 18, 2026

Copy link
Copy Markdown

Hi,
This PR adds pixi support. It aims to replace tox completely.
Few remarks:

  1. I use pixi-build to integrate the tests via qpbenchmark = { path = "." }. Which builds a conda package, and allows to import qpbenchmark. You can build the conda package with pixi build (<0.68) or now pixi publish (>= 0.68).
  2. Dependencies for the pixi-build integration needs to be duplicated ( by design). Right now it's a dumb copy paste, I don't thinkk for example matplotlib is needed as a package.run-dependencies.
  3. I took the liberty of adding python 3.13 and 3.14.
  4. win-64 support is broken now (error: jaxlib >=0.1.69, for which no candidates were found.)
  5. A CI is needed

@stephane-caron stephane-caron left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you for putting this together. Pixi as a development tool is a welcome addition.

I see a few things to address at present:

  • I don't see the rationale for not keeping the dynamic version (which avoids duplicating version numbers in several files).
  • Let's scope the PR to pixi as a dev tool only and drop the packaging side (tool.pixi.package.* and pixi-build), since the project publishes to PyPI, with a conda-forge feedstock taking care of bringing releases to conda on its own.
  • Since this switches the development workflow to pixi, it should go all the way and replace tox, i.e. removing tox.ini and environment.yaml, and updating the GitHub Actions workflows to run the pixi tasks accordingly.

Comment thread pyproject.toml
{name = "Stéphane Caron", email = "stephane.caron@normalesup.org"},
]
dynamic = ['version', 'description']
dynamic = ['description']

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you explain why switching to a static version in this context? Avoiding the double-bookkeeping in general is better, and dynamic version works with pixi in other projects.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

pixi does not seem to support it:

╰─▶ × There was no version defined for the recipe

Comment thread pyproject.toml
qpax = "*"

# Pixi Package
[tool.pixi.package.build.backend]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
[tool.pixi.package.build.backend]

Let's scope this PR to pixi as a development tool, and drop the packaging side for now. The project publishes to PyPI via flit, and the qpbenchmark feedstock takes care of bringing PyPI releases to conda-forge already.

@ahoarau ahoarau Aug 1, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

This feature is very useful when developping.
Other consumers (like maros-meszaros) can pull qpbenchmark dep via:

[dependencies]
qpbenchmark = { path="../somewhere/qpbenchmark-fork" }

Or even:

[dependencies]
qpbenchmark = { url="https://github.com/somewhere/qpbenchmark.git" }

Super useful to work on multiple repos that depend on each other.
Without it, the dev workflow is not clear to me.

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