nti.externalization 3.0.0__tar.gz → 3.1.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 (169) hide show
  1. nti_externalization-3.1.0/.readthedocs.yml +34 -0
  2. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/CHANGES.rst +12 -0
  3. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/MANIFEST.in +1 -0
  4. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/PKG-INFO +13 -1
  5. nti_externalization-3.1.0/docs/api/datetime.rst +5 -0
  6. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/basics.rst +5 -3
  7. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/pyproject.toml +47 -1
  8. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/setup.py +1 -1
  9. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/__init__.py +7 -0
  10. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/_base_interfaces.c +490 -413
  11. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/_base_interfaces.py +4 -8
  12. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/_compat.py +13 -7
  13. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/_interface_cache.c +129 -128
  14. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/_interface_cache.py +4 -8
  15. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/_threadlocal.py +11 -10
  16. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/autopackage.py +8 -9
  17. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/configure.zcml +8 -8
  18. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/datastructures.c +2311 -2137
  19. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/datastructures.py +29 -28
  20. nti_externalization-3.0.0/src/nti/externalization/datetime.py → nti_externalization-3.1.0/src/nti/externalization/datetime_ext.py +1 -6
  21. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/dublincore.py +2 -6
  22. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/extension_points.py +0 -4
  23. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/__init__.py +12 -21
  24. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/_externalizer.pxd +1 -2
  25. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/_standard_fields.pxd +2 -2
  26. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/dictionary.c +682 -857
  27. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/dictionary.py +29 -51
  28. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/externalizer.c +958 -932
  29. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/externalizer.py +41 -40
  30. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/fields.c +302 -364
  31. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/fields.py +0 -9
  32. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/replacers.py +4 -5
  33. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/standard_fields.c +358 -358
  34. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/standard_fields.py +1 -4
  35. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/tests/test_externalizer.py +3 -5
  36. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/factory.py +5 -5
  37. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/integer_strings.py +3 -10
  38. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/interfaces.py +10 -13
  39. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/__init__.py +0 -4
  40. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/_externals.pxd +2 -2
  41. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/_factories.pxd +2 -2
  42. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/_fields.pxd +2 -4
  43. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/_legacy_factories.pxd +1 -1
  44. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/_updater.pxd +12 -10
  45. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/events.c +594 -557
  46. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/events.py +11 -11
  47. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/externals.c +366 -466
  48. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/externals.py +2 -17
  49. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/factories.c +786 -873
  50. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/factories.py +14 -20
  51. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/fields.c +1419 -1179
  52. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/fields.py +28 -40
  53. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/legacy_factories.c +1056 -835
  54. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/legacy_factories.py +14 -20
  55. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/tests/test_externals_wo_class_mimetype.py +10 -15
  56. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/tests/test_fields.py +7 -13
  57. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/tests/test_updater.py +5 -10
  58. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/updater.c +1968 -1780
  59. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/updater.py +53 -53
  60. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/numbers.py +0 -4
  61. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/oids.py +6 -8
  62. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/persistence.py +3 -7
  63. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/proxy.py +3 -4
  64. nti_externalization-3.1.0/src/nti/externalization/py.typed +0 -0
  65. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/representation.py +85 -32
  66. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/singleton.c +198 -238
  67. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/singleton.py +10 -13
  68. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/testing.py +0 -4
  69. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/__init__.py +4 -8
  70. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/__init__.py +0 -3
  71. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/__main__.py +2 -4
  72. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/bm_simple_iface.py +7 -12
  73. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/bm_simple_iface_list.py +9 -20
  74. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/bm_simple_registered_class.py +3 -5
  75. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/bm_singleton.py +2 -4
  76. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/bm_user_profile.py +0 -5
  77. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/bootstrapinterfaces.py +0 -5
  78. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/interfaces.py +3 -8
  79. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/objects.py +2 -6
  80. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/profileinterfaces.py +5 -9
  81. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test__compat.py +0 -5
  82. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_autopackage.py +3 -7
  83. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_datastructures.py +7 -11
  84. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_datetime.py +8 -11
  85. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_docs.py +1 -5
  86. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_dublincore.py +5 -9
  87. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_externalization.py +37 -38
  88. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_factory.py +2 -7
  89. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_integer_strings.py +0 -4
  90. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_interfaces.py +2 -4
  91. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_internalization.py +12 -17
  92. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_oids.py +4 -8
  93. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_persistence.py +11 -15
  94. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_proxy.py +0 -4
  95. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_singleton.py +1 -6
  96. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_testing.py +0 -4
  97. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_zcml.py +5 -7
  98. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/zcml.py +7 -6
  99. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti.externalization.egg-info/PKG-INFO +13 -1
  100. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti.externalization.egg-info/SOURCES.txt +3 -1
  101. nti_externalization-3.0.0/docs/api/datetime.rst +0 -5
  102. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/.coveragerc +0 -0
  103. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/.github/dependabot.yml +0 -0
  104. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/.github/workflows/tests.yml +0 -0
  105. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/.isort.cfg +0 -0
  106. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/.pylintrc +0 -0
  107. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/AUTHORS +0 -0
  108. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/COPYRIGHT.txt +0 -0
  109. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/INSTALL +0 -0
  110. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/LICENSE +0 -0
  111. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/README.rst +0 -0
  112. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/doc-requirements.txt +0 -0
  113. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/Makefile +0 -0
  114. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/ADVANCED.rst +0 -0
  115. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/BASICS.rst +0 -0
  116. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/HELPERS.rst +0 -0
  117. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/STRINGS.rst +0 -0
  118. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/ZODB.rst +0 -0
  119. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/autopackage.rst +0 -0
  120. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/datastructures.rst +0 -0
  121. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/dublincore.rst +0 -0
  122. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/extension_points.rst +0 -0
  123. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/externalization.rst +0 -0
  124. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/factory.rst +0 -0
  125. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/index.rst +0 -0
  126. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/integer_strings.rst +0 -0
  127. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/interfaces.rst +0 -0
  128. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/internalization.rst +0 -0
  129. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/oids.rst +0 -0
  130. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/persistence.rst +0 -0
  131. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/proxy.rst +0 -0
  132. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/representation.rst +0 -0
  133. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/singleton.rst +0 -0
  134. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/api/zcml.rst +0 -0
  135. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/changelog.rst +0 -0
  136. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/conf.py +0 -0
  137. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/externalization.rst +0 -0
  138. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/glossary.rst +0 -0
  139. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/index.rst +0 -0
  140. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/internalization.rst +0 -0
  141. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/schemas.rst +0 -0
  142. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/docs/special_attributes.rst +0 -0
  143. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/make-manylinux +0 -0
  144. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/requirements.txt +0 -0
  145. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/setup.cfg +0 -0
  146. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/__init__.py +0 -0
  147. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/__base_interfaces.pxd +0 -0
  148. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/__interface_cache.pxd +0 -0
  149. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/_datastructures.pxd +0 -0
  150. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/_singleton.pxd +0 -0
  151. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/_decorate.pxd +0 -0
  152. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/_dictionary.pxd +0 -0
  153. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/_fields.pxd +0 -0
  154. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/decorate.c +0 -0
  155. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/decorate.py +0 -0
  156. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/externalization/tests/__init__.py +0 -0
  157. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/_events.pxd +0 -0
  158. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/internalization/tests/__init__.py +0 -0
  159. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/meta.zcml +0 -0
  160. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/configure.zcml +0 -0
  161. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/benchmarks/profileconfigure.zcml +0 -0
  162. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_benchmarks.py +0 -0
  163. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti/externalization/tests/test_representation.py +0 -0
  164. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti.externalization.egg-info/dependency_links.txt +0 -0
  165. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti.externalization.egg-info/entry_points.txt +0 -0
  166. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti.externalization.egg-info/requires.txt +0 -0
  167. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti.externalization.egg-info/top_level.txt +0 -0
  168. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/src/nti.externalization.egg-info/zip-safe +0 -0
  169. {nti_externalization-3.0.0 → nti_externalization-3.1.0}/tox.ini +0 -0
