dirsql 0.3.20__tar.gz → 0.3.21__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 (162) hide show
  1. {dirsql-0.3.20 → dirsql-0.3.21}/Cargo.lock +1 -1
  2. {dirsql-0.3.20 → dirsql-0.3.21}/PKG-INFO +1 -1
  3. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/Cargo.toml +1 -1
  4. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/bin/dirsql.rs +28 -0
  5. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/cli/server.rs +24 -0
  6. {dirsql-0.3.20 → dirsql-0.3.21}/Cargo.toml +0 -0
  7. {dirsql-0.3.20 → dirsql-0.3.21}/README.md +0 -0
  8. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/__init__.py +0 -0
  9. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/_async.py +0 -0
  10. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/_async_test.py +0 -0
  11. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/_dirsql.pyi +0 -0
  12. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/__init__.py +0 -0
  13. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/binary_path.py +0 -0
  14. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/binary_path_test.py +0 -0
  15. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/interpret/__init__.py +0 -0
  16. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/interpret/dispatch_extract.py +0 -0
  17. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/interpret/dispatch_extract_test.py +0 -0
  18. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/interpret/load_app.py +0 -0
  19. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/interpret/load_app_test.py +0 -0
  20. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/interpret/run.py +0 -0
  21. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/interpret/run_test.py +0 -0
  22. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/interpret/write_message.py +0 -0
  23. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/interpret/write_message_test.py +0 -0
  24. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/is_windows.py +0 -0
  25. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/is_windows_test.py +0 -0
  26. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/main.py +0 -0
  27. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/cli/main_test.py +0 -0
  28. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/py.typed +0 -0
  29. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/resolve_config.py +0 -0
  30. {dirsql-0.3.20 → dirsql-0.3.21}/dirsql/resolve_config_test.py +0 -0
  31. {dirsql-0.3.20 → dirsql-0.3.21}/docs/.claude/CLAUDE.md +0 -0
  32. {dirsql-0.3.20 → dirsql-0.3.21}/docs/.vitepress/config.ts +0 -0
  33. {dirsql-0.3.20 → dirsql-0.3.21}/docs/.vitepress/theme/index.ts +0 -0
  34. {dirsql-0.3.20 → dirsql-0.3.21}/docs/.vitepress/theme/lang.ts +0 -0
  35. {dirsql-0.3.20 → dirsql-0.3.21}/docs/AGENTS.md +0 -0
  36. {dirsql-0.3.20 → dirsql-0.3.21}/docs/api/index.md +0 -0
  37. {dirsql-0.3.20 → dirsql-0.3.21}/docs/cli/config.md +0 -0
  38. {dirsql-0.3.20 → dirsql-0.3.21}/docs/cli/http-api.md +0 -0
  39. {dirsql-0.3.20 → dirsql-0.3.21}/docs/cli/index.md +0 -0
  40. {dirsql-0.3.20 → dirsql-0.3.21}/docs/cli/init.md +0 -0
  41. {dirsql-0.3.20 → dirsql-0.3.21}/docs/cli/server.md +0 -0
  42. {dirsql-0.3.20 → dirsql-0.3.21}/docs/getting-started.md +0 -0
  43. {dirsql-0.3.20 → dirsql-0.3.21}/docs/guide/async.md +0 -0
  44. {dirsql-0.3.20 → dirsql-0.3.21}/docs/guide/crdt.md +0 -0
  45. {dirsql-0.3.20 → dirsql-0.3.21}/docs/guide/persistence.md +0 -0
  46. {dirsql-0.3.20 → dirsql-0.3.21}/docs/guide/querying.md +0 -0
  47. {dirsql-0.3.20 → dirsql-0.3.21}/docs/guide/tables.md +0 -0
  48. {dirsql-0.3.20 → dirsql-0.3.21}/docs/guide/watching.md +0 -0
  49. {dirsql-0.3.20 → dirsql-0.3.21}/docs/index.md +0 -0
  50. {dirsql-0.3.20 → dirsql-0.3.21}/docs/migrations.md +0 -0
  51. {dirsql-0.3.20 → dirsql-0.3.21}/docs/package.json +0 -0
  52. {dirsql-0.3.20 → dirsql-0.3.21}/docs/playwright.config.ts +0 -0
  53. {dirsql-0.3.20 → dirsql-0.3.21}/docs/pnpm-lock.yaml +0 -0
  54. {dirsql-0.3.20 → dirsql-0.3.21}/docs/pnpm-workspace.yaml +0 -0
  55. {dirsql-0.3.20 → dirsql-0.3.21}/docs/tests/integration/home.spec.ts +0 -0
  56. {dirsql-0.3.20 → dirsql-0.3.21}/docs/tests/integration/language-flag.spec.ts +0 -0
  57. {dirsql-0.3.20 → dirsql-0.3.21}/docs/tests/unit/config.test.ts +0 -0
  58. {dirsql-0.3.20 → dirsql-0.3.21}/docs/tests/unit/lang.test.ts +0 -0
  59. {dirsql-0.3.20 → dirsql-0.3.21}/docs/vitest.config.ts +0 -0
  60. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/README.md +0 -0
  61. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/conftest.py +0 -0
  62. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/.claude/CLAUDE.md +0 -0
  63. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/.vitepress/config.ts +0 -0
  64. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  65. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  66. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/AGENTS.md +0 -0
  67. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/api/index.md +0 -0
  68. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/cli/config.md +0 -0
  69. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/cli/http-api.md +0 -0
  70. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/cli/index.md +0 -0
  71. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/cli/init.md +0 -0
  72. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/cli/server.md +0 -0
  73. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/getting-started.md +0 -0
  74. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/guide/async.md +0 -0
  75. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/guide/crdt.md +0 -0
  76. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/guide/persistence.md +0 -0
  77. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/guide/querying.md +0 -0
  78. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/guide/tables.md +0 -0
  79. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/guide/watching.md +0 -0
  80. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/index.md +0 -0
  81. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/migrations.md +0 -0
  82. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/package.json +0 -0
  83. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/playwright.config.ts +0 -0
  84. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/pnpm-lock.yaml +0 -0
  85. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/pnpm-workspace.yaml +0 -0
  86. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/tests/integration/home.spec.ts +0 -0
  87. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/tests/integration/language-flag.spec.ts +0 -0
  88. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/tests/unit/config.test.ts +0 -0
  89. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/tests/unit/lang.test.ts +0 -0
  90. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/docs/vitest.config.ts +0 -0
  91. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/src/lib.rs +0 -0
  92. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/__init__.py +0 -0
  93. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/conftest.py +0 -0
  94. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/e2e/__init__.py +0 -0
  95. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/__fixtures__/data/a/meta.json +0 -0
  96. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/__fixtures__/data/b/meta.json +0 -0
  97. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/__fixtures__/dirsql.config.py +0 -0
  98. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/__fixtures__/interpret/data/a/meta.json +0 -0
  99. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/__fixtures__/interpret/data/b/meta.json +0 -0
  100. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/__fixtures__/interpret/dirsql.config.py +0 -0
  101. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/__fixtures__/interpret/dirsql.config_no_app.py +0 -0
  102. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/__fixtures__/interpret/dirsql.config_raises.py +0 -0
  103. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/__init__.py +0 -0
  104. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/interpret_subprocess.py +0 -0
  105. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/test_async_dirsql.py +0 -0
  106. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/test_binding.py +0 -0
  107. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/test_dirsql.py +0 -0
  108. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/test_docs_examples.py +0 -0
  109. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/test_docs_gaps.py +0 -0
  110. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/test_from_config.py +0 -0
  111. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/test_interpret.py +0 -0
  112. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/test_native_config.py +0 -0
  113. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/test_persist.py +0 -0
  114. {dirsql-0.3.20 → dirsql-0.3.21}/packages/python/tests/integration/test_serialization.py +0 -0
  115. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/Cargo.toml +0 -0
  116. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/README.md +0 -0
  117. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/benches/db_bench.rs +0 -0
  118. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/benches/differ_bench.rs +0 -0
  119. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/benches/matcher_bench.rs +0 -0
  120. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/benches/scanner_bench.rs +0 -0
  121. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/api/index.md +0 -0
  122. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/cli/config.md +0 -0
  123. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/cli/http-api.md +0 -0
  124. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/cli/index.md +0 -0
  125. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/cli/init.md +0 -0
  126. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/cli/server.md +0 -0
  127. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/getting-started.md +0 -0
  128. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/guide/async.md +0 -0
  129. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/guide/crdt.md +0 -0
  130. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/guide/persistence.md +0 -0
  131. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/guide/querying.md +0 -0
  132. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/guide/tables.md +0 -0
  133. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/guide/watching.md +0 -0
  134. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/index.md +0 -0
  135. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/docs/migrations.md +0 -0
  136. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/cli/init.rs +0 -0
  137. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/cli/mod.rs +0 -0
  138. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/cli/native_config.rs +0 -0
  139. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/cli/router.rs +0 -0
  140. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/cli/serialize.rs +0 -0
  141. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/config.rs +0 -0
  142. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/db.rs +0 -0
  143. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/differ.rs +0 -0
  144. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/lib.rs +0 -0
  145. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/matcher.rs +0 -0
  146. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/persist.rs +0 -0
  147. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/scanner.rs +0 -0
  148. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/src/watcher.rs +0 -0
  149. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/async_sdk.rs +0 -0
  150. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/cli_e2e.rs +0 -0
  151. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/cli_integration.rs +0 -0
  152. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/code_review_findings.rs +0 -0
  153. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/docs_examples.rs +0 -0
  154. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/docs_gaps.rs +0 -0
  155. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/from_config.rs +0 -0
  156. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/init_e2e.rs +0 -0
  157. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/init_integration.rs +0 -0
  158. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/persist.rs +0 -0
  159. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/readonly_query.rs +0 -0
  160. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/sdk.rs +0 -0
  161. {dirsql-0.3.20 → dirsql-0.3.21}/packages/rust/tests/serialization.rs +0 -0
  162. {dirsql-0.3.20 → dirsql-0.3.21}/pyproject.toml +0 -0
