Skip to content
Merged
Show file tree
Hide file tree
Changes from 61 commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
1a5e954
Pixi for docs and tests
abkfenris Feb 17, 2026
d4e76b9
RTD fix
abkfenris Feb 17, 2026
dcf8823
start adding rust deps with pixi
li-em Feb 18, 2026
8bd8ffa
add deps needed for rust tests, and uv for the develop task
li-em Feb 18, 2026
00a4a35
add mypy and pre-commit to dev env
li-em Feb 18, 2026
d15ac3f
use pixi in code-quality GHA
li-em Feb 18, 2026
b2eb4a4
fix rtd with new develop task
li-em Feb 18, 2026
3eaf430
Move docs build to just, replace netcdf4 with h5netcdf, pin ruff to 0…
jbusecke Feb 19, 2026
1d9995c
Update docs
jbusecke Feb 19, 2026
7af04e1
Update gha and rtd
jbusecke Feb 19, 2026
3c2b42b
remove install and use single pixi run command for the build
jbusecke Feb 19, 2026
15a456d
add maturin init to rtd
jbusecke Feb 19, 2026
0d78dc3
Add pixi shell alt + example how to pass args to ruff
jbusecke Feb 19, 2026
df49b86
Merge branch 'main' into li-em/pixi
jbusecke Feb 19, 2026
70f5aa8
remove pixi.lock from root
li-em Feb 19, 2026
5e0f773
Switch pixi environment -> default
jbusecke Feb 19, 2026
3bb06f8
use default env in code quality ci
jbusecke Feb 19, 2026
e81d949
Merge branch 'main' into li-em/pixi
jbusecke Feb 19, 2026
0512488
Get rid of the init task
jbusecke Feb 19, 2026
660e93e
restore tools.python in rtd
jbusecke Feb 19, 2026
d1f137a
fix pixi lock file
jbusecke Feb 19, 2026
5a7baf7
revert h5netcdf to netcdf4
jbusecke Feb 19, 2026
9f502d6
add netcdf to pixi dependencies to avoid issues on mac
jbusecke Feb 19, 2026
a51485d
limit python to <3.14
li-em Feb 19, 2026
2ae1a43
Pixi for docs and tests
abkfenris Feb 17, 2026
ea7f374
RTD fix
abkfenris Feb 17, 2026
5a30b4e
start adding rust deps with pixi
li-em Feb 18, 2026
df2f232
add deps needed for rust tests, and uv for the develop task
li-em Feb 18, 2026
9a34dfb
add mypy and pre-commit to dev env
li-em Feb 18, 2026
de52fc8
use pixi in code-quality GHA
li-em Feb 18, 2026
c2842bf
fix rtd with new develop task
li-em Feb 18, 2026
f3bad91
Move docs build to just, replace netcdf4 with h5netcdf, pin ruff to 0…
jbusecke Feb 19, 2026
b5b9675
Update docs
jbusecke Feb 19, 2026
ba57c29
Update gha and rtd
jbusecke Feb 19, 2026
f850896
remove install and use single pixi run command for the build
jbusecke Feb 19, 2026
2824c7f
add maturin init to rtd
jbusecke Feb 19, 2026
0bf0d6d
Add pixi shell alt + example how to pass args to ruff
jbusecke Feb 19, 2026
7f88afb
remove pixi.lock from root
li-em Feb 19, 2026
12ae552
Switch pixi environment -> default
jbusecke Feb 19, 2026
e6237b4
use default env in code quality ci
jbusecke Feb 19, 2026
a421257
Get rid of the init task
jbusecke Feb 19, 2026
6c72e76
restore tools.python in rtd
jbusecke Feb 19, 2026
8d073eb
fix pixi lock file
jbusecke Feb 19, 2026
37a3fa5
revert h5netcdf to netcdf4
jbusecke Feb 19, 2026
324c437
add netcdf to pixi dependencies to avoid issues on mac
jbusecke Feb 19, 2026
c546350
limit python to <3.14
li-em Feb 19, 2026
52f1926
uncomment netcdf4
li-em Feb 19, 2026
5db366f
Merge branch 'li-em/pixi' of https://github.com/earth-mover/icechunk …
jbusecke Feb 19, 2026
729ee6e
Merge branch 'main' into li-em/pixi
jbusecke Feb 24, 2026
97d11c6
Merge branch 'li-em/pixi' of https://github.com/earth-mover/icechunk …
jbusecke Feb 24, 2026
88aa9cc
update pixi.lock
jbusecke Feb 24, 2026
94b614e
Remove pixi.lock binary
jbusecke Feb 24, 2026
8c1bc04
use prek instead of pre-commit, add cargo-nextest
li-em Feb 24, 2026
9f7701c
Merge branch 'main' into li-em/pixi
li-em Feb 24, 2026
308c0a5
Merge branch 'main' into li-em/pixi
li-em Feb 25, 2026
eb281d4
Merge branch 'main' into li-em/pixi
li-em Feb 25, 2026
f10e926
Merge branch 'main' into li-em/pixi
jbusecke Feb 25, 2026
1e037df
minor tweaks
jbusecke Feb 25, 2026
28623f8
Some macos special sauce
jbusecke Feb 25, 2026
b065baf
Fix pre-commit
jbusecke Feb 26, 2026
1190888
Added docs and just --list explainer + locally passing all python tests
jbusecke Feb 26, 2026
fb85f5b
Fix callout
jbusecke Feb 26, 2026
6beeb52
Merge branch 'main' into li-em/pixi
jbusecke Feb 26, 2026
8f6b3ca
Merge branch 'main' into li-em/pixi
jbusecke Feb 26, 2026
db1209b
remove DYLD_LIBRARY_PATH shenanigans from the pixi config
jbusecke Feb 26, 2026
5b1b8e2
fix code quality
jbusecke Feb 26, 2026
8f20cbc
Update lockfile
jbusecke Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 11 additions & 22 deletions .github/workflows/code-quality.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ env:
RUSTFLAGS: "-D warnings -W unreachable-pub -W bare-trait-objects"
RUSTUP_MAX_RETRIES: 10
RUST_CHANNEL: '1.91.0'
PIXI_VERSION: "v0.63.2"

