refix-engine 0.0.1__tar.gz → 0.2.0__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 (58) hide show
  1. refix_engine-0.2.0/Cargo.lock +349 -0
  2. {refix_engine-0.0.1 → refix_engine-0.2.0}/Cargo.toml +5 -1
  3. {refix_engine-0.0.1 → refix_engine-0.2.0}/PKG-INFO +1 -1
  4. refix_engine-0.2.0/crates/refix-message/CHANGELOG.md +22 -0
  5. {refix_engine-0.0.1 → refix_engine-0.2.0}/crates/refix-message/Cargo.toml +1 -1
  6. refix_engine-0.2.0/crates/refix-message/src/group/error.rs +31 -0
  7. refix_engine-0.2.0/crates/refix-message/src/group.rs +964 -0
  8. refix_engine-0.2.0/crates/refix-message/src/length_tags.rs +25 -0
  9. refix_engine-0.2.0/crates/refix-message/src/lib.rs +21 -0
  10. refix_engine-0.2.0/crates/refix-message/src/message.rs +360 -0
  11. refix_engine-0.2.0/crates/refix-message/src/multiple_values.rs +209 -0
  12. refix_engine-0.2.0/crates/refix-message/src/stream.rs +229 -0
  13. refix_engine-0.2.0/crates/refix-message/src/tag.rs +24 -0
  14. refix_engine-0.2.0/crates/refix-message/src/tokenizer.rs +581 -0
  15. refix_engine-0.2.0/crates/refix-message/src/value.rs +15 -0
  16. {refix_engine-0.0.1 → refix_engine-0.2.0}/pyproject.toml +5 -0
  17. refix_engine-0.2.0/python/refix/__init__.py +27 -0
  18. refix_engine-0.2.0/python/refix/_core.pyi +56 -0
  19. refix_engine-0.2.0/python/refix/enums.py +20 -0
  20. {refix_engine-0.0.1 → refix_engine-0.2.0}/python/refix/errors.py +11 -0
  21. refix_engine-0.2.0/python/refix/log.py +34 -0
  22. refix_engine-0.2.0/python/refix-engine/CHANGELOG.md +23 -0
  23. {refix_engine-0.0.1 → refix_engine-0.2.0}/python/refix-engine/Cargo.toml +1 -1
  24. refix_engine-0.2.0/python/refix-engine/src/group.rs +52 -0
  25. {refix_engine-0.0.1 → refix_engine-0.2.0}/python/refix-engine/src/lib.rs +8 -1
  26. refix_engine-0.2.0/python/refix-engine/src/message.rs +181 -0
  27. refix_engine-0.2.0/python/refix-engine/src/stream.rs +59 -0
  28. {refix_engine-0.0.1 → refix_engine-0.2.0}/python/refix-engine/src/tokenizer.rs +7 -4
  29. refix_engine-0.2.0/python/refix-engine/tests/test_benchmarks.py +58 -0
  30. refix_engine-0.2.0/python/refix-engine/tests/test_enums.py +46 -0
  31. refix_engine-0.2.0/python/refix-engine/tests/test_groups.py +95 -0
  32. refix_engine-0.2.0/python/refix-engine/tests/test_log.py +74 -0
  33. refix_engine-0.2.0/python/refix-engine/tests/test_raw_message.py +86 -0
  34. refix_engine-0.2.0/python/refix-engine/tests/test_stream.py +129 -0
  35. {refix_engine-0.0.1 → refix_engine-0.2.0}/python/refix-engine/tests/test_tokenizer.py +39 -2
  36. refix_engine-0.2.0/python/refix-engine/tests/test_toy_generated.py +161 -0
  37. refix_engine-0.2.0/python/refix-engine/tests/toy_generated.py +251 -0
  38. {refix_engine-0.0.1 → refix_engine-0.2.0}/python/refix-engine/uv.lock +51 -0
  39. refix_engine-0.0.1/Cargo.lock +0 -154
  40. refix_engine-0.0.1/crates/refix-message/src/lib.rs +0 -8
  41. refix_engine-0.0.1/crates/refix-message/src/message.rs +0 -118
  42. refix_engine-0.0.1/crates/refix-message/src/tokenizer.rs +0 -350
  43. refix_engine-0.0.1/python/refix/__init__.py +0 -5
  44. refix_engine-0.0.1/python/refix/_core.pyi +0 -20
  45. refix_engine-0.0.1/python/refix-engine/src/message.rs +0 -31
  46. {refix_engine-0.0.1 → refix_engine-0.2.0}/LICENSE-APACHE +0 -0
  47. {refix_engine-0.0.1 → refix_engine-0.2.0}/LICENSE-MIT +0 -0
  48. {refix_engine-0.0.1 → refix_engine-0.2.0}/README.md +0 -0
  49. {refix_engine-0.0.1 → refix_engine-0.2.0}/crates/refix-message/LICENSE-APACHE +0 -0
  50. {refix_engine-0.0.1 → refix_engine-0.2.0}/crates/refix-message/LICENSE-MIT +0 -0
  51. {refix_engine-0.0.1 → refix_engine-0.2.0}/crates/refix-message/README.md +0 -0
  52. {refix_engine-0.0.1 → refix_engine-0.2.0}/crates/refix-message/src/framing.rs +0 -0
  53. {refix_engine-0.0.1 → refix_engine-0.2.0}/crates/refix-message/src/test_utils.rs +0 -0
  54. {refix_engine-0.0.1 → refix_engine-0.2.0}/python/refix/py.typed +0 -0
  55. {refix_engine-0.0.1 → refix_engine-0.2.0}/python/refix-engine/.python-version +0 -0
  56. {refix_engine-0.0.1 → refix_engine-0.2.0}/python/refix-engine/LICENSE-APACHE +0 -0
  57. {refix_engine-0.0.1 → refix_engine-0.2.0}/python/refix-engine/LICENSE-MIT +0 -0
  58. {refix_engine-0.0.1 → refix_engine-0.2.0}/python/refix-engine/README.md +0 -0
