dirsql 0.3.22__tar.gz → 0.3.23__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 (163) hide show
  1. {dirsql-0.3.22 → dirsql-0.3.23}/Cargo.lock +1 -1
  2. {dirsql-0.3.22 → dirsql-0.3.23}/PKG-INFO +1 -1
  3. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/_async_test.py +19 -19
  4. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/binary_path_test.py +1 -1
  5. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/main_test.py +13 -16
  6. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/Cargo.toml +1 -1
  7. {dirsql-0.3.22 → dirsql-0.3.23}/Cargo.toml +0 -0
  8. {dirsql-0.3.22 → dirsql-0.3.23}/README.md +0 -0
  9. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/__init__.py +0 -0
  10. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/_async.py +0 -0
  11. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/_dirsql.pyi +0 -0
  12. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/__init__.py +0 -0
  13. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/binary_path.py +0 -0
  14. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/interpret/__init__.py +0 -0
  15. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/interpret/dispatch_extract.py +0 -0
  16. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/interpret/dispatch_extract_test.py +0 -0
  17. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/interpret/load_app.py +0 -0
  18. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/interpret/load_app_test.py +0 -0
  19. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/interpret/run.py +0 -0
  20. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/interpret/run_test.py +0 -0
  21. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/interpret/write_message.py +0 -0
  22. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/interpret/write_message_test.py +0 -0
  23. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/is_windows.py +0 -0
  24. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/is_windows_test.py +0 -0
  25. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/cli/main.py +0 -0
  26. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/py.typed +0 -0
  27. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/resolve_config.py +0 -0
  28. {dirsql-0.3.22 → dirsql-0.3.23}/dirsql/resolve_config_test.py +0 -0
  29. {dirsql-0.3.22 → dirsql-0.3.23}/docs/.claude/CLAUDE.md +0 -0
  30. {dirsql-0.3.22 → dirsql-0.3.23}/docs/.vitepress/config.ts +0 -0
  31. {dirsql-0.3.22 → dirsql-0.3.23}/docs/.vitepress/theme/index.ts +0 -0
  32. {dirsql-0.3.22 → dirsql-0.3.23}/docs/.vitepress/theme/lang.ts +0 -0
  33. {dirsql-0.3.22 → dirsql-0.3.23}/docs/AGENTS.md +0 -0
  34. {dirsql-0.3.22 → dirsql-0.3.23}/docs/api/index.md +0 -0
  35. {dirsql-0.3.22 → dirsql-0.3.23}/docs/cli/config.md +0 -0
  36. {dirsql-0.3.22 → dirsql-0.3.23}/docs/cli/http-api.md +0 -0
  37. {dirsql-0.3.22 → dirsql-0.3.23}/docs/cli/index.md +0 -0
  38. {dirsql-0.3.22 → dirsql-0.3.23}/docs/cli/init.md +0 -0
  39. {dirsql-0.3.22 → dirsql-0.3.23}/docs/cli/server.md +0 -0
  40. {dirsql-0.3.22 → dirsql-0.3.23}/docs/getting-started.md +0 -0
  41. {dirsql-0.3.22 → dirsql-0.3.23}/docs/guide/async.md +0 -0
  42. {dirsql-0.3.22 → dirsql-0.3.23}/docs/guide/crdt.md +0 -0
  43. {dirsql-0.3.22 → dirsql-0.3.23}/docs/guide/persistence.md +0 -0
  44. {dirsql-0.3.22 → dirsql-0.3.23}/docs/guide/querying.md +0 -0
  45. {dirsql-0.3.22 → dirsql-0.3.23}/docs/guide/tables.md +0 -0
  46. {dirsql-0.3.22 → dirsql-0.3.23}/docs/guide/watching.md +0 -0
  47. {dirsql-0.3.22 → dirsql-0.3.23}/docs/index.md +0 -0
  48. {dirsql-0.3.22 → dirsql-0.3.23}/docs/migrations.md +0 -0
  49. {dirsql-0.3.22 → dirsql-0.3.23}/docs/package.json +0 -0
  50. {dirsql-0.3.22 → dirsql-0.3.23}/docs/playwright.config.ts +0 -0
  51. {dirsql-0.3.22 → dirsql-0.3.23}/docs/pnpm-lock.yaml +0 -0
  52. {dirsql-0.3.22 → dirsql-0.3.23}/docs/pnpm-workspace.yaml +0 -0
  53. {dirsql-0.3.22 → dirsql-0.3.23}/docs/tests/integration/home.spec.ts +0 -0
  54. {dirsql-0.3.22 → dirsql-0.3.23}/docs/tests/integration/language-flag.spec.ts +0 -0
  55. {dirsql-0.3.22 → dirsql-0.3.23}/docs/tests/unit/config.test.ts +0 -0
  56. {dirsql-0.3.22 → dirsql-0.3.23}/docs/tests/unit/lang.test.ts +0 -0
  57. {dirsql-0.3.22 → dirsql-0.3.23}/docs/vitest.config.ts +0 -0
  58. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/README.md +0 -0
  59. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/conftest.py +0 -0
  60. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/.claude/CLAUDE.md +0 -0
  61. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/.vitepress/config.ts +0 -0
  62. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  63. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  64. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/AGENTS.md +0 -0
  65. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/api/index.md +0 -0
  66. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/cli/config.md +0 -0
  67. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/cli/http-api.md +0 -0
  68. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/cli/index.md +0 -0
  69. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/cli/init.md +0 -0
  70. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/cli/server.md +0 -0
  71. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/getting-started.md +0 -0
  72. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/guide/async.md +0 -0
  73. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/guide/crdt.md +0 -0
  74. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/guide/persistence.md +0 -0
  75. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/guide/querying.md +0 -0
  76. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/guide/tables.md +0 -0
  77. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/guide/watching.md +0 -0
  78. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/index.md +0 -0
  79. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/migrations.md +0 -0
  80. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/package.json +0 -0
  81. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/playwright.config.ts +0 -0
  82. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/pnpm-lock.yaml +0 -0
  83. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/pnpm-workspace.yaml +0 -0
  84. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/tests/integration/home.spec.ts +0 -0
  85. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/tests/integration/language-flag.spec.ts +0 -0
  86. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/tests/unit/config.test.ts +0 -0
  87. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/tests/unit/lang.test.ts +0 -0
  88. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/docs/vitest.config.ts +0 -0
  89. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/src/lib.rs +0 -0
  90. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/__init__.py +0 -0
  91. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/conftest.py +0 -0
  92. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/e2e/__init__.py +0 -0
  93. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/__fixtures__/data/a/meta.json +0 -0
  94. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/__fixtures__/data/b/meta.json +0 -0
  95. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/__fixtures__/dirsql.config.py +0 -0
  96. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/__fixtures__/interpret/data/a/meta.json +0 -0
  97. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/__fixtures__/interpret/data/b/meta.json +0 -0
  98. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/__fixtures__/interpret/dirsql.config.py +0 -0
  99. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/__fixtures__/interpret/dirsql.config_no_app.py +0 -0
  100. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/__fixtures__/interpret/dirsql.config_raises.py +0 -0
  101. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/__init__.py +0 -0
  102. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/interpret_subprocess.py +0 -0
  103. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/test_async_dirsql.py +0 -0
  104. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/test_binding.py +0 -0
  105. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/test_dirsql.py +0 -0
  106. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/test_docs_examples.py +0 -0
  107. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/test_docs_gaps.py +0 -0
  108. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/test_from_config.py +0 -0
  109. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/test_interpret.py +0 -0
  110. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/test_native_config.py +0 -0
  111. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/test_persist.py +0 -0
  112. {dirsql-0.3.22 → dirsql-0.3.23}/packages/python/tests/integration/test_serialization.py +0 -0
  113. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/Cargo.toml +0 -0
  114. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/README.md +0 -0
  115. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/benches/db_bench.rs +0 -0
  116. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/benches/differ_bench.rs +0 -0
  117. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/benches/matcher_bench.rs +0 -0
  118. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/benches/scanner_bench.rs +0 -0
  119. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/api/index.md +0 -0
  120. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/cli/config.md +0 -0
  121. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/cli/http-api.md +0 -0
  122. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/cli/index.md +0 -0
  123. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/cli/init.md +0 -0
  124. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/cli/server.md +0 -0
  125. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/getting-started.md +0 -0
  126. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/guide/async.md +0 -0
  127. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/guide/crdt.md +0 -0
  128. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/guide/persistence.md +0 -0
  129. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/guide/querying.md +0 -0
  130. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/guide/tables.md +0 -0
  131. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/guide/watching.md +0 -0
  132. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/index.md +0 -0
  133. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/docs/migrations.md +0 -0
  134. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/bin/dirsql.rs +0 -0
  135. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/cli/init.rs +0 -0
  136. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/cli/mod.rs +0 -0
  137. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/cli/native_config.rs +0 -0
  138. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/cli/router.rs +0 -0
  139. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/cli/serialize.rs +0 -0
  140. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/cli/server.rs +0 -0
  141. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/config.rs +0 -0
  142. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/db.rs +0 -0
  143. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/differ.rs +0 -0
  144. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/lib.rs +0 -0
  145. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/matcher.rs +0 -0
  146. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/persist.rs +0 -0
  147. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/scanner.rs +0 -0
  148. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/src/watcher.rs +0 -0
  149. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/async_sdk.rs +0 -0
  150. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/cli_e2e.rs +0 -0
  151. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/cli_integration.rs +0 -0
  152. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/code_review_findings.rs +0 -0
  153. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/docs_examples.rs +0 -0
  154. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/docs_gaps.rs +0 -0
  155. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/extensions.rs +0 -0
  156. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/from_config.rs +0 -0
  157. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/init_e2e.rs +0 -0
  158. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/init_integration.rs +0 -0
  159. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/persist.rs +0 -0
  160. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/readonly_query.rs +0 -0
  161. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/sdk.rs +0 -0
  162. {dirsql-0.3.22 → dirsql-0.3.23}/packages/rust/tests/serialization.rs +0 -0
  163. {dirsql-0.3.22 → dirsql-0.3.23}/pyproject.toml +0 -0
