beaver-db 0.17.5__tar.gz → 0.17.6__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.

Potentially problematic release.


This version of beaver-db might be problematic. Click here for more details.

Files changed (44) hide show
  1. {beaver_db-0.17.5 → beaver_db-0.17.6}/PKG-INFO +86 -28
  2. {beaver_db-0.17.5 → beaver_db-0.17.6}/README.md +85 -27
  3. {beaver_db-0.17.5 → beaver_db-0.17.6}/pyproject.toml +1 -1
  4. {beaver_db-0.17.5 → beaver_db-0.17.6}/.gitignore +0 -0
  5. {beaver_db-0.17.5 → beaver_db-0.17.6}/.python-version +0 -0
  6. {beaver_db-0.17.5 → beaver_db-0.17.6}/LICENSE +0 -0
  7. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/__init__.py +0 -0
  8. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/blobs.py +0 -0
  9. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/channels.py +0 -0
  10. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/cli.py +0 -0
  11. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/collections.py +0 -0
  12. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/core.py +0 -0
  13. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/dicts.py +0 -0
  14. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/lists.py +0 -0
  15. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/logs.py +0 -0
  16. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/queues.py +0 -0
  17. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/server.py +0 -0
  18. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/types.py +0 -0
  19. {beaver_db-0.17.5 → beaver_db-0.17.6}/beaver/vectors.py +0 -0
  20. {beaver_db-0.17.5 → beaver_db-0.17.6}/design.md +0 -0
  21. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/async_pubsub.py +0 -0
  22. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/blobs.py +0 -0
  23. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/cache.py +0 -0
  24. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/fts.py +0 -0
  25. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/fuzzy.py +0 -0
  26. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/general_test.py +0 -0
  27. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/graph.py +0 -0
  28. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/kvstore.py +0 -0
  29. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/list.py +0 -0
  30. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/logs.py +0 -0
  31. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/pqueue.py +0 -0
  32. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/producer_consumer.py +0 -0
  33. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/publisher.py +0 -0
  34. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/pubsub.py +0 -0
  35. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/rerank.py +0 -0
  36. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/stress_vectors.py +0 -0
  37. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/subscriber.py +0 -0
  38. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/textual_chat.css +0 -0
  39. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/textual_chat.py +0 -0
  40. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/type_hints.py +0 -0
  41. {beaver_db-0.17.5 → beaver_db-0.17.6}/examples/vector.py +0 -0
  42. {beaver_db-0.17.5 → beaver_db-0.17.6}/makefile +0 -0
  43. {beaver_db-0.17.5 → beaver_db-0.17.6}/roadmap.md +0 -0
  44. {beaver_db-0.17.5 → beaver_db-0.17.6}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beaver-db
3
- Version: 0.17.5
3
+ Version: 0.17.6
4
4
  Summary: Fast, embedded, and multi-modal DB based on SQLite for AI-powered applications.
5
5
  License-File: LICENSE
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -42,7 +42,7 @@ A fast, single-file, multi-modal database for Python, built with the standard `s
42
42
 
43
43
  `beaver` is built with a minimalistic philosophy for small, local use cases where a full-blown database server would be overkill.
44
44
 
45
- - **Minimalistic**: The core library has zero external dependencies. Vector search capabilities, which require `numpy` and `faiss-cpu`, are available as an optional feature.
45
+ - **Minimalistic**: The core library has zero external dependencies. Vector search, the REST server, and the CLI, which require external libraries, are available as optional features.
46
46
  - **Schemaless**: Flexible data storage without rigid schemas across all modalities.
47
47
  - **Synchronous, Multi-Process, and Thread-Safe**: Designed for simplicity and safety in multi-threaded and multi-process environments.
48
48
  - **Built for Local Applications**: Perfect for local AI tools, RAG prototypes, chatbots, and desktop utilities that need persistent, structured data without network overhead.
@@ -61,6 +61,8 @@ A fast, single-file, multi-modal database for Python, built with the standard `s
61
61
  - **Full-Text and Fuzzy Search**: Automatically index and search through document metadata using SQLite's powerful FTS5 engine, enhanced with optional fuzzy search for typo-tolerant matching.
