nti.externalization 3.1.0__tar.gz → 3.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 (168) hide show
  1. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/.github/workflows/tests.yml +25 -7
  2. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/.readthedocs.yml +2 -1
  3. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/CHANGES.rst +14 -0
  4. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/PKG-INFO +19 -4
  5. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/basics.rst +20 -3
  6. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/conf.py +1 -1
  7. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/externalization.rst +2 -2
  8. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/make-manylinux +3 -3
  9. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/setup.py +8 -4
  10. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/_base_interfaces.c +2 -2
  11. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/_interface_cache.c +2 -2
  12. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/datastructures.c +2 -2
  13. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/decorate.c +2 -2
  14. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/dictionary.c +2 -2
  15. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/externalizer.c +2 -2
  16. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/fields.c +2 -2
  17. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/standard_fields.c +2 -2
  18. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/events.c +2 -2
  19. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/externals.c +2 -2
  20. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/factories.c +2 -2
  21. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/fields.c +2 -2
  22. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/legacy_factories.c +2 -2
  23. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/updater.c +2 -2
  24. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/representation.py +66 -5
  25. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/singleton.c +2 -2
  26. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_docs.py +7 -1
  27. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_externalization.py +4 -0
  28. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_representation.py +9 -0
  29. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti.externalization.egg-info/PKG-INFO +19 -4
  30. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti.externalization.egg-info/requires.txt +3 -1
  31. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/tox.ini +20 -2
  32. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/.coveragerc +0 -0
  33. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/.github/dependabot.yml +0 -0
  34. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/.isort.cfg +0 -0
  35. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/.pylintrc +0 -0
  36. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/AUTHORS +0 -0
  37. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/COPYRIGHT.txt +0 -0
  38. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/INSTALL +0 -0
  39. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/LICENSE +0 -0
  40. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/MANIFEST.in +0 -0
  41. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/README.rst +0 -0
  42. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/doc-requirements.txt +0 -0
  43. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/Makefile +0 -0
  44. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/ADVANCED.rst +0 -0
  45. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/BASICS.rst +0 -0
  46. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/HELPERS.rst +0 -0
  47. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/STRINGS.rst +0 -0
  48. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/ZODB.rst +0 -0
  49. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/autopackage.rst +0 -0
  50. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/datastructures.rst +0 -0
  51. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/datetime.rst +0 -0
  52. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/dublincore.rst +0 -0
  53. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/extension_points.rst +0 -0
  54. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/externalization.rst +0 -0
  55. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/factory.rst +0 -0
  56. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/index.rst +0 -0
  57. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/integer_strings.rst +0 -0
  58. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/interfaces.rst +0 -0
  59. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/internalization.rst +0 -0
  60. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/oids.rst +0 -0
  61. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/persistence.rst +0 -0
  62. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/proxy.rst +0 -0
  63. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/representation.rst +0 -0
  64. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/singleton.rst +0 -0
  65. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/api/zcml.rst +0 -0
  66. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/changelog.rst +0 -0
  67. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/glossary.rst +0 -0
  68. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/index.rst +0 -0
  69. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/internalization.rst +0 -0
  70. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/schemas.rst +0 -0
  71. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/docs/special_attributes.rst +0 -0
  72. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/pyproject.toml +0 -0
  73. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/requirements.txt +0 -0
  74. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/setup.cfg +0 -0
  75. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/__init__.py +0 -0
  76. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/__base_interfaces.pxd +0 -0
  77. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/__init__.py +0 -0
  78. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/__interface_cache.pxd +0 -0
  79. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/_base_interfaces.py +0 -0
  80. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/_compat.py +0 -0
  81. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/_datastructures.pxd +0 -0
  82. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/_interface_cache.py +0 -0
  83. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/_singleton.pxd +0 -0
  84. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/_threadlocal.py +0 -0
  85. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/autopackage.py +0 -0
  86. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/configure.zcml +0 -0
  87. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/datastructures.py +0 -0
  88. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/datetime_ext.py +0 -0
  89. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/dublincore.py +0 -0
  90. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/extension_points.py +0 -0
  91. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/__init__.py +0 -0
  92. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/_decorate.pxd +0 -0
  93. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/_dictionary.pxd +0 -0
  94. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/_externalizer.pxd +0 -0
  95. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/_fields.pxd +0 -0
  96. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/_standard_fields.pxd +0 -0
  97. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/decorate.py +0 -0
  98. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/dictionary.py +0 -0
  99. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/externalizer.py +0 -0
  100. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/fields.py +0 -0
  101. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/replacers.py +0 -0
  102. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/standard_fields.py +0 -0
  103. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/tests/__init__.py +0 -0
  104. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/externalization/tests/test_externalizer.py +0 -0
  105. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/factory.py +0 -0
  106. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/integer_strings.py +0 -0
  107. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/interfaces.py +0 -0
  108. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/__init__.py +0 -0
  109. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/_events.pxd +0 -0
  110. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/_externals.pxd +0 -0
  111. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/_factories.pxd +0 -0
  112. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/_fields.pxd +0 -0
  113. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/_legacy_factories.pxd +0 -0
  114. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/_updater.pxd +0 -0
  115. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/events.py +0 -0
  116. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/externals.py +0 -0
  117. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/factories.py +0 -0
  118. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/fields.py +0 -0
  119. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/legacy_factories.py +0 -0
  120. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/tests/__init__.py +0 -0
  121. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/tests/test_externals_wo_class_mimetype.py +0 -0
  122. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/tests/test_fields.py +0 -0
  123. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/tests/test_updater.py +0 -0
  124. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/internalization/updater.py +0 -0
  125. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/meta.zcml +0 -0
  126. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/numbers.py +0 -0
  127. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/oids.py +0 -0
  128. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/persistence.py +0 -0
  129. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/proxy.py +0 -0
  130. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/py.typed +0 -0
  131. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/singleton.py +0 -0
  132. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/testing.py +0 -0
  133. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/__init__.py +0 -0
  134. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/__init__.py +0 -0
  135. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/__main__.py +0 -0
  136. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/bm_simple_iface.py +0 -0
  137. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/bm_simple_iface_list.py +0 -0
  138. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/bm_simple_registered_class.py +0 -0
  139. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/bm_singleton.py +0 -0
  140. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/bm_user_profile.py +0 -0
  141. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/bootstrapinterfaces.py +0 -0
  142. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/configure.zcml +0 -0
  143. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/interfaces.py +0 -0
  144. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/objects.py +0 -0
  145. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/profileconfigure.zcml +0 -0
  146. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/benchmarks/profileinterfaces.py +0 -0
  147. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test__compat.py +0 -0
  148. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_autopackage.py +0 -0
  149. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_benchmarks.py +0 -0
  150. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_datastructures.py +0 -0
  151. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_datetime.py +0 -0
  152. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_dublincore.py +0 -0
  153. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_factory.py +0 -0
  154. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_integer_strings.py +0 -0
  155. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_interfaces.py +0 -0
  156. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_internalization.py +0 -0
  157. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_oids.py +0 -0
  158. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_persistence.py +0 -0
  159. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_proxy.py +0 -0
  160. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_singleton.py +0 -0
  161. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_testing.py +0 -0
  162. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/tests/test_zcml.py +0 -0
  163. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti/externalization/zcml.py +0 -0
  164. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti.externalization.egg-info/SOURCES.txt +0 -0
  165. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti.externalization.egg-info/dependency_links.txt +0 -0
  166. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti.externalization.egg-info/entry_points.txt +0 -0
  167. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti.externalization.egg-info/top_level.txt +0 -0
  168. {nti_externalization-3.1.0 → nti_externalization-3.2.0}/src/nti.externalization.egg-info/zip-safe +0 -0