@@ -499,7 +499,7 @@ dependencies = [
499
499
 
500
500
  [[package]]
501
501
  name = "dirsql-py-ext"
502
- version = "0.3.22"
502
+ version = "0.3.23"
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.22
3
+ Version: 0.3.23
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'
@@ -1,10 +1,10 @@
1
1
  """Unit tests for the DirSQL async wrapper."""
2
2
 
3
- from __future__ import annotations
3
+ from unittest.mock import patch
4
4
 
5
5
  import pytest
6
6
 
7
- from dirsql import _async as async_mod
7
+ import dirsql._async as async_mod
8
8
 
9
9
 
10
10
  class _FakeRustDirSQL:
@@ -50,32 +50,32 @@ class _FakeWatcherDb:
50
50
  def describe_DirSQL_async():
51
51
  def describe_ready_and_query():
52
52
  @pytest.mark.asyncio
53
- async def it_uses_the_background_db(monkeypatch):
54
- monkeypatch.setattr(async_mod, "_RustDirSQL", _FakeRustDirSQL)
55
-
56
- db = async_mod.DirSQL("/tmp/root", tables=["table-a"], ignore=["**/*.tmp"])
57
- await db.ready()
53
+ async def it_uses_the_background_db():
54
+ with patch.object(async_mod, "_RustDirSQL", _FakeRustDirSQL):
55
+ db = async_mod.DirSQL(
56
+ "/tmp/root", tables=["table-a"], ignore=["**/*.tmp"]
57
+ )
58
+ await db.ready()
58
59
 
59
- results = await db.query("SELECT 1")
60
+ results = await db.query("SELECT 1")
60
61
 
61
- assert db._db.root == "/tmp/root"
62
- assert db._db.tables == ["table-a"]
63
- assert db._db.ignore == ["**/*.tmp"]
64
- assert db._db.query_calls == ["SELECT 1"]
65
- assert results == [{"sql": "SELECT 1"}]
62
+ assert db._db.root == "/tmp/root"
63
+ assert db._db.tables == ["table-a"]
64
+ assert db._db.ignore == ["**/*.tmp"]
65
+ assert db._db.query_calls == ["SELECT 1"]
66
+ assert results == [{"sql": "SELECT 1"}]
66
67
 
67
68
  @pytest.mark.asyncio
68
- async def it_propagates_initialization_errors(monkeypatch):
69
+ async def it_propagates_initialization_errors():
69
70
  class _BoomDirSQL:
70
71
  def __init__(self, *args, **kwargs):
71
72
  raise RuntimeError("boom")
72
73
 
73
- monkeypatch.setattr(async_mod, "_RustDirSQL", _BoomDirSQL)
74
+ with patch.object(async_mod, "_RustDirSQL", _BoomDirSQL):
75
+ db = async_mod.DirSQL("/tmp/root", tables=["table-a"])
74
76
 
75
- db = async_mod.DirSQL("/tmp/root", tables=["table-a"])
76
-
77
- with pytest.raises(RuntimeError, match="boom"):
78
- await db.ready()
77
+ with pytest.raises(RuntimeError, match="boom"):
78
+ await db.ready()
79
79
 
80
80
  def describe_watch_stream():
81
81
  @pytest.mark.asyncio
@@ -5,7 +5,7 @@ from unittest.mock import patch
5
5
 
6
6
  import pytest
7
7
 
8
- from dirsql.cli import binary_path as bp_module
8
+ import dirsql.cli.binary_path as bp_module
9
9
  from dirsql.cli.binary_path import binary_path
10
10
 
11
11
 
@@ -2,7 +2,6 @@
2
2
 
3
3
  import io
4
4
  import os
5
- import subprocess
6
5
  import sys
7
6
  from unittest.mock import patch
8
7
 
@@ -35,7 +34,9 @@ def describe_main():
35
34
  with (
36
35
  patch.object(main_module, "binary_path", return_value="C:/dirsql.exe"),
37
36
  patch.object(main_module, "is_windows", return_value=True),
38
- patch.object(subprocess, "run", return_value=_Completed(7)) as run,
37
+ patch(
38
+ "dirsql.cli.main.subprocess.run", return_value=_Completed(7)
39
+ ) as run,
39
40
  ):
40
41
  assert main(["--version"]) == 7
41
42
  run.assert_called_once_with(["C:/dirsql.exe", "--version"])
@@ -44,7 +45,7 @@ def describe_main():
44
45
  with (
45
46
  patch.object(main_module, "binary_path", return_value="C:/dirsql.exe"),
46
47
  patch.object(main_module, "is_windows", return_value=True),
47
- patch.object(subprocess, "run", return_value=_Completed(0)),
48
+ patch("dirsql.cli.main.subprocess.run", return_value=_Completed(0)),
48
49
  patch.object(os, "execv") as execv,
49
50
  ):
50
51
  main([])
@@ -81,7 +82,9 @@ def describe_main():
81
82
  patch.object(sys, "argv", ["dirsql", "--help"]),
82
83
  patch.object(main_module, "binary_path", return_value="C:/dirsql.exe"),
83
84
  patch.object(main_module, "is_windows", return_value=True),
84
- patch.object(subprocess, "run", return_value=_Completed(0)) as run,
85
+ patch(
86
+ "dirsql.cli.main.subprocess.run", return_value=_Completed(0)
87
+ ) as run,
85
88
  ):