62
62
  - **Knowledge Graph**: Create relationships between documents and traverse the graph to find neighbors or perform multi-hop walks.
63
63
  - **Single-File & Portable**: All data is stored in a single SQLite file, making it incredibly easy to move, back up, or embed in your application.
64
+ - **Built-in REST API Server (Optional)**: Instantly serve your database over a RESTful API with automatic OpenAPI documentation using FastAPI.
65
+ - **Full-Featured CLI Client (Optional)**: Interact with your database directly from the command line for administrative tasks and data exploration.
64
66
  - **Optional Type-Safety:** Although the database is schemaless, you can use a minimalistic typing system for automatic serialization and deserialization that is Pydantic-compatible out of the box.
65
67
 
66
68
  ## How Beaver is Implemented
@@ -79,7 +81,6 @@ The vector store in BeaverDB is designed for high performance and reliability, u
79
81
 
80
82
  This hybrid approach allows BeaverDB to provide a vector search experience that is both fast and durable, without sacrificing the single-file, embedded philosophy of the library.
81
83
 
82
-
83
84
  ## Installation
84
85
 
85
86
  Install the core, dependency-free library:
@@ -88,10 +89,17 @@ Install the core, dependency-free library:
88
89
  pip install beaver-db
89
90
  ```
90
91
 
91
- If you want vector search capabilities, install the `faiss` extra:
92
+ To include optional features, you can install them as extras:
92
93
 
93
94
  ```bash
95
+ # For vector search capabilities
94
96
  pip install "beaver-db[faiss]"
97
+
98
+ # For the REST API server and CLI
99
+ pip install "beaver-db[server,cli]"
100
+
101
+ # To install all optional features at once
102
+ pip install "beaver-db[full]"
95
103
  ```
96
104
 
97
105
  ## Quickstart
@@ -131,6 +139,53 @@ print(f"FTS Result: '{top_doc.content}'")
131
139
  db.close()
132
140
  ```
133
141
 
142
+ ## Built-in Server and CLI
143
+
144
+ Beaver comes with a built-in REST API server and a full-featured command-line client, allowing you to interact with your database without writing any code.
145
+
146
+ ### REST API Server
147
+
148
+ You can instantly expose all of your database's functionality over a RESTful API. This is perfect for building quick prototypes, microservices, or for interacting with your data from other languages.
149
+
150
+ **1. Start the server**
151
+
152
+ ```bash
153
+ # Start the server for your database file
154
+ beaver serve --database data.db --port 8000
155
+ ```
156
+
157
+ This starts a `FastAPI` server. You can now access the interactive API documentation at `http://127.0.0.1:8000/docs`.
158
+
159
+ **2. Interact with the API**
160
+
161
+ Here are a couple of examples using `curl`:
162
+
163
+ ```bash
164
+ # Set a value in the 'app_config' dictionary
165
+ curl -X PUT http://127.0.0.1:8000/dicts/app_config/api_key
166
+ -H "Content-Type: application/json"
167
+ -d '"your-secret-api-key"'
168
+
169
+ # Get the value back
170
+ curl http://127.0.0.1:8000/dicts/app_config/api_key
171
+ # Output: "your-secret-api-key"
172
+ ```
173
+
174
+ ### Command-Line Client
175
+
176
+ The CLI client allows you to call any BeaverDB method directly from your terminal.
177
+
178
+ ```bash
179
+ # Set a value in a dictionary
180
+ beaver client --database data.db dict app_config set theme light
181
+
182
+ # Get the value back
183
+ beaver client --database data.db dict app_config get theme
184
+
185
+ # Push an item to a list
186
+ beaver client --database data.db list daily_tasks push "Review PRs"
187
+ ```
188
+
134
189
  ## Things You Can Build with Beaver
135
190
 
136
191
  Here are a few ideas to inspire your next project, showcasing how to combine Beaver's features to build powerful local applications.
