|
1 | | -# Lance Namespace Specification |
| 1 | +# Lance Namespace |
2 | 2 |
|
3 | | -**Lance Namespace Specification** is an open specification on top of the storage-based Lance data format |
| 3 | + |
| 4 | + |
| 5 | +**Lance Namespace** is an open specification on top of the storage-based Lance data format |
4 | 6 | to standardize access to a collection of Lance tables (a.k.a. Lance datasets). |
5 | 7 | It describes how a metadata service like Apache Hive MetaStore (HMS), Apache Gravitino, Unity Catalog, etc. |
6 | 8 | should store and use Lance tables, as well as how ML/AI tools and analytics compute engines should integrate with Lance tables. |
7 | 9 |
|
8 | | -## Repository structure |
9 | | - |
10 | | -| Directory | Description | |
11 | | -|------------------------------------------------------------------------------------|------------------------------------------------------------| |
12 | | -| [spec](./spec) | Lance Namespace Specification | |
13 | | -| [rust/lance-namespace-reqwest-client](./rust/lance-namespace-reqwest-client) | Generated Rust reqwest client for Lance REST Namespace | |
14 | | -| [python/lance_namespace_urllib3_client](./python/lance_namespace_urllib3_client) | Generated Python urllib3 client for Lance REST Namespace | |
15 | | -| [java/lance-namespace-apache-client](./java/lance-namespace-apache-client) | Generated Java Apache HTTP client for Lance REST Namespace | |
16 | | -| [java/lance-namespace-springboot-server](./java/lance-namespace-springboot-server) | Generated Java SpringBoot server for Lance REST Namespace | |
17 | | - |
18 | | -## Development Guide |
19 | | - |
20 | | -### Install OpenAPI Generator |
21 | | - |
22 | | -We use [OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator) |
23 | | -to generate various clients and servers for the namespace specification. |
24 | | -We recommend installing the tool through [pip](https://pypi.org/project/openapi-generator-cli/) |
25 | | -for consistent experience across platforms. |
26 | | -First time setup of virtual environment and installation: |
27 | | - |
28 | | -```bash |
29 | | -python3 -m venv .env |
30 | | -source .env/bin/activate |
31 | | -pip install -r requirements.txt |
32 | | -``` |
33 | | - |
34 | | -### Install Poetry for Python |
35 | | - |
36 | | -If you want to build the entire project, or develop python specifically, |
37 | | -you need to install [poetry](https://python-poetry.org/). |
38 | | -To quickly install it in your virtual environment: |
39 | | - |
40 | | -```bash |
41 | | -pip install -r python/requirements.txt |
42 | | -``` |
43 | | - |
44 | | -### Lint |
45 | | -To ensure the OpenAPI definition is valid, you can use the lint command to check it. |
46 | | - |
47 | | -```bash |
48 | | -make lint |
49 | | -``` |
50 | | - |
51 | | -### Build |
52 | | - |
53 | | -There are 3 commands that is available at top level as well as inside each language folder: |
54 | | - |
55 | | -- `make clean`: remove all codegen modules |
56 | | -- `make gen`: codegen and lint all modules (depends on `clean`) |
57 | | -- `make build`: build all modules (depends on `gen`) |
58 | | - |
59 | | -You can also run `make <command>-<language>` to only run the command in the specific language, for example: |
60 | | - |
61 | | -- `make gen-python`: codegen and lint all Python modules |
62 | | -- `make build-rust`: build all Rust modules |
63 | | - |
64 | | -You can also run `make <command>-<language>-<module>` inside a language folder to run the command against a specific module, for example: |
65 | | - |
66 | | -- `make gen-rust-reqwest-client`: codegen and lint the Rust reqwest client module |
67 | | -- `make build-java-springboot-server`: build the Java Spring Boot server module |
| 10 | +For more details, please visit the [documentation website](https://lancedb.github.io/lance-namespace). |
0 commit comments