jobs:
code-quality:
Expand All @@ -33,20 +34,18 @@ jobs:
with:
ref: ${{ github.event.pull_request.head.sha }}

- name: Install Just
run: sudo snap install --edge --classic just

- name: Install Rust toolchain
run: |
rustup update --no-self-update ${{ env.RUST_CHANNEL }}
rustup component add --toolchain ${{ env.RUST_CHANNEL }} rustfmt rust-src clippy
rustup default ${{ env.RUST_CHANNEL }}

- 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


- uses: prefix-dev/setup-pixi@v0.9.4
with:
pixi-version: ${{ env.PIXI_VERSION }}
cache: true
activate-environment: true
manifest-path: icechunk-python/pyproject.toml

- name: Run formatting checks
run: |
just format --check
Expand All @@ -59,20 +58,10 @@ jobs:
run: |
just profile=ci doctest

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true

- name: Python mypy type checking
shell: bash
working-directory: icechunk-python
run: |
uv run --all-groups mypy python tests
just mypy

- name: Run pre-commit checks (skip Rust)
uses: pre-commit/action@v3.0.1
with:
extra_args: --all-files
env:
SKIP: rust-pre-commit-fast,rust-pre-commit,rust-pre-commit-ci
run: |
just py-pre-commit
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@ icechunk-python/uv.lock

# Jetbrains IDE
.idea/
# pixi environments
.pixi/*
!.pixi/config.toml
20 changes: 8 additions & 12 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,12 @@ version: 2
build:
os: ubuntu-24.04
tools:
python: "mambaforge-latest"

python: "3.12"
jobs:
install:
- which mamba
- cd icechunk-python && maturin build && pip install "$(ls ../target/wheels/*.whl | head -n 1)" && pip install --group docs && cd docs
- mamba list
# - cd icechunk-python && maturin develop && cd ../docs

conda:
environment: icechunk-python/docs/doc-env.yml
mkdocs:
configuration: icechunk-python/docs/mkdocs.yml
create_environment:
- asdf plugin add pixi
- asdf install pixi latest
- asdf global pixi latest
build:
html:
- pixi run -m icechunk-python/pyproject.toml just docs-build --site-dir $READTHEDOCS_OUTPUT/html
78 changes: 56 additions & 22 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,62 +4,64 @@ profile := "dev"
alias fmt := format
alias pre := pre-commit

# run all tests
[doc("Run all Rust tests via cargo-nextest")]
test *args='':
cargo nextest run --no-fail-fast --cargo-profile {{profile}} --workspace --all-targets {{args}}
export DYLD_LIBRARY_PATH="${CONDA_PREFIX:-}/lib" && cargo nextest run --no-fail-fast --cargo-profile {{profile}} --workspace --all-targets {{args}}

[doc("Run Rust doc tests only")]
doctest *args='':
cargo test --workspace --profile {{profile}} --doc {{args}}

# run all tests with logs enabled
[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?


# compile but don't run all tests
[doc("Compile tests without running them")]
compile-tests *args='':
cargo nextest run --no-run --cargo-profile {{profile}} --workspace --all-targets {{args}}
export DYLD_LIBRARY_PATH="${CONDA_PREFIX:-}/lib" && cargo nextest run --no-run --cargo-profile {{profile}} --workspace --all-targets {{args}}

# build debug version
[doc("Build the Rust workspace (debug by default, override with `just profile=ci build`)")]
build *args='':
cargo build --profile {{profile}} {{args}}

# build release version
[doc("Build the Rust workspace in release mode")]
build-release *args='':
cargo build --release {{args}}

# run clippy
[doc("Run clippy lints on all features")]
lint *args='':
cargo clippy --profile {{profile}} --all-features {{args}}

# reformat all rust files
[doc("Format all Rust files (pass `--check` to verify only)")]
format *args='':
cargo fmt --all {{args}}

# reformat all nix files
[doc("Format all Nix files with alejandra")]
format-nix *args='':
alejandra .

# run cargo deny to check dependencies
[doc("Check dependencies for security/license issues via cargo-deny")]
check-deps *args='':
cargo deny --all-features check {{args}}

[doc("Run all Rust examples (skips limits_chunk_refs)")]
run-all-examples:
for example in icechunk/examples/*.rs; do if [[ ${example} =~ "limits_chunk_refs" ]]; then continue; fi; cargo run --profile {{profile}} --example "$(basename "${example%.rs}")"; done

# fast pre-commit - format and lint only
[doc("Fast Rust pre-commit: format + lint (~3s)")]
pre-commit-fast:
just format
just lint "--workspace"

# medium pre-commit - includes compilation checks (~2-3 minutes)
[doc("Medium Rust pre-commit: compile, build, format, lint, deps (~2-3min)")]
pre-commit $RUSTFLAGS="-D warnings -W unreachable-pub -W bare-trait-objects":
just compile-tests "--locked"
just build
just format
just lint "--workspace"
just check-deps

# full pre-commit for CI - runs all checks including tests
[doc("Full Rust CI pre-commit: all checks including tests and examples (~5+min)")]
pre-commit-ci $RUSTFLAGS="-D warnings -W unreachable-pub -W bare-trait-objects":
just profile=ci compile-tests "--locked"
just profile=ci build
Expand All @@ -70,17 +72,49 @@ pre-commit-ci $RUSTFLAGS="-D warnings -W unreachable-pub -W bare-trait-objects":
just profile=ci run-all-examples
just check-deps

[doc("Rust format + lint for the icechunk-python crate only")]
pre-commit-python:
just format "-p icechunk-python"
just lint "-p icechunk-python"

[doc("Compare pytest-benchmark results")]
bench-compare *args:
pytest-benchmark compare --group=group,func,param --sort=fullname --columns=median --name=short {{args}}

create-deepak-env name:
mamba create -y -n icechunk-{{name}} python=3.12 ipykernel ipdb
mamba activate icechunk-{{name}}
just coiled-ice-create {{name}}

coiled-ice-create version:
pip install coiled arraylake icechunk=='{{version}}' watermark xarray bokeh
[doc("Run ruff formatter on Python code")]
ruff-format *args:
ruff format

[doc("Run ruff linter on Python code (pass `--fix` for auto-fix)")]
ruff *args:
ruff check --show-fixes icechunk-python/ {{args}}

[doc("Run mypy type checking on Python code")]
mypy *args:
cd icechunk-python && mypy python tests {{args}}

[doc("Run all Python pre-commit hooks (ruff, formatting, codespell, etc.)")]
py-pre-commit $SKIP="rust-pre-commit-fast,rust-pre-commit,rust-pre-commit-ci" *args:
prek run --all-files

[doc("Run Python tests via pytest")]
pytest *args:
cd icechunk-python && pytest {{args}}

[doc("Start MkDocs dev server with live reload")]
docs-serve *args:
mkdocs serve -f icechunk-python/docs/mkdocs.yml --livereload {{args}}

[doc("Build MkDocs static site")]
docs-build *args:
mkdocs build -f icechunk-python/docs/mkdocs.yml {{args}}

[doc("Run all Python and Rust checks")]
all-checks:
just pytest
just py-pre-commit
just mypy
just ruff
just ruff-format
just pre-commit-python
just pre-commit-ci
10 changes: 2 additions & 8 deletions icechunk-python/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,17 @@ This repository uses [uv](https://docs.astral.sh/uv/) to manage dependencies.
From the `icechunk-python` directory:

```bash
# Install icechunk with docs dependencies
uv sync --group docs

# Start the MkDocs development server
cd ../docs
uv run mkdocs serve
pixi run docs-serve
```

> [!TIP]
> You can use the optional `--dirty` flag to only rebuild changed files, although you may need to restart if you make changes to `mkdocs.yaml`.

### Building

From the `docs` directory:

```bash
uv run mkdocs build
pixi run docs-build
```

Builds output to: `docs/.site` directory.
Expand Down
11 changes: 0 additions & 11 deletions icechunk-python/docs/doc-env.yml

This file was deleted.

Loading
Loading