@@ -282,8 +337,10 @@ For enhanced data integrity and a better developer experience, BeaverDB supports
282
337
 
283
338
  This feature is designed to be flexible and works seamlessly with two kinds of models:
284
339
 
285
- * **Pydantic Models**: If you're already using Pydantic, your `BaseModel` classes will work out of the box.
286
- * **Lightweight `beaver.Model`**: For a zero-dependency solution, you can inherit from the built-in `beaver.Model` class, which is a standard Python class with serialization methods automatically included.
340
+ - **Pydantic Models**: If you're already using Pydantic, your `BaseModel` classes will work out of the box.
341
+
342
+ - **Lightweight `beaver.Model`**: For a zero-dependency solution, you can inherit from the built-in `beaver.Model` class, which is a standard Python class with serialization methods automatically included.
343
+
287
344
 
288
345
  Here’s a quick example of how to use it:
289
346
 
@@ -305,7 +362,8 @@ users["alice"] = User(name="Alice", email="alice@example.com")
305
362
 
306
363
  # The retrieved object is a proper instance of the User class
307
364
  retrieved_user = users["alice"]
308
- print(f"Retrieved: {retrieved_user.name}") # Your editor will provide autocompletion here
365
+ # Your editor will provide autocompletion here
366
+ print(f"Retrieved: {retrieved_user.name}")
309
367
  ```
310
368
 
311
369
  In the same way you can have typed message payloads in `db.channel`, typed metadata in `db.blobs`, and custom document types in `db.collection`, as well as custom types in lists and queues.
@@ -316,25 +374,25 @@ Basically everywhere you can store or get some object in BeaverDB, you can use a
316
374
 
317
375
  For more in-depth examples, check out the scripts in the `examples/` directory:
318
376
 
319
- - [`async_pubsub.py`](examples/async_pubsub.py): A demonstration of the asynchronous wrapper for the publish/subscribe system.
320
- - [`blobs.py`](examples/blobs.py): Demonstrates how to store and retrieve binary data in the database.
321
- - [`cache.py`](examples/cache.py): A practical example of using a dictionary with TTL as a cache for API calls.
322
- - [`fts.py`](examples/fts.py): A detailed look at full-text search, including targeted searches on specific metadata fields.
323
- - [`fuzzy.py`](examples/fuzzy.py): Demonstrates fuzzy search capabilities for text search.
324
- - [`general_test.py`](examples/general_test.py): A general-purpose test to run all operations randomly which allows testing long-running processes and synchronicity issues.
325
- - [`graph.py`](examples/graph.py): Shows how to create relationships between documents and perform multi-hop graph traversals.
326
- - [`kvstore.py`](examples/kvstore.py): A comprehensive demo of the namespaced dictionary feature.
327
- - [`list.py`](examples/list.py): Shows the full capabilities of the persistent list, including slicing and in-place updates.
328
- - [`logs.py`](examples/logs.py): A short example showing how to build a realtime dashboard with the logging feature.
329
- - [`pqueue.py`](examples/pqueue.py): A practical example of using the persistent priority queue for task management.
330
- - [`producer_consumer.py`](examples/producer_consumer.py): A demonstration of the distributed task queue system in a multi-process environment.
331
- - [`publisher.py`](examples/publisher.py) and [`subscriber.py`](examples/subscriber.py): A pair of examples demonstrating inter-process message passing with the publish/subscribe system.
332
- - [`pubsub.py`](examples/pubsub.py): A demonstration of the synchronous, thread-safe publish/subscribe system in a single process.
333
- - [`rerank.py`](examples/rerank.py): Shows how to combine results from vector and text search for more refined results.
334
- - [`stress_vectors.py`](examples/stress_vectors.py): A stress test for the vector search functionality.
335
- - [`textual_chat.py`](examples/textual_chat.py): A chat application built with `textual` and `beaver` to illustrate the use of several primitives (lists, dicts, and channels) at the same time.
336
- - [`type_hints.py`](examples/type_hints.py): Shows how to use type hints with `beaver` to get better IDE support and type safety.
337
- - [`vector.py`](examples/vector.py): Demonstrates how to index and search vector embeddings, including upserts.
377
+ - [`async_pubsub.py`](examples/async_pubsub.py): A demonstration of the asynchronous wrapper for the publish/subscribe system.
378
+ - [`blobs.py`](examples/blobs.py): Demonstrates how to store and retrieve binary data in the database.
379
+ - [`cache.py`](examples/cache.py): A practical example of using a dictionary with TTL as a cache for API calls.
380
+ - [`fts.py`](examples/fts.py): A detailed look at full-text search, including targeted searches on specific metadata fields.
381
+ - [`fuzzy.py`](examples/fuzzy.py): Demonstrates fuzzy search capabilities for text search.
382
+ - [`general_test.py`](examples/general_test.py): A general-purpose test to run all operations randomly which allows testing long-running processes and synchronicity issues.
383
+ - [`graph.py`](examples/graph.py): Shows how to create relationships between documents and perform multi-hop graph traversals.
384
+ - [`kvstore.py`](examples/kvstore.py): A comprehensive demo of the namespaced dictionary feature.
385
+ - [`list.py`](examples/list.py): Shows the full capabilities of the persistent list, including slicing and in-place updates.
386
+ - [`logs.py`](examples/logs.py): A short example showing how to build a realtime dashboard with the logging feature.
387
+ - [`pqueue.py`](examples/pqueue.py): A practical example of using the persistent priority queue for task management.
388
+ - [`producer_consumer.py`](examples/producer_consumer.py): A demonstration of the distributed task queue system in a multi-process environment.
389
+ - [`publisher.py`](examples/publisher.p) and [`subscriber.py`](examples/subscriber.py): A pair of examples demonstrating inter-process message passing with the publish/subscribe system.
390
+ - [`pubsub.py`](examples/pubsub.py): A demonstration of the synchronous, thread-safe publish/subscribe system in a single process.
391
+ - [`rerank.py`](examples/rerank.py): Shows how to combine results from vector and text search for more refined results.
392
+ - [`stress_vectors.py`](examples/stress_vectors.py): A stress test for the vector search functionality.
393
+ - [`textual_chat.py`](examples/textual_chat.py): A chat application built with `textual` and `beaver` to illustrate the use of several primitives (lists, dicts, and channels) at the same time.
394
+ - [`type_hints.py`](examples/type_hints.py): Shows how to use type hints with `beaver` to get better IDE support and type safety.
395
+ - [`vector.py`](examples/vector.py): Demonstrates how to index and search vector embeddings, including upserts.
338
396
 
339
397
  ## Roadmap
340
398
 
@@ -342,7 +400,7 @@ For more in-depth examples, check out the scripts in the `examples/` directory:
342
400
 
343
401
  These are some of the features and improvements planned for future releases:
344
402
 
345
- - **Async API**: Extend the async support with on-demand wrappers for all features besides channels.
403
+ - **Async API**: Extend the async support with on-demand wrappers for all features besides channels.
346
404
 
347
405
  Check out the [roadmap](roadmap.md) for a detailed list of upcoming features and design ideas.
348
406
 
@@ -350,4 +408,4 @@ If you think of something that would make `beaver` more useful for your use case
350
408
 
351
409
  ## License
352
410
 
353
- This project is licensed under the MIT License.
411
+ This project is licensed under the MIT License.
@@ -17,7 +17,7 @@ A fast, single-file, multi-modal database for Python, built with the standard `s
17
17
 
