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.
Files changed (64) hide show
  1. {py_serializable-2.1.0 → py_serializable-2.2.0}/CHANGELOG.md +116 -97
  2. {py_serializable-2.1.0 → py_serializable-2.2.0}/PKG-INFO +6 -2
  3. {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/conf.py +1 -1
  4. py_serializable-2.2.0/docs/requirements.txt +4 -0
  5. {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/__init__.py +1 -1
  6. {py_serializable-2.1.0 → py_serializable-2.2.0}/pyproject.toml +17 -7
  7. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/model.py +1 -1
  8. py_serializable-2.1.0/docs/requirements.txt +0 -5
  9. {py_serializable-2.1.0 → py_serializable-2.2.0}/LICENSE +0 -0
  10. {py_serializable-2.1.0 → py_serializable-2.2.0}/README.md +0 -0
  11. {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/Makefile +0 -0
  12. {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/changelog.rst +0 -0
  13. {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/customising-structure.rst +0 -0
  14. {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/examples.rst +0 -0
  15. {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/formatters.rst +0 -0
  16. {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/getting-started.rst +0 -0
  17. {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/index.rst +0 -0
  18. {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/make.bat +0 -0
  19. {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/migration.rst +0 -0
  20. {py_serializable-2.1.0 → py_serializable-2.2.0}/docs/support.rst +0 -0
  21. {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/formatters.py +0 -0
  22. {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/helpers.py +0 -0
  23. {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/json.py +0 -0
  24. {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/py.typed +0 -0
  25. {py_serializable-2.1.0 → py_serializable-2.2.0}/py_serializable/xml.py +0 -0
  26. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/__init__.py +0 -0
  27. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/base.py +0 -0
  28. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-bookedition-none.json +0 -0
  29. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-bookedition-none.xml +0 -0
  30. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-1-v1.xml +0 -0
  31. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-1-v2.xml +0 -0
  32. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-1-v3.xml +0 -0
  33. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-1-v4.xml +0 -0
  34. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-1.xml +0 -0
  35. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-references.json +0 -0
  36. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-v2.json +0 -0
  37. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-v3.json +0 -0
  38. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-v4.json +0 -0
  39. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-with-ignored.json +0 -0
  40. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case-with-ignored.xml +0 -0
  41. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-camel-case.json +0 -0
  42. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-defaultNS-isset-v4.xml +0 -0
  43. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-defaultNS-isset.SNAPSHOT.xml +0 -0
  44. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-defaultNS-mixed-v4.xml +0 -0
  45. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-defaultNS-unset-v4.xml +0 -0
  46. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-defaultNS-unset.SNAPSHOT.xml +0 -0
  47. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-kebab-case-1-v2.xml +0 -0
  48. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-kebab-case-1.xml +0 -0
  49. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-kebab-case.json +0 -0
  50. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-snake-case-1.xml +0 -0
  51. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project-snake-case.json +0 -0
  52. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_ignored_attributes.xml +0 -0
  53. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_ignored_elements.xml +0 -0
  54. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_ignored_properties.json +0 -0
  55. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_unignored_attributes.xml +0 -0
  56. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_unignored_elements.xml +0 -0
  57. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unknown_unignored_properties.json +0 -0
  58. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/fixtures/the-phoenix-project_unnormalized-input_v4.xml +0 -0
  59. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/test_formatters.py +0 -0
  60. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/test_helpers.py +0 -0
  61. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/test_json.py +0 -0
  62. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/test_oml.py +0 -0
  63. {py_serializable-2.1.0 → py_serializable-2.2.0}/tests/test_oml_serializable_property.py +0 -0
  64. {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.3
1
+ Metadata-Version: 2.4
2
2
  Name: py-serializable
3
- Version: 2.1.0
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
@@ -24,7 +24,7 @@ author = 'Paul Horton'
24
24
 
25
25
  # The full version, including alpha/beta/rc tags
26
26
  # !! version is managed by semantic_release
27
- release = "2.1.0"
27
+ release = "2.2.0"
28
28
 
29
29
  # -- General configuration ---------------------------------------------------
30
30
 
@@ -0,0 +1,4 @@
1
+ m2r2>=0.3.2
2
+ sphinx>=8.1.3,<9
3
+ sphinx-autoapi>=3.8.1,<4
4
+ sphinx-rtd-theme>=3.1.0,<4
@@ -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.1.0'
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.1.0"
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.20.0", python=">=3.9" }
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
- commit_author = "semantic-release <semantic-release>"
81
- commit_message = "chore(release): {version}\n\nAutomatically generated by python-semantic-release\n\nSigned-off-by: semantic-release <semantic-release>"
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 = "pip install poetry && poetry build"
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|test)"
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)}>'
@@ -1,5 +0,0 @@
1
-
2
- m2r2>=0.3.2
3
- sphinx>=7.2.6,<9
4
- sphinx-autoapi>=3.0.0,<4
5
- sphinx-rtd-theme>=2.0.0,<3
File without changes