dictsqlite 2.1.1__tar.gz → 2.1.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 (166) hide show
  1. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/Cargo.lock +15 -27
  2. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/Cargo.toml +3 -4
  3. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/PKG-INFO +25 -6
  4. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/Pypi.md +23 -4
  5. dictsqlite-2.1.3/benchmark/README.md +53 -0
  6. dictsqlite-2.1.3/benchmark/analyze_results.py +433 -0
  7. dictsqlite-2.1.3/benchmark/benchmark_all.py +624 -0
  8. dictsqlite-2.1.3/benchmark/benchmark_results - /343/202/263/343/203/224/343/203/274.csv" +87 -0
  9. dictsqlite-2.1.3/benchmark/benchmark_results.csv +87 -0
  10. dictsqlite-2.1.3/benchmark/export_for_github_action_benchmark.py +73 -0
  11. dictsqlite-2.1.3/benchmark/images/benchmark_avg_latency.png +0 -0
  12. dictsqlite-2.1.3/benchmark/images/benchmark_by_batch_size.png +0 -0
  13. dictsqlite-2.1.3/benchmark/images/benchmark_by_data_size.png +0 -0
  14. dictsqlite-2.1.3/benchmark/images/benchmark_category_comparison.png +0 -0
  15. dictsqlite-2.1.3/benchmark/images/benchmark_ops_per_sec.png +0 -0
  16. dictsqlite-2.1.3/benchmark/images/benchmark_p95_latency.png +0 -0
  17. dictsqlite-2.1.3/benchmark_report.txt +105 -0
  18. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/EXAMPLES_EN.md +1 -1
  19. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/EXAMPLES_JP.md +1 -1
  20. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/INDEX.md +3 -3
  21. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/README_EN.md +10 -1
  22. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/README_JP.md +10 -1
  23. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/pyproject.toml +2 -3
  24. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/async_ops.rs +133 -91
  25. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/lib.rs +96 -106
  26. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/storage.rs +100 -12
  27. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/tests_jsonb.rs +0 -2
  28. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/tests_storage.rs +4 -4
  29. dictsqlite-2.1.1/benchmark/README.md +0 -32
  30. dictsqlite-2.1.1/benchmark/analyze_results.py +0 -262
  31. dictsqlite-2.1.1/benchmark/benchmark_all.py +0 -367
  32. dictsqlite-2.1.1/benchmark/benchmark_results.csv +0 -19
  33. dictsqlite-2.1.1/benchmark/images/benchmark_avg_latency.png +0 -0
  34. dictsqlite-2.1.1/benchmark/images/benchmark_by_data_size.png +0 -0
  35. dictsqlite-2.1.1/benchmark/images/benchmark_category_comparison.png +0 -0
  36. dictsqlite-2.1.1/benchmark/images/benchmark_ops_per_sec.png +0 -0
  37. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/.bandit +0 -0
  38. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/.gitignore +0 -0
  39. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/benches/ops_benchmark.rs +0 -0
  40. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/build.sh +0 -0
  41. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/build_production.sh +0 -0
  42. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/build_result.txt +0 -0
  43. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/check_result.txt +0 -0
  44. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/deny.toml +0 -0
  45. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/FIX_SUMMARY.md +0 -0
  46. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/MIGRATION_FROM_1.8.8_EN.md +0 -0
  47. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/MIGRATION_FROM_1.8.8_JP.md +0 -0
  48. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/TABLE_PROXY_REPR_REPORT.md +0 -0
  49. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/optimization_v5/01_overview.md +0 -0
  50. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/optimization_v5/02_storage_engine.md +0 -0
  51. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/optimization_v5/03_async_layer.md +0 -0
  52. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/optimization_v5/04_integration.md +0 -0
  53. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/optimization_v5/05_verification.md +0 -0
  54. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/README.md +0 -0
  55. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/async_await_example.py +0 -0
  56. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/async_jsonb_table_usage.py +0 -0
  57. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/jsonb_table_usage_example.py +0 -0
  58. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/v4.2_advanced_examples.py +0 -0
  59. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/v4.2_basic_usage.py +0 -0
  60. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/v4.2_migration_example.py +0 -0
  61. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/v4.2_performance_examples.py +0 -0
  62. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/ASYNC_IMPLEMENTATION_SUMMARY.md +0 -0
  63. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/ASYNC_SUPPORT_README.md +0 -0
  64. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/BENCHMARK_RESULTS_JP.md +0 -0
  65. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/BUILD_WARNINGS_EXPLANATION_JP.md +0 -0
  66. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/CLIPPY_FIXES_SUMMARY.md +0 -0
  67. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/COMPREHENSIVE_BENCHMARK_RESULTS.md +0 -0
  68. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/COMPREHENSIVE_TEST_IMPLEMENTATION_REPORT_JP.md +0 -0
  69. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/DEVELOPER_GUIDE_JP.md +0 -0
  70. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/DICTSQLITE_V2_SPECIFICATION_JP.md +0 -0
  71. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/DOCUMENTATION_INDEX_JP.md +0 -0
  72. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/DOCUMENTATION_VERIFICATION_SUMMARY.md +0 -0
  73. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/FIX_SUMMARY_JP.md +0 -0
  74. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/GITHUB_ACTIONS_FIXES.md +0 -0
  75. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/IMPLEMENTATION_COMPLETION_REPORT.md +0 -0
  76. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/IMPLEMENTATION_COMPLETION_REPORT_JP.md +0 -0
  77. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/IMPROVEMENT_ACTION_PLAN_JP.md +0 -0
  78. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/INVESTIGATION_SUMMARY_JP.md +0 -0
  79. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/ISSUE_RESPONSE_JSON_TABLE_SUPPORT_JP.md +0 -0
  80. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/JSONB_TABLE_IMPLEMENTATION_SUMMARY_JP.md +0 -0
  81. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/JSON_MODE_TABLE_SUPPORT_FEASIBILITY_JP.md +0 -0
  82. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/MIGRATION_GUIDE_V4.2_JP.md +0 -0
  83. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PERFORMANCE_OPTIMIZATION_GUIDE_JP.md +0 -0
  84. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PERFORMANCE_TESTING_GUIDE.md +0 -0
  85. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PERFORMANCE_TEST_IMPLEMENTATION.md +0 -0
  86. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PERFORMANCE_TEST_RESULTS.md +0 -0
  87. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PYTEST_INTEGRATION_SUMMARY.md +0 -0
  88. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PYTEST_WARNINGS_FIX.md +0 -0
  89. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/QUICK_REFERENCE_JSONB_TABLE_JP.md +0 -0
  90. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/README_INVESTIGATION_JP.md +0 -0
  91. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/README_V4.2_JP.md +0 -0
  92. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/TESTING_DOCUMENTATION_JP.md +0 -0
  93. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/TEST_AND_DOCUMENTATION_REVIEW_JP.md +0 -0
  94. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/TEST_COMPLETION_REPORT.md +0 -0
  95. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/V4.2_IMPLEMENTATION_SUMMARY.md +0 -0
  96. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/WINDOWS_PERMISSION_FIX.md +0 -0
  97. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/python/dictsqlite/__init__.py +0 -0
  98. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/python/dictsqlite/modules/__init__.py +0 -0
  99. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/python/dictsqlite/modules/safe_pickle.py +0 -0
  100. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/setup.cfg +0 -0
  101. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/cache.rs +0 -0
  102. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/crypto.rs +0 -0
  103. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/tests_compression.rs +0 -0
  104. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/tests_lru.rs +0 -0
  105. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/tests_v6.rs +0 -0
  106. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/test_debug.py +0 -0
  107. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/ISSUE_RESPONSE.md +0 -0
  108. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/README.md +0 -0
  109. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/README_COMPREHENSIVE_TESTS.md +0 -0
  110. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/README_NEW_COMPREHENSIVE_TESTS.md +0 -0
  111. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/TEST_DOCUMENTATION.md +0 -0
  112. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/TEST_FIXES_REPORT_JP.md +0 -0
  113. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/__init__.py +0 -0
  114. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/_check_safe_pickle.py +0 -0
  115. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/_reproduce_test.py +0 -0
  116. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/benchmark_comprehensive.py +0 -0
  117. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/conftest.py +0 -0
  118. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_advanced_features.py +0 -0
  119. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_async_awaitable.py +0 -0
  120. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_async_operations.py +0 -0
  121. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_async_persistence.py +0 -0
  122. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_async_table_contains.py +0 -0
  123. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_basic_operations.py +0 -0
  124. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_boundary_edge_cases.py +0 -0
  125. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_comprehensive_all_functions.py +0 -0
  126. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_comprehensive_edge_cases.py +0 -0
  127. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_comprehensive_integration.py +0 -0
  128. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_comprehensive_stress.py +0 -0
  129. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_dict_compat_api.py +0 -0
  130. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_exhaustive_async.py +0 -0
  131. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_exhaustive_async_table_proxy.py +0 -0
  132. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_exhaustive_dictsqlite_v4.py +0 -0
  133. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_exhaustive_table_proxy.py +0 -0
  134. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_issue_fixes.py +0 -0
  135. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_jsonb_table_support.py +0 -0
  136. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_lru_eviction.py +0 -0
  137. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_performance.py +0 -0
  138. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_persistence_modes.py +0 -0
  139. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_pool_size.py +0 -0
  140. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_return_type_validation.py +0 -0
  141. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_storage_modes.py +0 -0
  142. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_table_mode.py +0 -0
  143. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_table_proxy_eq.py +0 -0
  144. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_table_proxy_repr.py +0 -0
  145. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_v4.2_comprehensive_performance.py +0 -0
  146. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_v4_security.py +0 -0
  147. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_v6_migration.py +0 -0
  148. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_v7_batch_async.py +0 -0
  149. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/verify_optimization_opportunities.py +0 -0
  150. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/__init__.py +0 -0
  151. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/__main__.py +0 -0
  152. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/auth.py +0 -0
  153. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/cli.py +0 -0
  154. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/commands/__init__.py +0 -0
  155. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/commands/check.py +0 -0
  156. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/commands/register.py +0 -0
  157. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/commands/upload.py +0 -0
  158. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/distribution.py +0 -0
  159. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/exceptions.py +0 -0
  160. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/package.py +0 -0
  161. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/py.typed +0 -0
  162. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/repository.py +0 -0
  163. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/sdist.py +0 -0
  164. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/settings.py +0 -0
  165. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/utils.py +0 -0
  166. {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/wheel.py +0 -0
@@ -88,9 +88,9 @@ checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
88
88
 
89
89
  [[package]]
90
90
  name = "anyhow"
91
- version = "1.0.102"
91
+ version = "1.0.103"
92
92
  source = "registry+https://github.com/rust-lang/crates.io-index"
93
- checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
93
+ checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3"
94
94
 
95
95
  [[package]]
96
96
  name = "argon2"
@@ -412,7 +412,7 @@ dependencies = [
412
412
 
413
413
  [[package]]
414
414
  name = "dictsqlite"
415
- version = "2.1.1"
415
+ version = "2.1.3"
416
416
  dependencies = [
417
417
  "aes-gcm",
418
418
  "ahash",
@@ -431,7 +431,6 @@ dependencies = [
431
431
  "pbkdf2",
432
432
  "proptest",
433
433
  "pyo3",
434
- "pythonize",
435
434
  "r2d2",
436
435
  "r2d2_sqlite",
437
436
  "rayon",
@@ -941,9 +940,9 @@ dependencies = [
941
940
 
942
941
  [[package]]
943
942
  name = "pyo3"
944
- version = "0.28.2"
943
+ version = "0.29.0"
945
944
  source = "registry+https://github.com/rust-lang/crates.io-index"
946
- checksum = "cf85e27e86080aafd5a22eae58a162e133a589551542b3e5cee4beb27e54f8e1"
945
+ checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
947
946
  dependencies = [
948
947
  "libc",
949
948
  "once_cell",
@@ -955,18 +954,18 @@ dependencies = [
955
954
 
956
955
  [[package]]
957
956
  name = "pyo3-build-config"
958
- version = "0.28.2"
957
+ version = "0.29.0"
959
958
  source = "registry+https://github.com/rust-lang/crates.io-index"
960
- checksum = "8bf94ee265674bf76c09fa430b0e99c26e319c945d96ca0d5a8215f31bf81cf7"
959
+ checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
961
960
  dependencies = [
962
961
  "target-lexicon",
963
962
  ]
964
963
 
965
964
  [[package]]
966
965
  name = "pyo3-ffi"
967
- version = "0.28.2"
966
+ version = "0.29.0"
968
967
  source = "registry+https://github.com/rust-lang/crates.io-index"
969
- checksum = "491aa5fc66d8059dd44a75f4580a2962c1862a1c2945359db36f6c2818b748dc"
968
+ checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
970
969
  dependencies = [
971
970
  "libc",
972
971
  "pyo3-build-config",
@@ -974,9 +973,9 @@ dependencies = [
974
973
 
975
974
  [[package]]
976
975
  name = "pyo3-macros"
977
- version = "0.28.2"
976
+ version = "0.29.0"
978
977
  source = "registry+https://github.com/rust-lang/crates.io-index"
979
- checksum = "f5d671734e9d7a43449f8480f8b38115df67bef8d21f76837fa75ee7aaa5e52e"
978
+ checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
980
979
  dependencies = [
981
980
  "proc-macro2",
982
981
  "pyo3-macros-backend",
@@ -986,27 +985,16 @@ dependencies = [
986
985
 
987
986
  [[package]]
988
987
  name = "pyo3-macros-backend"
989
- version = "0.28.2"
988
+ version = "0.29.0"
990
989
  source = "registry+https://github.com/rust-lang/crates.io-index"
991
- checksum = "22faaa1ce6c430a1f71658760497291065e6450d7b5dc2bcf254d49f66ee700a"
990
+ checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
992
991
  dependencies = [
993
992
  "heck",
994
993
  "proc-macro2",
995
- "pyo3-build-config",
996
994
  "quote",
997
995
  "syn",
998
996
  ]
999
997
 
1000
- [[package]]
1001
- name = "pythonize"
1002
- version = "0.28.0"
1003
- source = "registry+https://github.com/rust-lang/crates.io-index"
1004
- checksum = "0b79f670c9626c8b651c0581011b57b6ba6970bb69faf01a7c4c0cfc81c43f95"
1005
- dependencies = [
1006
- "pyo3",
1007
- "serde",
1008
- ]
1009
-
1010
998
  [[package]]
1011
999
  name = "quick-error"
1012
1000
  version = "1.2.3"
@@ -1052,9 +1040,9 @@ dependencies = [
1052
1040
 
1053
1041
  [[package]]
1054
1042
  name = "rand"
1055
- version = "0.9.2"
1043
+ version = "0.9.4"
1056
1044
  source = "registry+https://github.com/rust-lang/crates.io-index"
1057
- checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
1045
+ checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
1058
1046
  dependencies = [
1059
1047
  "rand_chacha",
1060
1048
  "rand_core 0.9.3",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "dictsqlite"
3
- version = "2.1.1"
3
+ version = "2.1.3"
4
4
  edition = "2021"
5
5
  authors = ["Disnana <support@disnana.com>"]
6
6
  description = "High-performance DictSQLite v2 with I/O optimizations (300x async, 43x sync speedup) - Buffered writes and batch operations"
@@ -11,8 +11,8 @@ name = "dictsqlite"
11
11
  crate-type = ["cdylib", "rlib"]
12
12
 
13
13
  [dependencies]
14
- # Python bindings (updated: PyO3 0.28 with improved FromPyObject performance)
15
- pyo3 = { version = "0.28", features = ["extension-module", "abi3-py39", "experimental-async"] }
14
+ # Python bindings (updated: PyO3 0.29 for latest security fixes)
15
+ pyo3 = { version = "0.29", features = ["extension-module", "abi3-py39", "experimental-async"] }
16
16
 
17
17
  # High-performance concurrent data structures (v5.1 update: dashmap 6.1 for better perf)
18
18
  dashmap = "6.1" # Lock-free concurrent HashMap
@@ -32,7 +32,6 @@ async-trait = "0.1"
32
32
  serde = { version = "1.0", features = ["derive"] }
33
33
  serde_json = "1.0"
34
34
  rmp-serde = "1.1" # MessagePack for JSONB mode
35
- pythonize = "0.28" # Fast Python <-> Rust JSON conversion (pyo3 0.28 compat)
36
35
 
37
36
  # Compression (v5 optimization)
38
37
  zstd = "0.13" # High-speed compression
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dictsqlite
3
- Version: 2.1.1
3
+ Version: 2.1.3
4
4
  Classifier: License :: OSI Approved :: MIT License
5
- Classifier: Development Status :: 4 - Beta
5
+ Classifier: Development Status :: 5 - Production/Stable
6
6
  Classifier: Operating System :: OS Independent
7
7
  Classifier: Intended Audience :: Developers
8
8
  Classifier: Programming Language :: Python :: 3
@@ -17,10 +17,19 @@ License: MIT
17
17
  Requires-Python: >=3.9
18
18
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
19
19
 
20
- > **BETA / ベータ版:** このドキュメントは DictSQLite v2 のベータ版に対応しています。機能やドキュメントの場所は変更される可能性があります。
20
+ # DictSQLite Version 2
21
21
 
22
- > BETA: This document corresponds to the beta version of DictSQLite v2. Features and documentation may be subject to change.
23
- # DictSQLite Version 2(Beta)
22
+ High-performance dict-like SQLite storage for Python, backed by a Rust native extension.
23
+
24
+ ## Release Highlights — v2.1.3
25
+
26
+ - More robust write-buffer flushing: pending writes are restored if a storage flush fails.
27
+ - Safer delete/clear behavior: pending buffered writes no longer reappear after removal.
28
+ - Faster batch cache-miss reads using bulk SQLite queries.
29
+ - Improved warm-cache memory accounting to avoid repeated full-cache scans.
30
+ - Fixed separate-table persistence and compression/decompression consistency.
31
+ - Expanded benchmark coverage across sizes, record counts, storage modes, table modes, cold reads, mutations, and threaded access.
32
+ - GitHub Actions now publishes benchmark artifacts, comparison data, and Markdown summaries.
24
33
 
25
34
  ## English Version
26
35
  (日本語のREADMEは下にあります)
@@ -74,7 +83,17 @@ You are free to modify the code, but you must give appropriate credit to the ori
74
83
  ## 日本語版
75
84
  (English version is above)
76
85
 
77
- PythonでSQLiteの基本的な操作をDictのように扱うことができます。
86
+ Rust製ネイティブ拡張をバックエンドにした、辞書ライクな高性能 SQLite ストレージです。
87
+
88
+ ## リリースハイライト — v2.1.3
89
+
90
+ - flush 失敗時に保留中の書き込みが失われないように改善
91
+ - delete/clear 後に未 flush の値が復活する問題を修正
92
+ - batch 取得のキャッシュミス時に一括 SQLite 読み込みを使用
93
+ - warm cache のメモリ使用量管理を改善し、不要な全走査を削減
94
+ - separate table の永続化と圧縮/展開の整合性を修正
95
+ - サイズ、件数、保存形式、テーブルモード、cold read、削除/clear、並行アクセスを含むベンチマークを拡充
96
+ - GitHub Actions でベンチ結果 artifact、比較データ、Markdown Summary を出力
78
97
 
79
98
  ## インストール
80
99
 
@@ -1,7 +1,16 @@
1
- > **BETA / ベータ版:** このドキュメントは DictSQLite v2 のベータ版に対応しています。機能やドキュメントの場所は変更される可能性があります。
1
+ # DictSQLite Version 2
2
2
 
3
- > BETA: This document corresponds to the beta version of DictSQLite v2. Features and documentation may be subject to change.
4
- # DictSQLite Version 2(Beta)
3
+ High-performance dict-like SQLite storage for Python, backed by a Rust native extension.
4
+
5
+ ## Release Highlights — v2.1.3
6
+
7
+ - More robust write-buffer flushing: pending writes are restored if a storage flush fails.
8
+ - Safer delete/clear behavior: pending buffered writes no longer reappear after removal.
9
+ - Faster batch cache-miss reads using bulk SQLite queries.
10
+ - Improved warm-cache memory accounting to avoid repeated full-cache scans.
11
+ - Fixed separate-table persistence and compression/decompression consistency.
12
+ - Expanded benchmark coverage across sizes, record counts, storage modes, table modes, cold reads, mutations, and threaded access.
13
+ - GitHub Actions now publishes benchmark artifacts, comparison data, and Markdown summaries.
5
14
 
6
15
  ## English Version
7
16
  (日本語のREADMEは下にあります)
@@ -55,7 +64,17 @@ You are free to modify the code, but you must give appropriate credit to the ori
55
64
  ## 日本語版
56
65
  (English version is above)
57
66
 
58
- PythonでSQLiteの基本的な操作をDictのように扱うことができます。
67
+ Rust製ネイティブ拡張をバックエンドにした、辞書ライクな高性能 SQLite ストレージです。
68
+
69
+ ## リリースハイライト — v2.1.3
70
+
71
+ - flush 失敗時に保留中の書き込みが失われないように改善
72
+ - delete/clear 後に未 flush の値が復活する問題を修正
73
+ - batch 取得のキャッシュミス時に一括 SQLite 読み込みを使用
74
+ - warm cache のメモリ使用量管理を改善し、不要な全走査を削減
75
+ - separate table の永続化と圧縮/展開の整合性を修正
76
+ - サイズ、件数、保存形式、テーブルモード、cold read、削除/clear、並行アクセスを含むベンチマークを拡充
77
+ - GitHub Actions でベンチ結果 artifact、比較データ、Markdown Summary を出力
59
78
 
60
79
  ## インストール
61
80
 
@@ -0,0 +1,53 @@
1
+ # DictSQLite Benchmark Suite
2
+
3
+ パフォーマンス測定とグラフ分析ツール
4
+
5
+ ## 使い方
6
+
7
+ ### 1. ベンチマーク実行
8
+ ```bash
9
+ cd benchmark
10
+ python benchmark_all.py --profile quick
11
+ ```
12
+
13
+ `--profile` は3段階です。
14
+
15
+ | profile | 用途 |
16
+ |---------|------|
17
+ | `quick` | CIや修正後のスモーク確認向け |
18
+ | `full` | ローカルでの通常比較向け |
19
+ | `stress` | 大きいサイズ・大量件数・高並行の確認向け |
20
+
21
+ ### 2. グラフ生成
22
+ ```bash
23
+ python analyze_results.py
24
+ ```
25
+
26
+ ## 出力ファイル
27
+
28
+ | ファイル | 説明 |
29
+ |----------|------|
30
+ | `benchmark_results.csv` | 性能結果データ(固定名) |
31
+ | `benchmark_ops_per_sec.png` | 操作/秒比較グラフ |
32
+ | `benchmark_avg_latency.png` | 平均レイテンシグラフ |
33
+ | `benchmark_by_data_size.png` | データサイズ別性能 |
34
+ | `benchmark_by_batch_size.png` | バッチサイズ/件数別性能 |
35
+ | `benchmark_p95_latency.png` | p95レイテンシ |
36
+ | `benchmark_category_comparison.png` | カテゴリ別総合比較 |
37
+
38
+ ## テスト対象
39
+
40
+ - DictSQLiteV4: get, set, batch_get, batch_set, flush, delete, clear
41
+ - AsyncDictSQLite: get, set, batch_get, batch_set, flush
42
+ - TableProxy / AsyncTableProxy: prefix/separate mode の get, set, contains
43
+ - persist_mode: memory, lazy, writethrough
44
+ - storage_mode: bytes, json, jsonb, pickle
45
+ - cold read: 新しいインスタンスからのストレージ読み込み
46
+ - threaded access: 複数スレッドでの混合 get/set
47
+
48
+ ## 測定軸
49
+
50
+ - `data_size`: 値のサイズ
51
+ - `batch_size`: 一括処理の件数、または対象レコード数
52
+ - `scenario`: hot read/write、cold storage read、table mode、threaded などの測定条件
53
+ - `p95_time_ms`: 外れ値に強いレイテンシ確認用