dirsql 0.3.77__tar.gz → 0.3.78__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 (137) hide show
  1. {dirsql-0.3.77 → dirsql-0.3.78}/Cargo.lock +1 -1
  2. {dirsql-0.3.77 → dirsql-0.3.78}/PKG-INFO +1 -1
  3. {dirsql-0.3.77 → dirsql-0.3.78}/dirsql/_async.py +20 -6
  4. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/Cargo.toml +1 -1
  5. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/e2e-attestation.json +2 -2
  6. {dirsql-0.3.77 → dirsql-0.3.78}/Cargo.toml +0 -0
  7. {dirsql-0.3.77 → dirsql-0.3.78}/README.md +0 -0
  8. {dirsql-0.3.77 → dirsql-0.3.78}/dirsql/__init__.py +0 -0
  9. {dirsql-0.3.77 → dirsql-0.3.78}/dirsql/_dirsql.pyi +0 -0
  10. {dirsql-0.3.77 → dirsql-0.3.78}/dirsql/cli/__init__.py +0 -0
  11. {dirsql-0.3.77 → dirsql-0.3.78}/dirsql/cli/binary_path.py +0 -0
  12. {dirsql-0.3.77 → dirsql-0.3.78}/dirsql/cli/is_windows.py +0 -0
  13. {dirsql-0.3.77 → dirsql-0.3.78}/dirsql/cli/main.py +0 -0
  14. {dirsql-0.3.77 → dirsql-0.3.78}/dirsql/cli/resolve_config_extensions.py +0 -0
  15. {dirsql-0.3.77 → dirsql-0.3.78}/dirsql/py.typed +0 -0
  16. {dirsql-0.3.77 → dirsql-0.3.78}/dirsql/resolve_config_extensions.py +0 -0
  17. {dirsql-0.3.77 → dirsql-0.3.78}/dirsql/resolve_extension.py +0 -0
  18. {dirsql-0.3.77 → dirsql-0.3.78}/docs/.claude/CLAUDE.md +0 -0
  19. {dirsql-0.3.77 → dirsql-0.3.78}/docs/.vitepress/config.ts +0 -0
  20. {dirsql-0.3.77 → dirsql-0.3.78}/docs/.vitepress/theme/index.ts +0 -0
  21. {dirsql-0.3.77 → dirsql-0.3.78}/docs/.vitepress/theme/lang.ts +0 -0
  22. {dirsql-0.3.77 → dirsql-0.3.78}/docs/AGENTS.md +0 -0
  23. {dirsql-0.3.77 → dirsql-0.3.78}/docs/explanation.md +0 -0
  24. {dirsql-0.3.77 → dirsql-0.3.78}/docs/getting-started.md +0 -0
  25. {dirsql-0.3.77 → dirsql-0.3.78}/docs/howto/columns-from-paths.md +0 -0
  26. {dirsql-0.3.77 → dirsql-0.3.78}/docs/howto/define-tables.md +0 -0
  27. {dirsql-0.3.77 → dirsql-0.3.78}/docs/howto/embed.md +0 -0
  28. {dirsql-0.3.77 → dirsql-0.3.78}/docs/howto/extract-from-contents.md +0 -0
  29. {dirsql-0.3.77 → dirsql-0.3.78}/docs/howto/load-extension.md +0 -0
  30. {dirsql-0.3.77 → dirsql-0.3.78}/docs/howto/persist.md +0 -0
  31. {dirsql-0.3.77 → dirsql-0.3.78}/docs/howto/react-to-changes.md +0 -0
  32. {dirsql-0.3.77 → dirsql-0.3.78}/docs/howto/search-by-meaning.md +0 -0
  33. {dirsql-0.3.77 → dirsql-0.3.78}/docs/howto/skip-files.md +0 -0
  34. {dirsql-0.3.77 → dirsql-0.3.78}/docs/index.md +0 -0
  35. {dirsql-0.3.77 → dirsql-0.3.78}/docs/migrations.md +0 -0
  36. {dirsql-0.3.77 → dirsql-0.3.78}/docs/package.json +0 -0
  37. {dirsql-0.3.77 → dirsql-0.3.78}/docs/playwright.config.ts +0 -0
  38. {dirsql-0.3.77 → dirsql-0.3.78}/docs/pnpm-lock.yaml +0 -0
  39. {dirsql-0.3.77 → dirsql-0.3.78}/docs/pnpm-workspace.yaml +0 -0
  40. {dirsql-0.3.77 → dirsql-0.3.78}/docs/reference/cli.md +0 -0
  41. {dirsql-0.3.77 → dirsql-0.3.78}/docs/reference/columns.md +0 -0
  42. {dirsql-0.3.77 → dirsql-0.3.78}/docs/reference/config.md +0 -0
  43. {dirsql-0.3.77 → dirsql-0.3.78}/docs/reference/hooks.md +0 -0
  44. {dirsql-0.3.77 → dirsql-0.3.78}/docs/reference/http-api.md +0 -0
  45. {dirsql-0.3.77 → dirsql-0.3.78}/docs/reference/sdk.md +0 -0
  46. {dirsql-0.3.77 → dirsql-0.3.78}/docs/tests/integration/home.spec.ts +0 -0
  47. {dirsql-0.3.77 → dirsql-0.3.78}/docs/tests/integration/language-flag.spec.ts +0 -0
  48. {dirsql-0.3.77 → dirsql-0.3.78}/docs/tests/integration/sidebar.spec.ts +0 -0
  49. {dirsql-0.3.77 → dirsql-0.3.78}/docs/tests/unit/config.test.ts +0 -0
  50. {dirsql-0.3.77 → dirsql-0.3.78}/docs/tests/unit/lang.test.ts +0 -0
  51. {dirsql-0.3.77 → dirsql-0.3.78}/docs/vitest.config.ts +0 -0
  52. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/README.md +0 -0
  53. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/conftest.py +0 -0
  54. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/.claude/CLAUDE.md +0 -0
  55. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/.vitepress/config.ts +0 -0
  56. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  57. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  58. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/AGENTS.md +0 -0
  59. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/explanation.md +0 -0
  60. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/getting-started.md +0 -0
  61. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/howto/columns-from-paths.md +0 -0
  62. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/howto/define-tables.md +0 -0
  63. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/howto/embed.md +0 -0
  64. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/howto/extract-from-contents.md +0 -0
  65. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/howto/load-extension.md +0 -0
  66. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/howto/persist.md +0 -0
  67. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/howto/react-to-changes.md +0 -0
  68. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/howto/search-by-meaning.md +0 -0
  69. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/howto/skip-files.md +0 -0
  70. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/index.md +0 -0
  71. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/migrations.md +0 -0
  72. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/package.json +0 -0
  73. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/playwright.config.ts +0 -0
  74. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/pnpm-lock.yaml +0 -0
  75. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/pnpm-workspace.yaml +0 -0
  76. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/reference/cli.md +0 -0
  77. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/reference/columns.md +0 -0
  78. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/reference/config.md +0 -0
  79. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/reference/hooks.md +0 -0
  80. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/reference/http-api.md +0 -0
  81. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/reference/sdk.md +0 -0
  82. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/tests/integration/home.spec.ts +0 -0
  83. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/tests/integration/language-flag.spec.ts +0 -0
  84. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/tests/integration/sidebar.spec.ts +0 -0
  85. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/tests/unit/config.test.ts +0 -0
  86. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/tests/unit/lang.test.ts +0 -0
  87. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/docs/vitest.config.ts +0 -0
  88. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/src/lib.rs +0 -0
  89. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/tests/__init__.py +0 -0
  90. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/tests/binding/__init__.py +0 -0
  91. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/tests/conftest.py +0 -0
  92. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/tests/e2e/__init__.py +0 -0
  93. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/tests/integration/__init__.py +0 -0
  94. {dirsql-0.3.77 → dirsql-0.3.78}/packages/python/tests/smoke/__init__.py +0 -0
  95. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/Cargo.toml +0 -0
  96. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/README.md +0 -0
  97. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/benches/db_bench.rs +0 -0
  98. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/benches/differ_bench.rs +0 -0
  99. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/benches/matcher_bench.rs +0 -0
  100. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/benches/scanner_bench.rs +0 -0
  101. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/explanation.md +0 -0
  102. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/getting-started.md +0 -0
  103. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  104. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/howto/define-tables.md +0 -0
  105. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/howto/embed.md +0 -0
  106. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  107. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/howto/load-extension.md +0 -0
  108. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/howto/persist.md +0 -0
  109. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/howto/react-to-changes.md +0 -0
  110. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  111. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/howto/skip-files.md +0 -0
  112. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/index.md +0 -0
  113. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/migrations.md +0 -0
  114. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/reference/cli.md +0 -0
  115. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/reference/columns.md +0 -0
  116. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/reference/config.md +0 -0
  117. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/reference/hooks.md +0 -0
  118. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/reference/http-api.md +0 -0
  119. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/docs/reference/sdk.md +0 -0
  120. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/bin/dirsql.rs +0 -0
  121. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/cli/execute.rs +0 -0
  122. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/cli/init.rs +0 -0
  123. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/cli/mod.rs +0 -0
  124. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/cli/router.rs +0 -0
  125. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/cli/serialize.rs +0 -0
  126. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/cli/server.rs +0 -0
  127. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/command.rs +0 -0
  128. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/config.rs +0 -0
  129. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/db.rs +0 -0
  130. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/default_config.toml +0 -0
  131. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/differ.rs +0 -0
  132. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/lib.rs +0 -0
  133. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/matcher.rs +0 -0
  134. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/persist.rs +0 -0
  135. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/scanner.rs +0 -0
  136. {dirsql-0.3.77 → dirsql-0.3.78}/packages/rust/src/watcher.rs +0 -0
  137. {dirsql-0.3.77 → dirsql-0.3.78}/pyproject.toml +0 -0