@@ -0,0 +1,349 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "anstream"
7
+ version = "1.0.0"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
10
+ dependencies = [
11
+ "anstyle",
12
+ "anstyle-parse",
13
+ "anstyle-query",
14
+ "anstyle-wincon",
15
+ "colorchoice",
16
+ "is_terminal_polyfill",
17
+ "utf8parse",
18
+ ]
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
+
26
+ [[package]]
27
+ name = "anstyle-parse"
28
+ version = "1.0.0"
29
+ source = "registry+https://github.com/rust-lang/crates.io-index"
30
+ checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
31
+ dependencies = [
32
+ "utf8parse",
33
+ ]
34
+
35
+ [[package]]
36
+ name = "anstyle-query"
37
+ version = "1.1.5"
38
+ source = "registry+https://github.com/rust-lang/crates.io-index"
39
+ checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
40
+ dependencies = [
41
+ "windows-sys",
42
+ ]
43
+
44
+ [[package]]
45
+ name = "anstyle-wincon"
46
+ version = "3.0.11"
47
+ source = "registry+https://github.com/rust-lang/crates.io-index"
48
+ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
49
+ dependencies = [
50
+ "anstyle",
51
+ "once_cell_polyfill",
52
+ "windows-sys",
53
+ ]
54
+
55
+ [[package]]
56
+ name = "bytes"
57
+ version = "1.12.1"
58
+ source = "registry+https://github.com/rust-lang/crates.io-index"
59
+ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
60
+
61
+ [[package]]
62
+ name = "clap"
63
+ version = "4.6.5"
64
+ source = "registry+https://github.com/rust-lang/crates.io-index"
65
+ checksum = "301b56658598e48f3648647ac6fc887be7e7108eddfa4e9b63fcf3ec58c0cadf"
66
+ dependencies = [
67
+ "clap_builder",
68
+ "clap_derive",
69
+ ]
70
+
71
+ [[package]]
72
+ name = "clap_builder"
73
+ version = "4.6.5"
74
+ source = "registry+https://github.com/rust-lang/crates.io-index"
75
+ checksum = "94a65403d1a1bd28f7dc68eb8506e8874808ee5eecb59298de588e2e1407a078"
76
+ dependencies = [
77
+ "anstream",
78
+ "anstyle",
79
+ "clap_lex",
80
+ "strsim",
81
+ ]
82
+
83
+ [[package]]
84
+ name = "clap_derive"
85
+ version = "4.6.4"
86
+ source = "registry+https://github.com/rust-lang/crates.io-index"
87
+ checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061"
88
+ dependencies = [
89
+ "heck",
90
+ "proc-macro2",
91
+ "quote",
92
+ "syn 3.0.3",
93
+ ]
94
+
95
+ [[package]]
96
+ name = "clap_lex"
97
+ version = "1.1.0"
98
+ source = "registry+https://github.com/rust-lang/crates.io-index"
99
+ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
100
+
101
+ [[package]]
102
+ name = "colorchoice"
103
+ version = "1.0.5"
104
+ source = "registry+https://github.com/rust-lang/crates.io-index"
105
+ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
106
+
107
+ [[package]]
108
+ name = "heck"
109
+ version = "0.5.0"
110
+ source = "registry+https://github.com/rust-lang/crates.io-index"
111
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
112
+
113
+ [[package]]
114
+ name = "is_terminal_polyfill"
115
+ version = "1.70.2"
116
+ source = "registry+https://github.com/rust-lang/crates.io-index"
117
+ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
118
+
119
+ [[package]]
120
+ name = "libc"
121
+ version = "0.2.189"
122
+ source = "registry+https://github.com/rust-lang/crates.io-index"
123
+ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
124
+
125
+ [[package]]
126
+ name = "memchr"
127
+ version = "2.8.3"
128
+ source = "registry+https://github.com/rust-lang/crates.io-index"
129
+ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
130
+
131
+ [[package]]
132
+ name = "once_cell"
133
+ version = "1.21.4"
134
+ source = "registry+https://github.com/rust-lang/crates.io-index"
135
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
136
+
137
+ [[package]]
138
+ name = "once_cell_polyfill"
139
+ version = "1.70.2"
140
+ source = "registry+https://github.com/rust-lang/crates.io-index"
141
+ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
142
+
143
+ [[package]]
144
+ name = "portable-atomic"
145
+ version = "1.14.0"
146
+ source = "registry+https://github.com/rust-lang/crates.io-index"
147
+ checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3"
148
+
149
+ [[package]]
150
+ name = "proc-macro2"
151
+ version = "1.0.107"
152
+ source = "registry+https://github.com/rust-lang/crates.io-index"
153
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
154
+ dependencies = [
155
+ "unicode-ident",
156
+ ]
157
+
158
+ [[package]]
159
+ name = "pyo3"
160
+ version = "0.29.0"
161
+ source = "registry+https://github.com/rust-lang/crates.io-index"
162
+ checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
163
+ dependencies = [
164
+ "libc",
165
+ "once_cell",
166
+ "portable-atomic",
167
+ "pyo3-build-config",
168
+ "pyo3-ffi",
169
+ "pyo3-macros",
170
+ ]
171
+
172
+ [[package]]
173
+ name = "pyo3-build-config"
174
+ version = "0.29.0"
175
+ source = "registry+https://github.com/rust-lang/crates.io-index"
176
+ checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
177
+ dependencies = [
178
+ "target-lexicon",
179
+ ]
180
+
181
+ [[package]]
182
+ name = "pyo3-ffi"
183
+ version = "0.29.0"
184
+ source = "registry+https://github.com/rust-lang/crates.io-index"
185
+ checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
186
+ dependencies = [
187
+ "libc",
188
+ "pyo3-build-config",
189
+ ]
190
+
191
+ [[package]]
192
+ name = "pyo3-macros"
193
+ version = "0.29.0"
194
+ source = "registry+https://github.com/rust-lang/crates.io-index"
195
+ checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
196
+ dependencies = [
197
+ "proc-macro2",
198
+ "pyo3-macros-backend",
199
+ "quote",
200
+ "syn 2.0.119",
201
+ ]
202
+
203
+ [[package]]
204
+ name = "pyo3-macros-backend"
205
+ version = "0.29.0"
206
+ source = "registry+https://github.com/rust-lang/crates.io-index"
207
+ checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
208
+ dependencies = [
209
+ "heck",
210
+ "proc-macro2",
211
+ "quote",
212
+ "syn 2.0.119",
213
+ ]
214
+
215
+ [[package]]
216
+ name = "quote"
217
+ version = "1.0.47"
218
+ source = "registry+https://github.com/rust-lang/crates.io-index"
219
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
220
+ dependencies = [
221
+ "proc-macro2",
222
+ ]
223
+
224
+ [[package]]
225
+ name = "refix"
226
+ version = "0.1.1"
227
+ dependencies = [
228
+ "refix-message",
229
+ ]
230
+
231
+ [[package]]
232
+ name = "refix-cli"
233
+ version = "0.1.0"
234
+ dependencies = [
235
+ "clap",
236
+ "refix-codegen",
237
+ "refix-dictionary",
238
+ ]
239
+
240
+ [[package]]
241
+ name = "refix-codegen"
242
+ version = "0.1.0"
243
+ dependencies = [
244
+ "bytes",
245
+ "refix-dictionary",
246
+ "refix-message",
247
+ ]
248
+
249
+ [[package]]
250
+ name = "refix-dictionary"
251
+ version = "0.1.0"
252
+ dependencies = [
253
+ "refix-message",
254
+ "roxmltree",
255
+ ]
256
+
257
+ [[package]]
258
+ name = "refix-engine"
259
+ version = "0.2.0"
260
+ dependencies = [
261
+ "bytes",
262
+ "pyo3",
263
+ "refix-message",
264
+ ]
265
+
266
+ [[package]]
267
+ name = "refix-fix44"
268
+ version = "0.1.0"
269
+ dependencies = [
270
+ "bytes",
271
+ "refix-message",
272
+ ]
273
+
274
+ [[package]]
275
+ name = "refix-message"
276
+ version = "0.3.0"
277
+ dependencies = [
278
+ "bytes",
279
+ ]
280
+
281
+ [[package]]
282
+ name = "roxmltree"
283
+ version = "0.21.1"
284
+ source = "registry+https://github.com/rust-lang/crates.io-index"
285
+ checksum = "f1964b10c76125c36f8afe190065a4bf9a87bf324842c05701330bba9f1cacbb"
286
+ dependencies = [
287
+ "memchr",
288
+ ]
289
+
290
+ [[package]]
291
+ name = "strsim"
292
+ version = "0.11.1"
293
+ source = "registry+https://github.com/rust-lang/crates.io-index"
294
+ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
295
+
296
+ [[package]]
297
+ name = "syn"
298
+ version = "2.0.119"
299
+ source = "registry+https://github.com/rust-lang/crates.io-index"
300
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
301
+ dependencies = [
302
+ "proc-macro2",
303
+ "quote",
304
+ "unicode-ident",
305
+ ]
306
+
307
+ [[package]]
308
+ name = "syn"
309
+ version = "3.0.3"
310
+ source = "registry+https://github.com/rust-lang/crates.io-index"
311
+ checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3"
312
+ dependencies = [
313
+ "proc-macro2",
314
+ "quote",
315
+ "unicode-ident",
316
+ ]
317
+
318
+ [[package]]
319
+ name = "target-lexicon"
320
+ version = "0.13.5"
321
+ source = "registry+https://github.com/rust-lang/crates.io-index"
322
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
323
+
324
+ [[package]]
325
+ name = "unicode-ident"
326
+ version = "1.0.24"
327
+ source = "registry+https://github.com/rust-lang/crates.io-index"
328
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
329
+
330
+ [[package]]
331
+ name = "utf8parse"
332
+ version = "0.2.2"
333
+ source = "registry+https://github.com/rust-lang/crates.io-index"
334
+ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
335
+
336
+ [[package]]
337
+ name = "windows-link"
338
+ version = "0.2.1"
339
+ source = "registry+https://github.com/rust-lang/crates.io-index"
340
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
341
+
342
+ [[package]]
343
+ name = "windows-sys"
344
+ version = "0.61.2"
345
+ source = "registry+https://github.com/rust-lang/crates.io-index"
346
+ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
347
+ dependencies = [
348
+ "windows-link",
349
+ ]
@@ -14,6 +14,10 @@ categories = ["encoding", "parsing", "finance"]
14
14
 