@@ -18,11 +18,18 @@ jobs:
18
18
  - "3.12"
19
19
  - "3.13"
20
20
  - "3.14"
21
+ - "3.15-dev"
21
22
  extras:
22
- - "[test,docs,zodb]"
23
- # include:
24
- # - python-version: "3.13"
25
- # extras: "[test,docs,gevent,pyramid]"
23
+ - "[test,docs,zodb,orjson]"
24
+ include:
25
+ # orjson 3.11.9 doesn't currently support
26
+ # being built for free-threaded python, so if we wanted
27
+ # to test there, we'd need to substitute it, most likely by
28
+ # moving it to an extra.
29
+ - python-version: "3.14t"
30
+ extras: "[test,docs,zodb]"
31
+ - python-version: "3.15t-dev"
32
+ extras: "[test,docs,zodb]"
26
33
 
27
34
  runs-on: ubuntu-latest
28
35
  steps:
@@ -38,13 +45,20 @@ jobs:
38
45
  python -m pip install -U pip setuptools wheel
39
46
  python -m pip install -U coverage
40
47
  python -m pip install -v -U -e ".${{ matrix.extras }}"
48
+ - name: Disable GIL
49
+ if: ${{endsWith(matrix.python-version, 't') || endsWith(matrix.python-version, 't-dev')}}
50
+ # zope.hookable 8.2/zope.proxy 7.2 currently enables the gil
51
+ run: |
52
+ echo PYTHON_GIL=0 >> $GITHUB_ENV
41
53
  - name: Test