18
18
  `beaver` is built with a minimalistic philosophy for small, local use cases where a full-blown database server would be overkill.
19
19
 
20
- - **Minimalistic**: The core library has zero external dependencies. Vector search capabilities, which require `numpy` and `faiss-cpu`, are available as an optional feature.
20
+ - **Minimalistic**: The core library has zero external dependencies. Vector search, the REST server, and the CLI, which require external libraries, are available as optional features.
21
21
  - **Schemaless**: Flexible data storage without rigid schemas across all modalities.
22
22
  - **Synchronous, Multi-Process, and Thread-Safe**: Designed for simplicity and safety in multi-threaded and multi-process environments.
23
23
  - **Built for Local Applications**: Perfect for local AI tools, RAG prototypes, chatbots, and desktop utilities that need persistent, structured data without network overhead.
@@ -36,6 +36,8 @@ A fast, single-file, multi-modal database for Python, built with the standard `s
36
36
  - **Full-Text and Fuzzy Search**: Automatically index and search through document metadata using SQLite's powerful FTS5 engine, enhanced with optional fuzzy search for typo-tolerant matching.
37
37
  - **Knowledge Graph**: Create relationships between documents and traverse the graph to find neighbors or perform multi-hop walks.
38
38
  - **Single-File & Portable**: All data is stored in a single SQLite file, making it incredibly easy to move, back up, or embed in your application.
39
+ - **Built-in REST API Server (Optional)**: Instantly serve your database over a RESTful API with automatic OpenAPI documentation using FastAPI.
40
+ - **Full-Featured CLI Client (Optional)**: Interact with your database directly from the command line for administrative tasks and data exploration.
39
41
  - **Optional Type-Safety:** Although the database is schemaless, you can use a minimalistic typing system for automatic serialization and deserialization that is Pydantic-compatible out of the box.
40
42
 
41
43
  ## How Beaver is Implemented
@@ -54,7 +56,6 @@ The vector store in BeaverDB is designed for high performance and reliability, u
54
56
 
55
57
  This hybrid approach allows BeaverDB to provide a vector search experience that is both fast and durable, without sacrificing the single-file, embedded philosophy of the library.
56
58
 
57
-
58
59
  ## Installation
59
60
 
60
61
  Install the core, dependency-free library:
@@ -63,10 +64,17 @@ Install the core, dependency-free library:
63
64
  pip install beaver-db
64
65
  ```