15
15
  [workspace.dependencies]
16
16
  bytes = "1.12.1"
17
+ clap = { version = "4.6.5", features = ["derive"] }
17
18
  pyo3 = "0.29.0"
18
- refix-message = { version = "0.1.0", path = "crates/refix-message" }
19
+ refix-codegen = { version = "0.1.0", path = "crates/refix-codegen" }
20
+ refix-dictionary = { version = "0.1.0", path = "crates/refix-dictionary" }
21
+ refix-message = { version = "0.3.0", path = "crates/refix-message" }
22
+ roxmltree = "0.21.0"
19
23
  serde = "1.0.229"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: refix-engine
3
- Version: 0.0.1
3
+ Version: 0.2.0
4
4
  Classifier: Development Status :: 2 - Pre-Alpha
5
5
  Classifier: Intended Audience :: Financial and Insurance Industry
6
6
  Classifier: Programming Language :: Python :: 3
@@ -0,0 +1,22 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.3.0](https://github.com/refixhq/refix/compare/refix-message-v0.2.0...refix-message-v0.3.0) - 2026-10-08
11
+
12
+ ### Added
13
+
14
+ - walk groups with tables built at runtime ([#66](https://github.com/refixhq/refix/pull/66))
15
+ - type generated enums by their field's FIX type ([#62](https://github.com/refixhq/refix/pull/62))
16
+ - read typed group instances ([#59](https://github.com/refixhq/refix/pull/59))
17
+ - walk repeating groups over raw messages ([#57](https://github.com/refixhq/refix/pull/57))
18
+ - first cut of code emitter ([#43](https://github.com/refixhq/refix/pull/43))
19
+
20
+ ### Other
21
+
22
+ - introduce a Tag newtype for FIX tag numbers ([#52](https://github.com/refixhq/refix/pull/52))
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "refix-message"
3
3
  description = "Framing, tokenisation and raw message representation for the ReFIX engine"
4
- version = "0.1.0"
4
+ version = "0.3.0"
5
5
  authors.workspace = true
6
6
  edition.workspace = true
7
7
  license.workspace = true
@@ -0,0 +1,31 @@
1
+ use crate::Tag;
2
+ use std::fmt;
3
+
4
+ /// A group table built at runtime that breaks one of the table rules.
5
+ #[derive(Clone, Copy, Debug, Eq, PartialEq)]
6
+ pub enum GroupTableError {
7
+ UnsortedMembers,
8
+ DelimiterNotMember { delimiter: Tag },
9
+ NestedCountNotMember { count_tag: Tag },
10
+ }
11
+
12
+ impl fmt::Display for GroupTableError {
13
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14
+ match self {
15
+ GroupTableError::UnsortedMembers => {
16
+ write!(f, "group members must be sorted and unique")
17
+ }
18
+ GroupTableError::DelimiterNotMember { delimiter } => {
19
+ write!(f, "group members must include the delimiter {delimiter}")
20
+ }
21
+ GroupTableError::NestedCountNotMember { count_tag } => {
22
+ write!(
23
+ f,
24
+ "group members must include the nested count tag {count_tag}"
25
+ )
26
+ }
27
+ }
28
+ }
29
+ }
30
+
31
+ impl std::error::Error for GroupTableError {}