lance-namespace

Python client SDK for the Lance Namespace spec, unifying access to Lance table catalogs.

SDK
PyPI
v0.11.1
58stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
72/100Good
Development Activity88
Maintenance92
Community48
Maturity40
Momentum20

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
80/100Excellent
Architecture82
Code Quality80
Innovation78
Learning Curve72

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 connect entry 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.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search