structguru 0.2.0__tar.gz → 1.0.2__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 (104) hide show
  1. structguru-1.0.2/Cargo.lock +379 -0
  2. structguru-1.0.2/Cargo.toml +39 -0
  3. structguru-1.0.2/PKG-INFO +448 -0
  4. structguru-1.0.2/README.md +403 -0
  5. structguru-1.0.2/crates/structguru-core/Cargo.toml +21 -0
  6. structguru-1.0.2/crates/structguru-core/src/clock.rs +52 -0
  7. structguru-1.0.2/crates/structguru-core/src/filter.rs +395 -0
  8. structguru-1.0.2/crates/structguru-core/src/lib.rs +94 -0
  9. structguru-1.0.2/crates/structguru-core/src/render.rs +1006 -0
  10. structguru-1.0.2/crates/structguru-core/src/value.rs +161 -0
  11. structguru-1.0.2/crates/structguru-core/src/worker.rs +1221 -0
  12. structguru-1.0.2/crates/structguru-py/Cargo.toml +19 -0
  13. structguru-1.0.2/crates/structguru-py/src/lib.rs +769 -0
  14. {structguru-0.2.0 → structguru-1.0.2}/pyproject.toml +32 -16
  15. structguru-1.0.2/src/structguru/__init__.py +30 -0
  16. structguru-1.0.2/src/structguru/_contextvars.py +46 -0
  17. structguru-1.0.2/src/structguru/_native.py +958 -0
  18. structguru-1.0.2/src/structguru/_native_dispatch.py +255 -0
  19. structguru-1.0.2/src/structguru/_native_env.py +26 -0
  20. structguru-1.0.2/src/structguru/config.py +88 -0
  21. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/core.py +143 -40
  22. structguru-1.0.2/src/structguru/exceptions.py +122 -0
  23. structguru-1.0.2/src/structguru/integrations/_util.py +47 -0
  24. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/integrations/asgi.py +5 -6
  25. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/integrations/celery.py +3 -2
  26. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/integrations/django.py +48 -27
  27. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/integrations/flask.py +4 -5
  28. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/integrations/grpc.py +5 -6
  29. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/integrations/httpx.py +25 -6
  30. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/integrations/requests.py +9 -8
  31. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/integrations/sentry.py +14 -8
  32. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/integrations/sqlalchemy.py +3 -3
  33. structguru-1.0.2/src/structguru/redaction.py +29 -0
  34. structguru-0.2.0/.github/workflows/ci.yml +0 -31
  35. structguru-0.2.0/.gitignore +0 -53
  36. structguru-0.2.0/.jetaprog/runConfigurations.json +0 -44
  37. structguru-0.2.0/Makefile +0 -40
  38. structguru-0.2.0/PKG-INFO +0 -405
  39. structguru-0.2.0/README.md +0 -349
  40. structguru-0.2.0/docs/api/config.md +0 -3
  41. structguru-0.2.0/docs/api/core.md +0 -3
  42. structguru-0.2.0/docs/api/exceptions.md +0 -3
  43. structguru-0.2.0/docs/api/index.md +0 -12
  44. structguru-0.2.0/docs/api/integrations/asgi.md +0 -3
  45. structguru-0.2.0/docs/api/integrations/celery.md +0 -3
  46. structguru-0.2.0/docs/api/integrations/django.md +0 -3
  47. structguru-0.2.0/docs/api/integrations/flask.md +0 -3
  48. structguru-0.2.0/docs/api/integrations/grpc.md +0 -3
  49. structguru-0.2.0/docs/api/integrations/httpx.md +0 -3
  50. structguru-0.2.0/docs/api/integrations/requests.md +0 -3
  51. structguru-0.2.0/docs/api/integrations/sentry.md +0 -3
  52. structguru-0.2.0/docs/api/integrations/sqlalchemy.md +0 -3
  53. structguru-0.2.0/docs/api/integrations/stdlib.md +0 -3
  54. structguru-0.2.0/docs/api/metrics.md +0 -3
  55. structguru-0.2.0/docs/api/otel.md +0 -3
  56. structguru-0.2.0/docs/api/processors.md +0 -3
  57. structguru-0.2.0/docs/api/queued.md +0 -3
  58. structguru-0.2.0/docs/api/redaction.md +0 -3
  59. structguru-0.2.0/docs/api/routing.md +0 -3
  60. structguru-0.2.0/docs/api/sampling.md +0 -3
  61. structguru-0.2.0/docs/index.md +0 -349
  62. structguru-0.2.0/docs/integrations.md +0 -268
  63. structguru-0.2.0/examples/full_stack_fastapi/main.py +0 -78
  64. structguru-0.2.0/mkdocs.yml +0 -59
  65. structguru-0.2.0/src/structguru/__init__.py +0 -32
  66. structguru-0.2.0/src/structguru/config.py +0 -304
  67. structguru-0.2.0/src/structguru/exceptions.py +0 -134
  68. structguru-0.2.0/src/structguru/integrations/_util.py +0 -21
  69. structguru-0.2.0/src/structguru/integrations/stdlib.py +0 -87
  70. structguru-0.2.0/src/structguru/processors.py +0 -95
  71. structguru-0.2.0/src/structguru/queued.py +0 -131
  72. structguru-0.2.0/src/structguru/redaction.py +0 -116
  73. structguru-0.2.0/src/structguru/routing.py +0 -63
  74. structguru-0.2.0/src/structguru/sampling.py +0 -135
  75. structguru-0.2.0/tests/benchmarks/benchmark_queue_memory.py +0 -37
  76. structguru-0.2.0/tests/benchmarks/test_bench_core.py +0 -149
  77. structguru-0.2.0/tests/conftest.py +0 -33
  78. structguru-0.2.0/tests/test_config.py +0 -246
  79. structguru-0.2.0/tests/test_core.py +0 -394
  80. structguru-0.2.0/tests/test_exceptions.py +0 -230
  81. structguru-0.2.0/tests/test_integrations/__init__.py +0 -0
  82. structguru-0.2.0/tests/test_integrations/test_asgi.py +0 -199
  83. structguru-0.2.0/tests/test_integrations/test_celery.py +0 -131
  84. structguru-0.2.0/tests/test_integrations/test_django.py +0 -91
  85. structguru-0.2.0/tests/test_integrations/test_flask.py +0 -140
  86. structguru-0.2.0/tests/test_integrations/test_grpc.py +0 -305
  87. structguru-0.2.0/tests/test_integrations/test_httpx.py +0 -59
  88. structguru-0.2.0/tests/test_integrations/test_requests.py +0 -74
  89. structguru-0.2.0/tests/test_integrations/test_sentry.py +0 -151
  90. structguru-0.2.0/tests/test_integrations/test_sqlalchemy.py +0 -137
  91. structguru-0.2.0/tests/test_integrations/test_stdlib.py +0 -79
  92. structguru-0.2.0/tests/test_metrics.py +0 -71
  93. structguru-0.2.0/tests/test_otel.py +0 -57
  94. structguru-0.2.0/tests/test_processors.py +0 -125
  95. structguru-0.2.0/tests/test_queued.py +0 -119
  96. structguru-0.2.0/tests/test_redaction.py +0 -104
  97. structguru-0.2.0/tests/test_routing.py +0 -51
  98. structguru-0.2.0/tests/test_sampling.py +0 -121
  99. structguru-0.2.0/uv.lock +0 -1891
  100. {structguru-0.2.0 → structguru-1.0.2}/LICENSE +0 -0
  101. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/integrations/__init__.py +0 -0
  102. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/metrics.py +0 -0
  103. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/otel.py +0 -0
  104. {structguru-0.2.0 → structguru-1.0.2}/src/structguru/py.typed +0 -0