@@ -0,0 +1,34 @@
1
+ # .readthedocs.yml
2
+ # Read the Docs configuration file
3
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4
+
5
+ # Some things can only be configured on the RTD dashboard.
6
+ # Those that we may have changed from the default include:
7
+
8
+ # Analytics code:
9
+ # Show Version Warning: False
10
+ # Single Version: True
11
+
12
+ # Required
13
+ version: 2
14
+
15
+ # Build documentation in the docs/ directory with Sphinx
16
+ sphinx:
17
+ builder: html
18
+ configuration: docs/conf.py
19
+
20
+ # Set the version of Python and requirements required to build your
21
+ # docs
22
+
23
+ build:
24
+ # os is required for some reason
25
+ os: ubuntu-22.04
26
+ tools:
27
+ python: "3.11"
28
+
29
+ python:
30
+ install:
31
+ - method: pip
32
+ path: .
33
+ extra_requirements:
34
+ - docs
@@ -3,6 +3,18 @@
3
3
  =========
4
4
 
5
5
 
6
+ 3.1.0 (2026-05-08)
7
+ ==================
8
+
9
+ - Document the ``to_json_representation`` variants and add one
10
+ that guarantees sorted keys. Make the "fast" variant not dependent
11
+ on second-chance externalization.
12
+ - Renamed the "datetime" module to "datetime_ext" to avoid conflicts
13
+ with the standard library. Backwards compatibility shims are in place.
14
+ - Remove some long-deprecated parameters that were typically
15
+ undocumented.
16
+ - Introduce some basic type annotations.
17
+
6
18
  3.0.0 (2026-05-07)
