beaver-db 0.17.1__tar.gz → 0.17.3__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 (45) hide show
  1. {beaver_db-0.17.1 → beaver_db-0.17.3}/PKG-INFO +3 -2
  2. beaver_db-0.17.3/beaver/cli.py +66 -0
  3. {beaver_db-0.17.1 → beaver_db-0.17.3}/pyproject.toml +4 -4
  4. {beaver_db-0.17.1 → beaver_db-0.17.3}/uv.lock +46 -15
  5. beaver_db-0.17.1/beaver/cli.py +0 -34
  6. {beaver_db-0.17.1 → beaver_db-0.17.3}/.gitignore +0 -0
  7. {beaver_db-0.17.1 → beaver_db-0.17.3}/.python-version +0 -0
  8. {beaver_db-0.17.1 → beaver_db-0.17.3}/LICENSE +0 -0
  9. {beaver_db-0.17.1 → beaver_db-0.17.3}/README.md +0 -0
  10. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/__init__.py +0 -0
  11. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/blobs.py +0 -0
  12. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/channels.py +0 -0
  13. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/collections.py +0 -0
  14. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/core.py +0 -0
  15. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/dicts.py +0 -0
  16. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/lists.py +0 -0
  17. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/logs.py +0 -0
  18. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/queues.py +0 -0
  19. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/server.py +0 -0
  20. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/types.py +0 -0
  21. {beaver_db-0.17.1 → beaver_db-0.17.3}/beaver/vectors.py +0 -0
  22. {beaver_db-0.17.1 → beaver_db-0.17.3}/design.md +0 -0
  23. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/async_pubsub.py +0 -0
  24. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/blobs.py +0 -0
  25. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/cache.py +0 -0
  26. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/fts.py +0 -0
  27. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/fuzzy.py +0 -0
  28. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/general_test.py +0 -0
  29. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/graph.py +0 -0
  30. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/kvstore.py +0 -0
  31. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/list.py +0 -0
  32. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/logs.py +0 -0
  33. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/pqueue.py +0 -0
  34. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/producer_consumer.py +0 -0
  35. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/publisher.py +0 -0
  36. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/pubsub.py +0 -0
  37. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/rerank.py +0 -0
  38. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/stress_vectors.py +0 -0
  39. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/subscriber.py +0 -0
  40. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/textual_chat.css +0 -0
  41. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/textual_chat.py +0 -0
  42. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/type_hints.py +0 -0
  43. {beaver_db-0.17.1 → beaver_db-0.17.3}/examples/vector.py +0 -0
  44. {beaver_db-0.17.1 → beaver_db-0.17.3}/makefile +0 -0
  45. {beaver_db-0.17.1 → beaver_db-0.17.3}/roadmap.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beaver-db
3
- Version: 0.17.1
3
+ Version: 0.17.3
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
@@ -10,14 +10,15 @@ Classifier: Topic :: Database
10
10
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
11
11
  Requires-Python: >=3.13
12
12
  Provides-Extra: cli
13
+ Requires-Dist: fire[cli]>=0.7.1; extra == 'cli'
13
14
  Requires-Dist: typer>=0.19.2; extra == 'cli'
14
15
  Provides-Extra: full
15
16
  Requires-Dist: faiss-cpu>=1.12.0; extra == 'full'
16
17
  Requires-Dist: fastapi[standard]>=0.118.0; extra == 'full'
18
+ Requires-Dist: fire[cli]>=0.7.1; extra == 'full'
17
19
  Requires-Dist: typer>=0.19.2; extra == 'full'
18
20
  Provides-Extra: server
19
21
  Requires-Dist: fastapi[standard]>=0.118.0; extra == 'server'
20
- Requires-Dist: typer>=0.19.2; extra == 'server'
21
22
  Provides-Extra: vector
22
23
  Requires-Dist: faiss-cpu>=1.12.0; extra == 'vector'
23
24
  Description-Content-Type: text/markdown