65
66
 
66
- If you want vector search capabilities, install the `faiss` extra:
67
+ To include optional features, you can install them as extras:
67
68
 
68
69
  ```bash
70
+ # For vector search capabilities
69
71
  pip install "beaver-db[faiss]"
72
+
73
+ # For the REST API server and CLI
74
+ pip install "beaver-db[server,cli]"
75
+
76
+ # To install all optional features at once
77
+ pip install "beaver-db[full]"
70
78
  ```
71
79
 
72
80
  ## Quickstart
@@ -106,6 +114,53 @@ print(f"FTS Result: '{top_doc.content}'")
106
114
  db.close()
107
115
  ```
108
116
 
117
+ ## Built-in Server and CLI
118
+
119
+ Beaver comes with a built-in REST API server and a full-featured command-line client, allowing you to interact with your database without writing any code.
120
+
121
+ ### REST API Server
122
+
123
+ You can instantly expose all of your database's functionality over a RESTful API. This is perfect for building quick prototypes, microservices, or for interacting with your data from other languages.
124
+
125
+ **1. Start the server**
126
+
127
+ ```bash
128
+ # Start the server for your database file
129
+ beaver serve --database data.db --port 8000
130
+ ```
131
+
132
+ This starts a `FastAPI` server. You can now access the interactive API documentation at `http://127.0.0.1:8000/docs`.
133
+
134
+ **2. Interact with the API**
135
+
136
+ Here are a couple of examples using `curl`:
137
+
138
+ ```bash
139
+ # Set a value in the 'app_config' dictionary
140
+ curl -X PUT http://127.0.0.1:8000/dicts/app_config/api_key
141
+ -H "Content-Type: application/json"
142
+ -d '"your-secret-api-key"'
143
+
144
+ # Get the value back
145
+ curl http://127.0.0.1:8000/dicts/app_config/api_key
146
+ # Output: "your-secret-api-key"
147
+ ```
148
+
149
+ ### Command-Line Client
150
+
151
+ The CLI client allows you to call any BeaverDB method directly from your terminal.
152
+
153
+ ```bash
154
+ # Set a value in a dictionary
155
+ beaver client --database data.db dict app_config set theme light
156
+
157
+ # Get the value back
158
+ beaver client --database data.db dict app_config get theme
159
+
160
+ # Push an item to a list
161
+ beaver client --database data.db list daily_tasks push "Review PRs"
162
+ ```
163
+
109
164
  ## Things You Can Build with Beaver