42
54
  run: |
43
55
  python -m coverage run -m zope.testrunner --test-path=src --auto-color --auto-progress
44
56
  PURE_PYTHON=1 coverage run -a -m zope.testrunner --test-path=src --auto-color --auto-progress
57
+ - name: Docs
58
+ if: matrix.python-version == '3.14'
59
+ # Requires orjson
60
+ run: |
45
61
  coverage run -a -m sphinx -b doctest -d docs/_build/doctrees docs docs/_build/doctests
46
- coverage combine || true
47
- coverage report -i || true
48
62
  - name: Lint
49
63
  if: matrix.python-version == '3.14'
50
64
  run: |
@@ -54,6 +68,10 @@ jobs:
54
68
  run: |
55
69
  python -m pip uninstall -y ZODB zope.dublincore persistent zope.container BTrees
56
70
  PURE_PYTHON=1 coverage run -a -m zope.testrunner --test-path=src --auto-color --auto-progress
71
+ - name: Combine Coverage
72
+ run: |
73
+ coverage combine || true
74
+ coverage report -i || true
57
75
  - name: Submit to Coveralls
58
76
  uses: coverallsapp/github-action@v2
59
77
  with:
@@ -75,7 +93,7 @@ jobs:
75
93
  # We use a regular Python matrix entry to share as much code as possible.
76
94
  strategy:
77
95
  matrix:
78
- python-version: [3.12]
96
+ python-version: [3.14]
79
97
  image:
80
98
  - manylinux_2_28_x86_64
81
99
  - manylinux_2_28_aarch64
@@ -24,7 +24,7 @@ build:
24
24
  # os is required for some reason
25
25
  os: ubuntu-22.04
26
26
  tools:
27
- python: "3.11"
27
+ python: "3.14"
28
28
 
29
29
  python:
30
30
  install:
@@ -32,3 +32,4 @@ python:
32
32
  path: .
33
33
  extra_requirements:
34
34
  - docs
35
+ - orjson
@@ -3,6 +3,20 @@
3
3
  =========
4
4
 
5
5
 
6
+ 3.2.0 (2026-05-19)
7
+ ==================
8
+
9
+ - Drop support for Python 3.10.
10
+ - Add support for Python 3.15.
11
+ - Move the ``orjson`` dependency to the ``orjson`` extra
12
+ for compatibility with free-threaded Python. If you're using regular
13
+ Python, it is highly recommended to install this extra.
14
+ - Add support for free-threaded CPython. However, note that some
15
+ dependencies, most notably orjson, cannot
16
+ currently be installed on free-threaded CPython, and other
17
+ dependencies may currently require enabling the GIL.
18
+
19
+
6
20
  3.1.0 (2026-05-08)
7
21
  ==================
8
22
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nti.externalization
3
- Version: 3.1.0
3
+ Version: 3.2.0
4
4
  Summary: NTI Externalization
5
5
  Home-page: https://github.com/OpenNTI/nti.externalization
6
6
  Author: Jason Madden
@@ -12,20 +12,19 @@ Classifier: Natural Language :: English
12
12
  Classifier: Operating System :: OS Independent
13
13
  Classifier: Programming Language :: Python :: 3
14
14
  Classifier: Programming Language :: Python :: 3 :: Only
15
- Classifier: Programming Language :: Python :: 3.10
16
15
  Classifier: Programming Language :: Python :: 3.11
17
16
  Classifier: Programming Language :: Python :: 3.12
18
17
  Classifier: Programming Language :: Python :: 3.13
