| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
.. I'm surprised the tests are running given I labelled this [ci doc] |
Sorry, something went wrong.
| depends-on = ["clean-build", "dev-install"] | ||
| description = "Clean and rebuild editable install" | ||
|
|
||
| [tasks.install-test] |
There was a problem hiding this comment.
We should make features for tests + docs.
Sorry, something went wrong.
There was a problem hiding this comment.
Yes we could do it that way, but I'm not sure of the pros and cons. It did not seem there was a way to make conditional install dependencies so I wasn't sure the advantage of having separate feature envs for a developer versus just having one env.
Sorry, something went wrong.
| description = "No-op on non-mac platforms" | ||
|
|
||
| [target.osx-arm64.tasks.prepare-freetype] | ||
| cmd = "cp subprojects/packagefiles/freetype-2.6.1-meson/src/gzip/zconf.h subprojects/freetype-2.6.1/src/gzip" |
There was a problem hiding this comment.
I also don't understand this, is something going wrong with unpacking the subproject? This seems like something we should be fixing in the meson files rather than here?
Sorry, something went wrong.
There was a problem hiding this comment.
I don't think it's a general problem, but it's definitely a problem on macOS with the version of zconf
Sorry, something went wrong.
There was a problem hiding this comment.
OK< I think this was not necessary, as it now works fine without it.
Sorry, something went wrong.
|
It is my understanding that if you have metadata about the build you are (or will soon be able) to point to a repo as a conda dependency and pixi-build will build the conda-package on the fly (the same way it does with pypi-deps). Given that we are going to want pixi.toml in the lop level eventually. That said, I agree we do not want to check in the pixi.lock file. |
Sorry, something went wrong.
|
I mean add a section like [pypi-dependencies]
matplotlib = { path = "..", editable = true }
|
Sorry, something went wrong.
|
Ah I see. No that didn't work as I don't think it's compatible with build isolation. |
Sorry, something went wrong.
|
OK< my comment above was incorrect. The new pixi.toml has removed the font copying things, and uses [pypi-dependencies]
matplotlib = { path = ".", editable = true }
which indeed seems to be fine. Still not sure if we should run with features or just a separate install steps? |
Sorry, something went wrong.
|
Anyone else have comments on this? @tacaswell or @QuLogic ? I needed to install something and realized I can't actually use this until its merged ;-) |
Sorry, something went wrong.
|
Sorry, something went wrong.
|
The lock check failing may be a v6 vs v7 thing on the lock file (which is coupled to pixi 0.68). |
Sorry, something went wrong.
|
I'm more than happy for someone else to take this over or redo it. I maintain a willful ignorance of the packaging ecosystem. Conversely, it'd be nice to have something that works. |
Sorry, something went wrong.
That’s strange. I thought conda-forge is given precedence, and the environment.yml in our project root shows that most of the dev environment can be built on conda. Anyway, we might want to use a pixi.toml for configuration and better separation. Inspiration could be taken from scipy, who have a fairly comprehensive setup. |
Sorry, something went wrong.
…ci doc] Apply suggestions from code review Co-authored-by: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com>
Most of the churn is a change in the package sorting
While waiting to get this fixed upstream, do one import to get the syntax warning and cache the pyc so that the docs will build.
| Back | FazBrowse Home | New Git URL |
Edit: apologies for the CI churn --- I needed to iterate on the Pixi workflow to get it working end-to-end.
Overview
This PR adds Pixi configuration to pyproject.toml and introduces a committed pixi.lock.
The main goal is to provide a project-committed, pinned dependency snapshot for Matplotlib, addressing #23548. In particular:
Why pyproject.toml
Pixi configuration is placed in pyproject.toml rather than a project-level pixi.toml.
The reasoning is:
This gives the project a canonical shared configuration while still allowing personal overrides.
Lockfile policy
A main goal of this PR is to commit a pinned dependency list, and pixi.lock is the mechanism used for that.
pixi.lock should therefore be treated as part of the repository state:
In that sense, pixi.lock is the committed pinned dependency snapshot for the project.
Developer workflow
Basic usage:
After that, for example:
Dependency changes:
If dependencies change, then pixi.lock should be regenerated. It is ignored by default in .gitignore so developers who want to change pixi.lock will need to regenerate it, and force add it to a commit:
tools/pixi.example.toml
A template is provided for developers who want to customize their local Pixi setup.
For example:
This is intended for local experimentation or system-specific tuning. It is not the project's canonical Pixi configuration.
Key design decisions
Editable install is not managed directly by Pixi
This PR intentionally does not use:
[pypi-dependencies] matplotlib = { path = ".", editable = true }In testing, that led to lockfile instability (lock-file not up-to-date with the workspace), especially in CI.
Instead, responsibilities are split:
This keeps pixi.lock stable while still supporting editable development installs.
Single environment
Although Pixi supports separate environments such as test and doc, this PR currently uses a single environment containing the relevant dependencies.
The main reason is developer convenience:
This can be revisited later if stricter separation is desirable.
CI
This PR adds a minimal CI job that checks that the Pixi environment can be recreated from the committed lockfile.
At the moment the job is intentionally lightweight: it verifies that the lockfile works and that Matplotlib can be built/imported in that environment. It can be extended later to run tests and/or documentation builds.
Notes / future work
overrides
AI disclosure
I went back and forth w/ chatGPT quite a bot on how to organize this and the various tradeoffs. It also helped with writing this summary, which is of course long-winded, but hopefully complete.