humemdb 0.1.0.dev0__tar.gz → 0.1.0.dev2__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.
Files changed (68) hide show
  1. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/.github/workflows/build-docs.yml +1 -0
  2. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/.github/workflows/deploy-docs.yml +5 -0
  3. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/.github/workflows/publish-pypi.yml +5 -1
  4. humemdb-0.1.0.dev2/.github/workflows/test-examples.yml +81 -0
  5. humemdb-0.1.0.dev2/.github/workflows/test.yml +59 -0
  6. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/PKG-INFO +34 -7
  7. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/README.md +29 -5
  8. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/docs/development/documentation.md +1 -1
  9. humemdb-0.1.0.dev2/docs/development/licensing.md +44 -0
  10. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/docs/development/release.md +1 -1
  11. humemdb-0.1.0.dev2/docs/examples/01_sql_basics.md +67 -0
  12. humemdb-0.1.0.dev2/docs/examples/02_cypher_social_graph.md +57 -0
  13. humemdb-0.1.0.dev2/docs/examples/03_vector_search.md +54 -0
  14. humemdb-0.1.0.dev2/docs/examples/index.md +28 -0
  15. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/docs/getting-started/installation.md +15 -7
  16. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/docs/index.md +3 -3
  17. humemdb-0.1.0.dev2/examples/01_sql_basics.py +164 -0
  18. humemdb-0.1.0.dev2/examples/02_cypher_social_graph.py +113 -0
  19. humemdb-0.1.0.dev2/examples/03_vector_search.py +123 -0
  20. humemdb-0.1.0.dev2/examples/README.md +24 -0
  21. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/mkdocs.yml +6 -3
  22. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/pyproject.toml +5 -1
  23. humemdb-0.1.0.dev2/scripts/release/run_examples.py +54 -0
  24. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/uv.lock +320 -3
  25. humemdb-0.1.0.dev0/.github/workflows/test.yml +0 -73
  26. humemdb-0.1.0.dev0/docs/examples/cypher.md +0 -48
  27. humemdb-0.1.0.dev0/docs/examples/index.md +0 -13
  28. humemdb-0.1.0.dev0/docs/examples/sql.md +0 -50
  29. humemdb-0.1.0.dev0/docs/examples/vector.md +0 -42
  30. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/.gitignore +0 -0
  31. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/.pre-commit-config.yaml +0 -0
  32. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/.python-version +0 -0
  33. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/LICENSE +0 -0
  34. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/docs/getting-started/quickstart.md +0 -0
  35. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/docs/guide/benchmarks.md +0 -0
  36. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/docs/guide/query-surfaces.md +0 -0
  37. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/docs/guide/routing.md +0 -0
  38. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/docs/guide/transactions.md +0 -0
  39. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/docs/guide/vectors.md +0 -0
  40. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/docs/stylesheets/extra.css +0 -0
  41. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/pyrightconfig.json +0 -0
  42. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/README.md +0 -0
  43. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/README.md +0 -0
  44. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/cypher_graph_path.py +0 -0
  45. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/duckdb_direct_read.py +0 -0
  46. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/results/ivfflat_boundary_150k_400k_dims256_384.json +0 -0
  47. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/results/ivfflat_crossover_100k_1m_dims256_384.json +0 -0
  48. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/results/ivfflat_crossover_100k_1m_dims768_1024.json +0 -0
  49. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/results/ivfhnswsq_crossover_100k_1m_dims256_384.json +0 -0
  50. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/results/ivfpq_100k_384.json +0 -0
  51. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/results/vector_search_sweep_tuned_threads4_queries100_rows2k-100k_dims256-1024_topk10.json +0 -0
  52. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/vector_search.py +0 -0
  53. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/vector_search_sweep.py +0 -0
  54. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/benchmarks/vector_search_tune_lancedb.py +0 -0
  55. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/dev/README.md +0 -0
  56. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/fix_markdown.py +0 -0
  57. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/scripts/release/README.md +0 -0
  58. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/src/humemdb/__init__.py +0 -0
  59. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/src/humemdb/cypher.py +0 -0
  60. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/src/humemdb/db.py +0 -0
  61. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/src/humemdb/engines.py +0 -0
  62. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/src/humemdb/runtime.py +0 -0
  63. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/src/humemdb/sql.py +0 -0
  64. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/src/humemdb/types.py +0 -0
  65. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/src/humemdb/vector.py +0 -0
  66. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/tests/test_db.py +0 -0
  67. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/tests/test_vector.py +0 -0
  68. {humemdb-0.1.0.dev0 → humemdb-0.1.0.dev2}/things-to-do.md +0 -0