19
18
  Classifier: Programming Language :: Python :: 3.14
19
+ Classifier: Programming Language :: Python :: 3.15
20
20
  Classifier: Programming Language :: Python :: Implementation :: CPython
21
- Requires-Python: >=3.10
21
+ Requires-Python: >=3.11
22
22
  License-File: LICENSE
23
23
  License-File: AUTHORS
24
24
  Requires-Dist: nti.schema>=1.17.0
25
25
  Requires-Dist: PyYAML>=5.1
26
26
  Requires-Dist: isodate
27
27
  Requires-Dist: pytz
28
- Requires-Dist: orjson>=3.11.9
29
28
  Requires-Dist: transaction
30
29
  Requires-Dist: zope.component>=4.6.1
31
30
  Requires-Dist: zope.configuration>=4.4.0
@@ -58,6 +57,8 @@ Requires-Dist: repoze.sphinx.autointerface; extra == "docs"
58
57
  Requires-Dist: sphinx_rtd_theme; extra == "docs"
59
58
  Provides-Extra: benchmarks
60
59
  Requires-Dist: pyperf; extra == "benchmarks"
60
+ Provides-Extra: orjson
61
+ Requires-Dist: orjson>=3.11.9; extra == "orjson"
61
62
  Dynamic: author
62
63
  Dynamic: author-email
63
64
  Dynamic: classifier
@@ -105,6 +106,20 @@ Documentation is hosted at https://ntiexternalization.readthedocs.io/
105
106
  =========
106
107
 
107
108
 
109
+ 3.2.0 (2026-05-19)
110
+ ==================
111
+
112
+ - Drop support for Python 3.10.
113
+ - Add support for Python 3.15.
114
+ - Move the ``orjson`` dependency to the ``orjson`` extra
115
+ for compatibility with free-threaded Python. If you're using regular
116
+ Python, it is highly recommended to install this extra.
117
+ - Add support for free-threaded CPython. However, note that some
118
+ dependencies, most notably orjson, cannot
119
+ currently be installed on free-threaded CPython, and other
120
+ dependencies may currently require enabling the GIL.
121
+
122
+
108
123
  3.1.0 (2026-05-08)
109
124
  ==================
110
125
 
@@ -60,6 +60,23 @@ concerns should be kept as separated as possible from our model
60
60
  objects. Ideally, we should be able to use third-party objects that we
61
61
  have no control over seamlessly in external and internal data.
62
62
 
63
+ Installation
64
+ ============
65
+
66
+ This package is installed from PyPI::
67
+
68
+ pip install nti.externalization[orjson,zodb]
69
+
70
+ It has some extras:
71
+
72
+ orjson
73
+ Highly recommended for a faster dumping and loading experience. As
74
+ of at least orjson 3.11.9, however, this is incompatible with
75
+ free-threaded Python.
76
+ zodb
77
+ Optional; provides support for BTrees, persistent objects, intids, and
78
+ container proxies.
79
+
63
80
  Getting Started
64
81
  ===============
65
82
 
@@ -248,7 +265,7 @@ others:
248
265
 
249
266
  >>> internal.creator = u'sjohnson'
250
267
  >>> internal.createdTime = 123456
251
- >>> pprint(to_external_object(internal))
268
+ >>> pprint(to_external_object(internal), compact=True, indent=1)
252
269
  {'Class': 'ExternalObject',
253
270
  'CreatedTime': 123456,
254
271
  'Creator': 'sjohnson',
@@ -337,7 +354,7 @@ Now we can register and use it as before:
337
354
  ... postal_code=u'95014',
338
355
  ... country=u'USA')
339
356
  >>> external = to_external_object(address)
340
- >>> pprint(external)
357
+ >>> pprint(external, compact=True, indent=1)
341
358
  {'Class': 'Address',
342
359
  'city': 'Cupertino',
343
360
  'country': 'USA',
@@ -473,7 +490,7 @@ demonstrating that nested schemas and objects are possible.
473
490
  ... realname=u'Steve Jobs',
474
491
  ... )
475
492
  >>> external = to_external_object(user_profile)
