apsw-sqlite3mc 3.53.1.0__tar.gz → 3.53.2.0__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 (75) hide show
  1. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/PKG-INFO +3 -2
  2. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/README.rst +1 -1
  3. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/__init__.pyi +18 -1
  4. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/sqlite_extra.json +1 -5
  5. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw_sqlite3mc.egg-info/PKG-INFO +3 -2
  6. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/checksums +3 -0
  7. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/setup.py +3 -2
  8. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/sqlite3/sqlite3.c +1142 -207
  9. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/apsw.docstrings +7 -0
  10. apsw_sqlite3mc-3.53.2.0/src/apswversion.h +1 -0
  11. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/constants.c +4 -2
  12. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/cursor.c +7 -0
  13. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/tools/vend.py +1 -9
  14. apsw_sqlite3mc-3.53.1.0/src/apswversion.h +0 -1
  15. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/LICENSE +0 -0
  16. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/MANIFEST.in +0 -0
  17. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/__main__.py +0 -0
  18. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/aio.py +0 -0
  19. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/bestpractice.py +0 -0
  20. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/ext.py +0 -0
  21. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/fts5.py +0 -0
  22. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/fts5aux.py +0 -0
  23. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/fts5query.py +0 -0
  24. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/fts_test_strings +0 -0
  25. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/mcall.py +0 -0
  26. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/py.typed +0 -0
  27. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/shell.py +0 -0
  28. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/speedtest.py +0 -0
  29. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/sqlite_extra.py +0 -0
  30. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/sqlite_extra_binaries/README.md +0 -0
  31. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/tests/__main__.py +0 -0
  32. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/tests/aiotest.py +0 -0
  33. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/tests/async_meta.py +0 -0
  34. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/tests/carray.py +0 -0
  35. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/tests/extratest.py +0 -0
  36. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/tests/fork_checker.py +0 -0
  37. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/tests/ftstests.py +0 -0
  38. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/tests/jsonb.py +0 -0
  39. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/tests/mctests.py +0 -0
  40. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/tests/sessiontests.py +0 -0
  41. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/tests/shelltest.py +0 -0
  42. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/trace.py +0 -0
  43. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw/unicode.py +0 -0
  44. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw_sqlite3mc.egg-info/SOURCES.txt +0 -0
  45. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw_sqlite3mc.egg-info/dependency_links.txt +0 -0
  46. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw_sqlite3mc.egg-info/entry_points.txt +0 -0
  47. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/apsw_sqlite3mc.egg-info/top_level.txt +0 -0
  48. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/pyproject.toml +0 -0
  49. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/setup.apsw +0 -0
  50. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/setup.cfg +0 -0
  51. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/_unicodedb.c +0 -0
  52. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/apsw.c +0 -0
  53. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/argparse.c +0 -0
  54. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/async.c +0 -0
  55. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/backup.c +0 -0
  56. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/blob.c +0 -0
  57. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/carray.c +0 -0
  58. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/connection.c +0 -0
  59. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/exceptions.c +0 -0
  60. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/faultinject.c +0 -0
  61. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/faultinject.h +0 -0
  62. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/fileio_win32.c +0 -0
  63. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/fts.c +0 -0
  64. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/jsonb.c +0 -0
  65. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/pyutil.c +0 -0
  66. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/session.c +0 -0
  67. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/sqlite_debug.h +0 -0
  68. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/statementcache.c +0 -0
  69. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/stringconstants.c +0 -0
  70. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/testextension.c +0 -0
  71. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/traceback.c +0 -0
  72. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/unicode.c +0 -0
  73. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/util.c +0 -0
  74. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/vfs.c +0 -0
  75. {apsw_sqlite3mc-3.53.1.0 → apsw_sqlite3mc-3.53.2.0}/src/vtable.c +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apsw_sqlite3mc
3
- Version: 3.53.1.0
3
+ Version: 3.53.2.0
4
4
  Summary: SQLite3 Multiple Ciphers combined with Another Python SQLite Wrapper
5
5
  Home-page: https://github.com/utelle/apsw-sqlite3mc
6
6
  Author: Ulrich Telle
@@ -24,6 +24,7 @@ Classifier: Framework :: Trio
24
24
  Classifier: Framework :: AsyncIO
25
25
  Classifier: Framework :: AnyIO
26
26
  Classifier: Programming Language :: Python :: Implementation :: CPython
27
+ Classifier: Typing :: Typed
27
28
  Requires-Python: >=3.10
28
29
  Description-Content-Type: text/x-rst
29
30
  License-File: LICENSE
@@ -89,7 +90,7 @@ Setting the key on a new database is the only change needed to your code.
89
90
 
90
91
  >>> import apsw
91
92
  >>> print(apsw.mc_version)
92
- SQLite3 Multiple Ciphers 2.3.4
93
+ SQLite3 Multiple Ciphers 2.3.5
93
94
  >>> con = apsw.Connection("database.sqlite3")
94
95
  >>> con.pragma("key", "my secret passphrase")
95
96
  ok
@@ -59,7 +59,7 @@ Setting the key on a new database is the only change needed to your code.
59
59
 
60
60
  >>> import apsw
61
61
  >>> print(apsw.mc_version)
62
- SQLite3 Multiple Ciphers 2.3.4
62
+ SQLite3 Multiple Ciphers 2.3.5
63
63
  >>> con = apsw.Connection("database.sqlite3")
64
64
  >>> con.pragma("key", "my secret passphrase")
65
65
  ok
@@ -2805,6 +2805,13 @@ class Cursor:
2805
2805
  - [(3, 4), (4, 5)]
2806
2806
  * - select 3,4; select 5
2807
2807
  - [(3, 4), 5]
2808
+ * - select null
2809
+ - None
2810
+ * - select 'yes' where 1=2
2811
+ - None
2812
+
2813
+ It is not possible to tell the difference between :code:`None`
2814
+ returned, versus no matching rows.
2808
2815
 
2809
2816
  Row tracers are not called when using this method."""
2810
2817
 
@@ -4530,6 +4537,8 @@ SQLITE_CHANGESETAPPLY_INVERT: int = 2
4530
4537
  """For `Flags for sqlite3changeset_apply_v2 <https://sqlite.org/session/c_changesetapply_fknoaction.html>'__"""
4531
4538
  SQLITE_CHANGESETAPPLY_NOSAVEPOINT: int = 1
4532
4539
  """For `Flags for sqlite3changeset_apply_v2 <https://sqlite.org/session/c_changesetapply_fknoaction.html>'__"""
4540
+ SQLITE_CHANGESETAPPLY_NOUPDATELOOP: int = 16
4541
+ """For `Flags for sqlite3changeset_apply_v2 <https://sqlite.org/session/c_changesetapply_fknoaction.html>'__"""
4533
4542
  SQLITE_CHANGESETSTART_INVERT: int = 2
4534
4543
  """For `Flags for sqlite3changeset_start_v2 <https://sqlite.org/session/c_changesetstart_invert.html>'__"""
4535
4544
  SQLITE_CHANGESET_ABORT: int = 2
@@ -5563,7 +5572,8 @@ mapping_session_changeset_apply_v2_flags: dict[str | int, int | str]
5563
5572
  Doc at https://sqlite.org/session/c_changesetapply_fknoaction.html
5564
5573
 
5565
5574
  SQLITE_CHANGESETAPPLY_FKNOACTION SQLITE_CHANGESETAPPLY_IGNORENOOP
5566
- SQLITE_CHANGESETAPPLY_INVERT SQLITE_CHANGESETAPPLY_NOSAVEPOINT"""
5575
+ SQLITE_CHANGESETAPPLY_INVERT SQLITE_CHANGESETAPPLY_NOSAVEPOINT
5576
+ SQLITE_CHANGESETAPPLY_NOUPDATELOOP"""
5567
5577
 
5568
5578
  mapping_session_changeset_start_v2_flags: dict[str | int, int | str]
5569
5579
  """Flags for sqlite3changeset_start_v2 mapping names to int and int to names.
@@ -7627,6 +7637,13 @@ class AsyncCursor:
7627
7637
  - [(3, 4), (4, 5)]
7628
7638
  * - select 3,4; select 5
7629
7639
  - [(3, 4), 5]
7640
+ * - select null
7641
+ - None
7642
+ * - select 'yes' where 1=2
7643
+ - None
7644
+
7645
+ It is not possible to tell the difference between :code:`None`
7646
+ returned, versus no matching rows.
7630
7647
 
7631
7648
  Row tracers are not called when using this method."""
7632
7649
 
@@ -60,7 +60,7 @@
60
60
  "type": "extension"
61
61
  },
62
62
  "ieee754": {
63
- "description": "functions for the exact display* and input of IEEE754 Binary64 floating-point numbers",
63
+ "description": "functions for the exact display and input of IEEE754 Binary64 floating-point numbers",
64
64
  "type": "extension"
65
65
  },
66
66
  "memstat": {
@@ -147,10 +147,6 @@
147
147
  "description": "Database Remote-Copy Tool",
148
148
  "type": "executable"
149
149
  },
150
- "sqlite3_scrub": {
151
- "description": "Makes a backup zeroing out all deleted content",
152
- "type": "executable"
153
- },
154
150
  "sqlite3_shell": {
155
151
  "description": "Command line shell",
156
152
  "type": "executable"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apsw-sqlite3mc
3
- Version: 3.53.1.0
3
+ Version: 3.53.2.0
4
4
  Summary: SQLite3 Multiple Ciphers combined with Another Python SQLite Wrapper
5
5
  Home-page: https://github.com/utelle/apsw-sqlite3mc
6
6
  Author: Ulrich Telle
@@ -24,6 +24,7 @@ Classifier: Framework :: Trio
24
24
  Classifier: Framework :: AsyncIO
25
25
  Classifier: Framework :: AnyIO
26
26
  Classifier: Programming Language :: Python :: Implementation :: CPython
27
+ Classifier: Typing :: Typed
27
28
  Requires-Python: >=3.10
28
29
  Description-Content-Type: text/x-rst
29
30
  License-File: LICENSE
@@ -89,7 +90,7 @@ Setting the key on a new database is the only change needed to your code.
89
90
 
90
91
  >>> import apsw
91
92
  >>> print(apsw.mc_version)
92
- SQLite3 Multiple Ciphers 2.3.4
93
+ SQLite3 Multiple Ciphers 2.3.5
93
94
  >>> con = apsw.Connection("database.sqlite3")
94
95
  >>> con.pragma("key", "my secret passphrase")
95
96
  ok
@@ -9,6 +9,7 @@
9
9
  # way.
10
10
 
11
11
  # These are used too compile sqlite extra
12
+ https://sqlite.org/vec1/zip/vec1-20260526165101-762865e44d.zip 152789 977b062b7f1a15756fb428676d3425a57e3c84dc254cb104cb7ff31f642ede1c a332720cdebb74739b01c53187c6487b9c143c5cca45d863ef80c36e2683a0ba
12
13
  https://sqlite.org/vec1/zip/vec1-20260505104119-eb38e10fef.zip 149803 b37509b229a393a387f3f4f352529dcf10cc3ebdbb2c75fa062763d4fdd0953b ceb3aa3699c378872e88b06b237e94eec9e545ffc1abe7388f521a107ec50699
13
14
  https://sqlite.org/vec1/zip/vec1-20260409204746-4b73767df0.zip 119674 952af14601531b527a497df81d038a2693c1a39dba2d76ed798c3e5ba3dd7c22 55e2d7e05da20b7eb4abbe77688bdff4662a6f4f248f6710e7d2b605d3c90107
14
15
  https://sqlite.org/vec1/zip/vec1-20260330201854-5b7c141049.zip 107146 099acc5f1eee719cae16d4843e904bba432cda9ce43d1cefb756f6566462d9f5 1c3e4264a416d68209ea37139c7e0ad42fcee4f66c021c8f495cce9882bc71e3
@@ -20,6 +21,8 @@ https://sqlite.org/sqlar/zip/sqlar-src-20180107193712-4824e73896.zip 1980460 63b
20
21
  https://www.zlib.net/zlib132.zip 1616754 e8bf55f3017aa181690990cb58a994e77885da140609fc8f94abe9b65d2cae28 6b35b981f73425dc5f142cbee457f078d42240c022c804982849b962f1d1e2c6
21
22
 
22
23
  # SQLite releases
24
+ https://sqlite.org/2026/sqlite-autoconf-3530200.tar.gz 3279926 588ad51949419a56ebe81fe56193d510c559eb94c9a57748387860b5d3069316 025328da165109f48abccc6e7478508060804412bed2bd81d47e98ba1b72983b
25
+ https://sqlite.org/2026/sqlite-src-3530200.zip 14527073 cafff764c03f6d720968f746e2f47a986bbf12bf4c18904f1eb131c0b0b592d3 490ec7af32a6bfa5f3e05dc279c04286cfe3f328def4a8b7344e3fa20be18a4c
23
26
  https://sqlite.org/2026/sqlite-autoconf-3530100.tar.gz 3275272 83e6b2020a034e9a7ad4a72feea59e1ad52f162e09cbd26735a3ffb98359fc4f 36ca143645cf76997d07b66e9244c636b8ccdec64a1d50558259c4e415e6558b
24
27
  https://sqlite.org/2026/sqlite-src-3530100.zip 14515734 1b2b5755d9064c4d5d1b0bf5307b48b089963e291c40cc7351318aa1b61c460e 27cfc9264b2188fd17f811a8c03424eb65391c2ef9874cbfc860ea25f4322363
25
28
  https://sqlite.org/2026/sqlite-autoconf-3530000.tar.gz 3274709 851e9b38192fe2ceaa65e0baa665e7fa06230c3d9bd1a6a9662d02380d73365a 60c4b08c6729761e488d185e0d52411da10b14c72b53ada6936dc5eea225cefe
@@ -306,7 +306,7 @@ class fetch(Command):
306
306
  for desc, url, replace in (
307
307
  (
308
308
  "experimental vec1 extension source",
309
- "https://sqlite.org/vec1/zip/vec1-20260505104119-eb38e10fef.zip",
309
+ "https://sqlite.org/vec1/zip/vec1-20260526165101-762865e44d.zip",
310
310
  "sqlite3/vec1",
311
311
  ),
312
312
  (
@@ -406,7 +406,7 @@ class apsw_build(bparent):
406
406
 
407
407
  def run(self):
408
408
  # this has to be done first ...
409
- if all(pathlib.Path(f).exists() for f in ("sqlite3/tool/dbtotxt.c", "sqlite3/ext/misc/scrub.c")):
409
+ if all(pathlib.Path(f).exists() for f in ("sqlite3/tool/dbtotxt.c", "sqlite3/ext/misc/unionvtab.c")):
410
410
  # Call into vend which we can't import so do something similar
411
411
  vend = types.ModuleType("vend")
412
412
  sys.modules["vend"] = vend
@@ -1019,6 +1019,7 @@ if __name__ == "__main__":
1019
1019
  "Framework :: AsyncIO",
1020
1020
  "Framework :: AnyIO",
1021
1021
  "Programming Language :: Python :: Implementation :: CPython",
1022
+ "Typing :: Typed",
1022
1023
  ],
1023
1024
  keywords=["database", "sqlite", "encryption"],
1024
1025
  license="OSI Approved",