Visitar URL original
feat: Add Lance optional dependencies by haoxu0 · Pull Request #6958 · feast-dev/feast · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Next Next commit
feat: Add Lance optional dependencies
Signed-off-by: HaoXuAI <sduxuhao@gmail.com>
  • Loading branch information
haoxu0 committed Oct 7, 2026
commit 7afdffa72550092b3cc321ee64c412e179e53c66
25 changes: 24 additions & 1 deletion docs/reference/data-sources/table-formats.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,29 @@ Feast supports modern table formats to enable data lakehouse architectures with

## Supported Table Formats

### Lance

[Lance](https://lancedb.github.io/lance/) is an Arrow-native table format with
versioned datasets and vector indexing. Install Feast's native Lance reader and
namespace client with:

```bash
pip install 'feast[lance]'
```

Use `LanceFormat` to select a namespace and optionally pin reads to a dataset
version or tag:

```python
from feast.table_format import LanceFormat

lance_format = LanceFormat(
catalog="my_catalog",
namespace="features",
tag="candidate",
)
```

### Apache Iceberg

[Apache Iceberg](https://iceberg.apache.org/) is an open table format designed for huge analytic datasets. It provides:
Expand Down Expand Up @@ -354,4 +377,4 @@ Future support planned for:
- [Apache Iceberg Documentation](https://iceberg.apache.org/docs/latest/)
- [Delta Lake Documentation](https://docs.delta.io/latest/index.html)
- [Apache Hudi Documentation](https://hudi.apache.org/docs/overview)
- [Python API Reference - TableFormat](https://rtd.feast.dev/en/master/#feast.table_format)
- [Python API Reference - TableFormat](https://rtd.feast.dev/en/master/#feast.table_format)
6 changes: 5 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,10 @@ openlineage = ["openlineage-python>=1.40.0"]
opentelemetry = ["prometheus_client", "psutil"]
spark = ["pyspark>=4.0.0"]
iceberg = ["pyiceberg>=0.7.0"]
lance = [
"pylance>=12.0.0",
"lance-namespace>=0.11.1",
]
trino = ["trino>=0.305.0,<0.400.0", "regex"]
postgres = ["psycopg[binary,pool]>=3.2.5"]
# psycopg[c] install requires a system with a C compiler, python dev headers, & postgresql client dev headers
Expand Down Expand Up @@ -167,7 +171,7 @@ test = [
]

ci = [
"feast[test, aws, azure, cassandra, clickhouse, couchbase, delta, docling, duckdb, elasticsearch, faiss, gcp, ge, glide, go, grpcio, hazelcast, hbase, ibis, iceberg, image, k8s, mcp, milvus, mlflow, mongodb, mssql, mysql, openlineage, opentelemetry, oracle, scylladb, spark, trino, postgres, pytorch, qdrant, rag, ray, redis, singlestore, snowflake, sqlite_vec]",
"feast[test, aws, azure, cassandra, clickhouse, couchbase, delta, docling, duckdb, elasticsearch, faiss, gcp, ge, glide, go, grpcio, hazelcast, hbase, ibis, iceberg, image, k8s, lance, mcp, milvus, mlflow, mongodb, mssql, mysql, openlineage, opentelemetry, oracle, scylladb, spark, trino, postgres, pytorch, qdrant, rag, ray, redis, singlestore, snowflake, sqlite_vec]",
"build",
"virtualenv==20.23.0",
"dbt-artifacts-parser",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from __future__ import annotations

from pathlib import Path

import toml # type: ignore[import-untyped]


def test_lance_extra_installs_native_reader_and_is_included_in_ci() -> None:
pyproject_path = Path(__file__).resolve().parents[6] / "pyproject.toml"
pyproject = toml.loads(pyproject_path.read_text())

extras = pyproject["project"]["optional-dependencies"]

assert extras["lance"] == [
"pylance>=12.0.0",
"lance-namespace>=0.11.1",
]
assert "lance" in extras["ci"][0]
Loading