refix-engine 0.2.0__tar.gz → 0.2.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.
- {refix_engine-0.2.0 → refix_engine-0.2.2}/Cargo.lock +7 -7
- {refix_engine-0.2.0 → refix_engine-0.2.2}/Cargo.toml +4 -3
- refix_engine-0.2.2/PKG-INFO +45 -0
- refix_engine-0.2.2/README.md +26 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/CHANGELOG.md +16 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/Cargo.toml +1 -1
- refix_engine-0.2.2/crates/refix-message/README.md +31 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/lib.rs +2 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/CHANGELOG.md +12 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/Cargo.toml +3 -2
- refix_engine-0.2.2/python/refix-engine/README.md +26 -0
- refix_engine-0.2.0/PKG-INFO +0 -39
- refix_engine-0.2.0/README.md +0 -20
- refix_engine-0.2.0/crates/refix-message/README.md +0 -58
- refix_engine-0.2.0/python/refix-engine/README.md +0 -20
- {refix_engine-0.2.0 → refix_engine-0.2.2}/LICENSE-APACHE +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/LICENSE-MIT +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/LICENSE-APACHE +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/LICENSE-MIT +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/framing.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/group/error.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/group.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/length_tags.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/message.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/multiple_values.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/stream.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/tag.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/test_utils.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/tokenizer.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/crates/refix-message/src/value.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/pyproject.toml +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix/__init__.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix/_core.pyi +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix/enums.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix/errors.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix/log.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix/py.typed +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/.python-version +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/LICENSE-APACHE +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/LICENSE-MIT +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/src/group.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/src/lib.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/src/message.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/src/stream.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/src/tokenizer.rs +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/tests/test_benchmarks.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/tests/test_enums.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/tests/test_groups.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/tests/test_log.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/tests/test_raw_message.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/tests/test_stream.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/tests/test_tokenizer.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/tests/test_toy_generated.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/tests/toy_generated.py +0 -0
- {refix_engine-0.2.0 → refix_engine-0.2.2}/python/refix-engine/uv.lock +0 -0
|
@@ -223,14 +223,14 @@ dependencies = [
|
|
|
223
223
|
|
|
224
224
|
[[package]]
|
|
225
225
|
name = "refix"
|
|
226
|
-
version = "0.1.
|
|
226
|
+
version = "0.1.2"
|
|
227
227
|
dependencies = [
|
|
228
228
|
"refix-message",
|
|
229
229
|
]
|
|
230
230
|
|
|
231
231
|
[[package]]
|
|
232
232
|
name = "refix-cli"
|
|
233
|
-
version = "0.1.
|
|
233
|
+
version = "0.1.1"
|
|
234
234
|
dependencies = [
|
|
235
235
|
"clap",
|
|
236
236
|
"refix-codegen",
|
|
@@ -239,7 +239,7 @@ dependencies = [
|
|
|
239
239
|
|
|
240
240
|
[[package]]
|
|
241
241
|
name = "refix-codegen"
|
|
242
|
-
version = "0.1.
|
|
242
|
+
version = "0.1.1"
|
|
243
243
|
dependencies = [
|
|
244
244
|
"bytes",
|
|
245
245
|
"refix-dictionary",
|
|
@@ -248,7 +248,7 @@ dependencies = [
|
|
|
248
248
|
|
|
249
249
|
[[package]]
|
|
250
250
|
name = "refix-dictionary"
|
|
251
|
-
version = "0.1.
|
|
251
|
+
version = "0.1.1"
|
|
252
252
|
dependencies = [
|
|
253
253
|
"refix-message",
|
|
254
254
|
"roxmltree",
|
|
@@ -256,7 +256,7 @@ dependencies = [
|
|
|
256
256
|
|
|
257
257
|
[[package]]
|
|
258
258
|
name = "refix-engine"
|
|
259
|
-
version = "0.2.
|
|
259
|
+
version = "0.2.2"
|
|
260
260
|
dependencies = [
|
|
261
261
|
"bytes",
|
|
262
262
|
"pyo3",
|
|
@@ -265,7 +265,7 @@ dependencies = [
|
|
|
265
265
|
|
|
266
266
|
[[package]]
|
|
267
267
|
name = "refix-fix44"
|
|
268
|
-
version = "0.
|
|
268
|
+
version = "0.2.0"
|
|
269
269
|
dependencies = [
|
|
270
270
|
"bytes",
|
|
271
271
|
"refix-message",
|
|
@@ -273,7 +273,7 @@ dependencies = [
|
|
|
273
273
|
|
|
274
274
|
[[package]]
|
|
275
275
|
name = "refix-message"
|
|
276
|
-
version = "0.3.
|
|
276
|
+
version = "0.3.2"
|
|
277
277
|
dependencies = [
|
|
278
278
|
"bytes",
|
|
279
279
|
]
|
|
@@ -16,8 +16,9 @@ categories = ["encoding", "parsing", "finance"]
|
|
|
16
16
|
bytes = "1.12.1"
|
|
17
17
|
clap = { version = "4.6.5", features = ["derive"] }
|
|
18
18
|
pyo3 = "0.29.0"
|
|
19
|
-
|
|
20
|
-
refix-
|
|
21
|
-
refix-
|
|
19
|
+
# Major and minor only, so a patch release doesn't re-release dependents.
|
|
20
|
+
refix-codegen = { version = "0.1", path = "crates/refix-codegen" }
|
|
21
|
+
refix-dictionary = { version = "0.1", path = "crates/refix-dictionary" }
|
|
22
|
+
refix-message = { version = "0.3", path = "crates/refix-message" }
|
|
22
23
|
roxmltree = "0.21.0"
|
|
23
24
|
serde = "1.0.229"
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: refix-engine
|
|
3
|
+
Version: 0.2.2
|
|
4
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
5
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
6
|
+
Classifier: Programming Language :: Python :: 3
|
|
7
|
+
Classifier: Programming Language :: Rust
|
|
8
|
+
Classifier: Topic :: Office/Business :: Financial
|
|
9
|
+
Classifier: Typing :: Typed
|
|
10
|
+
License-File: LICENSE-MIT
|
|
11
|
+
License-File: LICENSE-APACHE
|
|
12
|
+
Summary: FIX message processing for Python, powered by Rust
|
|
13
|
+
Author-email: David Steiner <david@davidsteiner.dev>
|
|
14
|
+
License-Expression: MIT OR Apache-2.0
|
|
15
|
+
Requires-Python: >=3.12
|
|
16
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
17
|
+
Project-URL: Repository, https://github.com/refixhq/refix
|
|
18
|
+
|
|
19
|
+
# refix-engine
|
|
20
|
+
|
|
21
|
+
FIX message processing for Python, powered by Rust. These are the Python bindings
|
|
22
|
+
of [ReFIX](https://github.com/refixhq/refix). The import name is `refix`. Requires Python 3.12 or later.
|
|
23
|
+
|
|
24
|
+
> ReFIX is in early development. It reads FIX messages and types them through
|
|
25
|
+
> generated code. Building messages and the session layer are not implemented
|
|
26
|
+
> yet, and APIs change between 0.x releases.
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
import refix
|
|
30
|
+
|
|
31
|
+
for message in refix.read_log("fix.log"):
|
|
32
|
+
if isinstance(message, refix.RawMessage):
|
|
33
|
+
print(message.get(35), message.get(49))
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Anything between frames that isn't FIX comes back as `refix.Garble`.
|
|
37
|
+
`refix.Tokenizer` reads a single frame, and `refix.MessageStream` reads frames as bytes arrive.
|
|
38
|
+
|
|
39
|
+
Typed messages come from generated code: `refix-fix44` for FIX 4.4, or
|
|
40
|
+
`refix-cli` for your own dictionary.
|
|
41
|
+
|
|
42
|
+
## License
|
|
43
|
+
|
|
44
|
+
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
|
|
45
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# refix-engine
|
|
2
|
+
|
|
3
|
+
FIX message processing for Python, powered by Rust. These are the Python bindings
|
|
4
|
+
of [ReFIX](https://github.com/refixhq/refix). The import name is `refix`. Requires Python 3.12 or later.
|
|
5
|
+
|
|
6
|
+
> ReFIX is in early development. It reads FIX messages and types them through
|
|
7
|
+
> generated code. Building messages and the session layer are not implemented
|
|
8
|
+
> yet, and APIs change between 0.x releases.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
import refix
|
|
12
|
+
|
|
13
|
+
for message in refix.read_log("fix.log"):
|
|
14
|
+
if isinstance(message, refix.RawMessage):
|
|
15
|
+
print(message.get(35), message.get(49))
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Anything between frames that isn't FIX comes back as `refix.Garble`.
|
|
19
|
+
`refix.Tokenizer` reads a single frame, and `refix.MessageStream` reads frames as bytes arrive.
|
|
20
|
+
|
|
21
|
+
Typed messages come from generated code: `refix-fix44` for FIX 4.4, or
|
|
22
|
+
`refix-cli` for your own dictionary.
|
|
23
|
+
|
|
24
|
+
## License
|
|
25
|
+
|
|
26
|
+
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
|
|
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.3.2](https://github.com/refixhq/refix/compare/refix-message-v0.3.1...refix-message-v0.3.2) - 2026-10-10
|
|
11
|
+
|
|
12
|
+
### Other
|
|
13
|
+
|
|
14
|
+
- give each package its own README ([#87](https://github.com/refixhq/refix/pull/87))
|
|
15
|
+
|
|
16
|
+
## [0.3.1](https://github.com/refixhq/refix/compare/refix-message-v0.3.0...refix-message-v0.3.1) - 2026-10-10
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- allow publishing the generated stock crate ([#79](https://github.com/refixhq/refix/pull/79))
|
|
21
|
+
|
|
22
|
+
### Other
|
|
23
|
+
|
|
24
|
+
- move the fuzz crate to the repo root ([#82](https://github.com/refixhq/refix/pull/82))
|
|
25
|
+
|
|
10
26
|
## [0.3.0](https://github.com/refixhq/refix/compare/refix-message-v0.2.0...refix-message-v0.3.0) - 2026-10-08
|
|
11
27
|
|
|
12
28
|
### Added
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# refix-message
|
|
2
|
+
|
|
3
|
+
Framing, tokenising and raw FIX messages for [ReFIX](https://github.com/refixhq/refix). A `RawMessage` indexes a frame's
|
|
4
|
+
fields and reads them on demand, without copying.
|
|
5
|
+
|
|
6
|
+
> ReFIX is in early development, and APIs change between 0.x releases.
|
|
7
|
+
|
|
8
|
+
```rust
|
|
9
|
+
use refix_message::stream::Outcome;
|
|
10
|
+
use refix_message::{MessageStream, Tag, Tokenizer};
|
|
11
|
+
|
|
12
|
+
fn main() {
|
|
13
|
+
let log = b"2026-10-10 09:30:00 IN 8=FIX.4.4\x019=5\x0135=0\x0110=163\x01\n";
|
|
14
|
+
let mut stream = MessageStream::new(Tokenizer::default());
|
|
15
|
+
stream.feed(log);
|
|
16
|
+
loop {
|
|
17
|
+
match stream.next_message() {
|
|
18
|
+
Outcome::Message(message) => println!("{:?}", message.get_str(Tag(35))),
|
|
19
|
+
Outcome::Garbled { bytes, .. } => println!("skipped {} bytes", bytes.len()),
|
|
20
|
+
Outcome::Incomplete => break,
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`Tokenizer::tokenize` reads a single frame. Typed messages are generated on top of it: `refix-fix44` for FIX 4.4, or
|
|
27
|
+
`refix-cli` for your own dictionary.
|
|
28
|
+
|
|
29
|
+
## License
|
|
30
|
+
|
|
31
|
+
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
|
|
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.2](https://github.com/refixhq/refix/compare/python-v0.2.1...python-v0.2.2) - 2026-10-10
|
|
11
|
+
|
|
12
|
+
### Other
|
|
13
|
+
|
|
14
|
+
- give each package its own README ([#87](https://github.com/refixhq/refix/pull/87))
|
|
15
|
+
|
|
16
|
+
## [0.2.1](https://github.com/refixhq/refix/compare/python-v0.2.0...python-v0.2.1) - 2026-10-10
|
|
17
|
+
|
|
18
|
+
### Other
|
|
19
|
+
|
|
20
|
+
- re-release dependents only on breaking runtime releases ([#83](https://github.com/refixhq/refix/pull/83))
|
|
21
|
+
|
|
10
22
|
## [0.2.0](https://github.com/refixhq/refix/compare/python-v0.1.0...python-v0.2.0) - 2026-10-08
|
|
11
23
|
|
|
12
24
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "refix-engine"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.2"
|
|
4
4
|
publish = false
|
|
5
5
|
authors.workspace = true
|
|
6
6
|
edition.workspace = true
|
|
@@ -15,4 +15,5 @@ crate-type = ["cdylib"]
|
|
|
15
15
|
[dependencies]
|
|
16
16
|
bytes = { workspace = true }
|
|
17
17
|
pyo3 = { workspace = true, features = ["abi3-py312"] }
|
|
18
|
-
refix-message
|
|
18
|
+
# No version, so every refix-message release ships a new wheel.
|
|
19
|
+
refix-message = { path = "../../crates/refix-message" }
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# refix-engine
|
|
2
|
+
|
|
3
|
+
FIX message processing for Python, powered by Rust. These are the Python bindings
|
|
4
|
+
of [ReFIX](https://github.com/refixhq/refix). The import name is `refix`. Requires Python 3.12 or later.
|
|
5
|
+
|
|
6
|
+
> ReFIX is in early development. It reads FIX messages and types them through
|
|
7
|
+
> generated code. Building messages and the session layer are not implemented
|
|
8
|
+
> yet, and APIs change between 0.x releases.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
import refix
|
|
12
|
+
|
|
13
|
+
for message in refix.read_log("fix.log"):
|
|
14
|
+
if isinstance(message, refix.RawMessage):
|
|
15
|
+
print(message.get(35), message.get(49))
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Anything between frames that isn't FIX comes back as `refix.Garble`.
|
|
19
|
+
`refix.Tokenizer` reads a single frame, and `refix.MessageStream` reads frames as bytes arrive.
|
|
20
|
+
|
|
21
|
+
Typed messages come from generated code: `refix-fix44` for FIX 4.4, or
|
|
22
|
+
`refix-cli` for your own dictionary.
|
|
23
|
+
|
|
24
|
+
## License
|
|
25
|
+
|
|
26
|
+
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
|
refix_engine-0.2.0/PKG-INFO
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: refix-engine
|
|
3
|
-
Version: 0.2.0
|
|
4
|
-
Classifier: Development Status :: 2 - Pre-Alpha
|
|
5
|
-
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
6
|
-
Classifier: Programming Language :: Python :: 3
|
|
7
|
-
Classifier: Programming Language :: Rust
|
|
8
|
-
Classifier: Topic :: Office/Business :: Financial
|
|
9
|
-
Classifier: Typing :: Typed
|
|
10
|
-
License-File: LICENSE-MIT
|
|
11
|
-
License-File: LICENSE-APACHE
|
|
12
|
-
Summary: FIX message processing for Python, powered by Rust
|
|
13
|
-
Author-email: David Steiner <david@davidsteiner.dev>
|
|
14
|
-
License-Expression: MIT OR Apache-2.0
|
|
15
|
-
Requires-Python: >=3.12
|
|
16
|
-
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
17
|
-
Project-URL: Repository, https://github.com/refixhq/refix
|
|
18
|
-
|
|
19
|
-
# refix-engine
|
|
20
|
-
|
|
21
|
-
FIX message processing for Python, powered by Rust.
|
|
22
|
-
|
|
23
|
-
This package provides the Python bindings for
|
|
24
|
-
[ReFIX](https://github.com/refixhq/refix), a FIX engine written in pure Rust
|
|
25
|
-
with first-party Python support. The import name is `refix`:
|
|
26
|
-
|
|
27
|
-
```python
|
|
28
|
-
import refix
|
|
29
|
-
|
|
30
|
-
message = refix.Tokenizer().tokenize(frame)
|
|
31
|
-
print(message.get(35))
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
> Development on ReFIX has just started. In its current state, the project
|
|
35
|
-
> isn't useful, but make sure to check back later to monitor progress.
|
|
36
|
-
|
|
37
|
-
See the [project repository](https://github.com/refixhq/refix) for
|
|
38
|
-
documentation, roadmap and licensing (MIT OR Apache-2.0).
|
|
39
|
-
|
refix_engine-0.2.0/README.md
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# refix-engine
|
|
2
|
-
|
|
3
|
-
FIX message processing for Python, powered by Rust.
|
|
4
|
-
|
|
5
|
-
This package provides the Python bindings for
|
|
6
|
-
[ReFIX](https://github.com/refixhq/refix), a FIX engine written in pure Rust
|
|
7
|
-
with first-party Python support. The import name is `refix`:
|
|
8
|
-
|
|
9
|
-
```python
|
|
10
|
-
import refix
|
|
11
|
-
|
|
12
|
-
message = refix.Tokenizer().tokenize(frame)
|
|
13
|
-
print(message.get(35))
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
> Development on ReFIX has just started. In its current state, the project
|
|
17
|
-
> isn't useful, but make sure to check back later to monitor progress.
|
|
18
|
-
|
|
19
|
-
See the [project repository](https://github.com/refixhq/refix) for
|
|
20
|
-
documentation, roadmap and licensing (MIT OR Apache-2.0).
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
# ReFIX
|
|
4
|
-
|
|
5
|
-
[![crates-badge]](https://crates.io/crates/refix)
|
|
6
|
-
[![docs-badge]](https://docs.rs/refix)
|
|
7
|
-
[](https://codecov.io/gh/refixhq/refix)
|
|
8
|
-
[](https://github.com/refixhq/refix/actions/workflows/ci.yml)
|
|
9
|
-
[](LICENSE-MIT)
|
|
10
|
-
[](LICENSE-APACHE)
|
|
11
|
-
|
|
12
|
-
**ReFIX is a FIX engine written in pure Rust with first-party bindings for Python.**
|
|
13
|
-
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
> [!WARNING]
|
|
17
|
-
> Development on ReFIX has just started. In its current state, the project
|
|
18
|
-
> isn't useful, but make sure to check back later to monitor progress.
|
|
19
|
-
|
|
20
|
-
## Why ReFIX?
|
|
21
|
-
|
|
22
|
-
I previously built [HotFIX](https://github.com/Validus-Risk-Management/hotfix)
|
|
23
|
-
(also in pure Rust) with a very specific objective:
|
|
24
|
-
a robust FIX engine for buy-side use cases supporting FIX 4.4. HotFIX is feature complete, and if you need an engine
|
|
25
|
-
now, I recommend you check it out to see if it fits your use case.
|
|
26
|
-
|
|
27
|
-
ReFIX has different goals - to build high-quality building blocks with first-class support for both Python and Rust. The
|
|
28
|
-
aim is still a functional engine working end-to-end, but the design philosophy is different.
|
|
29
|
-
|
|
30
|
-
I've written a
|
|
31
|
-
[longer blog post](https://davidsteiner.dev/writing/refix-a-new-fix-engine)
|
|
32
|
-
on my motivations for ReFIX.
|
|
33
|
-
|
|
34
|
-
## Near-term goals
|
|
35
|
-
|
|
36
|
-
The first milestone is a message layer which natively supports Python, with fully typed messages and minimal compromises
|
|
37
|
-
on performance in either language.
|
|
38
|
-
|
|
39
|
-
## License
|
|
40
|
-
|
|
41
|
-
Licensed under either of
|
|
42
|
-
|
|
43
|
-
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
44
|
-
https://www.apache.org/licenses/LICENSE-2.0)
|
|
45
|
-
- MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
46
|
-
https://opensource.org/licenses/MIT)
|
|
47
|
-
|
|
48
|
-
at your option.
|
|
49
|
-
|
|
50
|
-
### Contribution
|
|
51
|
-
|
|
52
|
-
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as
|
|
53
|
-
defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
[crates-badge]: https://img.shields.io/crates/v/refix.svg
|
|
57
|
-
|
|
58
|
-
[docs-badge]: https://docs.rs/refix/badge.svg
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# refix-engine
|
|
2
|
-
|
|
3
|
-
FIX message processing for Python, powered by Rust.
|
|
4
|
-
|
|
5
|
-
This package provides the Python bindings for
|
|
6
|
-
[ReFIX](https://github.com/refixhq/refix), a FIX engine written in pure Rust
|
|
7
|
-
with first-party Python support. The import name is `refix`:
|
|
8
|
-
|
|
9
|
-
```python
|
|
10
|
-
import refix
|
|
11
|
-
|
|
12
|
-
message = refix.Tokenizer().tokenize(frame)
|
|
13
|
-
print(message.get(35))
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
> Development on ReFIX has just started. In its current state, the project
|
|
17
|
-
> isn't useful, but make sure to check back later to monitor progress.
|
|
18
|
-
|
|
19
|
-
See the [project repository](https://github.com/refixhq/refix) for
|
|
20
|
-
documentation, roadmap and licensing (MIT OR Apache-2.0).
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|