Skip to content

Set up pixi for development#1674

Merged
li-em merged 67 commits intomainfrom
li-em/pixi
Feb 26, 2026
Merged

Set up pixi for development#1674
li-em merged 67 commits intomainfrom
li-em/pixi

Conversation

@li-em
Copy link
Copy Markdown
Contributor

@li-em li-em commented Feb 18, 2026

Extends #1661 to add dependencies for running the Rust parts too.

Trying out with the code quality github actions check

abkfenris and others added 6 commits February 18, 2026 16:15
Adds Pixi configuration for doc building and serving in addition to running pytest.

I’ve tried tweaking the ReadTheDocs config to play nice as well.

Works on #1648
- name: Cache Dependencies
uses: Swatinem/rust-cache@v2
with:
key: ${{ env.RUST_CHANNEL }}
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Must fix this, rust channel doesn't make much sense anymore

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.

@claude adapt this to the proposed changes within pixi

@jbusecke
Copy link
Copy Markdown
Contributor

jbusecke commented Feb 19, 2026

I have rearranged the logic here a bit and have now defined all developer 'tasks' in the Justfile. This seems more consistent at this point. I also updated the Python (+docs) instructions, but have not yet gotten to the Rust (and the special python test cases like upstream).

@@ -0,0 +1 @@
# Index of ingestion
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.

WHY IS THIS DAMN PAGE SHOWING UP ALL THE TIME?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

this is my white whale

```
and then in the shell
```bash
pixi run -e all init
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.

Thinking of making this a just command too and then have a subset of the commands depend on it? Thoughts @li-em ?

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.

Pixi shouldn't need the -e all for defined tasks as pixi run init should know which environment it should run in, and it supports dependencies for it's built in tasks via https://pixi.prefix.dev/latest/workspace/advanced_tasks/#depends-on

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

yup! And I think we can name the all environment as default, which also avoids the -e all argument in the CLI

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.

Testing that now

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.

I use a variant of that technique for OceanHackWeek, so that we can split up the dependencies by tutorial/project to track where they came from but still install them all: https://github.com/oceanhackweek/jupyter-image/blob/293f282b7a7b1b5d7bfe2f52f4c995a8fd04fdb2/py-base/pixi.toml#L155-L165

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.

the default env works, but pixi run init does not:
I am getting

(icechunk) juliusbusecke@arm64-apple-darwin20 icechunk % pixi run init
 WARN Using local manifest /Users/juliusbusecke/Code/icechunk/pixi.toml rather than /Users/juliusbusecke/Code/icechunk/icechunk-python/pyproject.toml from environment variable `PIXI_PROJECT_MANIFEST`
init: command not found

This works now.

pixi shell -m icechunk-python/pyproject.toml init
# and then in the shell
pixi run -m icechunk-python/pyproject.toml init

which still feels awkward. Is there a way I can run the task automatically when starting the shell? Or alternatively set env variables? That way I can replace the -m ... I think.

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.

From that warning, I think you may have conflicting manifests confusing things.

Do you need to use pixi shell and maturin develop? I think re-enabling

[tool.pixi.pypi-dependencies]
icechunk = { path = ".", editable = true }

With make maturin automatically run for any pixi tasks (or starting a shell).

If that's slowing some things down, icechunk could be set as a feature and then only included in the environments for specific tasks.

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.

That was it! Thanks a lot for this!

```

=== "uv"
TBW
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.

Its pretty rough to keep all of these variants around. How do people feel about just instructing people to use pixi, or else they kind of have to know what they are doing? Maybe that is too exclusionary...

{ include-group = "test" },
"mypy",
"ruff",
"ruff==0.8.0",
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.

I will unpin this in a separate PR, so we can cleanly separate changes in code due to the version change (see also #1647)

@dcherian
Copy link
Copy Markdown
Collaborator

I added a new stubtest check in #1675. Perhaps that should be pixi-fied too

@jbusecke
Copy link
Copy Markdown
Contributor

Ill be OOO today and Monday, but pick this up Tues.

- Use `just docs-serve --dirty` to only rebuild changed files (faster for iterative development)
- You may need to restart if you make changes to `mkdocs.yml`
- For debugging the doc build logs, check out [docs-output-filter](https://github.com/ianhi/docs-output-filter) (you can run `uv run docs-output-filter -- mkdocs serve --livereload` once installed). *This also works to debug remote builds like RTD with the `--url` flag* 😍
- For debugging the doc build logs, check out [docs-output-filter](https://github.com/ianhi/docs-output-filter) (you can run `docs-output-filter -- just docs-serve` once installed). *`docs-output-filter` also works to debug remote builds like RTD with the `--url` flag*
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.

@ianhi is this ok?

[doc("Run all Rust tests with RUST_LOG enabled (e.g. `just test-logs debug`)")]
test-logs level *args='':
RUST_LOG=icechunk={{level}} cargo nextest run --no-fail-fast --cargo-profile {{profile}} --workspace --all-targets {{args}} -- --nocapture
export DYLD_LIBRARY_PATH="${CONDA_PREFIX:-}/lib" && RUST_LOG=icechunk={{level}} cargo nextest run --no-fail-fast --cargo-profile {{profile}} --workspace --all-targets {{args}} -- --nocapture
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.

Not 100% sure if this here or above fixed the issue. Ill test locally.

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.

Ill leave this in for now unless someone has a neater solution that does not require users to modify their mac?

@jbusecke jbusecke marked this pull request as ready for review February 26, 2026 19:16
@jbusecke
Copy link
Copy Markdown
Contributor

I am happy with this for now. Ill wait for the last look of @li-em before merging. I am planning to push a couple smaller PRs soon that will:

  • update the ruff versions
  • move other parts of the CI to run through pixi/just (I can hold off on that until after IC2)
  • Work through the contributor guide beyond python.

@li-em li-em merged commit 1526e16 into main Feb 26, 2026
20 checks passed
@li-em li-em deleted the li-em/pixi branch February 26, 2026 19:31
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.

5 participants