https://github.com/lancedb/lance-namespace
Lance Namespace Specification is an open specification on top of the storage-based Lance data format to standardize access to a collection of Lance tables
https://github.com/lancedb/lance-namespace
Last synced: 7 months ago
JSON representation
Lance Namespace Specification is an open specification on top of the storage-based Lance data format to standardize access to a collection of Lance tables
- Host: GitHub
- URL: https://github.com/lancedb/lance-namespace
- Owner: lancedb
- License: apache-2.0
- Created: 2025-03-29T00:13:29.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-05-21T08:10:23.000Z (8 months ago)
- Last Synced: 2025-05-21T09:30:58.373Z (8 months ago)
- Language: Java
- Homepage:
- Size: 489 KB
- Stars: 14
- Watchers: 9
- Forks: 3
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Lance Namespace Specification
**Lance Namespace Specification** is an open specification on top of the storage-based Lance data format
to standardize access to a collection of Lance tables (a.k.a. Lance datasets).
It describes how a metadata service like Apache Hive MetaStore (HMS), Apache Gravitino, Unity Catalog, etc.
should store and use Lance tables, as well as how ML/AI tools and analytics compute engines should integrate with Lance tables.
## Repository structure
| Directory | Description |
|------------------------------------------------------------------------------------|------------------------------------------------------------|
| [spec](./spec) | Lance Namespace Specification |
| [rust/lance-namespace-reqwest-client](./rust/lance-namespace-reqwest-client) | Generated Rust reqwest client for Lance REST Namespace |
| [python/lance_namespace_urllib3_client](./python/lance_namespace_urllib3_client) | Generated Python urllib3 client for Lance REST Namespace |
| [java/lance-namespace-apache-client](./java/lance-namespace-apache-client) | Generated Java Apache HTTP client for Lance REST Namespace |
| [java/lance-namespace-springboot-server](./java/lance-namespace-springboot-server) | Generated Java SpringBoot server for Lance REST Namespace |
## Development Guide
### Install OpenAPI Generator
We use [OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator)
to generate various clients and servers for the namespace specification.
We recommend installing the tool through [pip](https://pypi.org/project/openapi-generator-cli/)
for consistent experience across platforms.
First time setup of virtual environment and installation:
```bash
python3 -m venv .env
source .env/bin/activate
pip install -r requirements.txt
```
### Install Poetry for Python
If you want to build the entire project, or develop python specifically,
you need to install [poetry](https://python-poetry.org/).
To quickly install it in your virtual environment:
```bash
pip install -r python/requirements.txt
```
### Lint
To ensure the OpenAPI definition is valid, you can use the lint command to check it.
```bash
make lint
```
### Build
There are 3 commands that is available at top level as well as inside each language folder:
- `make clean`: remove all codegen modules
- `make gen`: codegen and lint all modules (depends on `clean`)
- `make build`: build all modules (depends on `gen`)
You can also run `make -` to only run the command in the specific language, for example:
- `make gen-python`: codegen and lint all Python modules
- `make build-rust`: build all Rust modules
You can also run `make --` inside a language folder to run the command against a specific module, for example:
- `make gen-rust-reqwest-client`: codegen and lint the Rust reqwest client module
- `make build-java-springboot-server`: build the Java Spring Boot server module