ferrum-orm 0.1.0__tar.gz → 0.1.1__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 (63) hide show
  1. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/Cargo.lock +418 -4
  2. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/Cargo.toml +2 -1
  3. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/PKG-INFO +36 -9
  4. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/README.md +21 -4
  5. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-core/Cargo.toml +5 -0
  6. ferrum_orm-0.1.1/crates/ferrum-core/benches/hydrate.rs +91 -0
  7. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-pyo3/src/lib.rs +16 -5
  8. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-sql/Cargo.toml +5 -0
  9. ferrum_orm-0.1.1/crates/ferrum-sql/benches/compile.rs +144 -0
  10. ferrum_orm-0.1.1/crates/ferrum-sql/src/dialect.rs +94 -0
  11. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-sql/src/emit.rs +74 -53
  12. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-sql/src/lib.rs +1 -1
  13. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/pyproject.toml +16 -5
  14. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/__init__.py +1 -1
  15. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/_native.pyi +2 -2
  16. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/cli/app.py +6 -1
  17. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/cli/init.py +13 -5
  18. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/cli/inspectdb_cmd.py +8 -1
  19. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/cli/migrate_cmd.py +19 -9
  20. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/cli/migrations_cmd.py +1 -1
  21. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/cli/resetdb_cmd.py +14 -3
  22. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/cli/revert_cmd.py +13 -6
  23. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/connection.py +66 -80
  24. ferrum_orm-0.1.1/python/ferrum/drivers/__init__.py +48 -0
  25. ferrum_orm-0.1.1/python/ferrum/drivers/mysql.py +158 -0
  26. ferrum_orm-0.1.1/python/ferrum/drivers/postgres.py +121 -0
  27. ferrum_orm-0.1.1/python/ferrum/drivers/protocol.py +27 -0
  28. ferrum_orm-0.1.1/python/ferrum/drivers/sqlite.py +113 -0
  29. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/errors.py +128 -0
  30. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/ext/pgvector.py +11 -3
  31. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/hooks.py +28 -0
  32. ferrum_orm-0.1.1/python/ferrum/migrations/drift.py +115 -0
  33. ferrum_orm-0.1.1/python/ferrum/migrations/introspect.py +356 -0
  34. ferrum_orm-0.1.1/python/ferrum/migrations/ledger.py +155 -0
  35. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/migrations/orchestrator.py +126 -32
  36. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/models.py +1 -1
  37. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/queryset.py +101 -48
  38. ferrum_orm-0.1.0/crates/ferrum-sql/src/dialect.rs +0 -38
  39. ferrum_orm-0.1.0/python/ferrum/migrations/ledger.py +0 -106
  40. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/LICENSE +0 -0
  41. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-core/src/compile/mod.rs +0 -0
  42. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-core/src/error.rs +0 -0
  43. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-core/src/hydrate/mod.rs +0 -0
  44. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-core/src/ir/metadata.rs +0 -0
  45. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-core/src/ir/mod.rs +0 -0
  46. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-core/src/lib.rs +0 -0
  47. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-core/src/migrate/mod.rs +0 -0
  48. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/crates/ferrum-pyo3/Cargo.toml +0 -0
  49. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/cli/__init__.py +0 -0
  50. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/cli/bootstrap.py +0 -0
  51. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/cli/makemigrations_cmd.py +0 -0
  52. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/cli/showmigrations_cmd.py +0 -0
  53. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/config.py +0 -0
  54. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/contrib/__init__.py +0 -0
  55. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/contrib/fastapi.py +0 -0
  56. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/ext/__init__.py +0 -0
  57. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/migrations/__init__.py +0 -0
  58. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/migrations/base.py +0 -0
  59. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/migrations/gates.py +0 -0
  60. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/migrations/loader.py +0 -0
  61. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/migrations/operations.py +0 -0
  62. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/migrations/tokens.py +0 -0
  63. {ferrum_orm-0.1.0 → ferrum_orm-0.1.1}/python/ferrum/py.typed +0 -0
@@ -2,6 +2,27 @@
2
2
  # It is not intended for manual editing.
3
3
  version = 4
4
4
 
