slumber-python 5.4.0__tar.gz → 5.4.4__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.
- {slumber_python-5.4.0 → slumber_python-5.4.4}/Cargo.lock +96 -52
- {slumber_python-5.4.0 → slumber_python-5.4.4}/Cargo.toml +14 -11
- {slumber_python-5.4.0 → slumber_python-5.4.4}/PKG-INFO +1 -1
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/database/convert.rs +1 -1
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/database/tests.rs +18 -8
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/database.rs +40 -9
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/http/models.rs +16 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/http/tests.rs +1 -1
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/render/tests.rs +1 -1
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/render.rs +4 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/python/Cargo.toml +2 -2
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/python/src/lib.rs +7 -5
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/util/Cargo.toml +1 -1
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/util/src/lib.rs +8 -17
- {slumber_python-5.4.0 → slumber_python-5.4.4}/README.md +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/config/Cargo.toml +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/config/src/cereal.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/config/src/default.yml +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/config/src/default_old.yml +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/config/src/lib.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/config/src/tui/cereal.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/config/src/tui/input.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/config/src/tui/mime.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/config/src/tui/theme.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/config/src/tui.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/console/Cargo.toml +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/console/src/lib.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/Cargo.toml +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/collection/cereal.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/collection/models.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/collection/recipe_tree.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/collection/schema.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/collection/value_template.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/collection.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/database/migrations.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/http/curl.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/http.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/lib.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/render/functions.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/render/util.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/test_util.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/util/json.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/core/src/util.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/macros/Cargo.toml +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/macros/src/lib.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/python/README.md +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/python/dev.py +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/python/mise.toml +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/python/slumber.pyi +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/python/tests/slumber.yml +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/python/tests/test.py +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/python/uv.lock +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/Cargo.toml +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/proptest-regressions/parse.txt +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/src/cereal.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/src/display.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/src/error.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/src/expression.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/src/lib.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/src/parse.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/src/test_util.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/src/tests.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/src/value.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/util/src/paths.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/util/src/test_util.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/util/src/yaml/error.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/util/src/yaml/resolve.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/crates/util/src/yaml.rs +0 -0
- {slumber_python-5.4.0 → slumber_python-5.4.4}/pyproject.toml +0 -0
|
@@ -160,13 +160,13 @@ dependencies = [
|
|
|
160
160
|
|
|
161
161
|
[[package]]
|
|
162
162
|
name = "async-trait"
|
|
163
|
-
version = "0.1.
|
|
163
|
+
version = "0.1.92"
|
|
164
164
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
165
|
-
checksum = "
|
|
165
|
+
checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667"
|
|
166
166
|
dependencies = [
|
|
167
167
|
"proc-macro2",
|
|
168
168
|
"quote",
|
|
169
|
-
"syn
|
|
169
|
+
"syn 3.0.9",
|
|
170
170
|
]
|
|
171
171
|
|
|
172
172
|
[[package]]
|
|
@@ -192,9 +192,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
|
|
|
192
192
|
|
|
193
193
|
[[package]]
|
|
194
194
|
name = "aws-lc-rs"
|
|
195
|
-
version = "1.
|
|
195
|
+
version = "1.18.2"
|
|
196
196
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
197
|
-
checksum = "
|
|
197
|
+
checksum = "faac5829c2b74c28f830747e7818ccfb684261b5f48a1118b1e2a13d36dfab13"
|
|
198
198
|
dependencies = [
|
|
199
199
|
"aws-lc-sys",
|
|
200
200
|
"zeroize",
|
|
@@ -202,21 +202,22 @@ dependencies = [
|
|
|
202
202
|
|
|
203
203
|
[[package]]
|
|
204
204
|
name = "aws-lc-sys"
|
|
205
|
-
version = "0.
|
|
205
|
+
version = "0.46.0"
|
|
206
206
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
207
|
-
checksum = "
|
|
207
|
+
checksum = "f1622d8446a2d4b2ce0c7eefc73dd43a99779028d5ee5c2dd8073a658ba8a2bc"
|
|
208
208
|
dependencies = [
|
|
209
209
|
"cc",
|
|
210
210
|
"cmake",
|
|
211
211
|
"dunce",
|
|
212
212
|
"fs_extra",
|
|
213
|
+
"pkg-config",
|
|
213
214
|
]
|
|
214
215
|
|
|
215
216
|
[[package]]
|
|
216
217
|
name = "axum"
|
|
217
|
-
version = "0.8.
|
|
218
|
+
version = "0.8.9"
|
|
218
219
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
219
|
-
checksum = "
|
|
220
|
+
checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90"
|
|
220
221
|
dependencies = [
|
|
221
222
|
"axum-core",
|
|
222
223
|
"bytes",
|
|
@@ -224,6 +225,8 @@ dependencies = [
|
|
|
224
225
|
"http",
|
|
225
226
|
"http-body",
|
|
226
227
|
"http-body-util",
|
|
228
|
+
"hyper",
|
|
229
|
+
"hyper-util",
|
|
227
230
|
"itoa",
|
|
228
231
|
"matchit",
|
|
229
232
|
"memchr",
|
|
@@ -232,6 +235,7 @@ dependencies = [
|
|
|
232
235
|
"pin-project-lite",
|
|
233
236
|
"serde_core",
|
|
234
237
|
"sync_wrapper",
|
|
238
|
+
"tokio",
|
|
235
239
|
"tower",
|
|
236
240
|
"tower-layer",
|
|
237
241
|
"tower-service",
|
|
@@ -282,6 +286,12 @@ version = "0.22.1"
|
|
|
282
286
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
283
287
|
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
|
284
288
|
|
|
289
|
+
[[package]]
|
|
290
|
+
name = "base64"
|
|
291
|
+
version = "0.23.1"
|
|
292
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
293
|
+
checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5"
|
|
294
|
+
|
|
285
295
|
[[package]]
|
|
286
296
|
name = "bit-set"
|
|
287
297
|
version = "0.5.3"
|
|
@@ -877,7 +887,7 @@ dependencies = [
|
|
|
877
887
|
|
|
878
888
|
[[package]]
|
|
879
889
|
name = "doc_utils"
|
|
880
|
-
version = "5.4.
|
|
890
|
+
version = "5.4.4"
|
|
881
891
|
dependencies = [
|
|
882
892
|
"anyhow",
|
|
883
893
|
"clap",
|
|
@@ -2404,36 +2414,33 @@ dependencies = [
|
|
|
2404
2414
|
|
|
2405
2415
|
[[package]]
|
|
2406
2416
|
name = "pyo3"
|
|
2407
|
-
version = "0.
|
|
2417
|
+
version = "0.30.1"
|
|
2408
2418
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2409
|
-
checksum = "
|
|
2419
|
+
checksum = "229ca13b8a15bb0d1487b81ab975bfcd97513416499a8312011b6036e42e0de4"
|
|
2410
2420
|
dependencies = [
|
|
2411
2421
|
"indexmap",
|
|
2412
|
-
"indoc",
|
|
2413
2422
|
"libc",
|
|
2414
|
-
"memoffset",
|
|
2415
2423
|
"once_cell",
|
|
2416
2424
|
"portable-atomic",
|
|
2417
2425
|
"pyo3-build-config",
|
|
2418
2426
|
"pyo3-ffi",
|
|
2419
2427
|
"pyo3-macros",
|
|
2420
|
-
"unindent",
|
|
2421
2428
|
]
|
|
2422
2429
|
|
|
2423
2430
|
[[package]]
|
|
2424
2431
|
name = "pyo3-build-config"
|
|
2425
|
-
version = "0.
|
|
2432
|
+
version = "0.30.1"
|
|
2426
2433
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2427
|
-
checksum = "
|
|
2434
|
+
checksum = "70130e2b6dd1ee589a8788026a429561ca5c40fa7a2fa7914c2282eddae24700"
|
|
2428
2435
|
dependencies = [
|
|
2429
2436
|
"target-lexicon",
|
|
2430
2437
|
]
|
|
2431
2438
|
|
|
2432
2439
|
[[package]]
|
|
2433
2440
|
name = "pyo3-ffi"
|
|
2434
|
-
version = "0.
|
|
2441
|
+
version = "0.30.1"
|
|
2435
2442
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2436
|
-
checksum = "
|
|
2443
|
+
checksum = "5e7ff73c555c286d212d4ce7e5fbda845a973c4f61bd5f160f5f2c3c2a04d1c4"
|
|
2437
2444
|
dependencies = [
|
|
2438
2445
|
"libc",
|
|
2439
2446
|
"pyo3-build-config",
|
|
@@ -2441,27 +2448,26 @@ dependencies = [
|
|
|
2441
2448
|
|
|
2442
2449
|
[[package]]
|
|
2443
2450
|
name = "pyo3-macros"
|
|
2444
|
-
version = "0.
|
|
2451
|
+
version = "0.30.1"
|
|
2445
2452
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2446
|
-
checksum = "
|
|
2453
|
+
checksum = "c46d2e5862c7bb8207e3b639f713dda3c499933444784154c11d013c5a691b60"
|
|
2447
2454
|
dependencies = [
|
|
2448
2455
|
"proc-macro2",
|
|
2449
2456
|
"pyo3-macros-backend",
|
|
2450
2457
|
"quote",
|
|
2451
|
-
"syn
|
|
2458
|
+
"syn 3.0.9",
|
|
2452
2459
|
]
|
|
2453
2460
|
|
|
2454
2461
|
[[package]]
|
|
2455
2462
|
name = "pyo3-macros-backend"
|
|
2456
|
-
version = "0.
|
|
2463
|
+
version = "0.30.1"
|
|
2457
2464
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2458
|
-
checksum = "
|
|
2465
|
+
checksum = "38b89f066f2ae72a2aef52d1537ca2fcd104440ebfadee06e97aa90738a25b9b"
|
|
2459
2466
|
dependencies = [
|
|
2460
2467
|
"heck",
|
|
2461
2468
|
"proc-macro2",
|
|
2462
|
-
"pyo3-build-config",
|
|
2463
2469
|
"quote",
|
|
2464
|
-
"syn
|
|
2470
|
+
"syn 3.0.9",
|
|
2465
2471
|
]
|
|
2466
2472
|
|
|
2467
2473
|
[[package]]
|
|
@@ -2752,11 +2758,11 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2"
|
|
|
2752
2758
|
|
|
2753
2759
|
[[package]]
|
|
2754
2760
|
name = "reqwest"
|
|
2755
|
-
version = "0.13.
|
|
2761
|
+
version = "0.13.5"
|
|
2756
2762
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2757
|
-
checksum = "
|
|
2763
|
+
checksum = "16a1cfa75cc186dd73d5818e510e042e40927bccc9c236b061cea97e1eb08029"
|
|
2758
2764
|
dependencies = [
|
|
2759
|
-
"base64 0.
|
|
2765
|
+
"base64 0.23.1",
|
|
2760
2766
|
"bytes",
|
|
2761
2767
|
"futures-core",
|
|
2762
2768
|
"futures-util",
|
|
@@ -2783,7 +2789,7 @@ dependencies = [
|
|
|
2783
2789
|
"tokio-rustls",
|
|
2784
2790
|
"tokio-util",
|
|
2785
2791
|
"tower",
|
|
2786
|
-
"tower-http",
|
|
2792
|
+
"tower-http 0.6.8",
|
|
2787
2793
|
"tower-service",
|
|
2788
2794
|
"url",
|
|
2789
2795
|
"wasm-bindgen",
|
|
@@ -2981,9 +2987,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"
|
|
|
2981
2987
|
|
|
2982
2988
|
[[package]]
|
|
2983
2989
|
name = "rustls-webpki"
|
|
2984
|
-
version = "0.103.
|
|
2990
|
+
version = "0.103.16"
|
|
2985
2991
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2986
|
-
checksum = "
|
|
2992
|
+
checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281"
|
|
2987
2993
|
dependencies = [
|
|
2988
2994
|
"aws-lc-rs",
|
|
2989
2995
|
"ring",
|
|
@@ -3348,7 +3354,7 @@ checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
|
|
|
3348
3354
|
|
|
3349
3355
|
[[package]]
|
|
3350
3356
|
name = "slumber"
|
|
3351
|
-
version = "5.4.
|
|
3357
|
+
version = "5.4.4"
|
|
3352
3358
|
dependencies = [
|
|
3353
3359
|
"anyhow",
|
|
3354
3360
|
"slumber_cli",
|
|
@@ -3360,7 +3366,7 @@ dependencies = [
|
|
|
3360
3366
|
|
|
3361
3367
|
[[package]]
|
|
3362
3368
|
name = "slumber_cli"
|
|
3363
|
-
version = "5.4.
|
|
3369
|
+
version = "5.4.4"
|
|
3364
3370
|
dependencies = [
|
|
3365
3371
|
"anyhow",
|
|
3366
3372
|
"assert_cmd",
|
|
@@ -3388,14 +3394,13 @@ dependencies = [
|
|
|
3388
3394
|
"slumber_util",
|
|
3389
3395
|
"tokio",
|
|
3390
3396
|
"tracing",
|
|
3391
|
-
"url",
|
|
3392
3397
|
"uuid",
|
|
3393
3398
|
"wiremock",
|
|
3394
3399
|
]
|
|
3395
3400
|
|
|
3396
3401
|
[[package]]
|
|
3397
3402
|
name = "slumber_config"
|
|
3398
|
-
version = "5.4.
|
|
3403
|
+
version = "5.4.4"
|
|
3399
3404
|
dependencies = [
|
|
3400
3405
|
"derive_more",
|
|
3401
3406
|
"dirs",
|
|
@@ -3420,7 +3425,7 @@ dependencies = [
|
|
|
3420
3425
|
|
|
3421
3426
|
[[package]]
|
|
3422
3427
|
name = "slumber_console"
|
|
3423
|
-
version = "5.4.
|
|
3428
|
+
version = "5.4.4"
|
|
3424
3429
|
dependencies = [
|
|
3425
3430
|
"anyhow",
|
|
3426
3431
|
"async-trait",
|
|
@@ -3434,7 +3439,7 @@ dependencies = [
|
|
|
3434
3439
|
|
|
3435
3440
|
[[package]]
|
|
3436
3441
|
name = "slumber_core"
|
|
3437
|
-
version = "5.4.
|
|
3442
|
+
version = "5.4.4"
|
|
3438
3443
|
dependencies = [
|
|
3439
3444
|
"async-trait",
|
|
3440
3445
|
"base64 0.22.1",
|
|
@@ -3482,7 +3487,7 @@ dependencies = [
|
|
|
3482
3487
|
|
|
3483
3488
|
[[package]]
|
|
3484
3489
|
name = "slumber_import"
|
|
3485
|
-
version = "5.4.
|
|
3490
|
+
version = "5.4.4"
|
|
3486
3491
|
dependencies = [
|
|
3487
3492
|
"anyhow",
|
|
3488
3493
|
"base64 0.22.1",
|
|
@@ -3514,16 +3519,33 @@ dependencies = [
|
|
|
3514
3519
|
|
|
3515
3520
|
[[package]]
|
|
3516
3521
|
name = "slumber_macros"
|
|
3517
|
-
version = "5.4.
|
|
3522
|
+
version = "5.4.4"
|
|
3518
3523
|
dependencies = [
|
|
3519
3524
|
"proc-macro2",
|
|
3520
3525
|
"quote",
|
|
3521
3526
|
"syn 2.0.114",
|
|
3522
3527
|
]
|
|
3523
3528
|
|
|
3529
|
+
[[package]]
|
|
3530
|
+
name = "slumber_mock"
|
|
3531
|
+
version = "0.1.2"
|
|
3532
|
+
dependencies = [
|
|
3533
|
+
"anyhow",
|
|
3534
|
+
"axum",
|
|
3535
|
+
"clap",
|
|
3536
|
+
"itertools",
|
|
3537
|
+
"reqwest",
|
|
3538
|
+
"slumber_core",
|
|
3539
|
+
"tokio",
|
|
3540
|
+
"tower-http 0.7.1",
|
|
3541
|
+
"tracing",
|
|
3542
|
+
"tracing-subscriber",
|
|
3543
|
+
"url",
|
|
3544
|
+
]
|
|
3545
|
+
|
|
3524
3546
|
[[package]]
|
|
3525
3547
|
name = "slumber_python"
|
|
3526
|
-
version = "5.4.
|
|
3548
|
+
version = "5.4.4"
|
|
3527
3549
|
dependencies = [
|
|
3528
3550
|
"async-trait",
|
|
3529
3551
|
"indexmap",
|
|
@@ -3537,7 +3559,7 @@ dependencies = [
|
|
|
3537
3559
|
|
|
3538
3560
|
[[package]]
|
|
3539
3561
|
name = "slumber_template"
|
|
3540
|
-
version = "5.4.
|
|
3562
|
+
version = "5.4.4"
|
|
3541
3563
|
dependencies = [
|
|
3542
3564
|
"bytes",
|
|
3543
3565
|
"derive_more",
|
|
@@ -3564,7 +3586,7 @@ dependencies = [
|
|
|
3564
3586
|
|
|
3565
3587
|
[[package]]
|
|
3566
3588
|
name = "slumber_tui"
|
|
3567
|
-
version = "5.4.
|
|
3589
|
+
version = "5.4.4"
|
|
3568
3590
|
dependencies = [
|
|
3569
3591
|
"anyhow",
|
|
3570
3592
|
"async-trait",
|
|
@@ -3606,7 +3628,7 @@ dependencies = [
|
|
|
3606
3628
|
|
|
3607
3629
|
[[package]]
|
|
3608
3630
|
name = "slumber_util"
|
|
3609
|
-
version = "5.4.
|
|
3631
|
+
version = "5.4.4"
|
|
3610
3632
|
dependencies = [
|
|
3611
3633
|
"console-subscriber",
|
|
3612
3634
|
"derive_more",
|
|
@@ -3728,6 +3750,17 @@ dependencies = [
|
|
|
3728
3750
|
"unicode-ident",
|
|
3729
3751
|
]
|
|
3730
3752
|
|
|
3753
|
+
[[package]]
|
|
3754
|
+
name = "syn"
|
|
3755
|
+
version = "3.0.9"
|
|
3756
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3757
|
+
checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b"
|
|
3758
|
+
dependencies = [
|
|
3759
|
+
"proc-macro2",
|
|
3760
|
+
"quote",
|
|
3761
|
+
"unicode-ident",
|
|
3762
|
+
]
|
|
3763
|
+
|
|
3731
3764
|
[[package]]
|
|
3732
3765
|
name = "sync_wrapper"
|
|
3733
3766
|
version = "1.0.2"
|
|
@@ -4133,6 +4166,23 @@ dependencies = [
|
|
|
4133
4166
|
"tower-service",
|
|
4134
4167
|
]
|
|
4135
4168
|
|
|
4169
|
+
[[package]]
|
|
4170
|
+
name = "tower-http"
|
|
4171
|
+
version = "0.7.1"
|
|
4172
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4173
|
+
checksum = "08a05a66a4fdd61cbbe0a1d755ffe0ca6aba159dd4820936a0ff8a8278245b9c"
|
|
4174
|
+
dependencies = [
|
|
4175
|
+
"bitflags 2.10.0",
|
|
4176
|
+
"bytes",
|
|
4177
|
+
"http",
|
|
4178
|
+
"http-body",
|
|
4179
|
+
"percent-encoding",
|
|
4180
|
+
"pin-project-lite",
|
|
4181
|
+
"tower-layer",
|
|
4182
|
+
"tower-service",
|
|
4183
|
+
"tracing",
|
|
4184
|
+
]
|
|
4185
|
+
|
|
4136
4186
|
[[package]]
|
|
4137
4187
|
name = "tower-layer"
|
|
4138
4188
|
version = "0.3.3"
|
|
@@ -4302,12 +4352,6 @@ version = "0.2.6"
|
|
|
4302
4352
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4303
4353
|
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
|
4304
4354
|
|
|
4305
|
-
[[package]]
|
|
4306
|
-
name = "unindent"
|
|
4307
|
-
version = "0.2.4"
|
|
4308
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4309
|
-
checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
|
|
4310
|
-
|
|
4311
4355
|
[[package]]
|
|
4312
4356
|
name = "unsafe-libyaml"
|
|
4313
4357
|
version = "0.2.11"
|
|
@@ -4495,9 +4539,9 @@ dependencies = [
|
|
|
4495
4539
|
|
|
4496
4540
|
[[package]]
|
|
4497
4541
|
name = "wasm-streams"
|
|
4498
|
-
version = "0.
|
|
4542
|
+
version = "0.5.0"
|
|
4499
4543
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4500
|
-
checksum = "
|
|
4544
|
+
checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb"
|
|
4501
4545
|
dependencies = [
|
|
4502
4546
|
"futures-util",
|
|
4503
4547
|
"js-sys",
|
|
@@ -9,9 +9,9 @@ homepage = "https://slumber.lucaspickering.me"
|
|
|
9
9
|
keywords = ["rest", "http", "terminal", "tui"]
|
|
10
10
|
license = "MIT"
|
|
11
11
|
repository = "https://github.com/LucasPickering/slumber"
|
|
12
|
-
version = "5.4.
|
|
12
|
+
version = "5.4.4"
|
|
13
13
|
# Keep in sync w/ rust-toolchain.toml
|
|
14
|
-
rust-version = "1.
|
|
14
|
+
rust-version = "1.99.0"
|
|
15
15
|
|
|
16
16
|
# Dependencies used in multiple crates get de-duplicated here
|
|
17
17
|
[workspace.dependencies]
|
|
@@ -43,15 +43,16 @@ serde_json = {version = "1.0.120", default-features = false, features = ["preser
|
|
|
43
43
|
serde_json_path = "0.7.1"
|
|
44
44
|
serde_test = "1.0.176"
|
|
45
45
|
serde_yaml = {version = "0.9.0", default-features = false}
|
|
46
|
-
slumber_cli = {path = "./crates/cli", version = "5.4.
|
|
47
|
-
slumber_config = {path = "./crates/config", version = "5.4.
|
|
48
|
-
slumber_console = {path = "./crates/console", version = "5.4.
|
|
49
|
-
slumber_core = {path = "./crates/core", version = "5.4.
|
|
50
|
-
slumber_import = {path = "./crates/import", version = "5.4.
|
|
51
|
-
slumber_macros = {path = "./crates/macros", version = "5.4.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
slumber_cli = {path = "./crates/cli", version = "5.4.4" }
|
|
47
|
+
slumber_config = {path = "./crates/config", version = "5.4.4", default-features = false}
|
|
48
|
+
slumber_console = {path = "./crates/console", version = "5.4.4" }
|
|
49
|
+
slumber_core = {path = "./crates/core", version = "5.4.4" }
|
|
50
|
+
slumber_import = {path = "./crates/import", version = "5.4.4" }
|
|
51
|
+
slumber_macros = {path = "./crates/macros", version = "5.4.4" }
|
|
52
|
+
slumber_mock = {path = "./crates/mock", version = "0.1.2" }
|
|
53
|
+
slumber_template = {path = "./crates/template", version = "5.4.4" }
|
|
54
|
+
slumber_tui = {path = "./crates/tui", version = "5.4.4" }
|
|
55
|
+
slumber_util = {path = "./crates/util", version = "5.4.4" }
|
|
55
56
|
strum = {version = "0.27.0", default-features = false}
|
|
56
57
|
syn = "2.0.101"
|
|
57
58
|
terminput = "0.5.3"
|
|
@@ -59,6 +60,7 @@ thiserror = "2.0.12"
|
|
|
59
60
|
tokio = {version = "1.39.2", default-features = false}
|
|
60
61
|
tokio-util = "0.7.13"
|
|
61
62
|
tracing = "0.1.40"
|
|
63
|
+
tracing-subscriber = {version = "0.3.17", default-features = false}
|
|
62
64
|
url = "2.0.0"
|
|
63
65
|
uuid = {version = "1.10.0", default-features = false}
|
|
64
66
|
winnow = "0.7.0"
|
|
@@ -92,6 +94,7 @@ needless_pass_by_value = "allow"
|
|
|
92
94
|
similar_names = "allow"
|
|
93
95
|
single_match = "allow"
|
|
94
96
|
too_many_lines = "allow"
|
|
97
|
+
unused_async_trait_impl = "allow"
|
|
95
98
|
unused_self = "allow"
|
|
96
99
|
used_underscore_binding = "allow"
|
|
97
100
|
|
|
@@ -353,7 +353,7 @@ impl FromSql for SqlWrap<Bytes> {
|
|
|
353
353
|
impl FromSql for SqlWrap<StatusCode> {
|
|
354
354
|
fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
|
|
355
355
|
let code: u16 = value.as_i64()?.try_into().map_err(error_other)?;
|
|
356
|
-
let code = StatusCode::from_u16(code
|
|
356
|
+
let code = StatusCode::from_u16(code).map_err(error_other)?;
|
|
357
357
|
Ok(Self(code))
|
|
358
358
|
}
|
|
359
359
|
}
|
|
@@ -112,7 +112,7 @@ fn test_collection_delete(collection_file: CollectionFile) {
|
|
|
112
112
|
collection.insert_command("jq .").unwrap();
|
|
113
113
|
|
|
114
114
|
// Sanity checks
|
|
115
|
-
assert_eq!(collection.
|
|
115
|
+
assert_eq!(collection.get_all_exchange_summaries().unwrap().len(), 1);
|
|
116
116
|
assert_eq!(
|
|
117
117
|
collection.get_ui(key_type, ui_key).unwrap(),
|
|
118
118
|
Some("value1".into())
|
|
@@ -126,7 +126,7 @@ fn test_collection_delete(collection_file: CollectionFile) {
|
|
|
126
126
|
|
|
127
127
|
// All gone!
|
|
128
128
|
assert_eq!(database.get_collections().unwrap(), []);
|
|
129
|
-
assert_eq!(database.
|
|
129
|
+
assert_eq!(database.get_all_exchange_summaries().unwrap(), []);
|
|
130
130
|
assert_eq!(collection.get_ui(key_type, ui_key).unwrap(), None);
|
|
131
131
|
assert_eq!(collection.get_commands("jq").unwrap(), [""; 0]);
|
|
132
132
|
}
|
|
@@ -240,7 +240,14 @@ fn test_collection_merge(
|
|
|
240
240
|
/// Test fetching all requests for the whole DB
|
|
241
241
|
#[rstest]
|
|
242
242
|
fn test_database_get_all_requests(request_db: RequestDb) {
|
|
243
|
-
assert_eq!(
|
|
243
|
+
assert_eq!(
|
|
244
|
+
request_db
|
|
245
|
+
.database
|
|
246
|
+
.get_all_exchange_summaries()
|
|
247
|
+
.unwrap()
|
|
248
|
+
.len(),
|
|
249
|
+
12
|
|
250
|
+
);
|
|
244
251
|
}
|
|
245
252
|
|
|
246
253
|
/// Test getting most recent request by recipe/profile
|
|
@@ -293,7 +300,7 @@ fn test_request_body(#[case] body: RequestBody) {
|
|
|
293
300
|
});
|
|
294
301
|
|
|
295
302
|
database.insert_exchange(&exchange).unwrap();
|
|
296
|
-
let actual = database.
|
|
303
|
+
let actual = database.get_exchange(exchange.id).unwrap().unwrap();
|
|
297
304
|
|
|
298
305
|
// What goes in is what comes out
|
|
299
306
|
assert_eq!(actual.request.body, body);
|
|
@@ -303,8 +310,8 @@ fn test_request_body(#[case] body: RequestBody) {
|
|
|
303
310
|
#[rstest]
|
|
304
311
|
fn test_collection_get_all_requests(request_db: RequestDb) {
|
|
305
312
|
let [collection1, collection2] = request_db.collections;
|
|
306
|
-
assert_eq!(collection1.
|
|
307
|
-
assert_eq!(collection2.
|
|
313
|
+
assert_eq!(collection1.get_all_exchange_summaries().unwrap().len(), 6);
|
|
314
|
+
assert_eq!(collection2.get_all_exchange_summaries().unwrap().len(), 6);
|
|
308
315
|
}
|
|
309
316
|
|
|
310
317
|
/// Test fetching all requests for a single recipe
|
|
@@ -349,7 +356,10 @@ fn test_get_recipe_requests() {
|
|
|
349
356
|
// Leave the Option here so a non-match will trigger a handy
|
|
350
357
|
// assertion error
|
|
351
358
|
let ids = database
|
|
352
|
-
.
|
|
359
|
+
.get_recipe_exchange_summaries(
|
|
360
|
+
profile_id.as_ref().into(),
|
|
361
|
+
&recipe_id,
|
|
362
|
+
)
|
|
353
363
|
.unwrap()
|
|
354
364
|
.into_iter()
|
|
355
365
|
.map(|exchange| exchange.id)
|
|
@@ -370,7 +380,7 @@ fn test_get_recipe_requests() {
|
|
|
370
380
|
// Load all requests for a recipe (across all profiles)
|
|
371
381
|
let recipe_id = "recipe1".into();
|
|
372
382
|
let ids = database
|
|
373
|
-
.
|
|
383
|
+
.get_recipe_exchange_summaries(ProfileFilter::All, &recipe_id)
|
|
374
384
|
.unwrap()
|
|
375
385
|
.into_iter()
|
|
376
386
|
.map(|exchange| exchange.id)
|
|
@@ -9,7 +9,7 @@ mod tests;
|
|
|
9
9
|
use crate::{
|
|
10
10
|
collection::{Collection, CollectionFile, ProfileId, RecipeId},
|
|
11
11
|
database::convert::{CollectionPath, SqlWrap},
|
|
12
|
-
http::{Exchange, ExchangeSummary, RequestId},
|
|
12
|
+
http::{Exchange, ExchangeSummary, HttpMethod, RequestId},
|
|
13
13
|
};
|
|
14
14
|
use chrono::Utc;
|
|
15
15
|
use rusqlite::{Connection, OptionalExtension, named_params};
|
|
@@ -25,6 +25,7 @@ use std::{
|
|
|
25
25
|
use strum::IntoDiscriminant;
|
|
26
26
|
use thiserror::Error;
|
|
27
27
|
use tracing::{debug, info};
|
|
28
|
+
use url::Url;
|
|
28
29
|
use uuid::Uuid;
|
|
29
30
|
|
|
30
31
|
/// Maximum number of commands to store in history **per collection**. When we
|
|
@@ -268,8 +269,8 @@ impl Database {
|
|
|
268
269
|
Ok(())
|
|
269
270
|
}
|
|
270
271
|
|
|
271
|
-
/// Get all
|
|
272
|
-
pub fn
|
|
272
|
+
/// Get all exchanges for all collections
|
|
273
|
+
pub fn get_all_exchange_summaries(
|
|
273
274
|
&self,
|
|
274
275
|
) -> Result<Vec<ExchangeSummary>, DatabaseError> {
|
|
275
276
|
// Wish we had try blocks ¯\_(ツ)_/¯
|
|
@@ -392,8 +393,8 @@ impl CollectionDatabase {
|
|
|
392
393
|
.traced();
|
|
393
394
|
}
|
|
394
395
|
|
|
395
|
-
/// Get
|
|
396
|
-
pub fn
|
|
396
|
+
/// Get an exchange by ID, or `None` if not in the database
|
|
397
|
+
pub fn get_exchange(
|
|
397
398
|
&self,
|
|
398
399
|
request_id: RequestId,
|
|
399
400
|
) -> Result<Option<Exchange>, DatabaseError> {
|
|
@@ -455,8 +456,8 @@ impl CollectionDatabase {
|
|
|
455
456
|
.traced()
|
|
456
457
|
}
|
|
457
458
|
|
|
458
|
-
/// Get a list of all
|
|
459
|
-
pub fn
|
|
459
|
+
/// Get a list of all exchanges for a profile+recipe combo
|
|
460
|
+
pub fn get_recipe_exchange_summaries(
|
|
460
461
|
&self,
|
|
461
462
|
profile_filter: ProfileFilter,
|
|
462
463
|
recipe_id: &RecipeId,
|
|
@@ -493,8 +494,8 @@ impl CollectionDatabase {
|
|
|
493
494
|
.map_err(DatabaseError::add_context("Extracting request history"))
|
|
494
495
|
}
|
|
495
496
|
|
|
496
|
-
/// Get all
|
|
497
|
-
pub fn
|
|
497
|
+
/// Get all exchanges for this collection
|
|
498
|
+
pub fn get_all_exchange_summaries(
|
|
498
499
|
&self,
|
|
499
500
|
) -> Result<Vec<ExchangeSummary>, DatabaseError> {
|
|
500
501
|
self.database
|
|
@@ -518,6 +519,36 @@ impl CollectionDatabase {
|
|
|
518
519
|
.traced()
|
|
519
520
|
}
|
|
520
521
|
|
|
522
|
+
/// Get request data for all requests for this collection
|
|
523
|
+
pub fn get_all_requests(
|
|
524
|
+
&self,
|
|
525
|
+
) -> Result<Vec<(RequestId, HttpMethod, Url)>, DatabaseError> {
|
|
526
|
+
self.database
|
|
527
|
+
.connection()
|
|
528
|
+
.prepare(
|
|
529
|
+
"SELECT id, method, url FROM requests_v2
|
|
530
|
+
WHERE collection_id = :collection_id ORDER BY start_time DESC",
|
|
531
|
+
)
|
|
532
|
+
.and_then(|mut stmt| {
|
|
533
|
+
stmt.query_map(
|
|
534
|
+
named_params! {":collection_id": self.collection_id},
|
|
535
|
+
|row| {
|
|
536
|
+
Ok((
|
|
537
|
+
row.get("id")?,
|
|
538
|
+
row.get("method")?,
|
|
539
|
+
row.get::<_, SqlWrap<_>>("url")?.0,
|
|
540
|
+
))
|
|
541
|
+
},
|
|
542
|
+
)?
|
|
543
|
+
.collect::<rusqlite::Result<Vec<_>>>()
|
|
544
|
+
})
|
|
545
|
+
.map_err(DatabaseError::add_context(format!(
|
|
546
|
+
"Error loading requests for collection `{}`",
|
|
547
|
+
self.collection_id
|
|
548
|
+
)))
|
|
549
|
+
.traced()
|
|
550
|
+
}
|
|
551
|
+
|
|
521
552
|
/// Add a new exchange to history. The HTTP engine is responsible for
|
|
522
553
|
/// inserting its own exchanges. Only requests that received a valid HTTP
|
|
523
554
|
/// response should be stored. In-flight requests, invalid requests, and
|
|
@@ -242,6 +242,22 @@ impl TryFrom<String> for HttpMethod {
|
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
+
impl PartialEq<reqwest::Method> for HttpMethod {
|
|
246
|
+
fn eq(&self, other: &reqwest::Method) -> bool {
|
|
247
|
+
match self {
|
|
248
|
+
Self::Connect => other == reqwest::Method::CONNECT,
|
|
249
|
+
Self::Delete => other == reqwest::Method::DELETE,
|
|
250
|
+
Self::Get => other == reqwest::Method::GET,
|
|
251
|
+
Self::Head => other == reqwest::Method::HEAD,
|
|
252
|
+
Self::Options => other == reqwest::Method::OPTIONS,
|
|
253
|
+
Self::Patch => other == reqwest::Method::PATCH,
|
|
254
|
+
Self::Post => other == reqwest::Method::POST,
|
|
255
|
+
Self::Put => other == reqwest::Method::PUT,
|
|
256
|
+
Self::Trace => other == reqwest::Method::TRACE,
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
245
261
|
#[derive(Debug, Error)]
|
|
246
262
|
#[error(
|
|
247
263
|
"Invalid HTTP method `{input}`. Must be one of: {}",
|
|
@@ -1082,7 +1082,7 @@ async fn test_send_request(http_engine: HttpEngine) {
|
|
|
1082
1082
|
);
|
|
1083
1083
|
|
|
1084
1084
|
// Ensure it was persisted
|
|
1085
|
-
assert_eq!(database.
|
|
1085
|
+
assert_eq!(database.get_exchange(exchange.id).unwrap(), Some(exchange));
|
|
1086
1086
|
}
|
|
1087
1087
|
|
|
1088
1088
|
/// Leading/trailing newlines should be stripped from rendered header
|
|
@@ -923,7 +923,7 @@ async fn test_response_header(
|
|
|
923
923
|
..ResponseRecord::factory(id)
|
|
924
924
|
}
|
|
925
925
|
.into(),
|
|
926
|
-
end_time: Utc::now() - Duration::
|
|
926
|
+
end_time: Utc::now() - Duration::from_hours(1),
|
|
927
927
|
..Exchange::factory((id, None, recipe.id.clone()))
|
|
928
928
|
};
|
|
929
929
|
database.insert_exchange(&exchange).unwrap();
|
|
@@ -212,6 +212,7 @@ impl TemplateContext {
|
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
+
/// Template context when producing eager values (where streams aren't allowed)
|
|
215
216
|
impl Context<Value> for TemplateContext {
|
|
216
217
|
async fn get_field(
|
|
217
218
|
&self,
|
|
@@ -241,11 +242,14 @@ impl Context<Value> for TemplateContext {
|
|
|
241
242
|
}
|
|
242
243
|
}
|
|
243
244
|
|
|
245
|
+
/// Template context when producing lazy values (where streams are allowed)
|
|
244
246
|
impl Context<ValueStream> for TemplateContext {
|
|
245
247
|
async fn get_field(
|
|
246
248
|
&self,
|
|
247
249
|
field: &Identifier,
|
|
248
250
|
) -> Result<ValueStream, RenderError> {
|
|
251
|
+
// Streams can't be cached because they can only be resolved once. If
|
|
252
|
+
// the value is cached, it must be eager.
|
|
249
253
|
let guard = match self.get_field_cache_guard(field).await {
|
|
250
254
|
FieldCacheOutcome::Hit(value) => return Ok(value.into()),
|
|
251
255
|
FieldCacheOutcome::Miss(guard) => guard,
|
|
@@ -18,13 +18,13 @@ release = false
|
|
|
18
18
|
tag = false
|
|
19
19
|
|
|
20
20
|
[lib]
|
|
21
|
-
name = "slumber"
|
|
22
21
|
crate-type = ["cdylib"]
|
|
22
|
+
name = "slumber"
|
|
23
23
|
|
|
24
24
|
[dependencies]
|
|
25
25
|
async-trait = {workspace = true}
|
|
26
26
|
indexmap = {workspace = true}
|
|
27
|
-
pyo3 = {version = "0.
|
|
27
|
+
pyo3 = {version = "0.30", features = ["experimental-async", "indexmap"]}
|
|
28
28
|
slumber_config = {workspace = true}
|
|
29
29
|
slumber_console = {workspace = true}
|
|
30
30
|
slumber_core = {workspace = true}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
use async_trait::async_trait;
|
|
2
2
|
use indexmap::IndexMap;
|
|
3
3
|
use pyo3::{
|
|
4
|
-
PyErr, PyResult,
|
|
5
|
-
exceptions::{PyRuntimeError, PyValueError},
|
|
4
|
+
Py, PyErr, PyResult, Python,
|
|
5
|
+
exceptions::{PyRuntimeError, PyUnicodeDecodeError, PyValueError},
|
|
6
6
|
pyclass, pymethods, pymodule,
|
|
7
7
|
};
|
|
8
8
|
use slumber_config::Config;
|
|
@@ -21,7 +21,6 @@ use std::{
|
|
|
21
21
|
error::Error,
|
|
22
22
|
fmt::{self, Display},
|
|
23
23
|
path::PathBuf,
|
|
24
|
-
str::Utf8Error,
|
|
25
24
|
sync::{Arc, LazyLock},
|
|
26
25
|
};
|
|
27
26
|
use tokio::{
|
|
@@ -228,8 +227,11 @@ impl Response {
|
|
|
228
227
|
|
|
229
228
|
/// Response content decoded as UTF-8
|
|
230
229
|
#[getter]
|
|
231
|
-
fn text(&self) -> Result<&str,
|
|
232
|
-
|
|
230
|
+
fn text(&self, py: Python<'_>) -> Result<&str, PyErr> {
|
|
231
|
+
let bytes = self.response.body.bytes();
|
|
232
|
+
std::str::from_utf8(bytes).map_err(|error| {
|
|
233
|
+
PyUnicodeDecodeError::new_err_from_utf8(py, bytes, error)
|
|
234
|
+
})
|
|
233
235
|
}
|
|
234
236
|
|
|
235
237
|
/// If the response status code is >= 400, raise an exception
|
|
@@ -26,7 +26,7 @@ serde = {workspace = true}
|
|
|
26
26
|
serde_yaml = {workspace = true}
|
|
27
27
|
thiserror = {workspace = true}
|
|
28
28
|
tracing = {workspace = true}
|
|
29
|
-
tracing-subscriber = {
|
|
29
|
+
tracing-subscriber = {workspace = true, features = ["ansi", "fmt", "registry"]}
|
|
30
30
|
uuid = {workspace = true, features = ["v4"]}
|
|
31
31
|
winnow = {workspace = true}
|
|
32
32
|
|
|
@@ -143,11 +143,11 @@ where
|
|
|
143
143
|
/// use slumber_util::doc_link;
|
|
144
144
|
/// assert_eq!(
|
|
145
145
|
/// doc_link("api/chain"),
|
|
146
|
-
/// "https://
|
|
146
|
+
/// "https://slmbr.dev/api/chain.html",
|
|
147
147
|
/// );
|
|
148
148
|
/// ```
|
|
149
149
|
pub fn doc_link(path: &str) -> String {
|
|
150
|
-
const ROOT: &str = "https://
|
|
150
|
+
const ROOT: &str = "https://slmbr.dev/";
|
|
151
151
|
if path.is_empty() {
|
|
152
152
|
ROOT.into()
|
|
153
153
|
} else {
|
|
@@ -350,21 +350,12 @@ pub fn initialize_tracing(level_filter: LevelFilter, has_stderr: bool) {
|
|
|
350
350
|
LevelFilter::OFF
|
|
351
351
|
});
|
|
352
352
|
|
|
353
|
+
let registry = tracing_subscriber::registry()
|
|
354
|
+
.with(file_subscriber)
|
|
355
|
+
.with(stderr_subscriber);
|
|
353
356
|
#[cfg(feature = "tokio_tracing")]
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
.with(file_subscriber)
|
|
357
|
-
.with(stderr_subscriber)
|
|
358
|
-
.with(console_subscriber::spawn())
|
|
359
|
-
.init();
|
|
360
|
-
}
|
|
361
|
-
#[cfg(not(feature = "tokio_tracing"))]
|
|
362
|
-
{
|
|
363
|
-
tracing_subscriber::registry()
|
|
364
|
-
.with(file_subscriber)
|
|
365
|
-
.with(stderr_subscriber)
|
|
366
|
-
.init();
|
|
367
|
-
}
|
|
357
|
+
let registry = registry.with(console_subscriber::spawn());
|
|
358
|
+
registry.init();
|
|
368
359
|
}
|
|
369
360
|
|
|
370
361
|
/// Serialize a list of tuples as a mapping
|
|
@@ -414,7 +405,7 @@ mod tests {
|
|
|
414
405
|
#[case::seconds_longer("100s", Duration::from_secs(100))]
|
|
415
406
|
#[case::minutes("3m", Duration::from_secs(180))]
|
|
416
407
|
#[case::hours("3h", Duration::from_secs(10_800))]
|
|
417
|
-
#[case::days("2d", Duration::
|
|
408
|
+
#[case::days("2d", Duration::from_hours(48))]
|
|
418
409
|
#[case::composite("2d3h10m17s", Duration::from_secs(
|
|
419
410
|
2 * 86400 + 3 * 3600 + 10 * 60 + 17
|
|
420
411
|
))]
|
|
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
|
{slumber_python-5.4.0 → slumber_python-5.4.4}/crates/template/proptest-regressions/parse.txt
RENAMED
|
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
|