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.
- {libsql-0.1.6 → libsql-0.1.8}/.github/workflows/CI.yml +26 -1
- {libsql-0.1.6 → libsql-0.1.8}/Cargo.lock +99 -64
- {libsql-0.1.6 → libsql-0.1.8}/Cargo.toml +6 -6
- libsql-0.1.8/PKG-INFO +8 -0
- {libsql-0.1.6 → libsql-0.1.8}/pyproject.toml +1 -1
- {libsql-0.1.6 → libsql-0.1.8}/src/lib.rs +50 -38
- libsql-0.1.6/PKG-INFO +0 -58
- {libsql-0.1.6 → libsql-0.1.8}/.github/workflows/pr-tests.yml +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/.gitignore +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/CONTRIBUTING.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/LICENSE.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/README.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/build.rs +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/docs/api.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/example.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/batch/.gitignore +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/batch/README.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/batch/main.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/encryption/.gitignore +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/encryption/README.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/encryption/main.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/execute_script.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/local/.gitignore +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/local/README.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/local/main.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/memory/README.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/memory/main.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/remote/README.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/remote/main.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/remote_connect.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/sqlalchemy/dialect.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/sqlalchemy/example.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/statements.sql +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/sync/.gitignore +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/sync/README.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/sync/main.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/sync_write.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/transaction/.gitignore +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/transaction/README.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/transaction/main.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/vector/.gitignore +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/vector/README.md +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/vector/main.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/examples/vector.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/perf-libsql.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/perf-sqlite3.py +0 -0
- {libsql-0.1.6 → libsql-0.1.8}/shell.nix +0 -0
- {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
|
|
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
|
|
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
|
|
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
|
|
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 = "
|
|
755
|
+
version = "2.0.6"
|
|
750
756
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
751
|
-
checksum = "
|
|
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.
|
|
819
|
+
version = "0.2.174"
|
|
803
820
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
804
|
-
checksum = "
|
|
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
|
|
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
|
|
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
|
|
1258
|
+
"syn",
|
|
1236
1259
|
]
|
|
1237
1260
|
|
|
1238
1261
|
[[package]]
|
|
1239
1262
|
name = "pylibsql"
|
|
1240
|
-
version = "0.1.
|
|
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.
|
|
1275
|
+
version = "0.25.1"
|
|
1253
1276
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1254
|
-
checksum = "
|
|
1277
|
+
checksum = "8970a78afe0628a3e3430376fc5fd76b6b45c4d43360ffd6cdd40bdde72b682a"
|
|
1255
1278
|
dependencies = [
|
|
1256
|
-
"cfg-if",
|
|
1257
1279
|
"indoc",
|
|
1258
1280
|
"libc",
|
|
1259
1281
|
"memoffset",
|
|
1260
|
-
"
|
|
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.
|
|
1292
|
+
version = "0.25.1"
|
|
1270
1293
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1271
|
-
checksum = "
|
|
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.
|
|
1302
|
+
version = "0.25.1"
|
|
1280
1303
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1281
|
-
checksum = "
|
|
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.
|
|
1312
|
+
version = "0.25.1"
|
|
1290
1313
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1291
|
-
checksum = "
|
|
1314
|
+
checksum = "a8725c0a622b374d6cb051d11a0983786448f7785336139c3c94f5aa6bef7e50"
|
|
1292
1315
|
dependencies = [
|
|
1293
1316
|
"proc-macro2",
|
|
1294
1317
|
"pyo3-macros-backend",
|
|
1295
1318
|
"quote",
|
|
1296
|
-
"syn
|
|
1319
|
+
"syn",
|
|
1297
1320
|
]
|
|
1298
1321
|
|
|
1299
1322
|
[[package]]
|
|
1300
1323
|
name = "pyo3-macros-backend"
|
|
1301
|
-
version = "0.
|
|
1324
|
+
version = "0.25.1"
|
|
1302
1325
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1303
|
-
checksum = "
|
|
1326
|
+
checksum = "4109984c22491085343c05b0dbc54ddc405c3cf7b4374fc533f5c3313a572ccc"
|
|
1304
1327
|
dependencies = [
|
|
1328
|
+
"heck",
|
|
1305
1329
|
"proc-macro2",
|
|
1330
|
+
"pyo3-build-config",
|
|
1306
1331
|
"quote",
|
|
1307
|
-
"syn
|
|
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
|
|
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.
|
|
1683
|
+
version = "0.13.2"
|
|
1660
1684
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1661
|
-
checksum = "
|
|
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
|
|
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.
|
|
1719
|
+
version = "1.47.0"
|
|
1696
1720
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1697
|
-
checksum = "
|
|
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
|
-
"
|
|
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.
|
|
1749
|
+
version = "2.5.0"
|
|
1724
1750
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1725
|
-
checksum = "
|
|
1751
|
+
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
|
|
1726
1752
|
dependencies = [
|
|
1727
1753
|
"proc-macro2",
|
|
1728
1754
|
"quote",
|
|
1729
|
-
"syn
|
|
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
|
|
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.
|
|
1938
|
+
version = "0.3.19"
|
|
1913
1939
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1914
|
-
checksum = "
|
|
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.
|
|
1979
|
+
version = "0.2.4"
|
|
1954
1980
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1955
|
-
checksum = "
|
|
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
|
|
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
|
|
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
|
|
2242
|
+
"syn",
|
|
2208
2243
|
]
|
|
2209
2244
|
|
|
2210
2245
|
[[package]]
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "pylibsql"
|
|
3
|
-
version = "0.1.
|
|
4
|
-
edition = "
|
|
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.
|
|
10
|
+
pyo3 = "0.25.1"
|
|
11
11
|
libsql = { version = "0.9.19", features = ["encryption"] }
|
|
12
|
-
tokio = { version = "1.
|
|
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.
|
|
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
|
|
@@ -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(
|
|
15
|
-
Tuple(
|
|
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:
|
|
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
|
|
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
|
-
.
|
|
485
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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(
|
|
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.
|
|
691
|
+
value.into_pyobject(py).unwrap().into()
|
|
680
692
|
}
|
|
681
|
-
libsql_core::Value::Real(v) => v.
|
|
682
|
-
libsql_core::Value::Text(v) => v.
|
|
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.
|
|
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
|
|
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 =
|
|
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
|
|
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 & 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) — Learn how create and connect your first database.
|
|
45
|
-
2. [SDK Quickstart](https://docs.turso.tech/sdk/python/quickstart) — Learn how to install and execute queries using the libSQL client.
|
|
46
|
-
3. [SDK Reference](https://docs.turso.tech/sdk/python/reference) — 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
|
|
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
|