7
19
  ==================
8
20
 
@@ -11,6 +11,7 @@ include tox.ini
11
11
  include *.txt
12
12
  include .isort.cfg
13
13
  include pyproject.toml
14
+ include .readthedocs.yml
14
15
  include .pylintrc
15
16
  include make-manylinux
16
17
  exclude .nti_cover_package
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nti.externalization
3
- Version: 3.0.0
3
+ Version: 3.1.0
4
4
  Summary: NTI Externalization
5
5
  Home-page: https://github.com/OpenNTI/nti.externalization
6
6
  Author: Jason Madden
@@ -105,6 +105,18 @@ Documentation is hosted at https://ntiexternalization.readthedocs.io/
105
105
  =========
106
106
 
107
107
 
108
+ 3.1.0 (2026-05-08)
109
+ ==================
110
+
111
+ - Document the ``to_json_representation`` variants and add one
112
+ that guarantees sorted keys. Make the "fast" variant not dependent
113
+ on second-chance externalization.
114
+ - Renamed the "datetime" module to "datetime_ext" to avoid conflicts
115
+ with the standard library. Backwards compatibility shims are in place.
116
+ - Remove some long-deprecated parameters that were typically
117
+ undocumented.
118
+ - Introduce some basic type annotations.
119
+
108
120
  3.0.0 (2026-05-07)
109
121
  ==================
110
122
 
@@ -0,0 +1,5 @@
1
+ ==========
2
+ Datetime
3
+ ==========
4
+
5
+ .. automodule:: nti.externalization.datetime_ext
@@ -556,16 +556,18 @@ keyword arguments to change that:
556
556
  >>> as_bytes = to_external_representation(address, EXT_REPR_JSON, sort_keys=False, as_str=False)
557
557
  >>> assert isinstance(as_bytes, bytes)
558
558
 
559
- There are also some convenience functions, but note that these do not
560
- use the registered utility, they directly invoke the default utility:
559
+ There are also some convenience functions. The "fast" and "sorted"
560
+ variants bypass utility lookup and directly use the default ``JsonRepresenter``.
561
561
 