@@ -0,0 +1,66 @@
1
+ from typing import Annotated
2
+ import typer
3
+ import rich
4
+
5
+ app = typer.Typer()
6
+
7
+
8
+ @app.command()
9
+ def serve(
10
+ database: str = typer.Option(
11
+ "beaver.db", "--database", "-d", help="Path to the database file."
12
+ ),
13
+ host: str = typer.Option(
14
+ "127.0.0.1", "--host", "-h", help="The host to bind the server to."
15
+ ),
16
+ port: int = typer.Option(
17
+ 8000, "--port", "-p", help="The port to run the server on."
18
+ ),
19
+ ):
20
+ """
21
+ Starts a RESTful API server for a BeaverDB instance.
22
+ """
23
+ try:
24
+ from .server import serve as run_server
25
+ except ImportError as e:
26
+ rich.print(f"[red]Error: {e}[/]")
27
+ rich.print('[yellow]Please install the server dependencies with `pip install "beaver-db[server]"`[/]')
28
+ raise typer.Exit(code=1)
29
+
30
+ rich.print(f"[blue]Starting server for database at '{database}' on http://{host}:{port}[/]")
31
+ run_server(db_path=database, host=host, port=port)
32
+
33
+
34
+ @app.command(
35
+ context_settings={"allow_extra_args": True, "ignore_unknown_options": True}
36
+ )
37
+ def client(
38
+ ctx: typer.Context,
39
+ database: Annotated[
40
+ str, typer.Option(help="The path to the BeaverDB database file.")
41
+ ] = "beaver.db",
42
+ ):
43
+ """
44
+ Provides a command-line client to interact with the database.
45
+
46
+ All arguments after 'client' are passed directly to the database object.
47
+ Example: beaver client --database my.db dict my_dict get my_key
48
+ """
49
+ try:
50
+ import fire
51
+ from .core import BeaverDB
52
+ except ImportError:
53
+ print(
54
+ "Error: To use the client command, please install the CLI dependencies:\n"
55
+ 'pip install "beaver-db[cli]"'
56
+ )
57
+ raise typer.Exit(code=1)
58
+
59
+ db = BeaverDB(database)
60
+ # The arguments for fire are passed via ctx.args, which captures everything
61
+ # after the 'client' command.
62
+ fire.Fire(db, command=ctx.args)
63
+
64
+
65
+ if __name__ == "__main__":
66
+ app()
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "beaver-db"
3
- version = "0.17.1"
3
+ version = "0.17.3"
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"
@@ -24,9 +24,9 @@ packages = ["beaver"]
24
24
 
25
25
  [project.optional-dependencies]
26
26
  vector = ["faiss-cpu>=1.12.0"]
27
- server = ["fastapi[standard]>=0.118.0", "typer>=0.19.2"]
28
- cli = ["typer>=0.19.2"]
29
- full = ["faiss-cpu>=1.12.0", "fastapi[standard]>=0.118.0", "typer>=0.19.2"]
27
+ server = ["fastapi[standard]>=0.118.0"]
28
+ cli = ["typer>=0.19.2", "fire[cli]>=0.7.1"]
29
+ full = ["beaver-db[server]", "beaver-db[vector]", "beaver-db[cli]"]
30
30
 
31
31
  [dependency-groups]
32
32
  dev = ["textual>=6.1.0"]