476
- >>> pprint(external)
493
+ >>> pprint(external, compact=True, indent=1)
477
494
  {'Class': 'UserProfile',
478
495
  'MimeType': 'application/vnd.nextthought.benchmarks.userprofile',
479
496
  'addresses': {'home': {'Class': 'Address',
@@ -78,7 +78,7 @@ release = rqmt
78
78
  #
79
79
  # This is also used if you do content translation via gettext catalogs.
80
80
  # Usually you set "language" from the command line for these cases.
81
- language = None
81
+ language = 'en'
82
82
 
83
83
  # List of patterns, relative to source directory, that match files and
84
84
  # directories to ignore when looking for source files.
@@ -85,7 +85,7 @@ We'll register our adapter and externalize:
85
85
  >>> from zope import component
86
86
  >>> component.provideSubscriptionAdapter(PrivateAddressDecorator)
87
87
  >>> from pprint import pprint
88
- >>> pprint(to_external_object(home_address))
88
+ >>> pprint(to_external_object(home_address), compact=True, indent=1)
89
89
  {'Class': 'Address',
90
90
  'MimeType': 'application/vnd.nextthought.benchmarks.address',
91
91
  'country': 'USA',
@@ -118,7 +118,7 @@ look for a request):
118
118
  :pyversion: > 3.3
119
119
 
120
120
  >>> component.provideSubscriptionAdapter(LinkAddressDecorator)
121
- >>> pprint(to_external_object(home_address, request=Request()))
121
+ >>> pprint(to_external_object(home_address, request=Request()), compact=True, indent=1)
122
122
  {'Class': 'Address',
123
123
  'MimeType': 'application/vnd.nextthought.benchmarks.address',
124
124
  'country': 'USA',
@@ -13,7 +13,7 @@ export TRAVIS=true
13
13
  # know. The env var works for pip 20.
14
14
  export PIP_NO_PYTHON_VERSION_WARNING=1
15
15
  export PIP_NO_WARN_SCRIPT_LOCATION=1
16
-
16
+ export PIP_ROOT_USER_ACTION=ignore
17
17
 
18
18
  if [ -d /project ] && [ -d /opt/python ]; then
19
19
  # Running inside docker
@@ -44,9 +44,9 @@ if [ -d /project ] && [ -d /opt/python ]; then
44
44
  OPATH="$PATH"
45
45
  which auditwheel
46
46
  echo @@@@@@@@@@@@@@@@@@@@@@
47
- echo Will build /opt/python/cp{310,311,312,313,314}*
47
+ echo Will build /opt/python/cp{311,312,313,314,315}*
48
48
 
49
- for variant in `ls -d /opt/python/cp{314,313,310,311,312}*`; do
49
+ for variant in `ls -d /opt/python/cp{315,314,313,311,312}*`; do
50
50
 
51
51
  export PATH="$variant/bin:$OPATH"
52
52
  echo "Building $variant $(python --version)"
@@ -133,6 +133,7 @@ if not PYPY:
133
133
  'language_level': '3',
134
134
  'always_allow_keywords': False,
135
135
  'nonecheck': False,
136
+ 'freethreading_compatible': True,
136
137
  },
137
138
  )
138
139
  except ValueError:
@@ -147,7 +148,7 @@ if not PYPY:
147
148
 
148
149
  setup(
149
150
  name='nti.externalization',
150
- version='3.1.0',
151
+ version='3.2.0',
151
152
  author='Jason Madden',
152
153
  author_email='jason@seecoresoftware.com',
153
154
  description="NTI Externalization",
@@ -160,11 +161,11 @@ setup(
160
161
  'Operating System :: OS Independent',
161
162
  'Programming Language :: Python :: 3',
162
163
  'Programming Language :: Python :: 3 :: Only',
163
- 'Programming Language :: Python :: 3.10',
164
164
  'Programming Language :: Python :: 3.11',
165
165
  'Programming Language :: Python :: 3.12',
166
166
  'Programming Language :: Python :: 3.13',
167
167
  'Programming Language :: Python :: 3.14',
168
+ 'Programming Language :: Python :: 3.15',
168
169
  'Programming Language :: Python :: Implementation :: CPython',
169
170
  ],
170
171
  url="https://github.com/OpenNTI/nti.externalization",
@@ -179,7 +180,7 @@ setup(
179
180
  'PyYAML >= 5.1',
180
181
  'isodate',
181
182
  'pytz',
182
- 'orjson >= 3.11.9',
183
+
183
184
  'transaction',
184
185
  'zope.component >= 4.6.1',
185
186
  'zope.configuration >= 4.4.0',
@@ -212,7 +213,10 @@ setup(
212
213
  'benchmarks': [
213
214
  'pyperf',
214
215
  ],
216
+ 'orjson': [
217
+ 'orjson >= 3.11.9',
218
+ ]
215
219
  },
216
220
  entry_points=entry_points,
217
- python_requires=">=3.10",
221
+ python_requires=">=3.11",
218
222
  )
@@ -1144,7 +1144,7 @@ static int __Pyx_init_co_variables(void) {
1144
1144
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1145
1145
  #endif
1146
1146
  #else
1147
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1147
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1148
1148
  #endif
1149
1149
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1150
1150
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -8346,7 +8346,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec___base_interfaces(PyObject *__pyx_
8346
8346
  __pyx_m = __pyx_t_1;
8347
8347
  #endif
8348
8348
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
8349
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
8349
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
8350
8350
  #endif
8351
8351
  __pyx_mstate = __pyx_mstate_global;
8352
8352
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1144,7 +1144,7 @@ static int __Pyx_init_co_variables(void) {
1144
1144
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1145
1145
  #endif
1146
1146
  #else
1147
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1147
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1148
1148
  #endif
1149
1149
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1150
1150
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -4326,7 +4326,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec___interface_cache(PyObject *__pyx_
4326
4326
  __pyx_m = __pyx_t_1;
4327
4327
  #endif
4328
4328
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
4329
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
4329
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
4330
4330
  #endif
4331
4331
  __pyx_mstate = __pyx_mstate_global;
4332
4332
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1158,7 +1158,7 @@ static int __Pyx_init_co_variables(void) {
1158
1158
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1159
1159
  #endif
1160
1160
  #else
1161
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1161
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1162
1162
  #endif
1163
1163
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1164
1164
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -19892,7 +19892,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__datastructures(PyObject *__pyx_py
19892
19892
  __pyx_m = __pyx_t_1;
19893
19893
  #endif
19894
19894
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
19895
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
19895
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
19896
19896
  #endif
19897
19897
  __pyx_mstate = __pyx_mstate_global;
19898
19898
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1144,7 +1144,7 @@ static int __Pyx_init_co_variables(void) {
1144
1144
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1145
1145
  #endif
1146
1146
  #else
1147
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1147
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1148
1148
  #endif
1149
1149
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1150
1150
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -3702,7 +3702,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__decorate(PyObject *__pyx_pyinit_m
3702
3702
  __pyx_m = __pyx_t_1;
3703
3703
  #endif
3704
3704
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
3705
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
3705
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
3706
3706
  #endif
3707
3707
  __pyx_mstate = __pyx_mstate_global;
3708
3708
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1149,7 +1149,7 @@ static int __Pyx_init_co_variables(void) {
1149
1149
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1150
1150
  #endif
1151
1151
  #else
1152
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1152
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1153
1153
  #endif
1154
1154
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1155
1155
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -4796,7 +4796,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__dictionary(PyObject *__pyx_pyinit
4796
4796
  __pyx_m = __pyx_t_1;
4797
4797
  #endif
4798
4798
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
4799
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
4799
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
4800
4800
  #endif
4801
4801
  __pyx_mstate = __pyx_mstate_global;
4802
4802
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1149,7 +1149,7 @@ static int __Pyx_init_co_variables(void) {
1149
1149
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1150
1150
  #endif
1151
1151
  #else
1152
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1152
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1153
1153
  #endif
1154
1154
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1155
1155
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -8056,7 +8056,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__externalizer(PyObject *__pyx_pyin
8056
8056
  __pyx_m = __pyx_t_1;
8057
8057
  #endif
8058
8058
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
8059
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
8059
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
8060
8060
  #endif
8061
8061
  __pyx_mstate = __pyx_mstate_global;
8062
8062
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1149,7 +1149,7 @@ static int __Pyx_init_co_variables(void) {
1149
1149
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1150
1150
  #endif
1151
1151
  #else
1152
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1152
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1153
1153
  #endif
1154
1154
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1155
1155
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -3774,7 +3774,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__fields(PyObject *__pyx_pyinit_mod
3774
3774
  __pyx_m = __pyx_t_1;
3775
3775
  #endif
3776
3776
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
3777
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
3777
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
3778
3778
  #endif
3779
3779
  __pyx_mstate = __pyx_mstate_global;
3780
3780
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1152,7 +1152,7 @@ static int __Pyx_init_co_variables(void) {
1152
1152
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1153
1153
  #endif
1154
1154
  #else
1155
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1155
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1156
1156
  #endif
1157
1157
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1158
1158
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -5895,7 +5895,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__standard_fields(PyObject *__pyx_p
5895
5895
  __pyx_m = __pyx_t_1;
5896
5896
  #endif
5897
5897
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
5898
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
5898
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
5899
5899
  #endif
5900
5900
  __pyx_mstate = __pyx_mstate_global;
5901
5901
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1149,7 +1149,7 @@ static int __Pyx_init_co_variables(void) {
1149
1149
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1150
1150
  #endif
1151
1151
  #else
1152
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1152
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1153
1153
  #endif
1154
1154
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1155
1155
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -4773,7 +4773,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__events(PyObject *__pyx_pyinit_mod
4773
4773
  __pyx_m = __pyx_t_1;
4774
4774
  #endif
4775
4775
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
4776
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
4776
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
4777
4777
  #endif
4778
4778
  __pyx_mstate = __pyx_mstate_global;
4779
4779
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1144,7 +1144,7 @@ static int __Pyx_init_co_variables(void) {
1144
1144
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1145
1145
  #endif
1146
1146
  #else
1147
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1147
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1148
1148
  #endif
1149
1149
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1150
1150
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -3782,7 +3782,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__externals(PyObject *__pyx_pyinit_
3782
3782
  __pyx_m = __pyx_t_1;
3783
3783
  #endif
3784
3784
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
3785
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
3785
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
3786
3786
  #endif
3787
3787
  __pyx_mstate = __pyx_mstate_global;
3788
3788
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1144,7 +1144,7 @@ static int __Pyx_init_co_variables(void) {
1144
1144
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1145
1145
  #endif
1146
1146
  #else
1147
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1147
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1148
1148
  #endif
1149
1149
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1150
1150
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -4879,7 +4879,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__factories(PyObject *__pyx_pyinit_
4879
4879
  __pyx_m = __pyx_t_1;
4880
4880
  #endif
4881
4881
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
4882
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
4882
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
4883
4883
  #endif
4884
4884
  __pyx_mstate = __pyx_mstate_global;
4885
4885
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1144,7 +1144,7 @@ static int __Pyx_init_co_variables(void) {
1144
1144
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1145
1145
  #endif
1146
1146
  #else
1147
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1147
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1148
1148
  #endif
1149
1149
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1150
1150
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -7894,7 +7894,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__fields(PyObject *__pyx_pyinit_mod
7894
7894
  __pyx_m = __pyx_t_1;
7895
7895
  #endif
7896
7896
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
7897
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
7897
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
7898
7898
  #endif
7899
7899
  __pyx_mstate = __pyx_mstate_global;
7900
7900
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1144,7 +1144,7 @@ static int __Pyx_init_co_variables(void) {
1144
1144
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1145
1145
  #endif
1146
1146
  #else
1147
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1147
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1148
1148
  #endif
1149
1149
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1150
1150
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -4866,7 +4866,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__legacy_factories(PyObject *__pyx_
4866
4866
  __pyx_m = __pyx_t_1;
4867
4867
  #endif
4868
4868
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
4869
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
4869
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
4870
4870
  #endif
4871
4871
  __pyx_mstate = __pyx_mstate_global;
4872
4872
  CYTHON_UNUSED_VAR(__pyx_t_1);
@@ -1144,7 +1144,7 @@ static int __Pyx_init_co_variables(void) {
1144
1144
  #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1145
1145
  #endif
1146
1146
  #else
1147
- #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1147
+ #define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1148
1148
  #endif
1149
1149
  #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1150
1150
  #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
@@ -7571,7 +7571,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__updater(PyObject *__pyx_pyinit_mo
7571
7571
  __pyx_m = __pyx_t_1;
7572
7572
  #endif
7573
7573
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
7574
- PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
7574
+ PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
7575
7575
  #endif
7576
7576
  __pyx_mstate = __pyx_mstate_global;
7577
7577
  CYTHON_UNUSED_VAR(__pyx_t_1);