dirsql 0.3.79__tar.gz → 0.3.80__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.79 → dirsql-0.3.80}/Cargo.lock +1 -1
  2. {dirsql-0.3.79 → dirsql-0.3.80}/PKG-INFO +1 -1
  3. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/Cargo.toml +1 -1
  4. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/e2e-attestation.json +2 -2
  5. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/db.rs +19 -3
  6. {dirsql-0.3.79 → dirsql-0.3.80}/Cargo.toml +0 -0
  7. {dirsql-0.3.79 → dirsql-0.3.80}/README.md +0 -0
  8. {dirsql-0.3.79 → dirsql-0.3.80}/dirsql/__init__.py +0 -0
  9. {dirsql-0.3.79 → dirsql-0.3.80}/dirsql/_async.py +0 -0
  10. {dirsql-0.3.79 → dirsql-0.3.80}/dirsql/_dirsql.pyi +0 -0
  11. {dirsql-0.3.79 → dirsql-0.3.80}/dirsql/cli/__init__.py +0 -0
  12. {dirsql-0.3.79 → dirsql-0.3.80}/dirsql/cli/binary_path.py +0 -0
  13. {dirsql-0.3.79 → dirsql-0.3.80}/dirsql/cli/is_windows.py +0 -0
  14. {dirsql-0.3.79 → dirsql-0.3.80}/dirsql/cli/main.py +0 -0
  15. {dirsql-0.3.79 → dirsql-0.3.80}/dirsql/cli/resolve_config_extensions.py +0 -0
  16. {dirsql-0.3.79 → dirsql-0.3.80}/dirsql/py.typed +0 -0
  17. {dirsql-0.3.79 → dirsql-0.3.80}/dirsql/resolve_config_extensions.py +0 -0
  18. {dirsql-0.3.79 → dirsql-0.3.80}/dirsql/resolve_extension.py +0 -0
  19. {dirsql-0.3.79 → dirsql-0.3.80}/docs/.claude/CLAUDE.md +0 -0
  20. {dirsql-0.3.79 → dirsql-0.3.80}/docs/.vitepress/config.ts +0 -0
  21. {dirsql-0.3.79 → dirsql-0.3.80}/docs/.vitepress/theme/index.ts +0 -0
  22. {dirsql-0.3.79 → dirsql-0.3.80}/docs/.vitepress/theme/lang.ts +0 -0
  23. {dirsql-0.3.79 → dirsql-0.3.80}/docs/AGENTS.md +0 -0
  24. {dirsql-0.3.79 → dirsql-0.3.80}/docs/explanation.md +0 -0
  25. {dirsql-0.3.79 → dirsql-0.3.80}/docs/getting-started.md +0 -0
  26. {dirsql-0.3.79 → dirsql-0.3.80}/docs/howto/columns-from-paths.md +0 -0
  27. {dirsql-0.3.79 → dirsql-0.3.80}/docs/howto/define-tables.md +0 -0
  28. {dirsql-0.3.79 → dirsql-0.3.80}/docs/howto/embed.md +0 -0
  29. {dirsql-0.3.79 → dirsql-0.3.80}/docs/howto/extract-from-contents.md +0 -0
  30. {dirsql-0.3.79 → dirsql-0.3.80}/docs/howto/load-extension.md +0 -0
  31. {dirsql-0.3.79 → dirsql-0.3.80}/docs/howto/persist.md +0 -0
  32. {dirsql-0.3.79 → dirsql-0.3.80}/docs/howto/react-to-changes.md +0 -0
  33. {dirsql-0.3.79 → dirsql-0.3.80}/docs/howto/search-by-meaning.md +0 -0
  34. {dirsql-0.3.79 → dirsql-0.3.80}/docs/howto/skip-files.md +0 -0
  35. {dirsql-0.3.79 → dirsql-0.3.80}/docs/index.md +0 -0
  36. {dirsql-0.3.79 → dirsql-0.3.80}/docs/migrations.md +0 -0
  37. {dirsql-0.3.79 → dirsql-0.3.80}/docs/package.json +0 -0
  38. {dirsql-0.3.79 → dirsql-0.3.80}/docs/playwright.config.ts +0 -0
  39. {dirsql-0.3.79 → dirsql-0.3.80}/docs/pnpm-lock.yaml +0 -0
  40. {dirsql-0.3.79 → dirsql-0.3.80}/docs/pnpm-workspace.yaml +0 -0
  41. {dirsql-0.3.79 → dirsql-0.3.80}/docs/reference/cli.md +0 -0
  42. {dirsql-0.3.79 → dirsql-0.3.80}/docs/reference/columns.md +0 -0
  43. {dirsql-0.3.79 → dirsql-0.3.80}/docs/reference/config.md +0 -0
  44. {dirsql-0.3.79 → dirsql-0.3.80}/docs/reference/hooks.md +0 -0
  45. {dirsql-0.3.79 → dirsql-0.3.80}/docs/reference/http-api.md +0 -0
  46. {dirsql-0.3.79 → dirsql-0.3.80}/docs/reference/sdk.md +0 -0
  47. {dirsql-0.3.79 → dirsql-0.3.80}/docs/tests/integration/home.spec.ts +0 -0
  48. {dirsql-0.3.79 → dirsql-0.3.80}/docs/tests/integration/language-flag.spec.ts +0 -0
  49. {dirsql-0.3.79 → dirsql-0.3.80}/docs/tests/integration/sidebar.spec.ts +0 -0
  50. {dirsql-0.3.79 → dirsql-0.3.80}/docs/tests/unit/config.test.ts +0 -0
  51. {dirsql-0.3.79 → dirsql-0.3.80}/docs/tests/unit/lang.test.ts +0 -0
  52. {dirsql-0.3.79 → dirsql-0.3.80}/docs/vitest.config.ts +0 -0
  53. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/README.md +0 -0
  54. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/conftest.py +0 -0
  55. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/.claude/CLAUDE.md +0 -0
  56. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/.vitepress/config.ts +0 -0
  57. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  58. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  59. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/AGENTS.md +0 -0
  60. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/explanation.md +0 -0
  61. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/getting-started.md +0 -0
  62. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/howto/columns-from-paths.md +0 -0
  63. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/howto/define-tables.md +0 -0
  64. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/howto/embed.md +0 -0
  65. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/howto/extract-from-contents.md +0 -0
  66. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/howto/load-extension.md +0 -0
  67. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/howto/persist.md +0 -0
  68. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/howto/react-to-changes.md +0 -0
  69. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/howto/search-by-meaning.md +0 -0
  70. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/howto/skip-files.md +0 -0
  71. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/index.md +0 -0
  72. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/migrations.md +0 -0
  73. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/package.json +0 -0
  74. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/playwright.config.ts +0 -0
  75. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/pnpm-lock.yaml +0 -0
  76. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/pnpm-workspace.yaml +0 -0
  77. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/reference/cli.md +0 -0
  78. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/reference/columns.md +0 -0
  79. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/reference/config.md +0 -0
  80. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/reference/hooks.md +0 -0
  81. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/reference/http-api.md +0 -0
  82. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/reference/sdk.md +0 -0
  83. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/tests/integration/home.spec.ts +0 -0
  84. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/tests/integration/language-flag.spec.ts +0 -0
  85. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/tests/integration/sidebar.spec.ts +0 -0
  86. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/tests/unit/config.test.ts +0 -0
  87. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/tests/unit/lang.test.ts +0 -0
  88. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/docs/vitest.config.ts +0 -0
  89. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/src/lib.rs +0 -0
  90. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/tests/__init__.py +0 -0
  91. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/tests/binding/__init__.py +0 -0
  92. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/tests/conftest.py +0 -0
  93. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/tests/e2e/__init__.py +0 -0
  94. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/tests/integration/__init__.py +0 -0
  95. {dirsql-0.3.79 → dirsql-0.3.80}/packages/python/tests/smoke/__init__.py +0 -0
  96. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/Cargo.toml +0 -0
  97. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/README.md +0 -0
  98. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/benches/db_bench.rs +0 -0
  99. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/benches/differ_bench.rs +0 -0
  100. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/benches/matcher_bench.rs +0 -0
  101. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/benches/scanner_bench.rs +0 -0
  102. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/explanation.md +0 -0
  103. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/getting-started.md +0 -0
  104. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  105. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/howto/define-tables.md +0 -0
  106. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/howto/embed.md +0 -0
  107. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  108. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/howto/load-extension.md +0 -0
  109. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/howto/persist.md +0 -0
  110. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/howto/react-to-changes.md +0 -0
  111. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  112. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/howto/skip-files.md +0 -0
  113. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/index.md +0 -0
  114. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/migrations.md +0 -0
  115. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/reference/cli.md +0 -0
  116. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/reference/columns.md +0 -0
  117. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/reference/config.md +0 -0
  118. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/reference/hooks.md +0 -0
  119. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/reference/http-api.md +0 -0
  120. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/docs/reference/sdk.md +0 -0
  121. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/bin/dirsql.rs +0 -0
  122. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/cli/execute.rs +0 -0
  123. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/cli/init.rs +0 -0
  124. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/cli/mod.rs +0 -0
  125. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/cli/router.rs +0 -0
  126. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/cli/serialize.rs +0 -0
  127. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/cli/server.rs +0 -0
  128. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/command.rs +0 -0
  129. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/config.rs +0 -0
  130. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/default_config.toml +0 -0
  131. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/differ.rs +0 -0
  132. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/lib.rs +0 -0
  133. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/matcher.rs +0 -0
  134. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/persist.rs +0 -0
  135. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/scanner.rs +0 -0
  136. {dirsql-0.3.79 → dirsql-0.3.80}/packages/rust/src/watcher.rs +0 -0
  137. {dirsql-0.3.79 → dirsql-0.3.80}/pyproject.toml +0 -0