@@ -499,7 +499,7 @@ dependencies = [
499
499
 
500
500
  [[package]]
501
501
  name = "dirsql-py-ext"
502
- version = "0.3.20"
502
+ version = "0.3.21"
503
503
  dependencies = [
504
504
  "dirsql",
505
505
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.3.20
3
+ Version: 0.3.21
4
4
  Requires-Dist: pytest>=8 ; extra == 'dev'
5
5
  Requires-Dist: pytest-describe>=2 ; extra == 'dev'
6
6
  Requires-Dist: pytest-asyncio>=0.23 ; extra == 'dev'
@@ -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.20"
7
+ version = "0.3.21"
8
8
  edition.workspace = true
9
9
  publish = false
10
10
  readme = "README.md"
@@ -281,3 +281,31 @@ async fn wait_for_shutdown() -> std::io::Result<()> {
281
281
  async fn wait_for_shutdown() -> std::io::Result<()> {
282
282
  tokio::signal::ctrl_c().await
283
283
  }
284
+
285
+ #[cfg(test)]
286
+ mod tests {
287
+ use super::*;
288
+
289
+ #[test]
290
+ fn is_native_config_matches_script_extensions() {
291
+ for ext in ["py", "js", "mjs", "cjs"] {
292
+ let path = format!("cfg.{ext}");
293
+ assert!(
294
+ is_native_config(Path::new(&path)),
295
+ "expected .{ext} to be treated as a native config"
296
+ );
297
+ }
298
+ }
299
+
300
+ #[test]
301
+ fn is_native_config_rejects_other_extensions_and_casing() {
302
+ // `.toml` is the built-in format; bare/uppercase extensions are not
303
+ // delegated to the `interpret` helper.
304
+ for name in ["cfg.toml", "cfg.txt", "cfg", "cfg.PY", "cfg.JS"] {
305
+ assert!(
306
+ !is_native_config(Path::new(name)),
307
+ "expected {name} not to be treated as a native config"
308
+ );
309
+ }
310
+ }
311
+ }
@@ -89,3 +89,27 @@ fn start_watch_task(db: DirSQL, tx: broadcast::Sender<String>) {
89
89
  }
90
90
  });
91
91
  }
92
+
93
+ #[cfg(test)]
94
+ mod tests {
95
+ use super::*;
96
+
97
+ // Binding with an `Unavailable` state needs no DB/filesystem, so this
98
+ // exercises the real bind / local-addr / graceful-shutdown plumbing
99
+ // without standing up a full index. Port 0 lets the OS pick a free port.
100
+ #[tokio::test]
101
+ async fn serve_with_state_binds_an_ephemeral_port_then_shuts_down() {
102
+ let config = ServerConfig::bind("127.0.0.1".to_string(), 0);
103
+ let handle = serve_with_state(config, AppState::Unavailable("test".to_string()))
104
+ .await
105
+ .expect("bind on an ephemeral port");
106
+
107
+ assert_ne!(
108
+ handle.local_addr().port(),
109
+ 0,
110
+ "the OS should have assigned a concrete port"
111
+ );
112
+
113
+ handle.shutdown().await.expect("graceful shutdown");
114
+ }
115
+ }
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes