libsql 0.1.6__tar.gz → 0.1.8__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 (48) hide show
  1. {libsql-0.1.6 → libsql-0.1.8}/.github/workflows/CI.yml +26 -1
  2. {libsql-0.1.6 → libsql-0.1.8}/Cargo.lock +99 -64
  3. {libsql-0.1.6 → libsql-0.1.8}/Cargo.toml +6 -6
  4. libsql-0.1.8/PKG-INFO +8 -0
  5. {libsql-0.1.6 → libsql-0.1.8}/pyproject.toml +1 -1
  6. {libsql-0.1.6 → libsql-0.1.8}/src/lib.rs +50 -38
  7. libsql-0.1.6/PKG-INFO +0 -58
  8. {libsql-0.1.6 → libsql-0.1.8}/.github/workflows/pr-tests.yml +0 -0
  9. {libsql-0.1.6 → libsql-0.1.8}/.gitignore +0 -0
  10. {libsql-0.1.6 → libsql-0.1.8}/CONTRIBUTING.md +0 -0
  11. {libsql-0.1.6 → libsql-0.1.8}/LICENSE.md +0 -0
  12. {libsql-0.1.6 → libsql-0.1.8}/README.md +0 -0
  13. {libsql-0.1.6 → libsql-0.1.8}/build.rs +0 -0
  14. {libsql-0.1.6 → libsql-0.1.8}/docs/api.md +0 -0
  15. {libsql-0.1.6 → libsql-0.1.8}/example.py +0 -0
  16. {libsql-0.1.6 → libsql-0.1.8}/examples/batch/.gitignore +0 -0
  17. {libsql-0.1.6 → libsql-0.1.8}/examples/batch/README.md +0 -0
  18. {libsql-0.1.6 → libsql-0.1.8}/examples/batch/main.py +0 -0
  19. {libsql-0.1.6 → libsql-0.1.8}/examples/encryption/.gitignore +0 -0
  20. {libsql-0.1.6 → libsql-0.1.8}/examples/encryption/README.md +0 -0
  21. {libsql-0.1.6 → libsql-0.1.8}/examples/encryption/main.py +0 -0
  22. {libsql-0.1.6 → libsql-0.1.8}/examples/execute_script.py +0 -0
  23. {libsql-0.1.6 → libsql-0.1.8}/examples/local/.gitignore +0 -0
  24. {libsql-0.1.6 → libsql-0.1.8}/examples/local/README.md +0 -0
  25. {libsql-0.1.6 → libsql-0.1.8}/examples/local/main.py +0 -0
  26. {libsql-0.1.6 → libsql-0.1.8}/examples/memory/README.md +0 -0
  27. {libsql-0.1.6 → libsql-0.1.8}/examples/memory/main.py +0 -0
  28. {libsql-0.1.6 → libsql-0.1.8}/examples/remote/README.md +0 -0
  29. {libsql-0.1.6 → libsql-0.1.8}/examples/remote/main.py +0 -0
  30. {libsql-0.1.6 → libsql-0.1.8}/examples/remote_connect.py +0 -0
  31. {libsql-0.1.6 → libsql-0.1.8}/examples/sqlalchemy/dialect.py +0 -0
  32. {libsql-0.1.6 → libsql-0.1.8}/examples/sqlalchemy/example.py +0 -0
  33. {libsql-0.1.6 → libsql-0.1.8}/examples/statements.sql +0 -0
  34. {libsql-0.1.6 → libsql-0.1.8}/examples/sync/.gitignore +0 -0
  35. {libsql-0.1.6 → libsql-0.1.8}/examples/sync/README.md +0 -0
  36. {libsql-0.1.6 → libsql-0.1.8}/examples/sync/main.py +0 -0
  37. {libsql-0.1.6 → libsql-0.1.8}/examples/sync_write.py +0 -0
  38. {libsql-0.1.6 → libsql-0.1.8}/examples/transaction/.gitignore +0 -0
  39. {libsql-0.1.6 → libsql-0.1.8}/examples/transaction/README.md +0 -0
  40. {libsql-0.1.6 → libsql-0.1.8}/examples/transaction/main.py +0 -0
  41. {libsql-0.1.6 → libsql-0.1.8}/examples/vector/.gitignore +0 -0
  42. {libsql-0.1.6 → libsql-0.1.8}/examples/vector/README.md +0 -0
  43. {libsql-0.1.6 → libsql-0.1.8}/examples/vector/main.py +0 -0
  44. {libsql-0.1.6 → libsql-0.1.8}/examples/vector.py +0 -0
  45. {libsql-0.1.6 → libsql-0.1.8}/perf-libsql.py +0 -0
  46. {libsql-0.1.6 → libsql-0.1.8}/perf-sqlite3.py +0 -0
  47. {libsql-0.1.6 → libsql-0.1.8}/shell.nix +0 -0
  48. {libsql-0.1.6 → libsql-0.1.8}/tests/test_suite.py +0 -0
@@ -86,6 +86,31 @@ jobs:
86
86
  name: wheels-macos-arm64
87
87
  path: dist
88
88
 