562
562
  >>> from nti.externalization import to_json_representation
563
563
  >>> from nti.externalization import to_json_representation_fast
564
+ >>> from nti.externalization import to_json_representation_sorted
564
565
  >>> to_json_representation(address)
565
566
  '{"Class":"Address",...
566
567
  >>> as_bytes = to_json_representation_fast(address)
567
568
  >>> assert isinstance(as_bytes, bytes)
568
-
569
+ >>> to_json_representation_sorted(address)
570
+ '{"Class":"Address","city":"Cupertino",...
569
571
 
570
572
  Loading from a string doesn't have a shortcut, we need to use the
571
573
  utility:
@@ -17,8 +17,54 @@ requires = [
17
17
  # failing in Python 2 (https://travis-ci.org/github/gevent/gevent/jobs/683782800);
18
18
  # This was fixed in 3.0a5 (https://github.com/cython/cython/issues/3578)
19
19
  # 3.0a6 fixes an issue cythonizing source on 32-bit platforms
20
- "Cython >= 3.2.1",
20
+ "Cython >= 3.2.4",
21
21
  ]
22
22
 
23
23
  [tool.check-manifest]
24
24
  ignore = ["*.c"]
25
+
26
+
27
+ [tool.mypy]
28
+ # Must be present for mypy to read this file.
29
+ follow_imports = "normal"
30
+ check_untyped_defs = true
31
+ allow_redefinition = true
32
+ disable_error_code = [
33
+ "method-assign"
34
+ ]
35
+ # Our tests are in terrible shape
36
+ # and will need some work to be clean
37
+ exclude = [
38
+ 'test_.*\.py',
39
+ ]
40
+
41
+ [[tool.mypy.overrides]]
42
+ # third-party untyped code
43
+ module = [
44
+ "ZODB.*",
45
+ "zope.*",
46
+ "persistent.*",
47
+ "cpuinfo",
48
+ "nti.*",
49
+ "botocore.*",
50
+ "fsspec.*",
51
+ "transaction",
52
+ "grpc",
53
+ "grpc_health.*",
54
+ "google.type.*",
55
+ "zc.*",
56
+ "z3c.*",
57
+ "netaddr.*",
58
+ "dnslib",
59
+ "cytoolz.*",
60
+ "toolz.*",
61
+ "boto3.*",
62
+ "pg8000",
63
+ "urllib3.*",
64
+ "indexed_gzip",
65
+ "pyperf",
66
+ "isodate",
67
+ "vmprof"
68
+
69
+ ]
70
+ ignore_missing_imports = true
@@ -147,7 +147,7 @@ if not PYPY:
147
147
 
148
148
  setup(
149
149
  name='nti.externalization',
150
- version='3.0.0',
150
+ version='3.1.0',
151
151
  author='Jason Madden',
152
152
  author_email='jason@seecoresoftware.com',
153
153
  description="NTI Externalization",
@@ -10,6 +10,7 @@ __all__ = [
10
10
  'update_from_external_object',
11
11
  'to_json_representation_fast',
12
12
  'to_json_representation',
13
+ 'to_json_representation_sorted',
13
14
  ]
14
15
 
15
16
  from nti.externalization.externalization import to_external_object
@@ -17,6 +18,12 @@ from nti.externalization.externalization import to_standard_external_dictionary
17
18
 
18
19
  from nti.externalization.representation import to_external_representation
19
20
  from nti.externalization.representation import to_json_representation_fast
21
+ from nti.externalization.representation import to_json_representation_sorted
20
22
  from nti.externalization.representation import to_json_representation
21
23
  from nti.externalization.internalization import new_from_external_object
22
24
  from nti.externalization.internalization import update_from_external_object
25
+
26
+ # BWC hacks
27
+ import sys
28
+ import nti.externalization.datetime_ext as datetime
29
+ sys.modules['nti.externalization.datetime'] = datetime