@@ -500,7 +500,7 @@ dependencies = [
500
500
 
501
501
  [[package]]
502
502
  name = "dirsql-py-ext"
503
- version = "0.3.79"
503
+ version = "0.3.80"
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.79
3
+ Version: 0.3.80
4
4
  Summary: Ephemeral SQL index over a local directory
5
5
  Keywords: sql,filesystem,directory,sqlite,index
6
6
  Author: Kevin Scott
@@ -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.79"
7
+ version = "0.3.80"
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": 1783534394,
3
+ "ran_at": 1783542175,
4
4
  "exit_code": 0,
5
- "commit": "b66bf19ce2c568fc2aa08773caf8c708bad462e9"
5
+ "commit": "327255640a688bbd372efc17ab3f64cc59e8f651"
6
6
  }
@@ -280,14 +280,14 @@ impl Db {
280
280
  // `_dirsql_internal_rows`, keyed on the row's rowid. A column-less row
281
281
  // (SQLite requires ≥1 declared column, so this is only reachable
282
282
  // defensively) uses `DEFAULT VALUES`.
283
- let columns: Vec<String> = row.keys().cloned().collect();
283
+ let columns: Vec<String> = row.keys().map(|c| format!("\"{c}\"")).collect();
284
284
  let sql = if columns.is_empty() {
285
- format!("INSERT INTO {} DEFAULT VALUES", table)
285
+ format!("INSERT INTO \"{table}\" DEFAULT VALUES")
286
286
  } else {
287
287
  let placeholders: Vec<String> =
288
288
  (1..=columns.len()).map(|i| format!("?{}", i)).collect();
289
289
  format!(
290
- "INSERT INTO {} ({}) VALUES ({})",
290
+ "INSERT INTO \"{}\" ({}) VALUES ({})",
291
291
  table,
292
292
  columns.join(", "),
293
293
  placeholders.join(", "),
@@ -1323,6 +1323,22 @@ mod tests {
1323
1323
  assert!(matches!(err, DbError::InvalidIdentifier(_)), "got: {err:?}");
1324
1324
  }
1325
1325
 
1326
+ #[test]
1327
+ fn insert_row_round_trips_reserved_word_column() {
1328
+ let db = Db::new().unwrap();
1329
+ db.create_table("CREATE TABLE t (path TEXT, \"order\" INTEGER)")
1330
+ .unwrap();
1331
+ let row = HashMap::from([
1332
+ ("path".into(), Value::Text("a".into())),
1333
+ ("order".into(), Value::Integer(7)),
1334
+ ]);
1335
+ db.insert_row("t", &row, "f.json", 0).unwrap();
1336
+
1337
+ let rows = db.get_rows_by_file("t", "f.json").unwrap();
1338
+ assert_eq!(rows.len(), 1);
1339
+ assert_eq!(rows[0]["order"], Value::Integer(7));
1340
+ }
1341
+
1326
1342
  #[test]
1327
1343
  fn load_extension_missing_file_errors() {
1328
1344
  let db = Db::new().unwrap();
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