diff --git a/Cargo.lock b/Cargo.lock
index 25c73dfe189..8d67be87990 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -7500,6 +7500,8 @@ version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab53c047fcd1a1d2a8820fe84f05d6be69e9526be40cb03b73f86b6b03e6d87d"
dependencies = [
+ "chrono",
+ "indexmap",
"indoc",
"libc",
"memoffset",
@@ -7511,6 +7513,19 @@ dependencies = [
"unindent",
]
+[[package]]
+name = "pyo3-async-runtimes"
+version = "0.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57ddb5b570751e93cc6777e81fee8087e59cd53b5043292f2a6d59d5bd80fdfd"
+dependencies = [
+ "futures",
+ "once_cell",
+ "pin-project-lite",
+ "pyo3",
+ "tokio",
+]
+
[[package]]
name = "pyo3-build-config"
version = "0.27.2"
@@ -7576,6 +7591,29 @@ dependencies = [
"syn 2.0.114",
]
+[[package]]
+name = "pyo3-object_store"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ef5552f108a4d65b78c924b27513471a9ba425341ada4be5ea0ca53806ae316"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "chrono",
+ "futures",
+ "http 1.4.0",
+ "humantime",
+ "itertools 0.14.0",
+ "object_store",
+ "percent-encoding",
+ "pyo3",
+ "pyo3-async-runtimes",
+ "serde",
+ "thiserror 1.0.69",
+ "tokio",
+ "url",
+]
+
[[package]]
name = "quick-xml"
version = "0.37.5"
@@ -10758,6 +10796,7 @@ dependencies = [
"pyo3",
"pyo3-bytes",
"pyo3-log",
+ "pyo3-object_store",
"tokio",
"tracing",
"url",
diff --git a/docs/api/python/index.rst b/docs/api/python/index.rst
index 29112cd5a05..5d4efa2b79c 100644
--- a/docs/api/python/index.rst
+++ b/docs/api/python/index.rst
@@ -10,5 +10,6 @@ Python API
expr
compress
io
+ store
dataset
type_aliases
diff --git a/docs/api/python/io.rst b/docs/api/python/io.rst
index aaee91789fc..1c34003d7d6 100644
--- a/docs/api/python/io.rst
+++ b/docs/api/python/io.rst
@@ -28,3 +28,4 @@ HTTP, S3, Google Cloud Storage, and Azure Blob Storage.
.. automodule:: vortex.io
:members:
:imported-members:
+
diff --git a/docs/api/python/store.rst b/docs/api/python/store.rst
new file mode 100644
index 00000000000..bd2c2eb4892
--- /dev/null
+++ b/docs/api/python/store.rst
@@ -0,0 +1,17 @@
+Object Store support
+====================
+
+Vortex arrays support reading and writing to object storage systems such as, S3, Google Cloud Storage, and
+Azure Blob Storage.
+
+.. autosummary::
+ :nosignatures:
+
+.. raw:: html
+
+
+
+.. automodule:: vortex.store
+ :members:
+ :imported-members:
+
diff --git a/pyproject.toml b/pyproject.toml
index e2e96707a10..9c4c166872b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -68,3 +68,6 @@ known-first-party = [
log_cli = true
log_cli_level = "INFO"
xfail_strict = true
+
+[tool.basedpyright]
+exclude = ["vortex-python/python/vortex/_lib/store/**.pyi"]
diff --git a/vortex-io/src/write.rs b/vortex-io/src/write.rs
index 57048ce66ef..9afc0a31015 100644
--- a/vortex-io/src/write.rs
+++ b/vortex-io/src/write.rs
@@ -62,7 +62,7 @@ where
}
fn shutdown(&mut self) -> impl Future