@@ -45,5 +45,6 @@ jobs:
45
45
  - name: Build docs
46
46
  env:
47
47
  MIKE_VERSION: dev
48
+ MIKE_VERSION_TAG: main
48
49
  run: |
49
50
  uv run mkdocs build --strict
@@ -68,9 +68,12 @@ jobs:
68
68
  fi
69
69
 
70
70
  VERSION="${RAW_VERSION#v}"
71
+ VERSION_TAG="v$VERSION"
71
72
  echo "version=$VERSION" >> "$GITHUB_OUTPUT"
73
+ echo "version_tag=$VERSION_TAG" >> "$GITHUB_OUTPUT"
72
74
  echo "set_latest=$SET_LATEST" >> "$GITHUB_OUTPUT"
73
75
  echo "Deploying documentation version: $VERSION"
76
+ echo "Using source tag ref: $VERSION_TAG"
74
77
 
75
78
  - name: Checkout humemai-docs
76
79
  uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
@@ -90,6 +93,7 @@ jobs:
90
93
  working-directory: humemai-docs
91
94
  env:
92
95
  MIKE_VERSION: ${{ steps.version.outputs.version }}
96
+ MIKE_VERSION_TAG: ${{ steps.version.outputs.version_tag }}
93
97
  run: |
94
98
  uv run --project .. mike deploy --update-aliases \
95
99
  --deploy-prefix humemdb \
@@ -110,6 +114,7 @@ jobs:
110
114
  working-directory: humemai-docs
111
115
  env:
112
116
  MIKE_VERSION: ${{ steps.version.outputs.version }}
117
+ MIKE_VERSION_TAG: ${{ steps.version.outputs.version_tag }}
113
118
  run: |
114
119
  uv run --project .. mike deploy \
115
120
  --deploy-prefix humemdb \
@@ -57,9 +57,13 @@ jobs:
57
57
  name: python-package-distributions
58
58
  path: dist/
59
59
 
60
+ examples:
61
+ name: Run examples
62
+ uses: ./.github/workflows/test-examples.yml
63
+
60
64
  publish:
61
65
  name: Publish package to PyPI
62
- needs: build
66
+ needs: [build, examples]
63
67
  if: startsWith(github.ref, 'refs/tags/v')
64
68
  runs-on: ubuntu-24.04
65
69
  environment: pypi
