koobi 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- koobi-0.0.1/LICENSE +21 -0
- koobi-0.0.1/PKG-INFO +235 -0
- koobi-0.0.1/README.md +202 -0
- koobi-0.0.1/pyproject.toml +55 -0
- koobi-0.0.1/setup.cfg +4 -0
- koobi-0.0.1/src/koobi/__init__.py +35 -0
- koobi-0.0.1/src/koobi/app.py +214 -0
- koobi-0.0.1/src/koobi/cards.py +106 -0
- koobi-0.0.1/src/koobi/charts.py +30 -0
- koobi-0.0.1/src/koobi/cli.py +174 -0
- koobi-0.0.1/src/koobi/config.py +86 -0
- koobi-0.0.1/src/koobi/index.py +135 -0
- koobi-0.0.1/src/koobi/schema.py +249 -0
- koobi-0.0.1/src/koobi.egg-info/PKG-INFO +235 -0
- koobi-0.0.1/src/koobi.egg-info/SOURCES.txt +21 -0
- koobi-0.0.1/src/koobi.egg-info/dependency_links.txt +1 -0
- koobi-0.0.1/src/koobi.egg-info/entry_points.txt +2 -0
- koobi-0.0.1/src/koobi.egg-info/requires.txt +12 -0
- koobi-0.0.1/src/koobi.egg-info/top_level.txt +1 -0
- koobi-0.0.1/tests/test_cards_roundtrip.py +97 -0
- koobi-0.0.1/tests/test_config.py +43 -0
- koobi-0.0.1/tests/test_index.py +87 -0
- koobi-0.0.1/tests/test_schema.py +61 -0
koobi-0.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 blu3c0ral
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
koobi-0.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: koobi
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: File-native model and experiment registry
|
|
5
|
+
Author-email: blu3c0ral <blu3c0ral@protonmail.ch>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/blu3c0ral/koobi
|
|
8
|
+
Project-URL: Repository, https://github.com/blu3c0ral/koobi
|
|
9
|
+
Project-URL: Issues, https://github.com/blu3c0ral/koobi/issues
|
|
10
|
+
Keywords: experiment-tracking,model-registry,marimo,duckdb,markdown
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: altair
|
|
24
|
+
Requires-Dist: duckdb
|
|
25
|
+
Requires-Dist: marimo
|
|
26
|
+
Requires-Dist: pandas
|
|
27
|
+
Requires-Dist: pyarrow
|
|
28
|
+
Requires-Dist: python-frontmatter
|
|
29
|
+
Requires-Dist: tomli; python_version < "3.11"
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
Requires-Dist: pytest; extra == "dev"
|
|
32
|
+
Dynamic: license-file
|
|
33
|
+
|
|
34
|
+
# Koobi
|
|
35
|
+
|
|
36
|
+
<p align="center">
|
|
37
|
+
<img src=".github/assets/koobi_icon.png" alt="Koobi project icon" width="180" />
|
|
38
|
+
</p>
|
|
39
|
+
|
|
40
|
+
File-native model and experiment registry for local workflows.
|
|
41
|
+
|
|
42
|
+
Koobi stores experiment metadata as plain Markdown cards, builds a disposable DuckDB index, and serves an interactive Marimo UI for browsing, filtering, visualizing, and editing cards. The source of truth is always your files.
|
|
43
|
+
|
|
44
|
+
## Why Koobi
|
|
45
|
+
|
|
46
|
+
Most experiment trackers assume a hosted service and database-backed runs. Koobi is designed for local-first users who want:
|
|
47
|
+
|
|
48
|
+
- readable, versionable records in Git
|
|
49
|
+
- zero-server operation
|
|
50
|
+
- domain-agnostic metrics and parameters
|
|
51
|
+
- workflows friendly to both humans and coding agents
|
|
52
|
+
|
|
53
|
+
## Current MVP Capabilities
|
|
54
|
+
|
|
55
|
+
- Markdown card parsing and serialization with preserved body/key ordering
|
|
56
|
+
- additive card updates (only targeted fields are rewritten)
|
|
57
|
+
- DuckDB index build with:
|
|
58
|
+
- `cards` table (metadata + body)
|
|
59
|
+
- `measures` table (long-format metrics)
|
|
60
|
+
- `series_registry` table (series pointers)
|
|
61
|
+
- Marimo app with:
|
|
62
|
+
- project/status/search filters
|
|
63
|
+
- model table view
|
|
64
|
+
- card detail view (metrics/params/tags/body)
|
|
65
|
+
- edit form (name/status/tags/body) with write-back
|
|
66
|
+
- one measure bar chart
|
|
67
|
+
- CLI commands:
|
|
68
|
+
- `koobi init`
|
|
69
|
+
- `koobi new`
|
|
70
|
+
- `koobi index`
|
|
71
|
+
- `koobi ui`
|
|
72
|
+
|
|
73
|
+
## Architecture Overview
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
cards/*.md --> index.duckdb --> Marimo app
|
|
77
|
+
^ |
|
|
78
|
+
|---------- edit/write-back -------|
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
- Cards are authoritative.
|
|
82
|
+
- Index is derived and disposable.
|
|
83
|
+
- UI reads from index and writes edits back to cards.
|
|
84
|
+
|
|
85
|
+
## Installation
|
|
86
|
+
|
|
87
|
+
Install into any project or environment directly from Git:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
pip install git+https://github.com/blu3c0ral/koobi.git
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
This installs the `koobi` command and the importable `koobi` package.
|
|
94
|
+
|
|
95
|
+
For local development on Koobi itself, install editable with dev extras:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
python3 -m venv .venv
|
|
99
|
+
source .venv/bin/activate
|
|
100
|
+
python -m pip install -e ".[dev]"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Quickstart
|
|
104
|
+
|
|
105
|
+
Koobi discovers its configuration automatically: every command searches the
|
|
106
|
+
current directory and its parents for a `koobi.toml`. Work from inside your
|
|
107
|
+
workspace and no `--config` flag is needed.
|
|
108
|
+
|
|
109
|
+
### 1) Create (or enter) a workspace
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
koobi init --path my-registry
|
|
113
|
+
cd my-registry
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Or use the bundled demo workspace:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
python examples/local_example_to_cards.py --overwrite
|
|
120
|
+
cd examples/local
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### 2) Build the index
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
koobi index
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 3) Launch the UI
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
koobi ui
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
The UI opens at http://localhost:2718.
|
|
136
|
+
|
|
137
|
+
### Running from outside the workspace
|
|
138
|
+
|
|
139
|
+
If you prefer not to `cd`, point Koobi at the config explicitly or via an
|
|
140
|
+
environment variable (precedence: `--config` > `KOOBI_CONFIG` > current dir):
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
koobi ui --config examples/local/koobi.toml
|
|
144
|
+
# or
|
|
145
|
+
export KOOBI_CONFIG=examples/local/koobi.toml
|
|
146
|
+
koobi ui
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## CLI Reference
|
|
150
|
+
|
|
151
|
+
Initialize a new workspace:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
koobi init --path /path/to/workspace
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Create a new card (run from inside the workspace):
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
koobi new demo_project.my_model
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Rebuild index:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
koobi index
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Run UI:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
koobi ui
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Use as a Library
|
|
176
|
+
|
|
177
|
+
Koobi's core is importable, so other projects and coding agents can read,
|
|
178
|
+
query, and write cards programmatically:
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
from koobi import load_config, build, connect, query_cards
|
|
182
|
+
from koobi import Card, load_card, save_card
|
|
183
|
+
|
|
184
|
+
# Resolve config by searching upward from a path (file or directory)
|
|
185
|
+
cfg = load_config("path/to/workspace")
|
|
186
|
+
|
|
187
|
+
# Build the disposable DuckDB index from the Markdown cards
|
|
188
|
+
build(cfg)
|
|
189
|
+
|
|
190
|
+
# Query cards joined with wide-format measures
|
|
191
|
+
con = connect(cfg)
|
|
192
|
+
df = query_cards(con, project="demo_project", status="active")
|
|
193
|
+
|
|
194
|
+
# Read, mutate, and write back a single card (only targeted fields change)
|
|
195
|
+
card = load_card("path/to/workspace/cards/demo_project.my_model.md")
|
|
196
|
+
card.status = "shipped"
|
|
197
|
+
save_card(card, fields=["status"])
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
The full public API is exported from the top-level `koobi` package; see
|
|
201
|
+
`koobi.__all__`.
|
|
202
|
+
|
|
203
|
+
## Repository Layout
|
|
204
|
+
|
|
205
|
+
```text
|
|
206
|
+
src/koobi/ # core package (schema, cards, config, index, charts, app, cli)
|
|
207
|
+
tests/ # unit tests
|
|
208
|
+
examples/local/ # self-contained demo workspace
|
|
209
|
+
examples/local_example_to_cards.py
|
|
210
|
+
docs/ # product, technical, and future feature docs
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Development
|
|
214
|
+
|
|
215
|
+
Run tests:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
pytest
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Recommended pre-PR checklist:
|
|
222
|
+
|
|
223
|
+
- run `pytest`
|
|
224
|
+
- regenerate local example cards if example inputs changed
|
|
225
|
+
- verify `koobi index` and `koobi ui` against `examples/local/koobi.toml`
|
|
226
|
+
|
|
227
|
+
## Documentation
|
|
228
|
+
|
|
229
|
+
- [`docs/product_design.md`](docs/product_design.md) - product framing and roadmap
|
|
230
|
+
- [`docs/technical_design.md`](docs/technical_design.md) - architecture and data contracts
|
|
231
|
+
- [`docs/future_features.md`](docs/future_features.md) - planned automation and extensions
|
|
232
|
+
|
|
233
|
+
## Status
|
|
234
|
+
|
|
235
|
+
Active MVP implementation with local example workflow included. Phase 0 focus is stability of file contracts, indexing, and interactive editing.
|
koobi-0.0.1/README.md
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# Koobi
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src=".github/assets/koobi_icon.png" alt="Koobi project icon" width="180" />
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
File-native model and experiment registry for local workflows.
|
|
8
|
+
|
|
9
|
+
Koobi stores experiment metadata as plain Markdown cards, builds a disposable DuckDB index, and serves an interactive Marimo UI for browsing, filtering, visualizing, and editing cards. The source of truth is always your files.
|
|
10
|
+
|
|
11
|
+
## Why Koobi
|
|
12
|
+
|
|
13
|
+
Most experiment trackers assume a hosted service and database-backed runs. Koobi is designed for local-first users who want:
|
|
14
|
+
|
|
15
|
+
- readable, versionable records in Git
|
|
16
|
+
- zero-server operation
|
|
17
|
+
- domain-agnostic metrics and parameters
|
|
18
|
+
- workflows friendly to both humans and coding agents
|
|
19
|
+
|
|
20
|
+
## Current MVP Capabilities
|
|
21
|
+
|
|
22
|
+
- Markdown card parsing and serialization with preserved body/key ordering
|
|
23
|
+
- additive card updates (only targeted fields are rewritten)
|
|
24
|
+
- DuckDB index build with:
|
|
25
|
+
- `cards` table (metadata + body)
|
|
26
|
+
- `measures` table (long-format metrics)
|
|
27
|
+
- `series_registry` table (series pointers)
|
|
28
|
+
- Marimo app with:
|
|
29
|
+
- project/status/search filters
|
|
30
|
+
- model table view
|
|
31
|
+
- card detail view (metrics/params/tags/body)
|
|
32
|
+
- edit form (name/status/tags/body) with write-back
|
|
33
|
+
- one measure bar chart
|
|
34
|
+
- CLI commands:
|
|
35
|
+
- `koobi init`
|
|
36
|
+
- `koobi new`
|
|
37
|
+
- `koobi index`
|
|
38
|
+
- `koobi ui`
|
|
39
|
+
|
|
40
|
+
## Architecture Overview
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
cards/*.md --> index.duckdb --> Marimo app
|
|
44
|
+
^ |
|
|
45
|
+
|---------- edit/write-back -------|
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
- Cards are authoritative.
|
|
49
|
+
- Index is derived and disposable.
|
|
50
|
+
- UI reads from index and writes edits back to cards.
|
|
51
|
+
|
|
52
|
+
## Installation
|
|
53
|
+
|
|
54
|
+
Install into any project or environment directly from Git:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pip install git+https://github.com/blu3c0ral/koobi.git
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
This installs the `koobi` command and the importable `koobi` package.
|
|
61
|
+
|
|
62
|
+
For local development on Koobi itself, install editable with dev extras:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
python3 -m venv .venv
|
|
66
|
+
source .venv/bin/activate
|
|
67
|
+
python -m pip install -e ".[dev]"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Quickstart
|
|
71
|
+
|
|
72
|
+
Koobi discovers its configuration automatically: every command searches the
|
|
73
|
+
current directory and its parents for a `koobi.toml`. Work from inside your
|
|
74
|
+
workspace and no `--config` flag is needed.
|
|
75
|
+
|
|
76
|
+
### 1) Create (or enter) a workspace
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
koobi init --path my-registry
|
|
80
|
+
cd my-registry
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Or use the bundled demo workspace:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
python examples/local_example_to_cards.py --overwrite
|
|
87
|
+
cd examples/local
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 2) Build the index
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
koobi index
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 3) Launch the UI
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
koobi ui
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
The UI opens at http://localhost:2718.
|
|
103
|
+
|
|
104
|
+
### Running from outside the workspace
|
|
105
|
+
|
|
106
|
+
If you prefer not to `cd`, point Koobi at the config explicitly or via an
|
|
107
|
+
environment variable (precedence: `--config` > `KOOBI_CONFIG` > current dir):
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
koobi ui --config examples/local/koobi.toml
|
|
111
|
+
# or
|
|
112
|
+
export KOOBI_CONFIG=examples/local/koobi.toml
|
|
113
|
+
koobi ui
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## CLI Reference
|
|
117
|
+
|
|
118
|
+
Initialize a new workspace:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
koobi init --path /path/to/workspace
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Create a new card (run from inside the workspace):
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
koobi new demo_project.my_model
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Rebuild index:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
koobi index
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Run UI:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
koobi ui
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Use as a Library
|
|
143
|
+
|
|
144
|
+
Koobi's core is importable, so other projects and coding agents can read,
|
|
145
|
+
query, and write cards programmatically:
|
|
146
|
+
|
|
147
|
+
```python
|
|
148
|
+
from koobi import load_config, build, connect, query_cards
|
|
149
|
+
from koobi import Card, load_card, save_card
|
|
150
|
+
|
|
151
|
+
# Resolve config by searching upward from a path (file or directory)
|
|
152
|
+
cfg = load_config("path/to/workspace")
|
|
153
|
+
|
|
154
|
+
# Build the disposable DuckDB index from the Markdown cards
|
|
155
|
+
build(cfg)
|
|
156
|
+
|
|
157
|
+
# Query cards joined with wide-format measures
|
|
158
|
+
con = connect(cfg)
|
|
159
|
+
df = query_cards(con, project="demo_project", status="active")
|
|
160
|
+
|
|
161
|
+
# Read, mutate, and write back a single card (only targeted fields change)
|
|
162
|
+
card = load_card("path/to/workspace/cards/demo_project.my_model.md")
|
|
163
|
+
card.status = "shipped"
|
|
164
|
+
save_card(card, fields=["status"])
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
The full public API is exported from the top-level `koobi` package; see
|
|
168
|
+
`koobi.__all__`.
|
|
169
|
+
|
|
170
|
+
## Repository Layout
|
|
171
|
+
|
|
172
|
+
```text
|
|
173
|
+
src/koobi/ # core package (schema, cards, config, index, charts, app, cli)
|
|
174
|
+
tests/ # unit tests
|
|
175
|
+
examples/local/ # self-contained demo workspace
|
|
176
|
+
examples/local_example_to_cards.py
|
|
177
|
+
docs/ # product, technical, and future feature docs
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Development
|
|
181
|
+
|
|
182
|
+
Run tests:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
pytest
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Recommended pre-PR checklist:
|
|
189
|
+
|
|
190
|
+
- run `pytest`
|
|
191
|
+
- regenerate local example cards if example inputs changed
|
|
192
|
+
- verify `koobi index` and `koobi ui` against `examples/local/koobi.toml`
|
|
193
|
+
|
|
194
|
+
## Documentation
|
|
195
|
+
|
|
196
|
+
- [`docs/product_design.md`](docs/product_design.md) - product framing and roadmap
|
|
197
|
+
- [`docs/technical_design.md`](docs/technical_design.md) - architecture and data contracts
|
|
198
|
+
- [`docs/future_features.md`](docs/future_features.md) - planned automation and extensions
|
|
199
|
+
|
|
200
|
+
## Status
|
|
201
|
+
|
|
202
|
+
Active MVP implementation with local example workflow included. Phase 0 focus is stability of file contracts, indexing, and interactive editing.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "koobi"
|
|
7
|
+
version = "0.0.1"
|
|
8
|
+
description = "File-native model and experiment registry"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
authors = [{ name = "blu3c0ral", email = "blu3c0ral@protonmail.ch" }]
|
|
14
|
+
keywords = ["experiment-tracking", "model-registry", "marimo", "duckdb", "markdown"]
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Development Status :: 3 - Alpha",
|
|
17
|
+
"Intended Audience :: Science/Research",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Operating System :: OS Independent",
|
|
24
|
+
"Topic :: Scientific/Engineering",
|
|
25
|
+
]
|
|
26
|
+
dependencies = [
|
|
27
|
+
"altair",
|
|
28
|
+
"duckdb",
|
|
29
|
+
"marimo",
|
|
30
|
+
"pandas",
|
|
31
|
+
"pyarrow",
|
|
32
|
+
"python-frontmatter",
|
|
33
|
+
"tomli; python_version < '3.11'",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
[project.optional-dependencies]
|
|
37
|
+
dev = ["pytest"]
|
|
38
|
+
|
|
39
|
+
[project.urls]
|
|
40
|
+
Homepage = "https://github.com/blu3c0ral/koobi"
|
|
41
|
+
Repository = "https://github.com/blu3c0ral/koobi"
|
|
42
|
+
Issues = "https://github.com/blu3c0ral/koobi/issues"
|
|
43
|
+
|
|
44
|
+
[project.scripts]
|
|
45
|
+
koobi = "koobi.cli:main"
|
|
46
|
+
|
|
47
|
+
[tool.setuptools]
|
|
48
|
+
package-dir = {"" = "src"}
|
|
49
|
+
|
|
50
|
+
[tool.setuptools.packages.find]
|
|
51
|
+
where = ["src"]
|
|
52
|
+
|
|
53
|
+
[tool.pytest.ini_options]
|
|
54
|
+
pythonpath = ["src"]
|
|
55
|
+
testpaths = ["tests"]
|
koobi-0.0.1/setup.cfg
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""Koobi: file-native model and experiment registry.
|
|
2
|
+
|
|
3
|
+
This module exposes the stable public API. Import the high-level helpers
|
|
4
|
+
directly from ``koobi`` rather than reaching into submodules::
|
|
5
|
+
|
|
6
|
+
from koobi import load_config, build, connect, query_cards
|
|
7
|
+
from koobi import Card, load_card, save_card
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from .cards import iter_cards, load_card, save_card
|
|
13
|
+
from .charts import measure_bar
|
|
14
|
+
from .config import Config, load_config
|
|
15
|
+
from .index import build, connect, query_cards
|
|
16
|
+
from .schema import Card, SeriesRef, dump_card, parse_card
|
|
17
|
+
|
|
18
|
+
__version__ = "0.0.1"
|
|
19
|
+
|
|
20
|
+
__all__ = [
|
|
21
|
+
"__version__",
|
|
22
|
+
"Card",
|
|
23
|
+
"Config",
|
|
24
|
+
"SeriesRef",
|
|
25
|
+
"build",
|
|
26
|
+
"connect",
|
|
27
|
+
"dump_card",
|
|
28
|
+
"iter_cards",
|
|
29
|
+
"load_card",
|
|
30
|
+
"load_config",
|
|
31
|
+
"measure_bar",
|
|
32
|
+
"parse_card",
|
|
33
|
+
"query_cards",
|
|
34
|
+
"save_card",
|
|
35
|
+
]
|