@@ -25,36 +25,46 @@ wheels = [
25
25
 
26
26
  [[package]]
27
27
  name = "beaver-db"
28
- version = "0.17.0"
28
+ version = "0.17.2"
29
29
  source = { editable = "." }
30
-
31
- [package.optional-dependencies]
32
- faiss = [
33
- { name = "faiss-cpu" },
30
+ dependencies = [
31
+ { name = "fire" },
34
32
  ]
35
33
 
36
- [package.dev-dependencies]
34
+ [package.optional-dependencies]
37
35
  cli = [
38
36
  { name = "typer" },
39
37
  ]
40
- dev = [
41
- { name = "textual" },
38
+ full = [
39
+ { name = "faiss-cpu" },
40
+ { name = "fastapi", extra = ["standard"] },
41
+ { name = "typer" },
42
42
  ]
43
43
  server = [
44
44
  { name = "fastapi", extra = ["standard"] },
45
- { name = "typer" },
45
+ ]
46
+ vector = [
47
+ { name = "faiss-cpu" },
48
+ ]
49
+
50
+ [package.dev-dependencies]
51
+ dev = [
52
+ { name = "textual" },
46
53
  ]
47
54
 
48
55
  [package.metadata]
49
- requires-dist = [{ name = "faiss-cpu", marker = "extra == 'faiss'", specifier = ">=1.12.0" }]
56
+ requires-dist = [
57
+ { name = "beaver-db", extras = ["cli"], marker = "extra == 'full'" },
58
+ { name = "beaver-db", extras = ["server"], marker = "extra == 'full'" },
59
+ { name = "beaver-db", extras = ["vector"], marker = "extra == 'full'" },
60
+ { name = "faiss-cpu", marker = "extra == 'vector'", specifier = ">=1.12.0" },
61
+ { name = "fastapi", extras = ["standard"], marker = "extra == 'server'", specifier = ">=0.118.0" },
62
+ { name = "fire", extras = ["cli"], specifier = ">=0.7.1" },
63
+ { name = "typer", marker = "extra == 'cli'", specifier = ">=0.19.2" },
64
+ ]
50
65
 
51
66
  [package.metadata.requires-dev]
52
- cli = [{ name = "typer", specifier = ">=0.19.2" }]
53
67
  dev = [{ name = "textual", specifier = ">=6.1.0" }]
54
- server = [
55
- { name = "fastapi", extras = ["standard"], specifier = ">=0.118.0" },
56
- { name = "typer", specifier = ">=0.19.2" },
57
- ]
58
68
 
59
69
  [[package]]
60
70
  name = "certifi"
@@ -206,6 +216,18 @@ wheels = [
206
216
  { url = "https://files.pythonhosted.org/packages/3b/1f/5fa06afce6e4bb7fc7e54651236bad3b849340480967c54cbd7c13563c3f/fastapi_cloud_cli-0.2.1-py3-none-any.whl", hash = "sha256:245447bfb17b01ae5f7bc15dec0833bce85381ecf34532e8fa4bcf279ad1c361", size = 19894 },
207
217
  ]
208
218
 
219
+ [[package]]
220
+ name = "fire"
221
+ version = "0.7.1"
222
+ source = { registry = "https://pypi.org/simple" }
223
+ dependencies = [
224
+ { name = "termcolor" },
225
+ ]
226
+ sdist = { url = "https://files.pythonhosted.org/packages/c0/00/f8d10588d2019d6d6452653def1ee807353b21983db48550318424b5ff18/fire-0.7.1.tar.gz", hash = "sha256:3b208f05c736de98fb343310d090dcc4d8c78b2a89ea4f32b837c586270a9cbf", size = 88720 }
227
+ wheels = [
228
+ { url = "https://files.pythonhosted.org/packages/e5/4c/93d0f85318da65923e4b91c1c2ff03d8a458cbefebe3bc612a6693c7906d/fire-0.7.1-py3-none-any.whl", hash = "sha256:e43fd8a5033a9001e7e2973bab96070694b9f12f2e0ecf96d4683971b5ab1882", size = 115945 },
229
+ ]
230
+
209
231
  [[package]]
210
232
  name = "h11"
211
233
  version = "0.16.0"
@@ -667,6 +689,15 @@ wheels = [
667
689
  { url = "https://files.pythonhosted.org/packages/be/72/2db2f49247d0a18b4f1bb9a5a39a0162869acf235f3a96418363947b3d46/starlette-0.48.0-py3-none-any.whl", hash = "sha256:0764ca97b097582558ecb498132ed0c7d942f233f365b86ba37770e026510659", size = 73736 },
668
690
  ]
669
691
 
692
+ [[package]]
693
+ name = "termcolor"
694
+ version = "3.1.0"
695
+ source = { registry = "https://pypi.org/simple" }
696
+ sdist = { url = "https://files.pythonhosted.org/packages/ca/6c/3d75c196ac07ac8749600b60b03f4f6094d54e132c4d94ebac6ee0e0add0/termcolor-3.1.0.tar.gz", hash = "sha256:6a6dd7fbee581909eeec6a756cff1d7f7c376063b14e4a298dc4980309e55970", size = 14324 }
697
+ wheels = [
698
+ { url = "https://files.pythonhosted.org/packages/4f/bd/de8d508070629b6d84a30d01d57e4a65c69aa7f5abe7560b8fad3b50ea59/termcolor-3.1.0-py3-none-any.whl", hash = "sha256:591dd26b5c2ce03b9e43f391264626557873ce1d379019786f99b0c2bee140aa", size = 7684 },
699
+ ]
700
+
670
701
  [[package]]
671
702
  name = "textual"
672
703
  version = "6.1.0"
@@ -1,34 +0,0 @@
1
- import typer
2
- import rich
3
-
4
- app = typer.Typer()
5
-
6
-
7
- @app.command()
8
- def serve(
9
- database: str = typer.Option(
10
- "beaver.db", "--database", "-d", help="Path to the database file."
11
- ),
12
- host: str = typer.Option(
13
- "127.0.0.1", "--host", "-h", help="The host to bind the server to."
14
- ),
15
- port: int = typer.Option(
16
- 8000, "--port", "-p", help="The port to run the server on."
17
- ),
18
- ):
19
- """
20
- Starts a RESTful API server for a BeaverDB instance.
21
- """
22
- try:
23
- from .server import serve as run_server
24
- except ImportError as e:
25
- rich.print(f"[red]Error: {e}[/]")
26
- rich.print('[yellow]Please install the server dependencies with `pip install "beaver-db[server]"`[/]')
27
- raise typer.Exit(code=1)
28
-
29
- rich.print(f"[blue]Starting server for database at '{database}' on http://{host}:{port}[/]")
30
- run_server(db_path=database, host=host, port=port)
31
-
32
-
33
- if __name__ == "__main__":
34
- app()
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