110
165
 
111
166
  Here are a few ideas to inspire your next project, showcasing how to combine Beaver's features to build powerful local applications.
@@ -257,8 +312,10 @@ For enhanced data integrity and a better developer experience, BeaverDB supports
257
312
 
258
313
  This feature is designed to be flexible and works seamlessly with two kinds of models:
259
314
 
260
- * **Pydantic Models**: If you're already using Pydantic, your `BaseModel` classes will work out of the box.
261
- * **Lightweight `beaver.Model`**: For a zero-dependency solution, you can inherit from the built-in `beaver.Model` class, which is a standard Python class with serialization methods automatically included.
315
+ - **Pydantic Models**: If you're already using Pydantic, your `BaseModel` classes will work out of the box.
316
+
317
+ - **Lightweight `beaver.Model`**: For a zero-dependency solution, you can inherit from the built-in `beaver.Model` class, which is a standard Python class with serialization methods automatically included.
318
+
262
319
 
263
320
  Here’s a quick example of how to use it:
264
321
 
@@ -280,7 +337,8 @@ users["alice"] = User(name="Alice", email="alice@example.com")
280
337
 
281
338
  # The retrieved object is a proper instance of the User class
282
339
  retrieved_user = users["alice"]
283
- print(f"Retrieved: {retrieved_user.name}") # Your editor will provide autocompletion here
340
+ # Your editor will provide autocompletion here
341
+ print(f"Retrieved: {retrieved_user.name}")
284
342
  ```
285
343
 
286
344
  In the same way you can have typed message payloads in `db.channel`, typed metadata in `db.blobs`, and custom document types in `db.collection`, as well as custom types in lists and queues.
@@ -291,25 +349,25 @@ Basically everywhere you can store or get some object in BeaverDB, you can use a
291
349
 
292
350
  For more in-depth examples, check out the scripts in the `examples/` directory:
293
351
 
294
- - [`async_pubsub.py`](examples/async_pubsub.py): A demonstration of the asynchronous wrapper for the publish/subscribe system.
295
- - [`blobs.py`](examples/blobs.py): Demonstrates how to store and retrieve binary data in the database.
296
- - [`cache.py`](examples/cache.py): A practical example of using a dictionary with TTL as a cache for API calls.
297
- - [`fts.py`](examples/fts.py): A detailed look at full-text search, including targeted searches on specific metadata fields.
298
- - [`fuzzy.py`](examples/fuzzy.py): Demonstrates fuzzy search capabilities for text search.
299
- - [`general_test.py`](examples/general_test.py): A general-purpose test to run all operations randomly which allows testing long-running processes and synchronicity issues.
300
- - [`graph.py`](examples/graph.py): Shows how to create relationships between documents and perform multi-hop graph traversals.
301
- - [`kvstore.py`](examples/kvstore.py): A comprehensive demo of the namespaced dictionary feature.
302
- - [`list.py`](examples/list.py): Shows the full capabilities of the persistent list, including slicing and in-place updates.
303
- - [`logs.py`](examples/logs.py): A short example showing how to build a realtime dashboard with the logging feature.
304
- - [`pqueue.py`](examples/pqueue.py): A practical example of using the persistent priority queue for task management.
305
- - [`producer_consumer.py`](examples/producer_consumer.py): A demonstration of the distributed task queue system in a multi-process environment.
306
- - [`publisher.py`](examples/publisher.py) and [`subscriber.py`](examples/subscriber.py): A pair of examples demonstrating inter-process message passing with the publish/subscribe system.
307
- - [`pubsub.py`](examples/pubsub.py): A demonstration of the synchronous, thread-safe publish/subscribe system in a single process.
308
- - [`rerank.py`](examples/rerank.py): Shows how to combine results from vector and text search for more refined results.
309
- - [`stress_vectors.py`](examples/stress_vectors.py): A stress test for the vector search functionality.
310
- - [`textual_chat.py`](examples/textual_chat.py): A chat application built with `textual` and `beaver` to illustrate the use of several primitives (lists, dicts, and channels) at the same time.
311
- - [`type_hints.py`](examples/type_hints.py): Shows how to use type hints with `beaver` to get better IDE support and type safety.
312
- - [`vector.py`](examples/vector.py): Demonstrates how to index and search vector embeddings, including upserts.
352
+ - [`async_pubsub.py`](examples/async_pubsub.py): A demonstration of the asynchronous wrapper for the publish/subscribe system.
353
+ - [`blobs.py`](examples/blobs.py): Demonstrates how to store and retrieve binary data in the database.
354
+ - [`cache.py`](examples/cache.py): A practical example of using a dictionary with TTL as a cache for API calls.
355
+ - [`fts.py`](examples/fts.py): A detailed look at full-text search, including targeted searches on specific metadata fields.
356
+ - [`fuzzy.py`](examples/fuzzy.py): Demonstrates fuzzy search capabilities for text search.
357
+ - [`general_test.py`](examples/general_test.py): A general-purpose test to run all operations randomly which allows testing long-running processes and synchronicity issues.
358
+ - [`graph.py`](examples/graph.py): Shows how to create relationships between documents and perform multi-hop graph traversals.
359
+ - [`kvstore.py`](examples/kvstore.py): A comprehensive demo of the namespaced dictionary feature.
360
+ - [`list.py`](examples/list.py): Shows the full capabilities of the persistent list, including slicing and in-place updates.
361
+ - [`logs.py`](examples/logs.py): A short example showing how to build a realtime dashboard with the logging feature.
362
+ - [`pqueue.py`](examples/pqueue.py): A practical example of using the persistent priority queue for task management.
363
+ - [`producer_consumer.py`](examples/producer_consumer.py): A demonstration of the distributed task queue system in a multi-process environment.
364
+ - [`publisher.py`](examples/publisher.p) and [`subscriber.py`](examples/subscriber.py): A pair of examples demonstrating inter-process message passing with the publish/subscribe system.
365
+ - [`pubsub.py`](examples/pubsub.py): A demonstration of the synchronous, thread-safe publish/subscribe system in a single process.
366
+ - [`rerank.py`](examples/rerank.py): Shows how to combine results from vector and text search for more refined results.
367
+ - [`stress_vectors.py`](examples/stress_vectors.py): A stress test for the vector search functionality.
368
+ - [`textual_chat.py`](examples/textual_chat.py): A chat application built with `textual` and `beaver` to illustrate the use of several primitives (lists, dicts, and channels) at the same time.
369
+ - [`type_hints.py`](examples/type_hints.py): Shows how to use type hints with `beaver` to get better IDE support and type safety.
370
+ - [`vector.py`](examples/vector.py): Demonstrates how to index and search vector embeddings, including upserts.
313
371
 
314
372
  ## Roadmap
315
373
 
@@ -317,7 +375,7 @@ For more in-depth examples, check out the scripts in the `examples/` directory:
317
375
 
318
376
  These are some of the features and improvements planned for future releases:
319
377
 
320
- - **Async API**: Extend the async support with on-demand wrappers for all features besides channels.
378
+ - **Async API**: Extend the async support with on-demand wrappers for all features besides channels.
321
379
 
322
380
  Check out the [roadmap](roadmap.md) for a detailed list of upcoming features and design ideas.
323
381
 
@@ -325,4 +383,4 @@ If you think of something that would make `beaver` more useful for your use case
325
383
 
326
384
  ## License
327
385
 
328
- This project is licensed under the MIT License.
386
+ This project is licensed under the MIT License.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "beaver-db"
3
- version = "0.17.5"
3
+ version = "0.17.6"
4
4
  description = "Fast, embedded, and multi-modal DB based on SQLite for AI-powered applications."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes