Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ on:
- main
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ jobs:
- uses: Swatinem/rust-cache@v2

- name: Install a specific version of uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
version: "0.5.x"
version: "0.10.x"

- name: Set up Python 3.11
run: uv python install 3.11
Expand All @@ -45,7 +45,7 @@ jobs:

- name: Build python packages
run: |
uv run maturin develop -m obstore/Cargo.toml
uv run maturin develop --uv -m obstore/Cargo.toml

- name: Deploy docs
env:
Expand All @@ -67,8 +67,8 @@ jobs:
if echo $VERSION | cut -c 2- | grep -q "[A-Za-z]"; then
echo "Is beta version"
# For beta versions publish but don't set as latest
uv run mike deploy $VERSION --update-aliases --push
uv run --group docs mike deploy $VERSION --update-aliases --push
else
echo "Is NOT beta version"
uv run mike deploy $VERSION latest --update-aliases --push
uv run --group docs mike deploy $VERSION latest --update-aliases --push
fi
12 changes: 6 additions & 6 deletions .github/workflows/test-python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
strategy:
fail-fast: true
matrix:
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"]
steps:
- uses: actions/checkout@v4

Expand All @@ -54,26 +54,26 @@ jobs:
- uses: Swatinem/rust-cache@v2

- name: Install uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
version: "0.5.x"
version: "0.10.x"

- name: Set up Python
run: uv python install ${{ matrix.python-version }}

- name: Build rust submodules
run: |
uv run maturin develop -m obstore/Cargo.toml
uv run --python ${{ matrix.python-version }} maturin develop --uv -m obstore/Cargo.toml

- name: Run python tests
run: |
uv run pytest
uv run --python ${{ matrix.python-version }} pytest

# Ensure docs build without warnings
- name: Check docs
if: "${{ matrix.python-version == 3.11 }}"
run: uv run mkdocs build --strict
run: uv run --group docs mkdocs build --strict

- name: Add venv to PATH (for pyright action)
run: echo "$PWD/.venv/bin" >> $GITHUB_PATH
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@ jobs:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
version: "0.5.x"
version: "0.10.x"

- name: Install Python versions
run: uv python install 3.10 3.11 pypy3.11
Expand Down Expand Up @@ -93,10 +93,10 @@ jobs:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
version: "0.5.x"
version: "0.10.x"

- name: Install Python versions
run: uv python install 3.10 3.11 pypy3.11
Expand Down Expand Up @@ -173,10 +173,10 @@ jobs:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
version: "0.5.x"
version: "0.10.x"

- name: Install Python versions
run: uv python install 3.10 3.11 pypy3.11
Expand Down
2 changes: 1 addition & 1 deletion DEVELOP.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Push a new tag to the main branch of the format `py-v*`. A new version will be p
The documentation website is generated with `mkdocs` and [`mkdocs-material`](https://squidfunk.github.io/mkdocs-material). You can serve the docs website locally with

```
uv run mkdocs serve
uv run --group docs mkdocs serve
```

Publishing documentation happens automatically via CI when a new tag is published of the format `py-v*`. It can also be triggered manually through the Github Actions dashboard on [this page](https://github.com/developmentseed/obstore/actions/workflows/docs.yml). Note that publishing docs manually is **not advised if there have been new code additions since the last release** as the new functionality will be associated in the documentation with the tag of the _previous_ release. In this case, prefer publishing a new patch or minor release, which will publish both a new Python package and the new documentation for it.
1 change: 0 additions & 1 deletion obstore/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,3 @@ dynamic = ["version"]
features = ["pyo3/extension-module"]
module-name = "obstore._obstore"
python-source = "python"
strip = true
33 changes: 19 additions & 14 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,39 @@ readme = "README.md"
requires-python = ">=3.10"
dependencies = []

[tool.uv]
dev-dependencies = [
[dependency-groups]
docs = [
# Workaround for https://github.com/mkdocs/mkdocs/issues/4032
"click<8.3",
"mkdocs-material[imaging]>=9.6.3",
"mkdocs>=1.6.1",
"mkdocstrings[python]>=1.0",
"mkdocs-jupyter>=0.24.8",
"mkdocs-redirects>=1.2.2",
"mike>=2.1.3",
"griffe>=1.6.0",
"griffe-inherited-docstrings>=1.0.1",
# We use ruff format ourselves, but mkdocstrings requires black to be
# installed to format signatures in the docs
"black>=24.8.0",
]
# dependencies used in examples but added here for pyright CI run from top-level
examples = ["fastapi>=0.115.12", "tqdm>=4.67.1"]
dev = [
"aiohttp-retry>=2.9.1",
"aiohttp>=3.11.13",
"arro3-core>=0.4.2",
"azure-identity>=1.21.0",
"boto3>=1.38.21",
"docker>=7.1.0",
"fastapi>=0.115.12", # used in example but added here for pyright CI
"fsspec>=2024.10.0",
"google-auth>=2.38.0",
"griffe-inherited-docstrings>=1.0.1",
"griffe>=1.6.0",
"ipykernel>=6.29.5",
"maturin-import-hook>=0.2.0",
"maturin>=1.12.0",
"mike>=2.1.3",
"minio>=7.2.16",
"mkdocs-material[imaging]>=9.6.3",
"mkdocs-redirects>=1.2.2",
"mkdocs>=1.6.1",
"mkdocstrings-python>=1.13.0",
"mkdocstrings>=0.27.0",
"mypy>=1.15.0",
"obspec>=0.1.0",
"pip>=24.2",
"polars>=1.30.0",
"pyarrow>=17.0.0",
"pystac-client>=0.8.3",
"pystac>=1.10.1",
Expand All @@ -41,7 +47,6 @@ dev-dependencies = [
"pytest>=8.3.3",
"python-dotenv>=1.0.1",
"ruff>=0.15.0",
"tqdm>=4.67.1",
"types-boto3[s3,sts]>=1.36.23",
"types-requests>=2.31.0.6",
"urllib3>=2.0",
Expand Down
13 changes: 0 additions & 13 deletions tests/test_list.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import polars as pl
import pyarrow as pa
import pytest
from arro3.core import RecordBatch, Table

Expand Down Expand Up @@ -128,14 +126,3 @@ async def test_list_with_delimiter_async():
assert objects.num_rows == 2
assert objects["path"][0].as_py() == "a/file1.txt"
assert objects["path"][1].as_py() == "a/file2.txt"


def test_list_as_arrow_to_polars():
store = MemoryStore()

for i in range(100):
store.put(f"file{i}.txt", b"foo")

stream = store.list(return_arrow=True, chunk_size=10)
_pl_df = pl.DataFrame(next(stream))
_df = pa.record_batch(next(stream))
Loading