5
+ [[package]]
6
+ name = "aho-corasick"
7
+ version = "1.1.4"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
10
+ dependencies = [
11
+ "memchr",
12
+ ]
13
+
14
+ [[package]]
15
+ name = "anes"
16
+ version = "0.1.6"
17
+ source = "registry+https://github.com/rust-lang/crates.io-index"
18
+ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
19
+
20
+ [[package]]
21
+ name = "anstyle"
22
+ version = "1.0.14"
23
+ source = "registry+https://github.com/rust-lang/crates.io-index"
24
+ checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
25
+
5
26
  [[package]]
6
27
  name = "anyhow"
7
28
  version = "1.0.102"
@@ -35,12 +56,149 @@ version = "2.13.0"
35
56
  source = "registry+https://github.com/rust-lang/crates.io-index"
36
57
  checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
37
58
 
59
+ [[package]]
60
+ name = "bumpalo"
61
+ version = "3.20.3"
62
+ source = "registry+https://github.com/rust-lang/crates.io-index"
63
+ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
64
+
65
+ [[package]]
66
+ name = "cast"
67
+ version = "0.3.0"
68
+ source = "registry+https://github.com/rust-lang/crates.io-index"
69
+ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
70
+
38
71
  [[package]]
39
72
  name = "cfg-if"
40
73
  version = "1.0.4"
41
74
  source = "registry+https://github.com/rust-lang/crates.io-index"
42
75
  checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
43
76
 
77
+ [[package]]
78
+ name = "ciborium"
79
+ version = "0.2.2"
80
+ source = "registry+https://github.com/rust-lang/crates.io-index"
81
+ checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
82
+ dependencies = [
83
+ "ciborium-io",
84
+ "ciborium-ll",
85
+ "serde",
86
+ ]
87
+
88
+ [[package]]
89
+ name = "ciborium-io"
90
+ version = "0.2.2"
91
+ source = "registry+https://github.com/rust-lang/crates.io-index"
92
+ checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
93
+
94
+ [[package]]
95
+ name = "ciborium-ll"
96
+ version = "0.2.2"
97
+ source = "registry+https://github.com/rust-lang/crates.io-index"
98
+ checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
99
+ dependencies = [
100
+ "ciborium-io",
101
+ "half",
102
+ ]
103
+
104
+ [[package]]
105
+ name = "clap"
106
+ version = "4.6.1"
107
+ source = "registry+https://github.com/rust-lang/crates.io-index"
108
+ checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51"
109
+ dependencies = [
110
+ "clap_builder",
111
+ ]
112
+
113
+ [[package]]
114
+ name = "clap_builder"
115
+ version = "4.6.0"
116
+ source = "registry+https://github.com/rust-lang/crates.io-index"
117
+ checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
118
+ dependencies = [
119
+ "anstyle",
120
+ "clap_lex",
121
+ ]
122
+
123
+ [[package]]
124
+ name = "clap_lex"
125
+ version = "1.1.0"
126
+ source = "registry+https://github.com/rust-lang/crates.io-index"
127
+ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
128
+
129
+ [[package]]
130
+ name = "criterion"
131
+ version = "0.5.1"
132
+ source = "registry+https://github.com/rust-lang/crates.io-index"
133
+ checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
134
+ dependencies = [
135
+ "anes",
136
+ "cast",
137
+ "ciborium",
138
+ "clap",
139
+ "criterion-plot",
140
+ "is-terminal",
141
+ "itertools",
142
+ "num-traits",
143
+ "once_cell",
144
+ "oorandom",
145
+ "plotters",
146
+ "rayon",
147
+ "regex",
148
+ "serde",
149
+ "serde_derive",
150
+ "serde_json",
151
+ "tinytemplate",
152
+ "walkdir",
153
+ ]
154
+
155
+ [[package]]
156
+ name = "criterion-plot"
157
+ version = "0.5.0"
158
+ source = "registry+https://github.com/rust-lang/crates.io-index"
159
+ checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
160
+ dependencies = [
161
+ "cast",
162
+ "itertools",
163
+ ]
164
+
165
+ [[package]]
166
+ name = "crossbeam-deque"
167
+ version = "0.8.6"
168
+ source = "registry+https://github.com/rust-lang/crates.io-index"
169
+ checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
170
+ dependencies = [
171
+ "crossbeam-epoch",
172
+ "crossbeam-utils",
173
+ ]
174
+
175
+ [[package]]
176
+ name = "crossbeam-epoch"
177
+ version = "0.9.18"
178
+ source = "registry+https://github.com/rust-lang/crates.io-index"
179
+ checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
180
+ dependencies = [
181
+ "crossbeam-utils",
182
+ ]
183
+
184
+ [[package]]
185
+ name = "crossbeam-utils"
186
+ version = "0.8.21"
187
+ source = "registry+https://github.com/rust-lang/crates.io-index"
188
+ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
189
+
190
+ [[package]]
191
+ name = "crunchy"
192
+ version = "0.2.4"
193
+ source = "registry+https://github.com/rust-lang/crates.io-index"
194
+ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
195
+
196
+ [[package]]
197
+ name = "either"
198
+ version = "1.16.0"
199
+ source = "registry+https://github.com/rust-lang/crates.io-index"
200
+ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
201
+
44
202
  [[package]]
