ormsgpack 1.5.0__tar.gz → 1.7.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.

Potentially problematic release.


This version of ormsgpack might be problematic. Click here for more details.

Files changed (44) hide show
  1. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/CHANGELOG.md +37 -9
  2. ormsgpack-1.7.0/Cargo.lock +286 -0
  3. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/Cargo.toml +7 -8
  4. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/PKG-INFO +19 -29
  5. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/README.md +16 -26
  6. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/pyproject.toml +13 -3
  7. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/python/ormsgpack/__init__.pyi +4 -1
  8. ormsgpack-1.7.0/src/deserialize/cache.rs +72 -0
  9. ormsgpack-1.7.0/src/deserialize/deserializer.rs +576 -0
  10. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/lib.rs +1 -0
  11. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/dataclass.rs +42 -76
  12. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/datetimelike.rs +1 -1
  13. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/ext.rs +1 -4
  14. ormsgpack-1.7.0/src/serialize/serializer.rs +803 -0
  15. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/typeref.rs +4 -4
  16. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/unicode.rs +11 -55
  17. ormsgpack-1.5.0/Cargo.lock +0 -428
  18. ormsgpack-1.5.0/src/deserialize/cache.rs +0 -48
  19. ormsgpack-1.5.0/src/deserialize/deserializer.rs +0 -526
  20. ormsgpack-1.5.0/src/serialize/serializer.rs +0 -318
  21. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/LICENSE-APACHE +0 -0
  22. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/LICENSE-MIT +0 -0
  23. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/build.rs +0 -0
  24. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/python/ormsgpack/__init__.py +0 -0
  25. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/python/ormsgpack/py.typed +0 -0
  26. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/deserialize/error.rs +0 -0
  27. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/deserialize/mod.rs +0 -0
  28. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/exc.rs +0 -0
  29. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/ext.rs +0 -0
  30. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/ffi.rs +0 -0
  31. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/opt.rs +0 -0
  32. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/bytes.rs +0 -0
  33. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/datetime.rs +0 -0
  34. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/default.rs +0 -0
  35. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/dict.rs +0 -0
  36. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/int.rs +0 -0
  37. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/list.rs +0 -0
  38. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/mod.rs +0 -0
  39. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/numpy.rs +0 -0
  40. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/str.rs +0 -0
  41. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/tuple.rs +0 -0
  42. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/uuid.rs +0 -0
  43. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/serialize/writer.rs +0 -0
  44. {ormsgpack-1.5.0 → ormsgpack-1.7.0}/src/util.rs +0 -0
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.7.0 29/11/2024
4
+
5
+ ### Fixed
6
+
7
+ - Detect Pydantic 2.10 models [#311](/../../issues/311)
8
+ - Fix serialization of dataclasses without `__slots__` and with a field defined
9
+ with a descriptor object as default value, a field defined with `init=False`
10
+ and a default value, or a cached property
11
+
12
+ ### Changed
13
+
14
+ - Drop support for Python 3.8
15
+ - Support `OPT_SORT_KEYS` also for Pydantic models [#312](/../../issues/312)
16
+ - Improve deserialization performance
17
+
18
+ ## 1.6.0 18/10/2024
19
+
20
+ ### Fixed
21
+
22
+ - Deduplicate map keys also when `OPT_NON_STR_KEYS` is set [#279](/../../issues/279)
23
+ - Add missing type information for Ext type by [trim21](https://github.com/trim21) in [#285](/../../pull/285)
24
+ - Fix type annotation of unpackb first argument
25
+
26
+ ### Changed
27
+
28
+ - Add support for python 3.13
29
+ - Improve test coverage
30
+
3
31
  ## 1.5.0 19/04/2024
4
32
 
5
33
  - Add support for numpy datetime64 and float16 types
@@ -47,7 +75,7 @@
47
75
 
48
76
  ### Fixed
49
77
 
50
- - `once_cell` poisoning on parallel initialization by (@Quitlox)[https://github.com/Quitlox] in (#153)[https://github.com/aviramha/ormsgpack/pull/153]
78
+ - `once_cell` poisoning on parallel initialization by [@Quitlox](https://github.com/Quitlox) in [#153](/../../pull/153)
51
79
 
52
80
 
53
81
  ## 1.2.5 02/02/2023
@@ -69,7 +97,7 @@
69
97
 
70
98
  ## 1.2.3 - 26/06/2022
71
99
  ### Misc
72
- - Updated dependencies. partially by [@tilman19](https://github.com/aviramha/ormsgpack/pull/101)
100
+ - Updated dependencies. partially by [@tilman19](/../../pull/101)
73
101
  - Handle clippy warnings.
74
102
 
75
103
 
@@ -82,15 +110,15 @@
82
110
  - Update dependencies
83
111
  ## 1.2.0 - 14/2/2022
84
112
  ### Changed
85
- - Extended int passthrough to support u64. by [@pejter](https://github.com/aviramha/ormsgpack/pull/77)
113
+ - Extended int passthrough to support u64. by [@pejter](/../../pull/77)
86
114
  ### Misc
87
- - Updated README to include new options. by [@ThomasTNO](https://github.com/aviramha/ormsgpack/pull/70)
115
+ - Updated README to include new options. by [@ThomasTNO](/../../pull/70)
88
116
  - Updated dependencies
89
117
  - Renamed in `numpy.rs` `from_parent` to `to_children` to fix new lint rules
90
118
  ## 1.1.0 - 8/1/2022
91
119
  ### Added
92
- - Add optional passthrough for tuples. by [@TariqTNO](https://github.com/aviramha/ormsgpack/pull/64)
93
- - Add optional passthrough for ints, that do not fit into an i64. by [@TariqTNO](https://github.com/aviramha/ormsgpack/pull/64)
120
+ - Add optional passthrough for tuples. by [@TariqTNO](/../../pull/64)
121
+ - Add optional passthrough for ints, that do not fit into an i64. by [@TariqTNO](/../../pull/64)
94
122
  ### Changed
95
123
  - `opt` parameter can be `None`.
96
124
  ### Misc
@@ -132,7 +160,7 @@
132
160
  - Refactored adding objects to the module, creating a `__all__` object similar to the way PyO3 creates. This solves an issue with upgrading to new maturin version.
133
161
  - Changed < Py3.7 implementation to use automatic range inclusion.
134
162
  - Added test to validate correct Python method flags are used on declare.
135
- - Changed to use PyO3 configurations instead of our own. PR [#25](https://github.com/aviramha/ormsgpack/pull/25) by [@pejter](https://github.com/pejter).
163
+ - Changed to use PyO3 configurations instead of our own. PR [#25](/../../pull/25) by [@pejter](https://github.com/pejter).
136
164
  ## 0.3.2 - 13/7/2021
137
165
  ### Fixed
138
166
  - Fix memory leak serializing `datetime.datetime` with `tzinfo`. (Copied from orjson)
@@ -142,9 +170,9 @@
142
170
  - Setup dependabot.
143
171
  ## 0.3.1 - 19/6/2021
144
172
  ### Changed
145
- - `packb` of maps and sequences is now almost 2x faster as it leverages known size. PR [#18](https://github.com/aviramha/ormsgpack/pull/18) by [@ijl](https://github.com/ijl).
173
+ - `packb` of maps and sequences is now almost 2x faster as it leverages known size. PR [#18](/../../pull/18) by [@ijl](https://github.com/ijl).
146
174
  ### Misc
147
- - Added `scripts/bench_target.py` and `scripts/profile.sh` for easily benchmarking and profiling. Works only on Linux. PR [#17](https://github.com/aviramha/ormsgpack/pull/17) by [@ijl](https://github.com/ijl).
175
+ - Added `scripts/bench_target.py` and `scripts/profile.sh` for easily benchmarking and profiling. Works only on Linux. PR [#17](/../../pull/17) by [@ijl](https://github.com/ijl).
148
176
  ## 0.3.0 - 13/6/2021
149
177
  ### Added
150
178
  - `unpackb` now accepts keyword argument `option` with argument `OPT_NON_STR_KEYS`. This option will let ormsgpack
@@ -0,0 +1,286 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 3
4
+
5
+ [[package]]
6
+ name = "ahash"
7
+ version = "0.8.11"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
10
+ dependencies = [
11
+ "cfg-if",
12
+ "once_cell",
13
+ "version_check",
14
+ "zerocopy",
15
+ ]
16
+
17
+ [[package]]
18
+ name = "autocfg"
19
+ version = "1.3.0"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
22
+
23
+ [[package]]
24
+ name = "bytecount"
25
+ version = "0.6.8"
26
+ source = "registry+https://github.com/rust-lang/crates.io-index"
27
+ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce"
28
+
29
+ [[package]]
30
+ name = "byteorder"
31
+ version = "1.5.0"
32
+ source = "registry+https://github.com/rust-lang/crates.io-index"
33
+ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
34
+
35
+ [[package]]
36
+ name = "cfg-if"
37
+ version = "1.0.0"
38
+ source = "registry+https://github.com/rust-lang/crates.io-index"
39
+ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
40
+
41
+ [[package]]
42
+ name = "chrono"
43
+ version = "0.4.38"
44
+ source = "registry+https://github.com/rust-lang/crates.io-index"
45
+ checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
46
+ dependencies = [
47
+ "num-traits",
48
+ ]
49
+
50
+ [[package]]
51
+ name = "crunchy"
52
+ version = "0.2.2"
53
+ source = "registry+https://github.com/rust-lang/crates.io-index"
54
+ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
55
+
56
+ [[package]]
57
+ name = "half"
58
+ version = "2.4.1"
59
+ source = "registry+https://github.com/rust-lang/crates.io-index"
60
+ checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
61
+ dependencies = [
62
+ "cfg-if",
63
+ "crunchy",
64
+ ]
65
+
66
+ [[package]]
67
+ name = "itoa"
68
+ version = "1.0.13"
69
+ source = "registry+https://github.com/rust-lang/crates.io-index"
70
+ checksum = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2"
71
+
72
+ [[package]]
73
+ name = "libc"
74
+ version = "0.2.154"
75
+ source = "registry+https://github.com/rust-lang/crates.io-index"
76
+ checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
77
+
78
+ [[package]]
79
+ name = "memoffset"
80
+ version = "0.9.1"
81
+ source = "registry+https://github.com/rust-lang/crates.io-index"
82
+ checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
83
+ dependencies = [
84
+ "autocfg",
85
+ ]
86
+
87
+ [[package]]
88
+ name = "num-traits"
89
+ version = "0.2.19"
90
+ source = "registry+https://github.com/rust-lang/crates.io-index"
91
+ checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
92
+ dependencies = [
93
+ "autocfg",
94
+ ]
95
+
96
+ [[package]]
97
+ name = "once_cell"
98
+ version = "1.20.2"
99
+ source = "registry+https://github.com/rust-lang/crates.io-index"
100
+ checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
101
+
102
+ [[package]]
103
+ name = "ormsgpack"
104
+ version = "1.7.0"
105
+ dependencies = [
106
+ "ahash",
107
+ "bytecount",
108
+ "byteorder",
109
+ "chrono",
110
+ "half",
111
+ "itoa",
112
+ "once_cell",
113
+ "pyo3",
114
+ "pyo3-build-config",
115
+ "rmp",
116
+ "serde",
117
+ "serde_bytes",
118
+ "simdutf8",
119
+ "smallvec",
120
+ ]
121
+
122
+ [[package]]
123
+ name = "paste"
124
+ version = "1.0.15"
125
+ source = "registry+https://github.com/rust-lang/crates.io-index"
126
+ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
127
+
128
+ [[package]]
129
+ name = "portable-atomic"
130
+ version = "1.6.0"
131
+ source = "registry+https://github.com/rust-lang/crates.io-index"
132
+ checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
133
+
134
+ [[package]]
135
+ name = "proc-macro2"
136
+ version = "1.0.89"
137
+ source = "registry+https://github.com/rust-lang/crates.io-index"
138
+ checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
139
+ dependencies = [
140
+ "unicode-ident",
141
+ ]
142
+
143
+ [[package]]
144
+ name = "pyo3"
145
+ version = "0.22.6"
146
+ source = "registry+https://github.com/rust-lang/crates.io-index"
147
+ checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884"
148
+ dependencies = [
149
+ "cfg-if",
150
+ "libc",
151
+ "memoffset",
152
+ "once_cell",
153
+ "portable-atomic",
154
+ "pyo3-build-config",
155
+ "pyo3-ffi",
156
+ ]
157
+
158
+ [[package]]
159
+ name = "pyo3-build-config"
160
+ version = "0.22.6"
161
+ source = "registry+https://github.com/rust-lang/crates.io-index"
162
+ checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38"
163
+ dependencies = [
164
+ "once_cell",
165
+ "target-lexicon",
166
+ ]
167
+
168
+ [[package]]
169
+ name = "pyo3-ffi"
170
+ version = "0.22.6"
171
+ source = "registry+https://github.com/rust-lang/crates.io-index"
172
+ checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636"
173
+ dependencies = [
174
+ "libc",
175
+ "pyo3-build-config",
176
+ ]
177
+
178
+ [[package]]
179
+ name = "quote"
180
+ version = "1.0.36"
181
+ source = "registry+https://github.com/rust-lang/crates.io-index"
182
+ checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
183
+ dependencies = [
184
+ "proc-macro2",
185
+ ]
186
+
187
+ [[package]]
188
+ name = "rmp"
189
+ version = "0.8.14"
190
+ source = "registry+https://github.com/rust-lang/crates.io-index"
191
+ checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4"
192
+ dependencies = [
193
+ "byteorder",
194
+ "num-traits",
195
+ "paste",
196
+ ]
197
+
198
+ [[package]]
199
+ name = "serde"
200
+ version = "1.0.215"
201
+ source = "registry+https://github.com/rust-lang/crates.io-index"
202
+ checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
203
+ dependencies = [
204
+ "serde_derive",
205
+ ]
206
+
207
+ [[package]]
208
+ name = "serde_bytes"
209
+ version = "0.11.15"
210
+ source = "registry+https://github.com/rust-lang/crates.io-index"
211
+ checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a"
212
+ dependencies = [
213
+ "serde",
214
+ ]
215
+
216
+ [[package]]
217
+ name = "serde_derive"
218
+ version = "1.0.215"
219
+ source = "registry+https://github.com/rust-lang/crates.io-index"
220
+ checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
221
+ dependencies = [
222
+ "proc-macro2",
223
+ "quote",
224
+ "syn",
225
+ ]
226
+
227
+ [[package]]
228
+ name = "simdutf8"
229
+ version = "0.1.5"
230
+ source = "registry+https://github.com/rust-lang/crates.io-index"
231
+ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
232
+
233
+ [[package]]
234
+ name = "smallvec"
235
+ version = "1.13.2"
236
+ source = "registry+https://github.com/rust-lang/crates.io-index"
237
+ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
238
+
239
+ [[package]]
240
+ name = "syn"
241
+ version = "2.0.82"
242
+ source = "registry+https://github.com/rust-lang/crates.io-index"
243
+ checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021"
244
+ dependencies = [
245
+ "proc-macro2",
246
+ "quote",
247
+ "unicode-ident",
248
+ ]
249
+
250
+ [[package]]
251
+ name = "target-lexicon"
252
+ version = "0.12.14"
253
+ source = "registry+https://github.com/rust-lang/crates.io-index"
254
+ checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
255
+
256
+ [[package]]
257
+ name = "unicode-ident"
258
+ version = "1.0.12"
259
+ source = "registry+https://github.com/rust-lang/crates.io-index"
260
+ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
261
+
262
+ [[package]]
263
+ name = "version_check"
264
+ version = "0.9.4"
265
+ source = "registry+https://github.com/rust-lang/crates.io-index"
266
+ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
267
+
268
+ [[package]]
269
+ name = "zerocopy"
270
+ version = "0.7.34"
271
+ source = "registry+https://github.com/rust-lang/crates.io-index"
272
+ checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087"
273
+ dependencies = [
274
+ "zerocopy-derive",
275
+ ]
276
+
277
+ [[package]]
278
+ name = "zerocopy-derive"
279
+ version = "0.7.34"
280
+ source = "registry+https://github.com/rust-lang/crates.io-index"
281
+ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b"
282
+ dependencies = [
283
+ "proc-macro2",
284
+ "quote",
285
+ "syn",
286
+ ]
@@ -1,12 +1,13 @@
1
1
  [package]
2
2
  name = "ormsgpack"
3
- version = "1.5.0"
3
+ version = "1.7.0"
4
4
  authors = [
5
5
  "Aviram Hassan <aviramyhassan@gmail.com>",
6
6
  "Emanuele Giaquinta <emanuele.giaquinta@gmail.com>",
7
7
  ]
8
8
  description = "Fast, correct Python msgpack library supporting dataclasses, datetimes, and numpy"
9
9
  edition = "2021"
10
+ rust-version = "1.70"
10
11
  license = "Apache-2.0 OR MIT"
11
12
  repository = "https://github.com/aviramha/ormsgpack"
12
13
  homepage = "https://github.com/aviramha/ormsgpack"
@@ -33,27 +34,25 @@ default = ["unstable-simd"]
33
34
  # Use SIMD intrinsics. This requires Rust on the nightly channel.
34
35
  unstable-simd = [
35
36
  "bytecount/generic-simd",
36
- "encoding_rs/simd-accel",
37
37
  ]
38
38
 
39
39
  [dependencies]
40
40
  ahash = { version = "0.8", default-features = false }
41
- associative-cache = { version = "2", default-features = false }
42
41
  bytecount = { version = "^0.6.7", default-features = false, features = ["runtime-dispatch-simd"] }
42
+ byteorder = { version = "1.5.0", default-features = false, features = ["std"] }
43
43
  chrono = { version = "0.4.38", default-features = false }
44
- encoding_rs = { version = "0.8", default-features = false }
45
44
  half = { version = "2.4.1", default-features = false }
46
45
  itoa = { version = "1", default-features = false }
47
46
  once_cell = { version = "1", default-features = false, features = ["race"] }
48
- pyo3 = { version = "^0.21.2", default-features = false, features = ["extension-module"] }
47
+ pyo3 = { version = "^0.22.6", default-features = false, features = ["extension-module"] }
49
48
  rmp = { version = "^0.8.14", default-features = false, features = ["std"] }
50
- rmp-serde = { version = "1", default-features = false }
51
49
  serde = { version = "1", default-features = false }
52
- serde_bytes = { version = "0.11.14", default-features = false, features = ["std"] }
50
+ serde_bytes = { version = "0.11.15", default-features = false, features = ["std"] }
51
+ simdutf8 = { version = "0.1.5", default-features = false, features = ["std"] }
53
52
  smallvec = { version = "^1.13", default-features = false, features = ["union", "write"] }
54
53
 
55
54
  [build-dependencies]
56
- pyo3-build-config = { version = "^0.21.0" }
55
+ pyo3-build-config = { version = "^0.22.0" }
57
56
 
58
57
  [profile.release]
59
58
  codegen-units = 1
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: ormsgpack
3
- Version: 1.5.0
3
+ Version: 1.7.0
4
4
  Classifier: Development Status :: 5 - Production/Stable
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: Apache Software License
@@ -9,11 +9,11 @@ Classifier: Operating System :: MacOS
9
9
  Classifier: Operating System :: Microsoft :: Windows
10
10
  Classifier: Operating System :: POSIX :: Linux
11
11
  Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.8
13
12
  Classifier: Programming Language :: Python :: 3.9
14
13
  Classifier: Programming Language :: Python :: 3.10
15
14
  Classifier: Programming Language :: Python :: 3.11
16
15
  Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
17
  Classifier: Programming Language :: Python :: Implementation :: CPython
18
18
  Classifier: Programming Language :: Python
19
19
  Classifier: Programming Language :: Rust
@@ -26,7 +26,7 @@ Home-Page: https://github.com/aviramha/ormsgpack
26
26
  Author: Aviram Hassan <aviramyhassan@gmail.com>, Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
27
27
  Author-email: Aviram Hassan <aviramyhassan@gmail.com>, Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
28
28
  License: Apache-2.0 OR MIT
29
- Requires-Python: >=3.8
29
+ Requires-Python: >=3.9
30
30
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
31
31
  Project-URL: Source Code, https://github.com/aviramha/ormsgpack
32
32
 
@@ -34,27 +34,13 @@ Project-URL: Source Code, https://github.com/aviramha/ormsgpack
34
34
  ![PyPI](https://img.shields.io/pypi/v/ormsgpack)
35
35
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/ormsgpack)
36
36
 
37
- ormsgpack is a fast msgpack library for Python. It is a fork/reboot of [orjson](https://github.com/ijl/orjson)
38
- It serializes faster than [msgpack-python](https://github.com/msgpack/msgpack-python) and deserializes a bit slower (right now).
39
- It supports serialization of:
40
- [dataclass](#dataclass),
41
- [datetime](#datetime),
42
- [numpy](#numpy),
43
- [pydantic](#pydantic) and
44
- [UUID](#uuid) instances natively.
37
+ ormsgpack is a fast msgpack serialization library for Python derived
38
+ from [orjson](https://github.com/ijl/orjson), with native support for
39
+ various Python types.
45
40
 
46
- Its features and drawbacks compared to other Python msgpack libraries:
47
-
48
- * serializes `dataclass` instances natively.
49
- * serializes `datetime`, `date`, and `time` instances to RFC 3339 format,
50
- e.g., "1970-01-01T00:00:00+00:00"
51
- * serializes `numpy.ndarray` instances natively and faster.
52
- * serializes `pydantic.BaseModel` instances natively
53
- * serializes arbitrary types using a `default` hook
54
-
55
- ormsgpack supports CPython 3.8, 3.9, 3.10, 3.11 and 3.12. ormsgpack does not support PyPy. Releases follow semantic
56
- versioning and serializing a new object type without an opt-in flag is
57
- considered a breaking change.
41
+ ormsgpack supports CPython 3.9, 3.10, 3.11, 3.12 and 3.13. Releases
42
+ follow semantic versioning and serializing a new object type without
43
+ an opt-in flag is considered a breaking change.
58
44
 
59
45
  ormsgpack is licensed under both the Apache 2.0 and MIT licenses. The
60
46
  repository and issue tracker is
@@ -137,7 +123,7 @@ serializes subclasses of `str`, `int`, `dict`, `list`,
137
123
  of `tuple` to avoid serializing `namedtuple` objects as arrays. To avoid
138
124
  serializing subclasses, specify the option `ormsgpack.OPT_PASSTHROUGH_SUBCLASS`.
139
125
 
140
- The output is a `bytes` object containing UTF-8.
126
+ The output is a `bytes` object.
141
127
 
142
128
  The global interpreter lock (GIL) is held for the duration of the call.
143
129
 
@@ -441,8 +427,8 @@ Serialize `pydantic.BaseModel` instances.
441
427
 
442
428
  ##### OPT_SORT_KEYS
443
429
 
444
- Serialize `dict` keys in sorted order. The default is to serialize in an
445
- unspecified order.
430
+ Serialize `dict` keys and pydantic model fields in sorted order. The default
431
+ is to serialize in an unspecified order.
446
432
 
447
433
  This can be used to ensure the order is deterministic for hashing or tests.
448
434
  It has a substantial performance penalty and is not recommended in general.
@@ -795,7 +781,11 @@ b'\xd9$886313e1-3b8a-5372-9b90-0c9aee199e5d'
795
781
  ```
796
782
 
797
783
  ### Pydantic
798
- ormsgpack serializes `pydantic.BaseModel` instances natively.
784
+ ormsgpack serializes `pydantic.BaseModel` instances natively, with
785
+ [duck-typing](https://docs.pydantic.dev/2.10/concepts/serialization/#serializing-with-duck-typing).
786
+ This is equivalent to serializing
787
+ `model.model_dump(serialize_as_any=True)` with Pydantic V2 or
788
+ `model.dict()`with Pydantic V1.
799
789
 
800
790
  #### Performance
801
791
  ![alt text](doc/pydantic.svg "pydantic")
@@ -904,7 +894,7 @@ level above this.
904
894
 
905
895
  ## Packaging
906
896
 
907
- To package ormsgpack requires [Rust](https://www.rust-lang.org/) 1.65
897
+ To package ormsgpack requires [Rust](https://www.rust-lang.org/) 1.70
908
898
  or newer and the [maturin](https://github.com/PyO3/maturin) build
909
899
  tool. The default feature `unstable-simd` enables the usage of SIMD
910
900
  operations and requires nightly Rust. The recommended build command
@@ -2,27 +2,13 @@
2
2
  ![PyPI](https://img.shields.io/pypi/v/ormsgpack)
3
3
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/ormsgpack)
4
4
 
5
- ormsgpack is a fast msgpack library for Python. It is a fork/reboot of [orjson](https://github.com/ijl/orjson)
6
- It serializes faster than [msgpack-python](https://github.com/msgpack/msgpack-python) and deserializes a bit slower (right now).
7
- It supports serialization of:
8
- [dataclass](#dataclass),
9
- [datetime](#datetime),
10
- [numpy](#numpy),
11
- [pydantic](#pydantic) and
12
- [UUID](#uuid) instances natively.
13
-
14
- Its features and drawbacks compared to other Python msgpack libraries:
15
-
16
- * serializes `dataclass` instances natively.
17
- * serializes `datetime`, `date`, and `time` instances to RFC 3339 format,
18
- e.g., "1970-01-01T00:00:00+00:00"
19
- * serializes `numpy.ndarray` instances natively and faster.
20
- * serializes `pydantic.BaseModel` instances natively
21
- * serializes arbitrary types using a `default` hook
22
-
23
- ormsgpack supports CPython 3.8, 3.9, 3.10, 3.11 and 3.12. ormsgpack does not support PyPy. Releases follow semantic
24
- versioning and serializing a new object type without an opt-in flag is
25
- considered a breaking change.
5
+ ormsgpack is a fast msgpack serialization library for Python derived
6
+ from [orjson](https://github.com/ijl/orjson), with native support for
7
+ various Python types.
8
+
9
+ ormsgpack supports CPython 3.9, 3.10, 3.11, 3.12 and 3.13. Releases
10
+ follow semantic versioning and serializing a new object type without
11
+ an opt-in flag is considered a breaking change.
26
12
 
27
13
  ormsgpack is licensed under both the Apache 2.0 and MIT licenses. The
28
14
  repository and issue tracker is
@@ -105,7 +91,7 @@ serializes subclasses of `str`, `int`, `dict`, `list`,
105
91
  of `tuple` to avoid serializing `namedtuple` objects as arrays. To avoid
106
92
  serializing subclasses, specify the option `ormsgpack.OPT_PASSTHROUGH_SUBCLASS`.
107
93
 
108
- The output is a `bytes` object containing UTF-8.
94
+ The output is a `bytes` object.
109
95
 
110
96
  The global interpreter lock (GIL) is held for the duration of the call.
111
97
 
@@ -409,8 +395,8 @@ Serialize `pydantic.BaseModel` instances.
409
395
 
410
396
  ##### OPT_SORT_KEYS
411
397
 
412
- Serialize `dict` keys in sorted order. The default is to serialize in an
413
- unspecified order.
398
+ Serialize `dict` keys and pydantic model fields in sorted order. The default
399
+ is to serialize in an unspecified order.
414
400
 
415
401
  This can be used to ensure the order is deterministic for hashing or tests.
416
402
  It has a substantial performance penalty and is not recommended in general.
@@ -763,7 +749,11 @@ b'\xd9$886313e1-3b8a-5372-9b90-0c9aee199e5d'
763
749
  ```
764
750
 
765
751
  ### Pydantic
766
- ormsgpack serializes `pydantic.BaseModel` instances natively.
752
+ ormsgpack serializes `pydantic.BaseModel` instances natively, with
753
+ [duck-typing](https://docs.pydantic.dev/2.10/concepts/serialization/#serializing-with-duck-typing).
754
+ This is equivalent to serializing
755
+ `model.model_dump(serialize_as_any=True)` with Pydantic V2 or
756
+ `model.dict()`with Pydantic V1.
767
757
 
768
758
  #### Performance
769
759
  ![alt text](doc/pydantic.svg "pydantic")
@@ -872,7 +862,7 @@ level above this.
872
862
 
873
863
  ## Packaging
874
864
 
875
- To package ormsgpack requires [Rust](https://www.rust-lang.org/) 1.65
865
+ To package ormsgpack requires [Rust](https://www.rust-lang.org/) 1.70
876
866
  or newer and the [maturin](https://github.com/PyO3/maturin) build
877
867
  tool. The default feature `unstable-simd` enables the usage of SIMD
878
868
  operations and requires nightly Rust. The recommended build command
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "ormsgpack"
3
3
  repository = "https://github.com/aviramha/ormsgpack"
4
- requires-python = ">=3.8"
4
+ requires-python = ">=3.9"
5
5
  classifiers = [
6
6
  "Development Status :: 5 - Production/Stable",
7
7
  "Intended Audience :: Developers",
@@ -11,11 +11,11 @@ classifiers = [
11
11
  "Operating System :: Microsoft :: Windows",
12
12
  "Operating System :: POSIX :: Linux",
13
13
  "Programming Language :: Python :: 3",
14
- "Programming Language :: Python :: 3.8",
15
14
  "Programming Language :: Python :: 3.9",
16
15
  "Programming Language :: Python :: 3.10",
17
16
  "Programming Language :: Python :: 3.11",
18
17
  "Programming Language :: Python :: 3.12",
18
+ "Programming Language :: Python :: 3.13",
19
19
  "Programming Language :: Python :: Implementation :: CPython",
20
20
  "Programming Language :: Python",
21
21
  "Programming Language :: Rust",
@@ -30,9 +30,17 @@ requires = ["maturin>=1.0,<2.0"]
30
30
  python-source = "python"
31
31
  strip = true
32
32
 
33
+ [tool.mypy]
34
+ exclude = "benchmarks"
35
+ strict = true
36
+
37
+ [[tool.mypy.overrides]]
38
+ module = ["msgpack"]
39
+ ignore_missing_imports = true
40
+
33
41
  [tool.ruff]
34
42
  line-length = 88
35
- target-version = "py38"
43
+ target-version = "py39"
36
44
 
37
45
  [tool.ruff.lint]
38
46
  select = [
@@ -43,6 +51,8 @@ select = [
43
51
  ]
44
52
  ignore = [
45
53
  "E501",
54
+ "RUF022",
55
+ "RUF023",
46
56
  ]
47
57
 
48
58
  [tool.ruff.lint.isort]
@@ -8,7 +8,7 @@ def packb(
8
8
  option: Optional[int] = None,
9
9
  ) -> bytes: ...
10
10
  def unpackb(
11
- __obj: Union[str, bytes, bytearray, memoryview],
11
+ obj: Union[bytes, bytearray, memoryview],
12
12
  ext_hook: Optional[Callable[[int, bytes], Any]] = ...,
13
13
  option: Optional[int] = ...,
14
14
  ) -> Any: ...
@@ -16,6 +16,9 @@ def unpackb(
16
16
  class MsgpackDecodeError(ValueError): ...
17
17
  class MsgpackEncodeError(TypeError): ...
18
18
 
19
+ class Ext:
20
+ def __init__(self, tag: int, data: bytes) -> None: ...
21
+
19
22
  OPT_NAIVE_UTC: int
20
23
  OPT_OMIT_MICROSECONDS: int
21
24
  OPT_PASSTHROUGH_BIG_INT: int