86
89
  main(argv=None)
87
90
  run.assert_called_once_with(["C:/dirsql.exe", "--help"])
@@ -93,12 +96,10 @@ def describe_main():
93
96
 
94
97
  def it_dispatches_to_interpret_run_and_returns_its_exit_code():
95
98
  # main.py does `from .interpret.run import run` lazily, so
96
- # patching the `run` function on the submodule is sufficient
97
- # -- each call resolves the name freshly from the submodule.
98
- from .interpret import run as run_submod
99
-
99
+ # patching the `run` function on its module by its dotted path
100
+ # is sufficient -- each call resolves the name freshly.
100
101
  with (
101
- patch.object(run_submod, "run", return_value=0) as interpret_run,
102
+ patch("dirsql.cli.interpret.run.run", return_value=0) as interpret_run,
102
103
  patch.object(main_module, "binary_path") as binary_path,
103
104
  ):
104
105
  assert main(["interpret", "config.py"]) == 0
@@ -106,15 +107,11 @@ def describe_main():
106
107
  binary_path.assert_not_called()
107
108
 
108
109
  def it_propagates_a_nonzero_interpret_exit():
109
- from .interpret import run as run_submod
110
-
111
- with patch.object(run_submod, "run", return_value=2):
110
+ with patch("dirsql.cli.interpret.run.run", return_value=2):
112
111
  assert main(["interpret", "bad.py"]) == 2
113
112
 
114
113
  def it_returns_130_on_keyboard_interrupt():
115
- from .interpret import run as run_submod
116
-
117
- with patch.object(run_submod, "run", side_effect=KeyboardInterrupt()):
114
+ with patch("dirsql.cli.interpret.run.run", side_effect=KeyboardInterrupt()):
118
115
  assert main(["interpret", "config.py"]) == 130
119
116
 
120
117
  def it_does_not_intercept_when_interpret_is_not_argv_0():
@@ -123,7 +120,7 @@ def describe_main():
123
120
  with (
124
121
  patch.object(main_module, "binary_path", return_value="/bin/dirsql"),
125
122
  patch.object(main_module, "is_windows", return_value=True),
126
- patch.object(subprocess, "run", return_value=_Completed(0)),
123
+ patch("dirsql.cli.main.subprocess.run", return_value=_Completed(0)),
127
124
  ):
128
125
  main(["--verbose", "interpret", "config.py"])
129
126
  # binary_path was reached, meaning we did NOT take the
@@ -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.22"
7
+ version = "0.3.23"
8
8
  edition.workspace = true
9
9
  publish = false
10
10
  readme = "README.md"
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