89
+ windows-x86_64:
90
+ runs-on: windows-latest
91
+ strategy:
92
+ matrix:
93
+ target: [x86_64]
94
+ steps:
95
+ - uses: actions/checkout@v3
96
+ - uses: actions/setup-python@v4
97
+ with:
98
+ python-version: '3.10'
99
+ - name: Build wheels
100
+ uses: PyO3/maturin-action@v1
101
+ env:
102
+ CXX: clang++
103
+ CC: clang
104
+ with:
105
+ target: ${{ matrix.target }}
106
+ args: --release --out dist --find-interpreter
107
+ sccache: 'true'
108
+ - name: Upload wheels
109
+ uses: actions/upload-artifact@v4
110
+ with:
111
+ name: wheels-windows-x86_64
112
+ path: dist
113
+
89
114
  sdist:
90
115
  runs-on: ubuntu-latest
91
116
  steps:
@@ -105,7 +130,7 @@ jobs:
105
130
  name: Release
106
131
  runs-on: ubuntu-latest
107
132
  if: "startsWith(github.ref, 'refs/tags/')"
108
- needs: [linux, macos-arm64, macos-x86_64, sdist]
133
+ needs: [linux, macos-arm64, macos-x86_64, windows-x86_64, sdist]
109
134
  steps:
110
135
  - uses: actions/download-artifact@v4
111
136
  with:
@@ -95,7 +95,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
95
95
  dependencies = [
96
96
  "proc-macro2",
97
97
  "quote",
98
- "syn 2.0.72",
98
+ "syn",
99
99
  ]
100
100
 
101
101
  [[package]]
@@ -106,7 +106,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
106
106
  dependencies = [
107
107
  "proc-macro2",
108
108
  "quote",
109
- "syn 2.0.72",
109
+ "syn",
110
110
  ]
111
111
 
112
112
  [[package]]
@@ -215,7 +215,7 @@ dependencies = [
215
215
  "regex",
216
216
  "rustc-hash",
217
217
  "shlex",
218
- "syn 2.0.72",
218
+ "syn",
219
219
  "which",
220
220
  ]
221
221
 
@@ -398,7 +398,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
398
398
  checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
399
399
  dependencies = [
400
400
  "libc",
401
- "windows-sys",
401
+ "windows-sys 0.52.0",
402
402
  ]
403
403
 
404
404
  [[package]]
@@ -481,7 +481,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
481
481
  dependencies = [
482
482
  "proc-macro2",
483
483
  "quote",
484
- "syn 2.0.72",
484
+ "syn",
485
485
  ]
486
486
 
487
487
  [[package]]
@@ -591,6 +591,12 @@ dependencies = [
591
591
  "hashbrown 0.14.5",
592
592
  ]
593
593
 
594
+ [[package]]
595
+ name = "heck"
596
+ version = "0.5.0"
597
+ source = "registry+https://github.com/rust-lang/crates.io-index"
598
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
599
+
594
600
  [[package]]
595
601
  name = "hermit-abi"
596
602
  version = "0.3.9"
@@ -603,7 +609,7 @@ version = "0.5.9"
603
609
  source = "registry+https://github.com/rust-lang/crates.io-index"
604
610
  checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
605
611
  dependencies = [
606
- "windows-sys",
612
+ "windows-sys 0.52.0",
607
613
  ]
608
614
 
609
615
  [[package]]