45
203
  name = "equivalent"
46
204
  version = "1.0.2"
@@ -65,8 +223,9 @@ checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
65
223
 
66
224
  [[package]]
67
225
  name = "ferrum-core"
68
- version = "0.1.0"
226
+ version = "0.1.1"
69
227
  dependencies = [
228
+ "criterion",
70
229
  "proptest",
71
230
  "serde",
72
231
  "serde_json",
@@ -75,7 +234,7 @@ dependencies = [
75
234
 
76
235
  [[package]]
77
236
  name = "ferrum-migrate"
78
- version = "0.1.0"
237
+ version = "0.1.1"
79
238
  dependencies = [
80
239
  "ferrum-core",
81
240
  "serde",
@@ -84,7 +243,7 @@ dependencies = [
84
243
 
85
244
  [[package]]
86
245
  name = "ferrum-pyo3"
87
- version = "0.1.0"
246
+ version = "0.1.1"
88
247
  dependencies = [
89
248
  "ferrum-core",
90
249
  "ferrum-sql",
@@ -95,8 +254,9 @@ dependencies = [
95
254
 
96
255
  [[package]]
97
256
  name = "ferrum-sql"
98
- version = "0.1.0"
257
+ version = "0.1.1"
99
258
  dependencies = [
259
+ "criterion",
100
260
  "ferrum-core",
101
261
  "proptest",
102
262
  "serde",
@@ -115,6 +275,30 @@ version = "0.1.5"
115
275
  source = "registry+https://github.com/rust-lang/crates.io-index"
116
276
  checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
117
277
 
278
+ [[package]]
279
+ name = "futures-core"
280
+ version = "0.3.32"
281
+ source = "registry+https://github.com/rust-lang/crates.io-index"
282
+ checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
283
+
284
+ [[package]]
285
+ name = "futures-task"
286
+ version = "0.3.32"
287
+ source = "registry+https://github.com/rust-lang/crates.io-index"
288
+ checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
289
+
290
+ [[package]]
291
+ name = "futures-util"
292
+ version = "0.3.32"
293
+ source = "registry+https://github.com/rust-lang/crates.io-index"
294
+ checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
295
+ dependencies = [
296
+ "futures-core",
297
+ "futures-task",
298
+ "pin-project-lite",
299
+ "slab",
300
+ ]
301
+
118
302
  [[package]]
119
303
  name = "getrandom"
120
304
  version = "0.3.4"
@@ -140,6 +324,17 @@ dependencies = [
140
324
  "wasip3",
141
325
  ]
142
326
 
327
+ [[package]]
328
+ name = "half"
329
+ version = "2.7.1"
330
+ source = "registry+https://github.com/rust-lang/crates.io-index"
331
+ checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
332
+ dependencies = [
333
+ "cfg-if",
334
+ "crunchy",
335
+ "zerocopy",
336
+ ]
337
+
143
338
  [[package]]
144
339
  name = "hashbrown"
145
340
  version = "0.15.5"
@@ -161,6 +356,12 @@ version = "0.5.0"
161
356
  source = "registry+https://github.com/rust-lang/crates.io-index"
162
357
  checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
163
358
 
359
+ [[package]]
360
+ name = "hermit-abi"
361
+ version = "0.5.2"
362
+ source = "registry+https://github.com/rust-lang/crates.io-index"
363
+ checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
364
+
164
365
  [[package]]
165
366
  name = "id-arena"
166
367
  version = "2.3.0"
@@ -188,12 +389,43 @@ dependencies = [
188
389
  "rustversion",
189
390
  ]
190
391
 
392
+ [[package]]
393
+ name = "is-terminal"
394
+ version = "0.4.17"
395
+ source = "registry+https://github.com/rust-lang/crates.io-index"
396
+ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46"
397
+ dependencies = [
398
+ "hermit-abi",
399
+ "libc",
400
+ "windows-sys",
401
+ ]
402
+
403
+ [[package]]
404
+ name = "itertools"
405
+ version = "0.10.5"
406
+ source = "registry+https://github.com/rust-lang/crates.io-index"
407
+ checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
408
+ dependencies = [
409
+ "either",
410
+ ]
411
+
191
412
  [[package]]
192
413
  name = "itoa"
193
414
  version = "1.0.18"
194
415
  source = "registry+https://github.com/rust-lang/crates.io-index"
195
416
  checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
196
417
 
418
+ [[package]]
419
+ name = "js-sys"
420
+ version = "0.3.102"
421
+ source = "registry+https://github.com/rust-lang/crates.io-index"
422
+ checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31"
423
+ dependencies = [
424
+ "cfg-if",
425
+ "futures-util",
426
+ "wasm-bindgen",
427
+ ]
428
+
197
429
  [[package]]
198
430
  name = "leb128fmt"
199
431
  version = "0.1.0"
@@ -248,6 +480,46 @@ version = "1.21.4"
248
480
  source = "registry+https://github.com/rust-lang/crates.io-index"
249
481
  checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
250
482
 
483
+ [[package]]
484
+ name = "oorandom"
485
+ version = "11.1.5"
486
+ source = "registry+https://github.com/rust-lang/crates.io-index"
487
+ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
488
+
489
+ [[package]]
490
+ name = "pin-project-lite"
491
+ version = "0.2.17"
492
+ source = "registry+https://github.com/rust-lang/crates.io-index"
493
+ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
494
+
495
+ [[package]]
496
+ name = "plotters"
497
+ version = "0.3.7"
498
+ source = "registry+https://github.com/rust-lang/crates.io-index"
499
+ checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
500
+ dependencies = [
501
+ "num-traits",
502
+ "plotters-backend",
503
+ "plotters-svg",
504
+ "wasm-bindgen",
505
+ "web-sys",
506
+ ]
507
+
508
+ [[package]]
509
+ name = "plotters-backend"
510
+ version = "0.3.7"
511
+ source = "registry+https://github.com/rust-lang/crates.io-index"
512
+ checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
513
+
514
+ [[package]]
515
+ name = "plotters-svg"
516
+ version = "0.3.7"
517
+ source = "registry+https://github.com/rust-lang/crates.io-index"
518
+ checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
519
+ dependencies = [
520
+ "plotters-backend",
521
+ ]
522
+
251
523
  [[package]]
252
524
  name = "portable-atomic"
253
525
  version = "1.13.1"
@@ -429,6 +701,49 @@ dependencies = [
429
701
  "rand_core",
430
702
  ]
431
703
 
704
+ [[package]]
705
+ name = "rayon"
706
+ version = "1.12.0"
707
+ source = "registry+https://github.com/rust-lang/crates.io-index"
708
+ checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
709
+ dependencies = [
710
+ "either",
711
+ "rayon-core",
712
+ ]
713
+
714
+ [[package]]
715
+ name = "rayon-core"
716
+ version = "1.13.0"
717
+ source = "registry+https://github.com/rust-lang/crates.io-index"
718
+ checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
719
+ dependencies = [
720
+ "crossbeam-deque",
721
+ "crossbeam-utils",
722
+ ]
723
+
724
+ [[package]]
725
+ name = "regex"
726
+ version = "1.12.4"
727
+ source = "registry+https://github.com/rust-lang/crates.io-index"
728
+ checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
729
+ dependencies = [
730
+ "aho-corasick",
731
+ "memchr",
732
+ "regex-automata",
733
+ "regex-syntax",
734
+ ]
735
+
736
+ [[package]]
737
+ name = "regex-automata"
738
+ version = "0.4.14"
739
+ source = "registry+https://github.com/rust-lang/crates.io-index"
740
+ checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
741
+ dependencies = [
742
+ "aho-corasick",
743
+ "memchr",
744
+ "regex-syntax",
745
+ ]
746
+
432
747
  [[package]]
433
748
  name = "regex-syntax"
434
749
  version = "0.8.11"
@@ -466,6 +781,15 @@ dependencies = [
466
781
  "wait-timeout",
467
782
  ]
468
783
 
784
+ [[package]]
785
+ name = "same-file"
786
+ version = "1.0.6"
787
+ source = "registry+https://github.com/rust-lang/crates.io-index"
788
+ checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
789
+ dependencies = [
790
+ "winapi-util",
791
+ ]
792
+
469
793
  [[package]]
470
794
  name = "semver"
471
795
  version = "1.0.28"
@@ -515,6 +839,12 @@ dependencies = [
515
839
  "zmij",
516
840
  ]
517
841
 
842
+ [[package]]
843
+ name = "slab"
844
+ version = "0.4.12"
845
+ source = "registry+https://github.com/rust-lang/crates.io-index"
846
+ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
847
+
518
848
  [[package]]
519
849
  name = "syn"
520
850
  version = "2.0.117"
@@ -565,6 +895,16 @@ dependencies = [
565
895
  "syn",
566
896
  ]
567
897
 
898
+ [[package]]
899
+ name = "tinytemplate"
900
+ version = "1.2.1"
901
+ source = "registry+https://github.com/rust-lang/crates.io-index"
902
+ checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
903
+ dependencies = [
904
+ "serde",
905
+ "serde_json",
906
+ ]
907
+
568
908
  [[package]]
569
909
  name = "unarray"
570
910
  version = "0.1.4"
@@ -598,6 +938,16 @@ dependencies = [
598
938
  "libc",
599
939
  ]
600
940
 
941
+ [[package]]
942
+ name = "walkdir"
943
+ version = "2.5.0"
944
+ source = "registry+https://github.com/rust-lang/crates.io-index"
945
+ checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
946
+ dependencies = [
947
+ "same-file",
948
+ "winapi-util",
949
+ ]
950
+
601
951
  [[package]]
602
952
  name = "wasip2"
603
953
  version = "1.0.4+wasi-0.2.12"
@@ -616,6 +966,51 @@ dependencies = [
616
966
  "wit-bindgen 0.51.0",
617
967
  ]
618
968
 
969
+ [[package]]
970
+ name = "wasm-bindgen"
971
+ version = "0.2.125"
972
+ source = "registry+https://github.com/rust-lang/crates.io-index"
973
+ checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a"
974
+ dependencies = [
975
+ "cfg-if",
976
+ "once_cell",
977
+ "rustversion",
978
+ "wasm-bindgen-macro",
979
+ "wasm-bindgen-shared",
980
+ ]
981
+
982
+ [[package]]
983
+ name = "wasm-bindgen-macro"
984
+ version = "0.2.125"
985
+ source = "registry+https://github.com/rust-lang/crates.io-index"
986
+ checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d"
987
+ dependencies = [
988
+ "quote",
989
+ "wasm-bindgen-macro-support",
990
+ ]
991
+
992
+ [[package]]
993
+ name = "wasm-bindgen-macro-support"
994
+ version = "0.2.125"
995
+ source = "registry+https://github.com/rust-lang/crates.io-index"
996
+ checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd"
997
+ dependencies = [
998
+ "bumpalo",
999
+ "proc-macro2",
1000
+ "quote",
1001
+ "syn",
1002
+ "wasm-bindgen-shared",
1003
+ ]
1004
+
1005
+ [[package]]
1006
+ name = "wasm-bindgen-shared"
1007
+ version = "0.2.125"
1008
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1009
+ checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f"
1010
+ dependencies = [
1011
+ "unicode-ident",
1012
+ ]
1013
+
619
1014
  [[package]]
620
1015
  name = "wasm-encoder"
621
1016
  version = "0.244.0"
@@ -650,6 +1045,25 @@ dependencies = [
650
1045
  "semver",
651
1046
  ]
652
1047
 
1048
+ [[package]]
1049
+ name = "web-sys"
1050
+ version = "0.3.102"
1051
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1052
+ checksum = "a6430a72df5eb332242960fe84b3002a241163998241eb596d4f739b9757061d"
1053
+ dependencies = [
1054
+ "js-sys",
1055
+ "wasm-bindgen",
1056
+ ]
1057
+
1058
+ [[package]]
1059
+ name = "winapi-util"
1060
+ version = "0.1.11"
1061
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1062
+ checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
1063
+ dependencies = [
1064
+ "windows-sys",
1065
+ ]
1066
+
653
1067
  [[package]]
654
1068
  name = "windows-link"
655
1069
  version = "0.2.1"
@@ -3,7 +3,7 @@ members = ["crates/ferrum-core", "crates/ferrum-sql", "crates/ferrum-pyo3"]
3
3
  resolver = "2"
4
4
 
5
5
  [workspace.package]
6
- version = "0.1.0"
6
+ version = "0.1.1"
7
7
  edition = "2021"
8
8
  authors = ["Ferrum Contributors"]
9
9
  license = "Apache-2.0"
@@ -23,6 +23,7 @@ thiserror = "2"
23
23
 
24
24
  # Testing & property-based
25
25
  proptest = "1"
26
+ criterion = { version = "0.5", features = ["html_reports"] }
26
27
 
27
28
  # `panic = "unwind"` is required for `ferrum-pyo3` (`cdylib`) so that
28
29
  # `std::panic::catch_unwind` can intercept Rust panics and convert them to
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ferrum-orm
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Framework :: AsyncIO
6
6
  Classifier: Intended Audience :: Developers
@@ -14,11 +14,14 @@ Classifier: Topic :: Database
14
14
  Classifier: Topic :: Software Development :: Libraries
15
15
  Classifier: Typing :: Typed
16
16
  Requires-Dist: pydantic>=2.0
17
- Requires-Dist: asyncpg>=0.29
17
+ Requires-Dist: ferrum-orm[pg] ; extra == 'all'
18
+ Requires-Dist: ferrum-orm[mysql] ; extra == 'all'
19
+ Requires-Dist: ferrum-orm[sqlite] ; extra == 'all'
20
+ Requires-Dist: ferrum-orm[cli] ; extra == 'all'
21
+ Requires-Dist: ferrum-orm[dotenv] ; extra == 'all'
18
22
  Requires-Dist: typer>=0.12 ; extra == 'cli'
19
23
  Requires-Dist: rich>=13 ; extra == 'cli'
20
- Requires-Dist: ferrum-orm[cli] ; extra == 'dev'
21
- Requires-Dist: ferrum-orm[dotenv] ; extra == 'dev'
24
+ Requires-Dist: ferrum-orm[pg,cli,dotenv] ; extra == 'dev'
22
25
  Requires-Dist: maturin>=1.7,<2 ; extra == 'dev'
23
26
  Requires-Dist: pytest>=8 ; extra == 'dev'
24
27
  Requires-Dist: pytest-asyncio>=0.23 ; extra == 'dev'
@@ -30,15 +33,22 @@ Requires-Dist: import-linter>=2 ; extra == 'dev'
30
33
  Requires-Dist: testcontainers[postgres]>=4 ; extra == 'dev'
31
34
  Requires-Dist: pip-audit>=2 ; extra == 'dev'
32
35
  Requires-Dist: python-dotenv>=1.0 ; extra == 'dotenv'
36
+ Requires-Dist: asyncmy>=0.2 ; extra == 'mysql'
37
+ Requires-Dist: asyncpg>=0.29 ; extra == 'pg'
38
+ Requires-Dist: aiosqlite>=0.19 ; extra == 'sqlite'
33
39
  Requires-Dist: uuid6>=2024.1 ; extra == 'uuid7'
40
+ Provides-Extra: all
34
41
  Provides-Extra: cli
35
42
  Provides-Extra: dev
36
43
  Provides-Extra: dotenv
37
44
  Provides-Extra: fastapi
45
+ Provides-Extra: mysql
46
+ Provides-Extra: pg
47
+ Provides-Extra: sqlite
38
48
  Provides-Extra: uuid7
39
49
  License-File: LICENSE
40
50
  Summary: Next-generation async ORM for Python with a Rust-powered core
41
- Keywords: orm,async,postgresql,pydantic,rust
51
+ Keywords: orm,async,postgresql,mysql,sqlite,pydantic,rust
42
52
  License: Apache-2.0
43
53
  Requires-Python: >=3.11
44
54
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
@@ -73,7 +83,7 @@ Ferrum aims to provide all four.
73
83
  - Pydantic-first models
74
84
  - Django-inspired ORM experience
75
85
  - Rust-powered query engine
76
- - PostgreSQL-first architecture
86
+ - PostgreSQL-first architecture (MySQL and SQLite via optional extras)
77
87
  - Type-safe query construction
78
88
  - Automatic migrations
79
89
  - High-performance result hydration
@@ -223,11 +233,28 @@ The API is not yet stable and breaking changes should be expected until the firs
223
233
  ## Installation
224
234
 
225
235
  ```bash
226
- pip install ferrum-orm # core ORM (asyncpg + pydantic); imported as `import ferrum`
227
- pip install 'ferrum-orm[cli]' # add Typer/Rich CLI tools
228
- pip install 'ferrum-orm[cli,dotenv]' # CLI + automatic .env loading
236
+ # PostgreSQL (most common)
237
+ pip install 'ferrum-orm[pg]'
238
+
239
+ # PostgreSQL + migrations CLI
240
+ pip install 'ferrum-orm[pg,cli]'
241
+
242
+ # MySQL
243
+ pip install 'ferrum-orm[mysql]'
244
+
245
+ # SQLite + migrations CLI (testing / local dev)
246
+ pip install 'ferrum-orm[sqlite,cli]'
247
+
248
+ # Everything (all drivers + CLI + dotenv)
249
+ pip install 'ferrum-orm[all]'
250
+
251
+ # Core ORM only (no database driver — install a driver extra before connecting)
252
+ pip install ferrum-orm
229
253
  ```
230
254
 
255
+ Bare `ferrum-orm` installs Pydantic and the Rust core only. Choose a driver extra
256
+ (`pg`, `mysql`, or `sqlite`) before calling `ferrum.connect()`.
257
+
231
258
  From source, build the native extension with `maturin develop` (or `mise run dev`).
232
259
 
233
260
  ## Examples
@@ -24,7 +24,7 @@ Ferrum aims to provide all four.
24
24
  - Pydantic-first models
25
25
  - Django-inspired ORM experience
26
26
  - Rust-powered query engine
27
- - PostgreSQL-first architecture
27
+ - PostgreSQL-first architecture (MySQL and SQLite via optional extras)
28
28
  - Type-safe query construction
29
29
  - Automatic migrations
30
30
  - High-performance result hydration
@@ -174,11 +174,28 @@ The API is not yet stable and breaking changes should be expected until the firs
174
174
  ## Installation
175
175
 
176
176
  ```bash
177
- pip install ferrum-orm # core ORM (asyncpg + pydantic); imported as `import ferrum`
178
- pip install 'ferrum-orm[cli]' # add Typer/Rich CLI tools
179
- pip install 'ferrum-orm[cli,dotenv]' # CLI + automatic .env loading
177
+ # PostgreSQL (most common)
178
+ pip install 'ferrum-orm[pg]'
179
+
180
+ # PostgreSQL + migrations CLI
181
+ pip install 'ferrum-orm[pg,cli]'
182
+
183
+ # MySQL
184
+ pip install 'ferrum-orm[mysql]'
185
+
186
+ # SQLite + migrations CLI (testing / local dev)
187
+ pip install 'ferrum-orm[sqlite,cli]'
188
+
189
+ # Everything (all drivers + CLI + dotenv)
190
+ pip install 'ferrum-orm[all]'
191
+
192
+ # Core ORM only (no database driver — install a driver extra before connecting)
193
+ pip install ferrum-orm
180
194
  ```
181
195
 
196
+ Bare `ferrum-orm` installs Pydantic and the Rust core only. Choose a driver extra
197
+ (`pg`, `mysql`, or `sqlite`) before calling `ferrum.connect()`.
198
+
182
199
  From source, build the native extension with `maturin develop` (or `mise run dev`).
183
200
 
184
201
  ## Examples