py-serializable 2.1.0__tar.gz → 2.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.
- {py_serializable-2.1.0 → py_serializable-2.2.0}/CHANGELOG.md +116 -97
- {py_serializable-2.1.0 → py_serializable-2.2.0}/PKG-INFO +6 -2
- {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/conf.py +1 -1
- py_serializable-2.2.0/docs/requirements.txt +4 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/__init__.py +1 -1
- {py_serializable-2.1.0 → py_serializable-2.2.0}/pyproject.toml +17 -7
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/model.py +1 -1
- py_serializable-2.1.0/docs/requirements.txt +0 -5
- {py_serializable-2.1.0 → py_serializable-2.2.0}/LICENSE +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/README.md +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/Makefile +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/changelog.rst +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/customising-structure.rst +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/examples.rst +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/formatters.rst +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/getting-started.rst +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/index.rst +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/make.bat +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/migration.rst +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/support.rst +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/formatters.py +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/helpers.py +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/json.py +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/py.typed +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/xml.py +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/__init__.py +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/base.py +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-bookedition-none.json +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-bookedition-none.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-1-v1.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-1-v2.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-1-v3.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-1-v4.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-1.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-references.json +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-v2.json +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-v3.json +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-v4.json +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-with-ignored.json +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-with-ignored.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case.json +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-defaultNS-isset-v4.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-defaultNS-isset.SNAPSHOT.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-defaultNS-mixed-v4.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-defaultNS-unset-v4.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-defaultNS-unset.SNAPSHOT.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-kebab-case-1-v2.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-kebab-case-1.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-kebab-case.json +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-snake-case-1.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-snake-case.json +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_ignored_attributes.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_ignored_elements.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_ignored_properties.json +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_unignored_attributes.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_unignored_elements.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_unignored_properties.json +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unnormalized-input_v4.xml +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/test_formatters.py +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/test_helpers.py +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/test_json.py +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/test_oml.py +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/test_oml_serializable_property.py +0 -0
- {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/test_xml.py +0 -0
|
@@ -2,41 +2,60 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
## v2.1.0 (2025-07-21)
|
|
6
|
+
|
|
7
|
+
### Documentation
|
|
8
|
+
|
|
9
|
+
* docs: fix typo in CONTRIBUTING guidelines
|
|
10
|
+
|
|
11
|
+
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`f6b6629`](https://github.com/madpah/serializable/commit/f6b6629b506e1fa9cc8825593129ed08fb20c9c8))
|
|
12
|
+
|
|
13
|
+
### Feature
|
|
14
|
+
|
|
15
|
+
* feat: add support to ignore unknown properties/attributes/elements during deserialization (#178)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
---------
|
|
20
|
+
|
|
21
|
+
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`3c51231`](https://github.com/madpah/serializable/commit/3c512313f5f1ab8d06fe24da01936ece2693cdc0))
|
|
22
|
+
|
|
23
|
+
|
|
5
24
|
## v2.0.0 (2025-02-09)
|
|
6
25
|
|
|
7
26
|
### Breaking
|
|
8
27
|
|
|
9
28
|
* refactor!: rename python package `serializable` -> `py_serializable` (#155)
|
|
10
29
|
|
|
11
|
-
The python package was renamed from `serializable` to `py_serializable`.
|
|
12
|
-
Therefore, you need to adjust your imports.
|
|
13
|
-
|
|
14
|
-
The following shows a quick way to adjust imports in the most efficient way.
|
|
15
|
-
|
|
16
|
-
### OLD imports
|
|
17
|
-
```py
|
|
18
|
-
import serializable
|
|
19
|
-
from serializable import ViewType, XmlArraySerializationType, XmlStringSerializationType
|
|
20
|
-
from serializable.helpers import BaseHelper, Iso8601Date
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
### ADJUSTED imports
|
|
24
|
-
```py
|
|
25
|
-
import py_serializable as serializable
|
|
26
|
-
from py_serializable import ViewType, XmlArraySerializationType, XmlStringSerializationType
|
|
27
|
-
from py_serializable.helpers import BaseHelper, Iso8601Date
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
see migration path: <https://py-serializable.readthedocs.io/en/refactor-rename-installable-py_serializable/migration.html>
|
|
31
|
-
|
|
32
|
-
----
|
|
33
|
-
|
|
34
|
-
fixes #151
|
|
35
|
-
|
|
36
|
-
---------
|
|
37
|
-
|
|
38
|
-
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
|
|
39
|
-
Signed-off-by: semantic-release <semantic-release>
|
|
30
|
+
The python package was renamed from `serializable` to `py_serializable`.
|
|
31
|
+
Therefore, you need to adjust your imports.
|
|
32
|
+
|
|
33
|
+
The following shows a quick way to adjust imports in the most efficient way.
|
|
34
|
+
|
|
35
|
+
### OLD imports
|
|
36
|
+
```py
|
|
37
|
+
import serializable
|
|
38
|
+
from serializable import ViewType, XmlArraySerializationType, XmlStringSerializationType
|
|
39
|
+
from serializable.helpers import BaseHelper, Iso8601Date
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### ADJUSTED imports
|
|
43
|
+
```py
|
|
44
|
+
import py_serializable as serializable
|
|
45
|
+
from py_serializable import ViewType, XmlArraySerializationType, XmlStringSerializationType
|
|
46
|
+
from py_serializable.helpers import BaseHelper, Iso8601Date
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
see migration path: <https://py-serializable.readthedocs.io/en/refactor-rename-installable-py_serializable/migration.html>
|
|
50
|
+
|
|
51
|
+
----
|
|
52
|
+
|
|
53
|
+
fixes #151
|
|
54
|
+
|
|
55
|
+
---------
|
|
56
|
+
|
|
57
|
+
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
|
|
58
|
+
Signed-off-by: semantic-release <semantic-release>
|
|
40
59
|
Co-authored-by: semantic-release <semantic-release> ([`67afaef`](https://github.com/madpah/serializable/commit/67afaef4a5e670c533409f1ccbc3d2dbb263d2de))
|
|
41
60
|
|
|
42
61
|
### Unknown
|
|
@@ -52,11 +71,11 @@ we have a codeowners file in root already ([`b64cdde`](https://github.com/madpah
|
|
|
52
71
|
|
|
53
72
|
* fix: date/time deserialization with fractional seconds (#138)
|
|
54
73
|
|
|
55
|
-
fix multiple where fractional seconds were not properly deserialized or deserialization caused unexpected crashes in py<3.11
|
|
56
|
-
|
|
57
|
-
---------
|
|
58
|
-
|
|
59
|
-
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
|
|
74
|
+
fix multiple where fractional seconds were not properly deserialized or deserialization caused unexpected crashes in py<3.11
|
|
75
|
+
|
|
76
|
+
---------
|
|
77
|
+
|
|
78
|
+
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
|
|
60
79
|
Co-authored-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`f4b1c27`](https://github.com/madpah/serializable/commit/f4b1c27110d1becc76771efffd8dc0a96d629cb5))
|
|
61
80
|
|
|
62
81
|
|
|
@@ -66,8 +85,8 @@ Co-authored-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`f4b1c27`](https
|
|
|
66
85
|
|
|
67
86
|
* fix: serializer omit `None` values as expected (#136)
|
|
68
87
|
|
|
69
|
-
|
|
70
|
-
|
|
88
|
+
|
|
89
|
+
|
|
71
90
|
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`1a0e14b`](https://github.com/madpah/serializable/commit/1a0e14b8ee0866621a388a09e41c7f173e874e25))
|
|
72
91
|
|
|
73
92
|
|
|
@@ -83,11 +102,11 @@ Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`aabb5e9`](https:
|
|
|
83
102
|
|
|
84
103
|
* feat: XML string formats for `normalizedString` and `token` (#119)
|
|
85
104
|
|
|
86
|
-
fixes #114
|
|
87
|
-
fixes #115
|
|
88
|
-
|
|
89
|
-
---------
|
|
90
|
-
|
|
105
|
+
fixes #114
|
|
106
|
+
fixes #115
|
|
107
|
+
|
|
108
|
+
---------
|
|
109
|
+
|
|
91
110
|
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`3a1728d`](https://github.com/madpah/serializable/commit/3a1728d43a13e57ecad2b3feebadf1d9fdc132c3))
|
|
92
111
|
|
|
93
112
|
|
|
@@ -115,8 +134,8 @@ Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`46a8d9e`](https:
|
|
|
115
134
|
|
|
116
135
|
* fix: serialization of `datetime` without timezone with local time offset (#76)
|
|
117
136
|
|
|
118
|
-
|
|
119
|
-
|
|
137
|
+
|
|
138
|
+
|
|
120
139
|
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`06776ba`](https://github.com/madpah/serializable/commit/06776baef2cc4b893550320c474128317f6276c1))
|
|
121
140
|
|
|
122
141
|
|
|
@@ -126,13 +145,13 @@ Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`06776ba`](https:
|
|
|
126
145
|
|
|
127
146
|
* feat!: v1.0.0 (#55)
|
|
128
147
|
|
|
129
|
-
**Release of first major version 🎉**
|
|
130
|
-
|
|
131
|
-
## BREAKING Changes
|
|
132
|
-
* Dropped support for python <3.8
|
|
133
|
-
|
|
134
|
-
---------
|
|
135
|
-
|
|
148
|
+
**Release of first major version 🎉**
|
|
149
|
+
|
|
150
|
+
## BREAKING Changes
|
|
151
|
+
* Dropped support for python <3.8
|
|
152
|
+
|
|
153
|
+
---------
|
|
154
|
+
|
|
136
155
|
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`2cee4d5`](https://github.com/madpah/serializable/commit/2cee4d5f48d59a737f4fc7b0e3d26fbce33c2392))
|
|
137
156
|
|
|
138
157
|
### Documentation
|
|
@@ -189,11 +208,11 @@ Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`c0074ce`](https:
|
|
|
189
208
|
|
|
190
209
|
* feat: logger (#47)
|
|
191
210
|
|
|
192
|
-
Reworked the way this library does logging/warning. It utilizes the logger named `serializable` for everything, now.
|
|
193
|
-
|
|
194
|
-
---------
|
|
195
|
-
|
|
196
|
-
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
|
|
211
|
+
Reworked the way this library does logging/warning. It utilizes the logger named `serializable` for everything, now.
|
|
212
|
+
|
|
213
|
+
---------
|
|
214
|
+
|
|
215
|
+
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
|
|
197
216
|
Co-authored-by: Kyle Roeschley <kyle.roeschley@ni.com> ([`9269b0e`](https://github.com/madpah/serializable/commit/9269b0e681665abaef3f110925cd098b2438880f))
|
|
198
217
|
|
|
199
218
|
### Unknown
|
|
@@ -228,7 +247,7 @@ Automatically generated by python-semantic-release ([`b444fd7`](https://github.c
|
|
|
228
247
|
|
|
229
248
|
* feat: allow custom (de)normalization (#32)
|
|
230
249
|
|
|
231
|
-
|
|
250
|
+
|
|
232
251
|
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`aeecd6b`](https://github.com/madpah/serializable/commit/aeecd6b2e8c4e8febc84ebfa24fe7ec96fd9cb10))
|
|
233
252
|
|
|
234
253
|
### Unknown
|
|
@@ -246,8 +265,8 @@ Automatically generated by python-semantic-release ([`e80c514`](https://github.c
|
|
|
246
265
|
|
|
247
266
|
* fix: JSON deserialize `Decimal` (#31)
|
|
248
267
|
|
|
249
|
-
|
|
250
|
-
|
|
268
|
+
|
|
269
|
+
|
|
251
270
|
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`b6dc66a`](https://github.com/madpah/serializable/commit/b6dc66acfb7fdc82b3dd18caf4ad79ec0e87eef0))
|
|
252
271
|
|
|
253
272
|
### Unknown
|
|
@@ -265,12 +284,12 @@ Automatically generated by python-semantic-release ([`0183a17`](https://github.c
|
|
|
265
284
|
|
|
266
285
|
* feat: enhanced typehints and typing (#27)
|
|
267
286
|
|
|
268
|
-
Even tough some structures are refactored, no public API is changed.
|
|
269
|
-
No runtime is changed.
|
|
270
|
-
TypeCheckers might behave differently, which is intentional due to bug fixes. This is considered a non-breaking change, as it does not affect runtime.
|
|
271
|
-
|
|
272
|
-
---------
|
|
273
|
-
|
|
287
|
+
Even tough some structures are refactored, no public API is changed.
|
|
288
|
+
No runtime is changed.
|
|
289
|
+
TypeCheckers might behave differently, which is intentional due to bug fixes. This is considered a non-breaking change, as it does not affect runtime.
|
|
290
|
+
|
|
291
|
+
---------
|
|
292
|
+
|
|
274
293
|
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`410372a`](https://github.com/madpah/serializable/commit/410372a0fa2713c5a36d790f08d2d4b52a6a187c))
|
|
275
294
|
|
|
276
295
|
### Unknown
|
|
@@ -319,30 +338,30 @@ Automatically generated by python-semantic-release ([`bd604c8`](https://github.c
|
|
|
319
338
|
|
|
320
339
|
* feat: format specific (de)serialize (#25)
|
|
321
340
|
|
|
322
|
-
Added functionality to implement custom (de)serialization specific for XML or JSON ([#13](https://github.com/madpah/serializable/issues/13)).
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
Changed
|
|
326
|
-
-------------
|
|
327
|
-
* Class `BaseHelper` is no longer abstract.
|
|
328
|
-
This class does not provide any functionality, it is more like a Protocol with some fallback implementations.
|
|
329
|
-
* Method `BaseHelper.serialize()` is no longer abstract.
|
|
330
|
-
Will raise `NotImplementedError` per default.
|
|
331
|
-
* Method `BaseHelper.deserialize()` is no longer abstract.
|
|
332
|
-
Will raise `NotImplementedError` per default.
|
|
333
|
-
|
|
334
|
-
Added
|
|
335
|
-
----------
|
|
336
|
-
* New method `BaseHelper.json_serialize()` predefined.
|
|
337
|
-
Will call `cls.serialize()` per default.
|
|
338
|
-
* New method `BaseHelper.json_deserialize()` predefined.
|
|
339
|
-
Will call `cls.deserialize()` per default.
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
----
|
|
344
|
-
|
|
345
|
-
|
|
341
|
+
Added functionality to implement custom (de)serialization specific for XML or JSON ([#13](https://github.com/madpah/serializable/issues/13)).
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
Changed
|
|
345
|
+
-------------
|
|
346
|
+
* Class `BaseHelper` is no longer abstract.
|
|
347
|
+
This class does not provide any functionality, it is more like a Protocol with some fallback implementations.
|
|
348
|
+
* Method `BaseHelper.serialize()` is no longer abstract.
|
|
349
|
+
Will raise `NotImplementedError` per default.
|
|
350
|
+
* Method `BaseHelper.deserialize()` is no longer abstract.
|
|
351
|
+
Will raise `NotImplementedError` per default.
|
|
352
|
+
|
|
353
|
+
Added
|
|
354
|
+
----------
|
|
355
|
+
* New method `BaseHelper.json_serialize()` predefined.
|
|
356
|
+
Will call `cls.serialize()` per default.
|
|
357
|
+
* New method `BaseHelper.json_deserialize()` predefined.
|
|
358
|
+
Will call `cls.deserialize()` per default.
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
----
|
|
363
|
+
|
|
364
|
+
|
|
346
365
|
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`dc998df`](https://github.com/madpah/serializable/commit/dc998df37a2ba37fa43d10c8a1ce044a5b9f5b1e))
|
|
347
366
|
|
|
348
367
|
### Unknown
|
|
@@ -370,19 +389,19 @@ Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`fcc5d8e`](https:
|
|
|
370
389
|
|
|
371
390
|
* docs: set codeblock language and caption (#15)
|
|
372
391
|
|
|
373
|
-
|
|
374
|
-
|
|
392
|
+
|
|
393
|
+
|
|
375
394
|
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`5d5cf7b`](https://github.com/madpah/serializable/commit/5d5cf7bc29ed70f4024c714b2326012a9db54cea))
|
|
376
395
|
|
|
377
396
|
### Fix
|
|
378
397
|
|
|
379
398
|
* fix: xml defaultNamespace serialization and detection (#20)
|
|
380
399
|
|
|
381
|
-
* fixes: serialization with defaultNS fails [#12](https://github.com/madpah/serializable/issues/12)
|
|
382
|
-
* fixes: defaultNamespace detection fails on XML-attributes when deserializing [#11](https://github.com/madpah/serializable/issues/11)
|
|
383
|
-
|
|
384
|
-
---------
|
|
385
|
-
|
|
400
|
+
* fixes: serialization with defaultNS fails [#12](https://github.com/madpah/serializable/issues/12)
|
|
401
|
+
* fixes: defaultNamespace detection fails on XML-attributes when deserializing [#11](https://github.com/madpah/serializable/issues/11)
|
|
402
|
+
|
|
403
|
+
---------
|
|
404
|
+
|
|
386
405
|
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com> ([`59eaa5f`](https://github.com/madpah/serializable/commit/59eaa5f28eb2969e9d497669ef0436eb87b7525d))
|
|
387
406
|
|
|
388
407
|
### Unknown
|
|
@@ -574,8 +593,8 @@ Automatically generated by python-semantic-release ([`58d42ad`](https://github.c
|
|
|
574
593
|
|
|
575
594
|
* Merge pull request #3 from madpah/feat/recursive-parsing-differing-schemas
|
|
576
595
|
|
|
577
|
-
feat: `xml_array` has higher priority than `type_mapping`
|
|
578
|
-
|
|
596
|
+
feat: `xml_array` has higher priority than `type_mapping`
|
|
597
|
+
|
|
579
598
|
feat: handle `ForwardRef` types ([`664f947`](https://github.com/madpah/serializable/commit/664f947add279dad90ac9cf447a59059ab10d2cc))
|
|
580
599
|
|
|
581
600
|
* work to handle `ForwardRef` when we have cyclic references in models
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: py-serializable
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: Library for serializing and deserializing Python Objects to and from JSON and XML.
|
|
5
5
|
License: Apache-2.0
|
|
6
|
+
License-File: LICENSE
|
|
6
7
|
Keywords: serialization,deserialization,JSON,XML
|
|
7
8
|
Author: Paul Horton
|
|
8
9
|
Author-email: paul.horton@owasp.org
|
|
@@ -20,10 +21,13 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
20
21
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
23
|
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
23
26
|
Classifier: Topic :: Software Development
|
|
24
27
|
Classifier: Typing :: Typed
|
|
25
28
|
Requires-Dist: defusedxml (>=0.7.1,<0.8.0)
|
|
26
29
|
Project-URL: Bug Tracker, https://github.com/madpah/serializable/issues
|
|
30
|
+
Project-URL: Changelog, https://github.com/madpah/serializable/releases
|
|
27
31
|
Project-URL: Documentation, https://py-serializable.readthedocs.io/
|
|
28
32
|
Project-URL: Homepage, https://github.com/madpah/serializable#readme
|
|
29
33
|
Project-URL: Repository, https://github.com/madpah/serializable
|
|
@@ -58,7 +58,7 @@ import typing # noqa: F401 # isort: skip
|
|
|
58
58
|
|
|
59
59
|
# !! version is managed by semantic_release
|
|
60
60
|
# do not use typing here, or else `semantic_release` might have issues finding the variable
|
|
61
|
-
__version__ = '2.
|
|
61
|
+
__version__ = '2.2.0'
|
|
62
62
|
|
|
63
63
|
_logger = getLogger(__name__)
|
|
64
64
|
_logger.addHandler(NullHandler())
|
|
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
5
5
|
|
|
6
6
|
[tool.poetry]
|
|
7
7
|
name = "py-serializable"
|
|
8
|
-
version = "2.
|
|
8
|
+
version = "2.2.0"
|
|
9
9
|
description = "Library for serializing and deserializing Python Objects to and from JSON and XML."
|
|
10
10
|
authors = ["Paul Horton <paul.horton@owasp.org>"]
|
|
11
11
|
maintainers = [
|
|
@@ -44,6 +44,9 @@ classifiers = [
|
|
|
44
44
|
'Programming Language :: Python :: 3.10',
|
|
45
45
|
'Programming Language :: Python :: 3.11',
|
|
46
46
|
'Programming Language :: Python :: 3.12',
|
|
47
|
+
'Programming Language :: Python :: 3.13',
|
|
48
|
+
'Programming Language :: Python :: 3.14',
|
|
49
|
+
'Programming Language :: Python :: 3.15',
|
|
47
50
|
'Typing :: Typed'
|
|
48
51
|
]
|
|
49
52
|
keywords = [
|
|
@@ -51,6 +54,7 @@ keywords = [
|
|
|
51
54
|
]
|
|
52
55
|
|
|
53
56
|
[tool.poetry.urls]
|
|
57
|
+
"Changelog" = "https://github.com/madpah/serializable/releases"
|
|
54
58
|
"Bug Tracker" = "https://github.com/madpah/serializable/issues"
|
|
55
59
|
|
|
56
60
|
[tool.poetry.dependencies]
|
|
@@ -71,16 +75,22 @@ flake8-isort = "6.1.1"
|
|
|
71
75
|
flake8-quotes = "3.4.0"
|
|
72
76
|
flake8-use-fstring = "1.4"
|
|
73
77
|
flake8-logging = "1.6.0"
|
|
74
|
-
pyupgrade = { version="3.
|
|
78
|
+
pyupgrade = { version="3.21.0", python=">=3.9" }
|
|
75
79
|
|
|
76
80
|
|
|
77
81
|
|
|
78
82
|
[tool.semantic_release]
|
|
79
83
|
# see https://python-semantic-release.readthedocs.io/en/latest/configuration.html
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
logging_use_named_masks = true
|
|
85
|
+
commit_parser = "conventional"
|
|
86
|
+
commit_parser_options = { parse_squash_commits = true, ignore_merge_commits = true }
|
|
87
|
+
commit_author = "semantic-release <semantic-release@bot.local>"
|
|
88
|
+
commit_message = "chore(release): {version}\n\nAutomatically generated by python-semantic-release\n\nSigned-off-by: semantic-release <semantic-release@bot.local>"
|
|
82
89
|
upload_to_vcs_release = true
|
|
83
|
-
build_command = "
|
|
90
|
+
build_command = """
|
|
91
|
+
pip install poetry
|
|
92
|
+
poetry build
|
|
93
|
+
"""
|
|
84
94
|
version_toml = ["pyproject.toml:tool.poetry.version"]
|
|
85
95
|
version_variables = [
|
|
86
96
|
"py_serializable/__init__.py:__version__",
|
|
@@ -92,7 +102,7 @@ dist_glob_patterns = ["dist/*"]
|
|
|
92
102
|
upload_to_vcs_release = true
|
|
93
103
|
|
|
94
104
|
[tool.semantic_release.changelog]
|
|
95
|
-
changelog_file = "CHANGELOG.md"
|
|
105
|
+
default_templates = { changelog_file = "CHANGELOG.md" }
|
|
96
106
|
exclude_commit_patterns = [
|
|
97
107
|
'''chore(?:\([^)]*?\))?: .+''',
|
|
98
108
|
'''ci(?:\([^)]*?\))?: .+''',
|
|
@@ -107,7 +117,7 @@ match = "(main|master)"
|
|
|
107
117
|
prerelease = false
|
|
108
118
|
|
|
109
119
|
[tool.semantic_release.branches."step"]
|
|
110
|
-
match = "(build|chore|ci|docs|feat|fix|perf|style|refactor|
|
|
120
|
+
match = "(build|chore|ci|docs|feat|fix|perf|style|refactor|tests?)"
|
|
111
121
|
prerelease = true
|
|
112
122
|
prerelease_token = "alpha"
|
|
113
123
|
|
|
@@ -239,7 +239,7 @@ class BookReference:
|
|
|
239
239
|
return False
|
|
240
240
|
|
|
241
241
|
def __hash__(self) -> int:
|
|
242
|
-
return hash((self.ref, tuple(self.references)))
|
|
242
|
+
return hash((self.ref, tuple(sorted(self.references, key=hash))))
|
|
243
243
|
|
|
244
244
|
def __repr__(self) -> str:
|
|
245
245
|
return f'<BookReference ref={self.ref}, targets={len(self.references)}>'
|
|
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
|
{py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-1.xml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-kebab-case-1.xml
RENAMED
|
File without changes
|
{py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-kebab-case.json
RENAMED
|
File without changes
|
{py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-snake-case-1.xml
RENAMED
|
File without changes
|
{py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-snake-case.json
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
|