@@ -0,0 +1,81 @@
1
+ name: Test Examples
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - 'examples/**'
9
+ - 'src/**'
10
+ - 'pyproject.toml'
11
+ - 'uv.lock'
12
+ - 'scripts/release/run_examples.py'
13
+ - '.github/workflows/test-examples.yml'
14
+ pull_request:
15
+ paths:
16
+ - 'examples/**'
17
+ - 'src/**'
18
+ - 'pyproject.toml'
19
+ - 'uv.lock'
20
+ - 'scripts/release/run_examples.py'
21
+ - '.github/workflows/test-examples.yml'
22
+ workflow_call:
23
+ workflow_dispatch:
24
+
25
+ permissions:
26
+ contents: read
27
+
28
+ jobs:
29
+ test-examples:
30
+ name: Test Examples (${{ matrix.platform }}, Python ${{ matrix.python-version }})
31
+ runs-on: ${{ matrix.runs-on }}
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ python-version:
36
+ - '3.10'
37
+ - '3.11'
38
+ - '3.12'
39
+ - '3.13'
40
+ - '3.14'
41
+ platform:
42
+ - 'linux/amd64'
43
+ - 'linux/arm64'
44
+ - 'darwin/arm64'
45
+ - 'windows/amd64'
46
+ include:
47
+ - platform: 'linux/amd64'
48
+ runs-on: ubuntu-24.04
49
+ - platform: 'linux/arm64'
50
+ runs-on: ubuntu-24.04-arm
51
+ - platform: 'darwin/arm64'
52
+ runs-on: macos-15
53
+ - platform: 'windows/amd64'
54
+ runs-on: windows-2025
55
+
56
+ steps:
57
+ - name: Checkout repository
58
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
59
+
60
+ - name: Set up Python
61
+ uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
62
+ with:
63
+ python-version: ${{ matrix.python-version }}
64
+
65
+ - name: Set up uv
66
+ uses: astral-sh/setup-uv@v6
67
+
68
+ - name: Build distributions
69
+ shell: bash
70
+ run: |
71
+ uv run --with build python -m build
72
+
73
+ - name: Install built wheel
74
+ shell: bash
75
+ run: |
76
+ uv pip install --system dist/*.whl
77
+
78
+ - name: Run examples
79
+ shell: bash
80
+ run: |
81
+ python scripts/release/run_examples.py
@@ -0,0 +1,59 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ workflow_call:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ test:
15
+ name: Test (${{ matrix.platform }}, Python ${{ matrix.python-version }})
16
+ runs-on: ${{ matrix.runs-on }}
17
+ strategy:
18
+ fail-fast: false
19
+ matrix:
20
+ python-version:
21
+ - '3.10'
22
+ - '3.11'
23
+ - '3.12'
24
+ - '3.13'
25
+ - '3.14'
26
+ platform:
27
+ - 'linux/amd64'
28
+ - 'linux/arm64'
29
+ - 'darwin/arm64'
30
+ - 'windows/amd64'
31
+ include:
32
+ - platform: 'linux/amd64'
33
+ runs-on: ubuntu-24.04
34
+ - platform: 'linux/arm64'
35
+ runs-on: ubuntu-24.04-arm
36
+ - platform: 'darwin/arm64'
37
+ runs-on: macos-15
38
+ - platform: 'windows/amd64'
39
+ runs-on: windows-2025
40
+
41
+ steps:
42
+ - name: Checkout repository
43
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
44
+
45
+ - name: Set up Python
46
+ uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
47
+ with:
48
+ python-version: ${{ matrix.python-version }}
49
+
50
+ - name: Set up uv
51
+ uses: astral-sh/setup-uv@v6
52
+
53
+ - name: Install project
54
+ run: |
55
+ uv sync
56
+
57
+ - name: Run tests
58
+ run: |
59
+ uv run python -m unittest discover -s tests -v
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: humemdb
3
- Version: 0.1.0.dev0
3
+ Version: 0.1.0.dev2
4
4
  Summary: Embedded multi-model database orchestration over SQLite, DuckDB, Cypher, and exact and ANN vector search
5
5
  Project-URL: Homepage, https://github.com/humemai/humemdb
6
6
  Project-URL: Documentation, https://docs.humem.ai/humemdb/
@@ -36,10 +36,13 @@ Classifier: License :: OSI Approved :: MIT License
36
36
  Classifier: Operating System :: OS Independent
37
37
  Classifier: Programming Language :: Python :: 3
38
38
  Classifier: Programming Language :: Python :: 3 :: Only
39
+ Classifier: Programming Language :: Python :: 3.10
40
+ Classifier: Programming Language :: Python :: 3.11
39
41
  Classifier: Programming Language :: Python :: 3.12
40
42
  Classifier: Programming Language :: Python :: 3.13
43
+ Classifier: Programming Language :: Python :: 3.14
41
44
  Classifier: Topic :: Database
42
- Requires-Python: >=3.12
45
+ Requires-Python: >=3.10
43
46
  Requires-Dist: duckdb<2,>=1.4
44
47
  Requires-Dist: lancedb<1,>=0.27
45
48
  Requires-Dist: numpy<3,>=2
@@ -53,6 +56,7 @@ Multi-model embedded data orchestration for SQL, Cypher, and vector search.
53
56
 
54
57
  [![Docs](https://img.shields.io/badge/docs-humem.ai-0f766e)](https://docs.humem.ai/humemdb/)
55
58
  [![Test](https://github.com/humemai/humemdb/actions/workflows/test.yml/badge.svg)](https://github.com/humemai/humemdb/actions/workflows/test.yml)
59
+ [![Examples](https://github.com/humemai/humemdb/actions/workflows/test-examples.yml/badge.svg)](https://github.com/humemai/humemdb/actions/workflows/test-examples.yml)
56
60
  [![Build Docs](https://github.com/humemai/humemdb/actions/workflows/build-docs.yml/badge.svg)](https://github.com/humemai/humemdb/actions/workflows/build-docs.yml)
57
61
  [![Publish PyPI](https://github.com/humemai/humemdb/actions/workflows/publish-pypi.yml/badge.svg)](https://github.com/humemai/humemdb/actions/workflows/publish-pypi.yml)
58
62
 
@@ -100,6 +104,8 @@ Current behavior is intentionally explicit:
100
104
 
101
105
  ## Install
102
106
 
107
+ HumemDB supports Python 3.10 and newer.
108
+
103
109
  Install from source:
104
110
 
105
111
  ```bash
@@ -131,6 +137,21 @@ uv sync
131
137
  `uv lock` updates the lockfile with exact resolved versions. `uv sync` installs that
132
138
  exact environment.
133
139
 
140
+ ## Libraries HumemDB relies on
141
+
142
+ HumemDB is a pure Python orchestration layer, but it relies on a small set of core
143
+ Python libraries and embedded engines:
144
+
145
+ - `sqlite3` from the Python standard library for the canonical local write path.
146
+ - `duckdb` for analytical reads over the SQLite-backed source-of-truth database.
147
+ - `numpy` for the exact in-memory vector search baseline.
148
+ - `sqlglot[c]` for the current PostgreSQL-like SQL translation layer.
149
+ - `lancedb` for benchmark work and future indexed ANN paths.
150
+ - `threadpoolctl` for thread-pool coordination around compute-heavy dependencies.
151
+
152
+ Those dependencies are part of the public runtime story. HumemDB does not try to hide
153
+ them behind a fake "single engine" narrative.
154
+
134
155
  ## 🧠 What is supported today
135
156
 
136
157
  ### SQL
@@ -180,14 +201,14 @@ with HumemDB("app.sqlite3", "analytics.duckdb") as db:
180
201
  print(result.rows)
181
202
  ```
182
203
 
183
- More examples live in the docs site.
204
+ More examples live in [examples/](examples/) and in the docs site.
184
205
 
185
206
  ## 🔗 Quick links
186
207
 
187
208
  - Docs: [docs.humem.ai/humemdb](https://docs.humem.ai/humemdb/)
188
209
  - Repository: [github.com/humemai/humemdb](https://github.com/humemai/humemdb)
189
210
  - Issues: [github.com/humemai/humemdb/issues](https://github.com/humemai/humemdb/issues)
190
- - Internal phase tracking: [things-to-do.md](things-to-do.md)
211
+ - Internal roadmap notes: [things-to-do.md](things-to-do.md)
191
212
 
192
213
  ## 📦 Packaging
193
214
 
@@ -197,9 +218,15 @@ side.
197
218
 
198
219
  ## 🗺️ Planning
199
220
 
200
- The detailed internal roadmap and phase tracking now live in `things-to-do.md` instead
201
- of this README.
221
+ Detailed internal roadmap notes now live in `things-to-do.md` instead of this README.
202
222
 
203
223
  ## 📄 License
204
224
 
205
- MIT.
225
+ HumemDB's own source code is licensed under MIT. See [LICENSE](LICENSE).
226
+
227
+ Third-party dependencies keep their own licenses. Installing HumemDB may also install
228
+ third-party Python packages and, in some cases, their native wheels. Those components
229
+ are not relicensed under MIT just because HumemDB depends on them.
230
+
231
+ For the concrete dependency set, see [pyproject.toml](pyproject.toml) and
232
+ [uv.lock](uv.lock).
@@ -4,6 +4,7 @@ Multi-model embedded data orchestration for SQL, Cypher, and vector search.
4
4
 
5
5
  [![Docs](https://img.shields.io/badge/docs-humem.ai-0f766e)](https://docs.humem.ai/humemdb/)
6
6
  [![Test](https://github.com/humemai/humemdb/actions/workflows/test.yml/badge.svg)](https://github.com/humemai/humemdb/actions/workflows/test.yml)
7
+ [![Examples](https://github.com/humemai/humemdb/actions/workflows/test-examples.yml/badge.svg)](https://github.com/humemai/humemdb/actions/workflows/test-examples.yml)
7
8
  [![Build Docs](https://github.com/humemai/humemdb/actions/workflows/build-docs.yml/badge.svg)](https://github.com/humemai/humemdb/actions/workflows/build-docs.yml)
8
9
  [![Publish PyPI](https://github.com/humemai/humemdb/actions/workflows/publish-pypi.yml/badge.svg)](https://github.com/humemai/humemdb/actions/workflows/publish-pypi.yml)
9
10
 
@@ -51,6 +52,8 @@ Current behavior is intentionally explicit:
51
52
 
52
53
  ## Install
53
54
 
55
+ HumemDB supports Python 3.10 and newer.
56
+
54
57
  Install from source:
55
58
 
56
59
  ```bash
@@ -82,6 +85,21 @@ uv sync
82
85
  `uv lock` updates the lockfile with exact resolved versions. `uv sync` installs that
83
86
  exact environment.
84
87
 
88
+ ## Libraries HumemDB relies on
89
+
90
+ HumemDB is a pure Python orchestration layer, but it relies on a small set of core
91
+ Python libraries and embedded engines:
92
+
93
+ - `sqlite3` from the Python standard library for the canonical local write path.
94
+ - `duckdb` for analytical reads over the SQLite-backed source-of-truth database.
95
+ - `numpy` for the exact in-memory vector search baseline.
96
+ - `sqlglot[c]` for the current PostgreSQL-like SQL translation layer.
97
+ - `lancedb` for benchmark work and future indexed ANN paths.
98
+ - `threadpoolctl` for thread-pool coordination around compute-heavy dependencies.
99
+
100
+ Those dependencies are part of the public runtime story. HumemDB does not try to hide
101
+ them behind a fake "single engine" narrative.
102
+
85
103
  ## 🧠 What is supported today
86
104
 
87
105
  ### SQL
@@ -131,14 +149,14 @@ with HumemDB("app.sqlite3", "analytics.duckdb") as db:
131
149
  print(result.rows)
132
150
  ```
133
151
 
134
- More examples live in the docs site.
152
+ More examples live in [examples/](examples/) and in the docs site.
135
153
 
136
154
  ## 🔗 Quick links
137
155
 
138
156
  - Docs: [docs.humem.ai/humemdb](https://docs.humem.ai/humemdb/)
139
157
  - Repository: [github.com/humemai/humemdb](https://github.com/humemai/humemdb)
140
158
  - Issues: [github.com/humemai/humemdb/issues](https://github.com/humemai/humemdb/issues)
141
- - Internal phase tracking: [things-to-do.md](things-to-do.md)
159
+ - Internal roadmap notes: [things-to-do.md](things-to-do.md)
142
160
 
143
161
  ## 📦 Packaging
144
162
 
@@ -148,9 +166,15 @@ side.
148
166
 
149
167
  ## 🗺️ Planning
150
168
 
151
- The detailed internal roadmap and phase tracking now live in `things-to-do.md` instead
152
- of this README.
169
+ Detailed internal roadmap notes now live in `things-to-do.md` instead of this README.
153
170
 
154
171
  ## 📄 License
155
172
 
156
- MIT.
173
+ HumemDB's own source code is licensed under MIT. See [LICENSE](LICENSE).
174
+
175
+ Third-party dependencies keep their own licenses. Installing HumemDB may also install
176
+ third-party Python packages and, in some cases, their native wheels. Those components
177
+ are not relicensed under MIT just because HumemDB depends on them.
178
+
179
+ For the concrete dependency set, see [pyproject.toml](pyproject.toml) and
180
+ [uv.lock](uv.lock).
@@ -22,7 +22,7 @@ The docs site is published into the shared `humemai-docs` repository under the
22
22
 
23
23
  `mike` manages versioned documentation aliases such as `latest`.
24
24
 
25
- ## Writing rules for this phase
25
+ ## Writing rules
26
26
 
27
27
  - keep the docs aligned with the actual `v0` runtime surface
28
28
  - prefer clear boundaries over aspirational claims
@@ -0,0 +1,44 @@
1
+ # Licensing
2
+
3
+ ## HumemDB license
4
+
5
+ HumemDB's own source code is licensed under MIT.
6
+
7
+ - Repository license file:
8
+ [LICENSE]({{ config.repo_url }}/blob/{{ config.extra.version_tag }}/LICENSE)
9
+ - Package metadata:
10
+ [pyproject.toml]({{ config.repo_url }}/blob/{{ config.extra.version_tag }}/pyproject.toml)
11
+
12
+ That MIT grant applies to HumemDB's code and documentation in this repository. It does
13
+ not automatically relicense third-party dependencies.
14
+
15
+ ## Runtime libraries HumemDB relies on
16
+
17
+ The current runtime depends on a small set of explicit Python libraries and embedded
18
+ engines:
19
+
20
+ - `sqlite3` from the Python standard library for the canonical local write path
21
+ - `duckdb` for analytical reads
22
+ - `numpy` for the exact in-memory vector search baseline
23
+ - `sqlglot[c]` for the SQL translation layer
24
+ - `lancedb` for benchmark work and future indexed ANN paths
25
+ - `threadpoolctl` for thread-pool coordination
26
+
27
+ HumemDB intentionally presents those libraries as part of the implementation story
28
+ instead of pretending everything comes from one hidden backend.
29
+
30
+ ## Third-party licenses
31
+
32
+ Third-party dependencies keep their own licenses and distribution terms.
33
+
34
+ - Installing HumemDB may download third-party wheels or source distributions.
35
+ - Some of those dependencies may include native code or platform-specific wheels.
36
+ - Those components remain under their upstream licenses.
37
+
38
+ For the concrete dependency set used by this project, see:
39
+
40
+ - [pyproject.toml]({{ config.repo_url }}/blob/{{ config.extra.version_tag }}/pyproject.toml)
41
+ - [uv.lock]({{ config.repo_url }}/blob/{{ config.extra.version_tag }}/uv.lock)
42
+
43
+ If you need a formal license review for a deployment, review the resolved dependency
44
+ set from the lockfile rather than only the top-level MIT license.
@@ -1,6 +1,6 @@
1
1
  # Release Workflow
2
2
 
3
- Phase 6 hardens the public release path around two outputs:
3
+ HumemDB's public release path currently centers on two outputs:
4
4
 
5
5
  - the PyPI package
6
6
  - the versioned docs site
@@ -0,0 +1,67 @@
1
+ # 01 - SQL Basics
2
+
3
+ [View source code]({{ config.repo_url }}/blob/{{ config.extra.version_tag }}/examples/01_sql_basics.py){ .md-button }
4
+
5
+ This page documents the real repository example `examples/01_sql_basics.py`.
6
+
7
+ ## What the Python example does
8
+
9
+ The script generates a moderately sized embedded workload instead of a tiny hand-made
10
+ toy dataset.
11
+
12
+ - 2,000 `users`
13
+ - 50,000 `orders`
14
+ - 2 SQLite tables
15
+ - transactional bulk inserts through the public API
16
+ - SQLite filtered OLTP-style reads
17
+ - SQLite joined reads
18
+ - DuckDB grouped analytical reads over the SQLite-backed tables
19
+
20
+ ## Why this example exists
21
+
22
+ HumemDB is supposed to route small transactional work and broader analytical work to
23
+ different engines explicitly. This example demonstrates that split using the actual
24
+ public Python API.
25
+
26
+ ## Main operations covered
27
+
28
+ - `CREATE TABLE` routed to SQLite
29
+ - `executemany(...)` inside an explicit transaction
30
+ - `ILIKE` translation on the SQLite route
31
+ - SQLite join queries for row-oriented reads
32
+ - DuckDB grouped aggregate queries for broader scans
33
+
34
+ ## Representative flow
35
+
36
+ ```python
37
+ with HumemDB("app.sqlite3", "analytics.duckdb") as db:
38
+ db.query(
39
+ "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL, segment TEXT NOT NULL, city TEXT NOT NULL)",
40
+ route="sqlite",
41
+ )
42
+ db.query(
43
+ "CREATE TABLE orders (id INTEGER PRIMARY KEY, user_id INTEGER NOT NULL, status TEXT NOT NULL, total_cents INTEGER NOT NULL)",
44
+ route="sqlite",
45
+ )
46
+
47
+ with db.transaction(route="sqlite"):
48
+ db.executemany(..., users, route="sqlite")
49
+ db.executemany(..., orders, route="sqlite")
50
+
51
+ sqlite_rows = db.query(..., route="sqlite")
52
+ duckdb_rollup = db.query(..., route="duckdb")
53
+ ```
54
+
55
+ ## Supported statement kinds
56
+
57
+ - `SELECT`
58
+ - `INSERT`
59
+ - `UPDATE`
60
+ - `DELETE`
61
+ - `CREATE`
62
+
63
+ ## Explicit rejections
64
+
65
+ - recursive CTEs
66
+ - unsupported PostgreSQL syntax outside the current tested surface
67
+ - direct public writes routed to DuckDB
@@ -0,0 +1,57 @@
1
+ # 02 - Cypher Social Graph
2
+
3
+ [View source code]({{ config.repo_url }}/blob/{{ config.extra.version_tag }}/examples/02_cypher_social_graph.py){ .md-button }
4
+
5
+ This page documents the real repository example `examples/02_cypher_social_graph.py`.
6
+
7
+ ## What the Python example does
8
+
9
+ The script builds a generated social/work graph rather than a tiny three-node toy.
10
+
11
+ - 5,000 repeated graph patterns
12
+ - thousands of nodes
13
+ - thousands of directed `KNOWS` edges
14
+ - richer node properties: `name`, `age`, `active`, `cohort`, `city`
15
+ - richer relationship properties: `since`, `strength`, and implicit `type`
16
+ - SQLite and DuckDB graph reads over the same stored graph state
17
+
18
+ ## Main operations covered
19
+
20
+ - repeated `CREATE` graph writes on the SQLite route
21
+ - named parameters in Cypher `CREATE`
22
+ - relationship alias returns
23
+ - reverse-edge matching
24
+ - `WHERE ... AND ...` filters
25
+ - `ORDER BY` and `LIMIT`
26
+
27
+ ## Representative flow
28
+
29
+ ```python
30
+ db.query(
31
+ (
32
+ "CREATE (a:User {name: $a_name, age: $a_age, active: $a_active, cohort: $cohort, city: $city})"
33
+ "-[r:KNOWS {since: $since_one, strength: $strength_one}]->"
34
+ "(b:User {name: $b_name, age: $b_age, active: $b_active, cohort: $cohort, city: $city})"
35
+ ),
36
+ route="sqlite",
37
+ query_type="cypher",
38
+ params={...},
39
+ )
40
+ ```
41
+
42
+ ## Supported today
43
+
44
+ - labeled node creation
45
+ - single directed relationship creation
46
+ - narrow `MATCH` flows
47
+ - relationship aliases
48
+ - reverse-edge matching
49
+ - `WHERE` equality predicates joined by `AND`
50
+ - `ORDER BY` and `LIMIT`
51
+ - named parameters such as `$name`
52
+
53
+ ## Not promised yet
54
+
55
+ HumemDB does not claim broad Cypher compatibility today. The current surface is the
56
+ tested subset described above, and unsupported constructs should fail clearly instead of
57
+ being guessed at.
@@ -0,0 +1,54 @@
1
+ # 03 - Vector Search
2
+
3
+ [View source code]({{ config.repo_url }}/blob/{{ config.extra.version_tag }}/examples/03_vector_search.py){ .md-button }
4
+
5
+ This page documents the real repository example `examples/03_vector_search.py`.
6
+
7
+ ## What the Python example does
8
+
9
+ The script generates a sizable exact-search workload rather than only a handful of
10
+ vectors.
11
+
12
+ - 24,000 vectors in the `default` collection
13
+ - 12,000 vectors in the `archive` collection
14
+ - 16 dimensions per vector
15
+ - multiple logical buckets
16
+ - exact search through `search_vectors(...)`
17
+ - exact search through raw `query_type="vector"`
18
+ - cache invalidation after inserting additional vectors
19
+
20
+ ## Why this example matters
21
+
22
+ HumemDB currently positions the public vector runtime as an exact SQLite-plus-NumPy
23
+ baseline. That claim is not very useful if the only shipped example uses three points.
24
+ This example exercises tens of thousands of generated points while staying inside the
25
+ current public `v0` surface.
26
+
27
+ ## Representative flow
28
+
29
+ ```python
30
+ with HumemDB("vectors.sqlite3") as db:
31
+ db.insert_vectors(build_default_vectors())
32
+ db.insert_vectors(build_archive_vectors())
33
+
34
+ result = db.search_vectors(
35
+ "default",
36
+ _embedding(1.0, 0.0, 0.0),
37
+ top_k=5,
38
+ metric="cosine",
39
+ )
40
+ ```
41
+
42
+ ## What this means in practice
43
+
44
+ - SQLite is the canonical vector store.
45
+ - The public path is exact, not ANN.
46
+ - Bucket filters can narrow the candidate set before scoring.
47
+ - Collection caches are invalidated automatically after SQL writes that touch vector
48
+ storage.
49
+
50
+ ## Metrics
51
+
52
+ - `cosine`
53
+ - `dot`
54
+ - `l2`
@@ -0,0 +1,28 @@
1
+ # Examples
2
+
3
+ HumemDB ships real Python examples in the repository `examples/` directory,
4
+ and the docs pages in this section describe those exact files.
5
+
6
+ Like the ArcadeDB docs, each page is intended to be a companion to the real Python
7
+ script, not a disconnected hand-written snippet.
8
+
9
+ Current shipped examples:
10
+
11
+ - [01 - SQL Basics](01_sql_basics.md): generates 2,000 users and 50,000 orders, then runs both SQLite and DuckDB queries.
12
+ - [02 - Cypher Social Graph](02_cypher_social_graph.md): generates thousands of graph nodes and edges with richer properties.
13
+ - [03 - Vector Search](03_vector_search.md): generates 36,000 vectors across two collections and exercises exact search.
14
+
15
+ Run them locally from the repository root:
16
+
17
+ ```bash
18
+ uv sync
19
+ uv run python scripts/release/run_examples.py
20
+ ```
21
+
22
+ Or run individual files directly:
23
+
24
+ ```bash
25
+ uv run python examples/01_sql_basics.py
26
+ uv run python examples/02_cypher_social_graph.py
27
+ uv run python examples/03_vector_search.py
28
+ ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Requirements
4
4
 
5
- - Python 3.12 or newer.
5
+ - Python 3.10 or newer.
6
6
  - A normal local Python environment managed with `uv`.
7
7
 
8
8
  ## Install from source
@@ -43,11 +43,19 @@ uv sync --group docs
43
43
 
44
44
  ## Installed runtime dependencies
45
45
 
46
- - `duckdb`
47
- - `lancedb`
48
- - `numpy`
49
- - `sqlglot[c]`
50
- - `threadpoolctl`
46
+ - `sqlite3` from the Python standard library for the canonical local write path.
47
+ - `duckdb` for analytical reads.
48
+ - `numpy` for the exact vector search baseline.
49
+ - `sqlglot[c]` for PostgreSQL-like SQL translation.
50
+ - `lancedb` for benchmark work and future indexed ANN paths.
51
+ - `threadpoolctl` for thread-pool coordination.
51
52
 
52
53
  LanceDB is present for benchmark and later accelerated vector work, but the shipped
53
- default vector runtime today is still the exact SQLite plus NumPy path.
54
+ default vector runtime today is still the exact SQLite plus NumPy path.
55
+
56
+ ## Licensing note
57
+
58
+ HumemDB's own code is MIT-licensed, but installed dependencies keep their own licenses.
59
+ See the project [LICENSE]({{ config.repo_url }}/blob/{{ config.extra.version_tag
60
+ }}/LICENSE) for HumemDB itself and the lockfile plus package metadata for the concrete
61
+ third-party dependency set.
@@ -44,6 +44,6 @@ stays visible.
44
44
 
45
45
  - [Installation](getting-started/installation.md)
46
46
  - [Quick Start](getting-started/quickstart.md)
47
- - [SQL Example](examples/sql.md)
48
- - [Cypher Example](examples/cypher.md)
49
- - [Vector Example](examples/vector.md)
47
+ - [SQL Example](examples/01_sql_basics.md)
48
+ - [Cypher Example](examples/02_cypher_social_graph.md)
49
+ - [Vector Example](examples/03_vector_search.md)