lance-namespace
Python client SDK for the Lance Namespace spec, unifying access to Lance table catalogs.
Repository Health
Technical Analysis
lance-namespace is the Python SDK for the Lance Namespace specification — an open standard for describing access and operations against a collection of tables in a multimodal lakehouse. It gives compute engines and applications a single, consistent client for connecting to any catalog that implements the spec, whether that is a storage-only directory namespace, a REST namespace, or an integration with systems like Unity Catalog, Apache Polaris, or Hive Metastore.
Rather than binding your code to one catalog implementation, the SDK exposes a unified interface for listing, describing, creating, and operating on namespaces and Lance tables. It ships alongside a generated urllib3 REST client and is the Python entry point of a multi-language project that also provides Java and Rust bindings against the same specification.
What You Get
- A unified Python client interface over the Lance Namespace specification
- A
connectentry point that adapts to directory, REST, and pluggable catalog backends - A generated urllib3 REST client for the REST namespace protocol
- Namespace and table operations (list, describe, create, and more) across catalogs
- Consistent semantics shared with the project’s Java and Rust bindings
Common Use Cases
- Connecting a Python compute engine to a lakehouse of Lance tables
- Switching between storage-only and REST catalogs without changing application code
- Integrating Lance tables with external catalogs like Unity Catalog or Polaris
- Building metadata-aware tooling on top of a unified namespace abstraction
Under The Hood
Architecture - The Python side lives under python/ with two packages: lance_namespace (the core interface and connect logic that dispatches to a chosen catalog implementation) and lance_namespace_urllib3_client (a generated REST client for the REST namespace protocol). The design mirrors the spec’s separation of a client interface from native catalog specs (directory, REST) and pluggable implementation specs, so the same operations resolve against different backends.
Tech Stack - Pure Python packaged with a pyproject.toml and managed via uv (there is a uv.lock), with the REST client built on urllib3. It sits in a polyglot monorepo alongside Java (org.lance:lance-namespace-core) and Rust bindings, with the OpenAPI-style REST client code generated from a shared spec.
Code Quality - The repository is actively maintained and test-heavy, with 150+ Python test files (largely in the generated urllib3 client) plus a top-level tests/ suite and CI. The generated-client pattern keeps the REST surface consistent across languages, and the repo carries contributor and agent documentation (CONTRIBUTING, AGENTS.md).
API Design - The public API centers on a connect entry point returning a namespace client whose methods correspond directly to spec operations, giving a predictable, backend-agnostic surface. Because much of the REST client is code-generated, naming follows the OpenAPI model rather than hand-crafted ergonomics, but the core connect-and-operate flow is straightforward and documented at lance.org.