@@ -663,7 +669,7 @@ dependencies = [
663
669
  "httpdate",
664
670
  "itoa",
665
671
  "pin-project-lite",
666
- "socket2",
672
+ "socket2 0.5.7",
667
673
  "tokio",
668
674
  "tower-service",
669
675
  "tracing",
@@ -746,9 +752,9 @@ dependencies = [
746
752
 
747
753
  [[package]]
748
754
  name = "indoc"
749
- version = "1.0.9"
755
+ version = "2.0.6"
750
756
  source = "registry+https://github.com/rust-lang/crates.io-index"
751
- checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306"
757
+ checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd"
752
758
 
753
759
  [[package]]
754
760
  name = "inout"
@@ -760,6 +766,17 @@ dependencies = [
760
766
  "generic-array",
761
767
  ]
762
768
 
769
+ [[package]]
770
+ name = "io-uring"
771
+ version = "0.7.9"
772
+ source = "registry+https://github.com/rust-lang/crates.io-index"
773
+ checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
774
+ dependencies = [
775
+ "bitflags 2.6.0",
776
+ "cfg-if",
777
+ "libc",
778
+ ]
779
+
763
780
  [[package]]
764
781
  name = "itertools"
765
782
  version = "0.12.1"
@@ -799,9 +816,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
799
816
 
800
817
  [[package]]
801
818
  name = "libc"
802
- version = "0.2.155"
819
+ version = "0.2.174"
803
820
  source = "registry+https://github.com/rust-lang/crates.io-index"
804
- checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
821
+ checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
805
822
 
806
823
  [[package]]
807
824
  name = "libloading"
@@ -1022,7 +1039,7 @@ dependencies = [
1022
1039
  "hermit-abi",
1023
1040
  "libc",
1024
1041
  "wasi",
1025
- "windows-sys",
1042
+ "windows-sys 0.52.0",
1026
1043
  ]
1027
1044
 
1028
1045
  [[package]]
@@ -1172,7 +1189,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
1172
1189
  dependencies = [
1173
1190
  "proc-macro2",
1174
1191
  "quote",
1175
- "syn 2.0.72",
1192
+ "syn",
1176
1193
  ]
1177
1194
 
1178
1195
  [[package]]
@@ -1187,6 +1204,12 @@ version = "0.1.0"
1187
1204
  source = "registry+https://github.com/rust-lang/crates.io-index"
1188
1205
  checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
1189
1206
 
1207
+ [[package]]
1208
+ name = "portable-atomic"
1209
+ version = "1.11.1"
1210
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1211
+ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
1212
+
1190
1213
  [[package]]
1191
1214
  name = "ppv-lite86"
1192
1215
  version = "0.2.17"
@@ -1200,7 +1223,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1200
1223
  checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e"
1201
1224
  dependencies = [
1202
1225
  "proc-macro2",
1203
- "syn 2.0.72",
1226
+ "syn",
1204
1227
  ]
1205
1228
 
1206
1229
  [[package]]
@@ -1232,12 +1255,12 @@ dependencies = [
1232
1255
  "itertools",
1233
1256
  "proc-macro2",
1234
1257
  "quote",
1235
- "syn 2.0.72",
1258
+ "syn",
1236
1259
  ]
1237
1260
 
1238
1261
  [[package]]
1239
1262
  name = "pylibsql"
1240
- version = "0.1.6"
1263
+ version = "0.1.8"
1241
1264
  dependencies = [
1242
1265
  "libsql",
1243
1266
  "pyo3",
@@ -1249,15 +1272,15 @@ dependencies = [
1249
1272
 
1250
1273
  [[package]]
1251
1274
  name = "pyo3"
1252
- version = "0.19.2"
1275
+ version = "0.25.1"
1253
1276
  source = "registry+https://github.com/rust-lang/crates.io-index"
1254
- checksum = "e681a6cfdc4adcc93b4d3cf993749a4552018ee0a9b65fc0ccfad74352c72a38"
1277
+ checksum = "8970a78afe0628a3e3430376fc5fd76b6b45c4d43360ffd6cdd40bdde72b682a"
1255
1278
  dependencies = [
1256
- "cfg-if",
1257
1279
  "indoc",
1258
1280
  "libc",
1259
1281
  "memoffset",
1260
- "parking_lot",
1282
+ "once_cell",
1283
+ "portable-atomic",
1261
1284
  "pyo3-build-config",
1262
1285
  "pyo3-ffi",
1263
1286
  "pyo3-macros",
@@ -1266,9 +1289,9 @@ dependencies = [
1266
1289
 
1267
1290
  [[package]]
1268
1291
  name = "pyo3-build-config"
1269
- version = "0.19.2"
1292
+ version = "0.25.1"
1270
1293
  source = "registry+https://github.com/rust-lang/crates.io-index"
1271
- checksum = "076c73d0bc438f7a4ef6fdd0c3bb4732149136abd952b110ac93e4edb13a6ba5"
1294
+ checksum = "458eb0c55e7ece017adeba38f2248ff3ac615e53660d7c71a238d7d2a01c7598"
1272
1295
  dependencies = [
1273
1296
  "once_cell",
1274
1297
  "target-lexicon",
@@ -1276,9 +1299,9 @@ dependencies = [
1276
1299
 
1277
1300
  [[package]]
1278
1301
  name = "pyo3-ffi"
1279
- version = "0.19.2"
1302
+ version = "0.25.1"
1280
1303
  source = "registry+https://github.com/rust-lang/crates.io-index"
1281
- checksum = "e53cee42e77ebe256066ba8aa77eff722b3bb91f3419177cf4cd0f304d3284d9"
1304
+ checksum = "7114fe5457c61b276ab77c5055f206295b812608083644a5c5b2640c3102565c"
1282
1305
  dependencies = [
1283
1306
  "libc",
1284
1307
  "pyo3-build-config",
@@ -1286,25 +1309,27 @@ dependencies = [
1286
1309
 
1287
1310
  [[package]]
1288
1311
  name = "pyo3-macros"
1289
- version = "0.19.2"
1312
+ version = "0.25.1"
1290
1313
  source = "registry+https://github.com/rust-lang/crates.io-index"
1291
- checksum = "dfeb4c99597e136528c6dd7d5e3de5434d1ceaf487436a3f03b2d56b6fc9efd1"
1314
+ checksum = "a8725c0a622b374d6cb051d11a0983786448f7785336139c3c94f5aa6bef7e50"
1292
1315
  dependencies = [
1293
1316
  "proc-macro2",
1294
1317
  "pyo3-macros-backend",
1295
1318
  "quote",
1296
- "syn 1.0.109",
1319
+ "syn",
1297
1320
  ]
1298
1321
 
1299
1322
  [[package]]
1300
1323
  name = "pyo3-macros-backend"
1301
- version = "0.19.2"
1324
+ version = "0.25.1"
1302
1325
  source = "registry+https://github.com/rust-lang/crates.io-index"
1303
- checksum = "947dc12175c254889edc0c02e399476c2f652b4b9ebd123aa655c224de259536"
1326
+ checksum = "4109984c22491085343c05b0dbc54ddc405c3cf7b4374fc533f5c3313a572ccc"
1304
1327
  dependencies = [
1328
+ "heck",
1305
1329
  "proc-macro2",
1330
+ "pyo3-build-config",
1306
1331
  "quote",
1307
- "syn 1.0.109",
1332
+ "syn",
1308
1333
  ]
1309
1334
 
1310
1335
  [[package]]
@@ -1396,7 +1421,7 @@ dependencies = [
1396
1421
  "libc",
1397
1422
  "spin",
1398
1423
  "untrusted",
1399
- "windows-sys",
1424
+ "windows-sys 0.52.0",
1400
1425
  ]
1401
1426
 
1402
1427
  [[package]]
@@ -1421,7 +1446,7 @@ dependencies = [
1421
1446
  "errno",
1422
1447
  "libc",
1423
1448
  "linux-raw-sys",
1424
- "windows-sys",
1449
+ "windows-sys 0.52.0",
1425
1450
  ]
1426
1451
 
1427
1452
  [[package]]
@@ -1496,7 +1521,7 @@ version = "0.1.23"
1496
1521
  source = "registry+https://github.com/rust-lang/crates.io-index"
1497
1522
  checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
1498
1523
  dependencies = [
1499
- "windows-sys",
1524
+ "windows-sys 0.52.0",
1500
1525
  ]
1501
1526
 
1502
1527
  [[package]]
@@ -1545,7 +1570,7 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
1545
1570
  dependencies = [
1546
1571
  "proc-macro2",
1547
1572
  "quote",
1548
- "syn 2.0.72",
1573
+ "syn",
1549
1574
  ]
1550
1575
 
1551
1576
  [[package]]
@@ -1611,7 +1636,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1611
1636
  checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
1612
1637
  dependencies = [
1613
1638
  "libc",
1614
- "windows-sys",
1639
+ "windows-sys 0.52.0",
1640
+ ]
1641
+
1642
+ [[package]]
1643
+ name = "socket2"
1644
+ version = "0.6.0"
1645
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1646
+ checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
1647
+ dependencies = [
1648
+ "libc",
1649
+ "windows-sys 0.59.0",
1615
1650
  ]
1616
1651
 
1617
1652
  [[package]]
@@ -1626,17 +1661,6 @@ version = "2.6.1"
1626
1661
  source = "registry+https://github.com/rust-lang/crates.io-index"
1627
1662
  checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
1628
1663
 
1629
- [[package]]
1630
- name = "syn"
1631
- version = "1.0.109"
1632
- source = "registry+https://github.com/rust-lang/crates.io-index"
1633
- checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
1634
- dependencies = [
1635
- "proc-macro2",
1636
- "quote",
1637
- "unicode-ident",
1638
- ]
1639
-
1640
1664
  [[package]]
1641
1665
  name = "syn"
1642
1666
  version = "2.0.72"
@@ -1656,9 +1680,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
1656
1680
 
1657
1681
  [[package]]
1658
1682
  name = "target-lexicon"
1659
- version = "0.12.15"
1683
+ version = "0.13.2"
1660
1684
  source = "registry+https://github.com/rust-lang/crates.io-index"
1661
- checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2"
1685
+ checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a"
1662
1686
 
1663
1687
  [[package]]
1664
1688
  name = "thiserror"
@@ -1677,7 +1701,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
1677
1701
  dependencies = [
1678
1702
  "proc-macro2",
1679
1703
  "quote",
1680
- "syn 2.0.72",
1704
+ "syn",
1681
1705
  ]
1682
1706
 
1683
1707
  [[package]]
@@ -1692,20 +1716,22 @@ dependencies = [
1692
1716
 
1693
1717
  [[package]]
1694
1718
  name = "tokio"
1695
- version = "1.39.1"
1719
+ version = "1.47.0"
1696
1720
  source = "registry+https://github.com/rust-lang/crates.io-index"
1697
- checksum = "d040ac2b29ab03b09d4129c2f5bbd012a3ac2f79d38ff506a4bf8dd34b0eac8a"
1721
+ checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35"
1698
1722
  dependencies = [
1699
1723
  "backtrace",
1700
1724
  "bytes",
1725
+ "io-uring",
1701
1726
  "libc",
1702
1727
  "mio",
1703
1728
  "parking_lot",
1704
1729
  "pin-project-lite",
1705
1730
  "signal-hook-registry",
1706
- "socket2",
1731
+ "slab",
1732
+ "socket2 0.6.0",
1707
1733
  "tokio-macros",
1708
- "windows-sys",
1734
+ "windows-sys 0.59.0",
1709
1735
  ]
1710
1736
 
1711
1737
  [[package]]
@@ -1720,13 +1746,13 @@ dependencies = [
1720
1746
 
1721
1747
  [[package]]
1722
1748
  name = "tokio-macros"
1723
- version = "2.4.0"
1749
+ version = "2.5.0"
1724
1750
  source = "registry+https://github.com/rust-lang/crates.io-index"
1725
- checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
1751
+ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
1726
1752
  dependencies = [
1727
1753
  "proc-macro2",
1728
1754
  "quote",
1729
- "syn 2.0.72",
1755
+ "syn",
1730
1756
  ]
1731
1757
 
1732
1758
  [[package]]
@@ -1883,7 +1909,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
1883
1909
  dependencies = [
1884
1910
  "proc-macro2",
1885
1911
  "quote",
1886
- "syn 2.0.72",
1912
+ "syn",
1887
1913
  ]
1888
1914
 
1889
1915
  [[package]]
@@ -1909,9 +1935,9 @@ dependencies = [
1909
1935
 
1910
1936
  [[package]]
1911
1937
  name = "tracing-subscriber"
1912
- version = "0.3.18"
1938
+ version = "0.3.19"
1913
1939
  source = "registry+https://github.com/rust-lang/crates.io-index"
1914
- checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
1940
+ checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
1915
1941
  dependencies = [
1916
1942
  "nu-ansi-term",
1917
1943
  "sharded-slab",
@@ -1950,9 +1976,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
1950
1976
 
1951
1977
  [[package]]
1952
1978
  name = "unindent"
1953
- version = "0.1.11"
1979
+ version = "0.2.4"
1954
1980
  source = "registry+https://github.com/rust-lang/crates.io-index"
1955
- checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c"
1981
+ checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
1956
1982
 
1957
1983
  [[package]]
1958
1984
  name = "untrusted"
@@ -2019,7 +2045,7 @@ dependencies = [
2019
2045
  "log",
2020
2046
  "proc-macro2",
2021
2047
  "quote",
2022
- "syn 2.0.72",
2048
+ "syn",
2023
2049
  "wasm-bindgen-shared",
2024
2050
  ]
2025
2051
 
@@ -2041,7 +2067,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
2041
2067
  dependencies = [
2042
2068
  "proc-macro2",
2043
2069
  "quote",
2044
- "syn 2.0.72",
2070
+ "syn",
2045
2071
  "wasm-bindgen-backend",
2046
2072
  "wasm-bindgen-shared",
2047
2073
  ]
@@ -2122,6 +2148,15 @@ dependencies = [
2122
2148
  "windows-targets",
2123
2149
  ]
2124
2150
 
2151
+ [[package]]
2152
+ name = "windows-sys"
2153
+ version = "0.59.0"
2154
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2155
+ checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
2156
+ dependencies = [
2157
+ "windows-targets",
2158
+ ]
2159
+
2125
2160
  [[package]]
2126
2161
  name = "windows-targets"
2127
2162
  version = "0.52.6"
@@ -2204,7 +2239,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
2204
2239
  dependencies = [
2205
2240
  "proc-macro2",
2206
2241
  "quote",
2207
- "syn 2.0.72",
2242
+ "syn",
2208
2243
  ]
2209
2244
 
2210
2245
  [[package]]
@@ -1,18 +1,18 @@
1
1
  [package]
2
2
  name = "pylibsql"
3
- version = "0.1.6"
4
- edition = "2021"
3
+ version = "0.1.8"
4
+ edition = "2024"
5
5
 
6
6
  [lib]
7
7
  crate-type = ["cdylib"]
8
8
 
9
9
  [dependencies]
10
- pyo3 = "0.19.0"
10
+ pyo3 = "0.25.1"
11
11
  libsql = { version = "0.9.19", features = ["encryption"] }
12
- tokio = { version = "1.29.1", features = [ "rt-multi-thread" ] }
13
- tracing-subscriber = "0.3"
12
+ tokio = { version = "1.47.0", features = [ "rt-multi-thread" ] }
13
+ tracing-subscriber = "0.3.19"
14
14
 
15
15
  [build-dependencies]
16
16
  version_check = "0.9.5"
17
17
  # used where logic has to be version/distribution specific, e.g. pypy
18
- pyo3-build-config = { version = "0.19.0" }
18
+ pyo3-build-config = { version = "0.25.1" }
libsql-0.1.8/PKG-INFO ADDED
@@ -0,0 +1,8 @@
1
+ Metadata-Version: 2.4
2
+ Name: libsql
3
+ Version: 0.1.8
4
+ Classifier: Programming Language :: Rust
5
+ Classifier: Programming Language :: Python :: Implementation :: CPython
6
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
7
+ License-File: LICENSE.md
8
+ Requires-Python: >=3.7
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "libsql"
7
- version = "0.1.6"
7
+ version = "0.1.8"
8
8
  requires-python = ">=3.7"
9
9
  classifiers = [
10
10
  "Programming Language :: Rust",
@@ -2,7 +2,7 @@ use ::libsql as libsql_core;
2
2
  use pyo3::create_exception;
3
3
  use pyo3::exceptions::PyValueError;
4
4
  use pyo3::prelude::*;
5
- use pyo3::types::{PyList, PyTuple};
5
+ use pyo3::types::{PyList, PyModule, PyTuple};
6
6
  use std::cell::RefCell;
7
7
  use std::sync::{Arc, OnceLock};
8
8
  use std::time::Duration;
@@ -10,14 +10,15 @@ use tokio::runtime::{Handle, Runtime};
10
10
 
11
11
  const LEGACY_TRANSACTION_CONTROL: i32 = -1;
12
12
 
13
+ #[derive(Clone)]
13
14
  enum ListOrTuple<'py> {
14
- List(&'py PyList),
15
- Tuple(&'py PyTuple),
15
+ List(Bound<'py, PyList>),
16
+ Tuple(Bound<'py, PyTuple>),
16
17
  }
17
18
 
18
19
  struct ListOrTupleIterator<'py> {
19
20
  index: usize,
20
- inner: &'py ListOrTuple<'py>
21
+ inner: ListOrTuple<'py>,
21
22
  }
22
23
 
23
24
  fn rt() -> Handle {
@@ -227,6 +228,7 @@ pub struct Connection {
227
228
 
228
229
  // SAFETY: The libsql crate guarantees that `Connection` is thread-safe.
229
230
  unsafe impl Send for Connection {}
231
+ unsafe impl Sync for Connection {}
230
232
 
231
233
  #[pymethods]
232
234
  impl Connection {
@@ -293,20 +295,22 @@ impl Connection {
293
295
  Ok(())
294
296
  }
295
297
 
298
+ #[pyo3(signature = (sql, parameters=None))]
296
299
  fn execute(
297
300
  self_: PyRef<'_, Self>,
298
301
  sql: String,
299
- parameters: Option<ListOrTuple>,
302
+ parameters: Option<ListOrTuple<'_>>,
300
303
  ) -> PyResult<Cursor> {
301
304
  let cursor = Connection::cursor(&self_)?;
302
305
  rt().block_on(async { execute(&cursor, sql, parameters).await })?;
303
306
  Ok(cursor)
304
307
  }
305
308
 
309
+ #[pyo3(signature = (sql, parameters=None))]
306
310
  fn executemany(
307
311
  self_: PyRef<'_, Self>,
308
312
  sql: String,
309
- parameters: Option<&PyList>,
313
+ parameters: Option<&Bound<'_, PyList>>,
310
314
  ) -> PyResult<Cursor> {
311
315
  let cursor = Connection::cursor(&self_)?;
312
316
  for parameters in parameters.unwrap().iter() {
@@ -340,9 +344,7 @@ impl Connection {
340
344
  fn in_transaction(self_: PyRef<'_, Self>) -> PyResult<bool> {
341
345
  #[cfg(Py_3_12)]
342
346
  {
343
- Ok(
344
- !self_.conn.borrow().as_ref().unwrap().is_autocommit() || self_.autocommit == 0
345
- )
347
+ Ok(!self_.conn.borrow().as_ref().unwrap().is_autocommit() || self_.autocommit == 0)
346
348
  }
347
349
  #[cfg(not(Py_3_12))]
348
350
  {
@@ -372,11 +374,12 @@ impl Connection {
372
374
  Ok(slf)
373
375
  }
374
376
 
377
+ #[pyo3(signature = (exc_type=None, _exc_val=None, _exc_tb=None))]
375
378
  fn __exit__(
376
379
  self_: PyRef<'_, Self>,
377
- exc_type: Option<&PyAny>,
378
- _exc_val: Option<&PyAny>,
379
- _exc_tb: Option<&PyAny>,
380
+ exc_type: Option<&Bound<'_, PyAny>>,
381
+ _exc_val: Option<&Bound<'_, PyAny>>,
382
+ _exc_tb: Option<&Bound<'_, PyAny>>,
380
383
  ) -> PyResult<bool> {
381
384
  if exc_type.is_none() {
382
385
  // Commit on clean exit
@@ -404,6 +407,7 @@ pub struct Cursor {
404
407
 
405
408
  // SAFETY: The libsql crate guarantees that `Connection` is thread-safe.
406
409
  unsafe impl Send for Cursor {}
410
+ unsafe impl Sync for Cursor {}
407
411
 
408
412
  impl Drop for Cursor {
409
413
  fn drop(&mut self) {
@@ -426,19 +430,21 @@ impl Cursor {
426
430
  Ok(())
427
431
  }
428
432
 
433
+ #[pyo3(signature = (sql, parameters=None))]
429
434
  fn execute<'a>(
430
435
  self_: PyRef<'a, Self>,
431
436
  sql: String,
432
- parameters: Option<ListOrTuple>,
437
+ parameters: Option<ListOrTuple<'_>>,
433
438
  ) -> PyResult<pyo3::PyRef<'a, Self>> {
434
439
  rt().block_on(async { execute(&self_, sql, parameters).await })?;
435
440
  Ok(self_)
436
441
  }
437
442
 
443
+ #[pyo3(signature = (sql, parameters=None))]
438
444
  fn executemany<'a>(
439
445
  self_: PyRef<'a, Self>,
440
446
  sql: String,
441
- parameters: Option<&PyList>,
447
+ parameters: Option<&Bound<'_, PyList>>,
442
448
  ) -> PyResult<pyo3::PyRef<'a, Cursor>> {
443
449
  for parameters in parameters.unwrap().iter() {
444
450
  let parameters = parameters.extract::<ListOrTuple>()?;
@@ -465,7 +471,7 @@ impl Cursor {
465
471
  }
466
472
 
467
473
  #[getter]
468
- fn description(self_: PyRef<'_, Self>) -> PyResult<Option<&PyTuple>> {
474
+ fn description(self_: PyRef<'_, Self>) -> PyResult<Option<Bound<'_, PyTuple>>> {
469
475
  let stmt = self_.stmt.borrow();
470
476
  let mut elements: Vec<Py<PyAny>> = vec![];
471
477
  match stmt.as_ref() {
@@ -481,17 +487,18 @@ impl Cursor {
481
487
  self_.py().None(),
482
488
  self_.py().None(),
483
489
  )
484
- .to_object(self_.py());
485
- elements.push(element);
490
+ .into_pyobject(self_.py())
491
+ .unwrap();
492
+ elements.push(element.into());
486
493
  }
487
- let elements = PyTuple::new(self_.py(), elements);
494
+ let elements = PyTuple::new(self_.py(), elements)?;
488
495
  Ok(Some(elements))
489
496
  }
490
497
  None => Ok(None),
491
498
  }
492
499
  }
493
500
 
494
- fn fetchone(self_: PyRef<'_, Self>) -> PyResult<Option<&PyTuple>> {
501
+ fn fetchone(self_: PyRef<'_, Self>) -> PyResult<Option<Bound<'_, PyTuple>>> {
495
502
  let mut rows = self_.rows.borrow_mut();
496
503
  match rows.as_mut() {
497
504
  Some(rows) => {
@@ -508,7 +515,8 @@ impl Cursor {
508
515
  }
509
516
  }
510
517
 
511
- fn fetchmany(self_: PyRef<'_, Self>, size: Option<i64>) -> PyResult<Option<&PyList>> {
518
+ #[pyo3(signature = (size=None))]
519
+ fn fetchmany(self_: PyRef<'_, Self>, size: Option<i64>) -> PyResult<Option<Bound<'_, PyList>>> {
512
520
  let mut rows = self_.rows.borrow_mut();
513
521
  match rows.as_mut() {
514
522
  Some(rows) => {
@@ -534,13 +542,13 @@ impl Cursor {
534
542
  }
535
543
  }
536
544
  }
537
- Ok(Some(PyList::new(self_.py(), elements)))
545
+ Ok(Some(PyList::new(self_.py(), elements)?))
538
546
  }
539
547
  None => Ok(None),
540
548
  }
541
549
  }
542
550
 
543
- fn fetchall(self_: PyRef<'_, Self>) -> PyResult<Option<&PyList>> {
551
+ fn fetchall(self_: PyRef<'_, Self>) -> PyResult<Option<Bound<'_, PyList>>> {
544
552
  let mut rows = self_.rows.borrow_mut();
545
553
  match rows.as_mut() {
546
554
  Some(rows) => {
@@ -557,7 +565,7 @@ impl Cursor {
557
565
  None => break,
558
566
  }
559
567
  }
560
- Ok(Some(PyList::new(self_.py(), elements)))
568
+ Ok(Some(PyList::new(self_.py(), elements)?))
561
569
  }
562
570
  None => Ok(None),
563
571
  }
@@ -669,36 +677,40 @@ fn stmt_is_dml(sql: &str) -> bool {
669
677
  sql.starts_with("INSERT") || sql.starts_with("UPDATE") || sql.starts_with("DELETE")
670
678
  }
671
679
 
672
- fn convert_row(py: Python, row: libsql_core::Row, column_count: i32) -> PyResult<&PyTuple> {
680
+ fn convert_row(
681
+ py: Python,
682
+ row: libsql_core::Row,
683
+ column_count: i32,
684
+ ) -> PyResult<Bound<'_, PyTuple>> {
673
685
  let mut elements: Vec<Py<PyAny>> = vec![];
674
686
  for col_idx in 0..column_count {
675
687
  let libsql_value = row.get_value(col_idx).map_err(to_py_err)?;
676
688
  let value = match libsql_value {
677
689
  libsql_core::Value::Integer(v) => {
678
690
  let value = v as i64;
679
- value.into_py(py)
691
+ value.into_pyobject(py).unwrap().into()
680
692
  }
681
- libsql_core::Value::Real(v) => v.into_py(py),
682
- libsql_core::Value::Text(v) => v.into_py(py),
693
+ libsql_core::Value::Real(v) => v.into_pyobject(py).unwrap().into(),
694
+ libsql_core::Value::Text(v) => v.into_pyobject(py).unwrap().into(),
683
695
  libsql_core::Value::Blob(v) => {
684
696
  let value = v.as_slice();
685
- value.into_py(py)
697
+ value.into_pyobject(py).unwrap().into()
686
698
  }
687
699
  libsql_core::Value::Null => py.None(),
688
700
  };
689
701
  elements.push(value);
690
702
  }
691
- Ok(PyTuple::new(py, elements))
703
+ Ok(PyTuple::new(py, elements)?)
692
704
  }
693
705
 
694
706
  create_exception!(libsql, Error, pyo3::exceptions::PyException);
695
707
 
696
708
  impl<'py> FromPyObject<'py> for ListOrTuple<'py> {
697
- fn extract(ob: &'py PyAny) -> PyResult<Self> {
709
+ fn extract_bound(ob: &Bound<'py, PyAny>) -> PyResult<Self> {
698
710
  if let Ok(list) = ob.downcast::<PyList>() {
699
- Ok(ListOrTuple::List(list))
711
+ Ok(ListOrTuple::List(list.clone()))
700
712
  } else if let Ok(tuple) = ob.downcast::<PyTuple>() {
701
- Ok(ListOrTuple::Tuple(tuple))
713
+ Ok(ListOrTuple::Tuple(tuple.clone()))
702
714
  } else {
703
715
  Err(PyValueError::new_err(
704
716
  "Expected a list or tuple for parameters",
@@ -708,19 +720,19 @@ impl<'py> FromPyObject<'py> for ListOrTuple<'py> {
708
720
  }
709
721
 
710
722
  impl<'py> ListOrTuple<'py> {
711
- pub fn iter(&self) -> ListOrTupleIterator {
712
- ListOrTupleIterator{
723
+ pub fn iter(&self) -> ListOrTupleIterator<'py> {
724
+ ListOrTupleIterator {
713
725
  index: 0,
714
- inner: self,
726
+ inner: self.clone(),
715
727
  }
716
728
  }
717
729
  }
718
730
 
719
731
  impl<'py> Iterator for ListOrTupleIterator<'py> {
720
- type Item = &'py PyAny;
732
+ type Item = Bound<'py, PyAny>;
721
733
 
722
734
  fn next(&mut self) -> Option<Self::Item> {
723
- let rv = match self.inner {
735
+ let rv = match &self.inner {
724
736
  ListOrTuple::List(list) => list.get_item(self.index),
725
737
  ListOrTuple::Tuple(tuple) => tuple.get_item(self.index),
726
738
  };
@@ -732,7 +744,7 @@ impl<'py> Iterator for ListOrTupleIterator<'py> {
732
744
  }
733
745
  }
734
746
  #[pymodule]
735
- fn libsql(py: Python, m: &PyModule) -> PyResult<()> {
747
+ fn libsql(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
736
748
  let _ = tracing_subscriber::fmt::try_init();
737
749
  m.add("LEGACY_TRANSACTION_CONTROL", LEGACY_TRANSACTION_CONTROL)?;
738
750
  m.add("paramstyle", "qmark")?;
libsql-0.1.6/PKG-INFO DELETED
@@ -1,58 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: libsql
3
- Version: 0.1.6
4
- Classifier: Programming Language :: Rust
5
- Classifier: Programming Language :: Python :: Implementation :: CPython
6
- Classifier: Programming Language :: Python :: Implementation :: PyPy
7
- License-File: LICENSE.md
8
- Requires-Python: >=3.7
9
- Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
10
-
11
- <p align="center">
12
- <a href="https://docs.turso.tech/sdk/python/quickstart">
13
- <img alt="Turso + Python" src="https://github.com/tursodatabase/libsql-python/assets/950181/3748f2b3-872e-4cdd-bbe3-78491fd81dfa" width="1000">
14
- <h3 align="center">Turso + Python</h3>
15
- </a>
16
- </p>
17
-
18
- <p align="center">
19
- SQLite for Production. Powered by <a href="https://turso.tech/libsql">libSQL</a>.
20
- </p>
21
-
22
- <p align="center">
23
- <a href="https://turso.tech"><strong>Turso</strong></a> ·
24
- <a href="https://docs.turso.tech/quickstart"><strong>Quickstart</strong></a> ·
25
- <a href="/examples"><strong>Examples</strong></a> ·
26
- <a href="https://docs.turso.tech"><strong>Docs</strong></a> ·
27
- <a href="https://discord.gg/turso"><strong>Discord</strong></a> ·
28
- <a href="https://blog.turso.tech/"><strong>Blog &amp; Tutorials</strong></a>
29
- </p>
30
-
31
- <p align="center">
32
- <a href="https://pypi.org/project/libsql">
33
- <img src="https://badge.fury.io/py/libsql.svg" alt="PyPI" title="PyPI" />
34
- </a>
35
- <a href="https://discord.com/invite/4B5D7hYwub">
36
- <img src="https://dcbadge.vercel.app/api/server/4B5D7hYwub?style=flat" alt="discord activity" title="join us on discord" />
37
- </a>
38
- </p>
39
-
40
- ---
41
-
42
- ## Documentation
43
-
44
- 1. [Turso Quickstart](https://docs.turso.tech/quickstart) &mdash; Learn how create and connect your first database.
45
- 2. [SDK Quickstart](https://docs.turso.tech/sdk/python/quickstart) &mdash; Learn how to install and execute queries using the libSQL client.
46
- 3. [SDK Reference](https://docs.turso.tech/sdk/python/reference) &mdash; Dive deeper with the libSQL SDK reference and examples.
47
-
48
- ### What is Turso?
49
-
50
- [Turso](https://turso.tech) is a SQLite-compatible database built on [libSQL](https://docs.turso.tech/libsql), the Open Contribution fork of SQLite. It enables scaling to hundreds of thousands of databases per organization and supports replication to any location, including your own servers, for microsecond-latency access.
51
-
52
- Learn more about what you can do with Turso:
53
-
54
- - [Embedded Replicas](https://docs.turso.tech/features/embedded-replicas)
55
- - [Platform API](https://docs.turso.tech/features/platform-api)
56
- - [Branching](https://docs.turso.tech/features/branching)
57
- - [Point-in-Time Recovery](https://docs.turso.tech/features/point-in-time-recovery)
58
-
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