@@ -500,7 +500,7 @@ dependencies = [
500
500
 
501
501
  [[package]]
502
502
  name = "dirsql-py-ext"
503
- version = "0.3.77"
503
+ version = "0.3.78"
504
504
  dependencies = [
505
505
  "dirsql",
506
506
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.3.77
3
+ Version: 0.3.78
4
4
  Summary: Ephemeral SQL index over a local directory
5
5
  Keywords: sql,filesystem,directory,sqlite,index
6
6
  Author: Kevin Scott
@@ -11,8 +11,9 @@ from dirsql.resolve_extension import resolve_extension_path
11
11
  class _WatchStream:
12
12
  """Async iterator that polls for file events."""
13
13
 
14
- def __init__(self, db):
15
- self._db = db
14
+ def __init__(self, owner):
15
+ self._owner = owner
16
+ self._db = None
16
17
  self._started = False
17
18
  self._buffer = []
18
19
 
@@ -21,13 +22,19 @@ class _WatchStream:
21
22
 
22
23
  async def __anext__(self):
23
24
  if not self._started:
24
- await asyncio.to_thread(self._db._start_watcher)
25
+ await self._owner.ready()
26
+ db = self._owner._db
27
+ assert db is not None # ready() returned, so _init_bg set _db
28
+ self._db = db
29
+ await asyncio.to_thread(db._start_watcher)
25
30
  self._started = True
26
31
 
32
+ db = self._db
33
+ assert db is not None
27
34
  while True:
28
35
  if self._buffer:
29
36
  return self._buffer.pop(0)
30
- events = await asyncio.to_thread(self._db._poll_events, 200)
37
+ events = await asyncio.to_thread(db._poll_events, 200)
31
38
  if events:
32
39
  self._buffer.extend(events)
33
40
 
@@ -166,5 +173,12 @@ class DirSQL:
166
173
  return await asyncio.to_thread(db.query, sql)
167
174
 
168
175
  def watch(self):
169
- """Start watching for file changes. Returns an async iterable of RowEvent."""
170
- return _WatchStream(self._db)
176
+ """Start watching for file changes. Returns an async iterable of RowEvent.
177
+
178
+ Like :meth:`query`, the returned stream awaits :meth:`ready` on its
179
+ first iteration before starting the watcher, so calling ``watch``
180
+ before an explicit ``await db.ready()`` waits for the background scan
181
+ (and surfaces any initialization error) instead of failing on a
182
+ still-``None`` ``_db``.
183
+ """
184
+ return _WatchStream(self)
@@ -4,7 +4,7 @@ name = "dirsql-py-ext"
4
4
  # pypi/maturin handler can rewrite it via `write-version` before
5
5
  # `maturin build`. `pyproject.toml` declares `dynamic = ["version"]`
6
6
  # and maturin reads this field. Mirrors `packages/rust/Cargo.toml`.
7
- version = "0.3.77"
7
+ version = "0.3.78"
8
8
  edition.workspace = true
9
9
  publish = false
10
10
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "command": "uv run python -m pytest tests/e2e/ -x -q",
3
- "ran_at": 1783524611,
3
+ "ran_at": 1783533003,
4
4
  "exit_code": 0,
5
- "commit": "ee0a7c75d1e80868ace1390d0a99c92420c2f60e"
5
+ "commit": "3f25c20a8da1e922cc543bdc1ee43496b7e8ecd9"
6
6
  }
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