@@ -0,0 +1,379 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 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 = "bit-set"
16
+ version = "0.8.0"
17
+ source = "registry+https://github.com/rust-lang/crates.io-index"
18
+ checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
19
+ dependencies = [
20
+ "bit-vec",
21
+ ]
22
+
23
+ [[package]]
24
+ name = "bit-vec"
25
+ version = "0.8.0"
26
+ source = "registry+https://github.com/rust-lang/crates.io-index"
27
+ checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
28
+
29
+ [[package]]
30
+ name = "cfg-if"
31
+ version = "1.0.4"
32
+ source = "registry+https://github.com/rust-lang/crates.io-index"
33
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
34
+
35
+ [[package]]
36
+ name = "chacha20"
37
+ version = "0.10.1"
38
+ source = "registry+https://github.com/rust-lang/crates.io-index"
39
+ checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81"
40
+ dependencies = [
41
+ "cfg-if",
42
+ "cpufeatures",
43
+ "rand_core",
44
+ ]
45
+
46
+ [[package]]
47
+ name = "cpufeatures"
48
+ version = "0.3.0"
49
+ source = "registry+https://github.com/rust-lang/crates.io-index"
50
+ checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
51
+ dependencies = [
52
+ "libc",
53
+ ]
54
+
55
+ [[package]]
56
+ name = "deranged"
57
+ version = "0.5.8"
58
+ source = "registry+https://github.com/rust-lang/crates.io-index"
59
+ checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
60
+
61
+ [[package]]
62
+ name = "fancy-regex"
63
+ version = "0.18.0"
64
+ source = "registry+https://github.com/rust-lang/crates.io-index"
65
+ checksum = "e1e1dacd0d2082dfcf1351c4bdd566bbe89a2b263235a2b50058f1e130a47277"
66
+ dependencies = [
67
+ "bit-set",
68
+ "regex-automata",
69
+ "regex-syntax",
70
+ ]
71
+
72
+ [[package]]
73
+ name = "getrandom"
74
+ version = "0.4.3"
75
+ source = "registry+https://github.com/rust-lang/crates.io-index"
76
+ checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
77
+ dependencies = [
78
+ "cfg-if",
79
+ "libc",
80
+ "r-efi",
81
+ "rand_core",
82
+ ]
83
+
84
+ [[package]]
85
+ name = "heck"
86
+ version = "0.5.0"
87
+ source = "registry+https://github.com/rust-lang/crates.io-index"
88
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
89
+
90
+ [[package]]
91
+ name = "itoa"
92
+ version = "1.0.18"
93
+ source = "registry+https://github.com/rust-lang/crates.io-index"
94
+ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
95
+
96
+ [[package]]
97
+ name = "libc"
98
+ version = "0.2.186"
99
+ source = "registry+https://github.com/rust-lang/crates.io-index"
100
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
101
+
102
+ [[package]]
103
+ name = "memchr"
104
+ version = "2.8.3"
105
+ source = "registry+https://github.com/rust-lang/crates.io-index"
106
+ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
107
+
108
+ [[package]]
109
+ name = "num-conv"
110
+ version = "0.2.2"
111
+ source = "registry+https://github.com/rust-lang/crates.io-index"
112
+ checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
113
+
114
+ [[package]]
115
+ name = "once_cell"
116
+ version = "1.21.4"
117
+ source = "registry+https://github.com/rust-lang/crates.io-index"
118
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
119
+
120
+ [[package]]
121
+ name = "portable-atomic"
122
+ version = "1.13.1"
123
+ source = "registry+https://github.com/rust-lang/crates.io-index"
124
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
125
+
126
+ [[package]]
127
+ name = "powerfmt"
128
+ version = "0.2.0"
129
+ source = "registry+https://github.com/rust-lang/crates.io-index"
130
+ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
131
+
132
+ [[package]]
133
+ name = "proc-macro2"
134
+ version = "1.0.106"
135
+ source = "registry+https://github.com/rust-lang/crates.io-index"
136
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
137
+ dependencies = [
138
+ "unicode-ident",
139
+ ]
140
+
141
+ [[package]]
142
+ name = "pyo3"
143
+ version = "0.29.0"
144
+ source = "registry+https://github.com/rust-lang/crates.io-index"
145
+ checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
146
+ dependencies = [
147
+ "libc",
148
+ "once_cell",
149
+ "portable-atomic",
150
+ "pyo3-build-config",
151
+ "pyo3-ffi",
152
+ "pyo3-macros",
153
+ ]
154
+
155
+ [[package]]
156
+ name = "pyo3-build-config"
157
+ version = "0.29.0"
158
+ source = "registry+https://github.com/rust-lang/crates.io-index"
159
+ checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
160
+ dependencies = [
161
+ "target-lexicon",
162
+ ]
163
+
164
+ [[package]]
165
+ name = "pyo3-ffi"
166
+ version = "0.29.0"
167
+ source = "registry+https://github.com/rust-lang/crates.io-index"
168
+ checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
169
+ dependencies = [
170
+ "libc",
171
+ "pyo3-build-config",
172
+ ]
173
+
174
+ [[package]]
175
+ name = "pyo3-macros"
176
+ version = "0.29.0"
177
+ source = "registry+https://github.com/rust-lang/crates.io-index"
178
+ checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
179
+ dependencies = [
180
+ "proc-macro2",
181
+ "pyo3-macros-backend",
182
+ "quote",
183
+ "syn",
184
+ ]
185
+
186
+ [[package]]
187
+ name = "pyo3-macros-backend"
188
+ version = "0.29.0"
189
+ source = "registry+https://github.com/rust-lang/crates.io-index"
190
+ checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
191
+ dependencies = [
192
+ "heck",
193
+ "proc-macro2",
194
+ "quote",
195
+ "syn",
196
+ ]
197
+
198
+ [[package]]
199
+ name = "quote"
200
+ version = "1.0.46"
201
+ source = "registry+https://github.com/rust-lang/crates.io-index"
202
+ checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
203
+ dependencies = [
204
+ "proc-macro2",
205
+ ]
206
+
207
+ [[package]]
208
+ name = "r-efi"
209
+ version = "6.0.0"
210
+ source = "registry+https://github.com/rust-lang/crates.io-index"
211
+ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
212
+
213
+ [[package]]
214
+ name = "rand"
215
+ version = "0.10.2"
216
+ source = "registry+https://github.com/rust-lang/crates.io-index"
217
+ checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80"
218
+ dependencies = [
219
+ "chacha20",
220
+ "getrandom",
221
+ "rand_core",
222
+ ]
223
+
224
+ [[package]]
225
+ name = "rand_core"
226
+ version = "0.10.1"
227
+ source = "registry+https://github.com/rust-lang/crates.io-index"
228
+ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
229
+
230
+ [[package]]
231
+ name = "regex"
232
+ version = "1.13.0"
233
+ source = "registry+https://github.com/rust-lang/crates.io-index"
234
+ checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2"
235
+ dependencies = [
236
+ "aho-corasick",
237
+ "memchr",
238
+ "regex-automata",
239
+ "regex-syntax",
240
+ ]
241
+
242
+ [[package]]
243
+ name = "regex-automata"
244
+ version = "0.4.15"
245
+ source = "registry+https://github.com/rust-lang/crates.io-index"
246
+ checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db"
247
+ dependencies = [
248
+ "aho-corasick",
249
+ "memchr",
250
+ "regex-syntax",
251
+ ]
252
+
253
+ [[package]]
254
+ name = "regex-syntax"
255
+ version = "0.8.11"
256
+ source = "registry+https://github.com/rust-lang/crates.io-index"
257
+ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
258
+
259
+ [[package]]
260
+ name = "serde"
261
+ version = "1.0.228"
262
+ source = "registry+https://github.com/rust-lang/crates.io-index"
263
+ checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
264
+ dependencies = [
265
+ "serde_core",
266
+ ]
267
+
268
+ [[package]]
269
+ name = "serde_core"
270
+ version = "1.0.228"
271
+ source = "registry+https://github.com/rust-lang/crates.io-index"
272
+ checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
273
+ dependencies = [
274
+ "serde_derive",
275
+ ]
276
+
277
+ [[package]]
278
+ name = "serde_derive"
279
+ version = "1.0.228"
280
+ source = "registry+https://github.com/rust-lang/crates.io-index"
281
+ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
282
+ dependencies = [
283
+ "proc-macro2",
284
+ "quote",
285
+ "syn",
286
+ ]
287
+
288
+ [[package]]
289
+ name = "serde_json"
290
+ version = "1.0.150"
291
+ source = "registry+https://github.com/rust-lang/crates.io-index"
292
+ checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
293
+ dependencies = [
294
+ "itoa",
295
+ "memchr",
296
+ "serde",
297
+ "serde_core",
298
+ "zmij",
299
+ ]
300
+
301
+ [[package]]
302
+ name = "structguru-core"
303
+ version = "1.0.2"
304
+ dependencies = [
305
+ "fancy-regex",
306
+ "rand",
307
+ "regex",
308
+ "serde",
309
+ "serde_json",
310
+ "time",
311
+ ]
312
+
313
+ [[package]]
314
+ name = "structguru-py"
315
+ version = "1.0.2"
316
+ dependencies = [
317
+ "pyo3",
318
+ "regex",
319
+ "structguru-core",
320
+ ]
321
+
322
+ [[package]]
323
+ name = "syn"
324
+ version = "2.0.118"
325
+ source = "registry+https://github.com/rust-lang/crates.io-index"
326
+ checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
327
+ dependencies = [
328
+ "proc-macro2",
329
+ "quote",
330
+ "unicode-ident",
331
+ ]
332
+
333
+ [[package]]
334
+ name = "target-lexicon"
335
+ version = "0.13.5"
336
+ source = "registry+https://github.com/rust-lang/crates.io-index"
337
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
338
+
339
+ [[package]]
340
+ name = "time"
341
+ version = "0.3.53"
342
+ source = "registry+https://github.com/rust-lang/crates.io-index"
343
+ checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50"
344
+ dependencies = [
345
+ "deranged",
346
+ "num-conv",
347
+ "powerfmt",
348
+ "serde_core",
349
+ "time-core",
350
+ "time-macros",
351
+ ]
352
+
353
+ [[package]]
354
+ name = "time-core"
355
+ version = "0.1.9"
356
+ source = "registry+https://github.com/rust-lang/crates.io-index"
357
+ checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
358
+
359
+ [[package]]
360
+ name = "time-macros"
361
+ version = "0.2.31"
362
+ source = "registry+https://github.com/rust-lang/crates.io-index"
363
+ checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f"
364
+ dependencies = [
365
+ "num-conv",
366
+ "time-core",
367
+ ]
368
+
369
+ [[package]]
370
+ name = "unicode-ident"
371
+ version = "1.0.24"
372
+ source = "registry+https://github.com/rust-lang/crates.io-index"
373
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
374
+
375
+ [[package]]
376
+ name = "zmij"
377
+ version = "1.0.21"
378
+ source = "registry+https://github.com/rust-lang/crates.io-index"
379
+ checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
@@ -0,0 +1,39 @@
1
+ [workspace]
2
+ members = ["crates/structguru-core", "crates/structguru-py"]
3
+ resolver = "2"
4
+
5
+ [workspace.package]
6
+ version = "1.0.2"
7
+ edition = "2024"
8
+ rust-version = "1.89"
9
+ license = "MIT"
10
+ authors = ["Aleksandr Pavlov <ckidoz@gmail.com>"]
11
+ repository = "https://github.com/kidoz/structguru"
12
+
13
+ [profile.release]
14
+ # Optimize the shipped extension: whole-program LTO + single codegen unit for
15
+ # speed, strip symbols to shrink the wheel. Keep the default unwind panic
16
+ # strategy — PyO3's FFI trampoline relies on catch_unwind.
17
+ lto = "fat"
18
+ codegen-units = 1
19
+ strip = true
20
+
21
+ [workspace.dependencies]
22
+ pyo3 = { version = "0.29.0" }
23
+ serde = { version = "1.0" }
24
+ serde_json = { version = "1.0", features = ["raw_value"] }
25
+ time = { version = "0.3", features = ["macros", "formatting"] }
26
+ # `unicode` is on by default in the regex crate; keep it so character classes
27
+ # match Python's `re` defaults (which are Unicode-aware on `str`).
28
+ regex = { version = "1", default-features = false, features = ["std", "unicode"] }
29
+ # Backtracking engine for opt-in look-around/backreference redaction patterns
30
+ # (`allow_backtracking_patterns=True`); never used unless explicitly requested.
31
+ fancy-regex = { version = "0.18", default-features = false, features = ["std", "unicode"] }
32
+ # Only `rand::random` is used (sampling filter); `thread_rng` pulls in the
33
+ # std/sys_rng machinery it needs.
34
+ rand = { version = "0.10", default-features = false, features = [
35
+ "std",
36
+ "std_rng",
37
+ "thread_rng",
38
+ ] }
39
+ structguru-core = { path = "crates/structguru-core" }