django-enum 2.2.3__tar.gz → 2.2.4__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 (230) hide show
  1. {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/debug.yml +3 -3
  2. {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/lint.yml +3 -3
  3. {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/release.yml +8 -8
  4. {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/scorecard.yml +2 -2
  5. {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/test.yml +38 -25
  6. {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/zizmor.yml +2 -2
  7. {django_enum-2.2.3 → django_enum-2.2.4}/CONTRIBUTING.md +49 -39
  8. {django_enum-2.2.3 → django_enum-2.2.4}/PKG-INFO +4 -2
  9. {django_enum-2.2.3 → django_enum-2.2.4}/SECURITY.md +1 -1
  10. django_enum-2.2.4/doc/source/_static/style.css +33 -0
  11. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/changelog.rst +7 -0
  12. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/conf.py +4 -1
  13. {django_enum-2.2.3 → django_enum-2.2.4}/justfile +8 -2
  14. {django_enum-2.2.3 → django_enum-2.2.4}/pyproject.toml +10 -5
  15. django_enum-2.2.4/src/django_enum/__init__.py +32 -0
  16. {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/choices.py +28 -0
  17. {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/fields.py +2 -2
  18. {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/query.py +1 -0
  19. {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/utils.py +2 -3
  20. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_1.py +2 -3
  21. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_10.py +2 -3
  22. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_2.py +2 -3
  23. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_3.py +2 -3
  24. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_4.py +2 -3
  25. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_5.py +2 -3
  26. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_6.py +2 -3
  27. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_7.py +2 -3
  28. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_8.py +2 -3
  29. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_9.py +2 -3
  30. {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/enums.py +18 -19
  31. {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/models.py +3 -4
  32. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/properties.py +2 -3
  33. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/properties_choices.py +2 -3
  34. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/text_choices.py +2 -3
  35. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_utils.py +49 -4
  36. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_verify_environment.py +10 -8
  37. django_enum-2.2.4/uv.lock +3829 -0
  38. django_enum-2.2.3/src/django_enum/__init__.py +0 -25
  39. django_enum-2.2.3/uv.lock +0 -2706
  40. {django_enum-2.2.3 → django_enum-2.2.4}/.codecov.yml +0 -0
  41. {django_enum-2.2.3 → django_enum-2.2.4}/.gitattributes +0 -0
  42. {django_enum-2.2.3 → django_enum-2.2.4}/.github/dependabot.yml +0 -0
  43. {django_enum-2.2.3 → django_enum-2.2.4}/.gitignore +0 -0
  44. {django_enum-2.2.3 → django_enum-2.2.4}/.pre-commit-config.yaml +0 -0
  45. {django_enum-2.2.3 → django_enum-2.2.4}/CODE_OF_CONDUCT.md +0 -0
  46. {django_enum-2.2.3 → django_enum-2.2.4}/LICENSE +0 -0
  47. {django_enum-2.2.3 → django_enum-2.2.4}/README.md +0 -0
  48. {django_enum-2.2.3 → django_enum-2.2.4}/doc/.readthedocs.yaml +0 -0
  49. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/eccentric.rst +0 -0
  50. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/admin.rst +0 -0
  51. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/external.rst +0 -0
  52. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/flags.rst +0 -0
  53. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/forms.rst +0 -0
  54. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/index.rst +0 -0
  55. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/integrations.rst +0 -0
  56. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/migrations.rst +0 -0
  57. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/options.rst +0 -0
  58. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/urls.rst +0 -0
  59. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/index.rst +0 -0
  60. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/performance.rst +0 -0
  61. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/plots/FlagSizeBenchmark.png +0 -0
  62. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/plots/IndexedExactQueryPerformance_postgres.png +0 -0
  63. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/plots/NoIndexQueryPerformance_postgres.png +0 -0
  64. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/plots/QueryPerformance_postgresql.png +0 -0
  65. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/DRF.rst +0 -0
  66. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/choices.rst +0 -0
  67. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/fields.rst +0 -0
  68. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/filters.rst +0 -0
  69. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/forms.rst +0 -0
  70. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/index.rst +0 -0
  71. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/query.rst +0 -0
  72. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/urls.rst +0 -0
  73. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/utils.rst +0 -0
  74. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/widgets.rst +0 -0
  75. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/refs.rst +0 -0
  76. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/tutorials/flags.rst +0 -0
  77. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/tutorials/index.rst +0 -0
  78. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/tutorials/properties.rst +0 -0
  79. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/FlagCheckbox.png +0 -0
  80. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/FlagCheckbox_nulls.png +0 -0
  81. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/FlagSelectMultiple.png +0 -0
  82. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/NonStrictFlagCheckbox.png +0 -0
  83. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/NonStrictFlagSelectMultiple.png +0 -0
  84. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/NonStrictRadioSelect.png +0 -0
  85. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/NonStrictSelect.png +0 -0
  86. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/RadioSelect.png +0 -0
  87. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/RadioSelect_nulls.png +0 -0
  88. {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/Select.png +0 -0
  89. {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/drf.py +0 -0
  90. {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/filters.py +0 -0
  91. {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/forms.py +0 -0
  92. {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/py.typed +0 -0
  93. {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/urls.py +0 -0
  94. {django_enum-2.2.3 → django_enum-2.2.4}/tests/__init__.py +0 -0
  95. {django_enum-2.2.3 → django_enum-2.2.4}/tests/benchmark/__init__.py +0 -0
  96. {django_enum-2.2.3 → django_enum-2.2.4}/tests/benchmark/apps.py +0 -0
  97. {django_enum-2.2.3 → django_enum-2.2.4}/tests/benchmark/enums.py +0 -0
  98. {django_enum-2.2.3 → django_enum-2.2.4}/tests/benchmark/models.py +0 -0
  99. {django_enum-2.2.3 → django_enum-2.2.4}/tests/benchmarks.py +0 -0
  100. {django_enum-2.2.3 → django_enum-2.2.4}/tests/constraints/__init__.py +0 -0
  101. {django_enum-2.2.3 → django_enum-2.2.4}/tests/constraints/apps.py +0 -0
  102. {django_enum-2.2.3 → django_enum-2.2.4}/tests/constraints/enums.py +0 -0
  103. {django_enum-2.2.3 → django_enum-2.2.4}/tests/constraints/models.py +0 -0
  104. {django_enum-2.2.3 → django_enum-2.2.4}/tests/converters/__init__.py +0 -0
  105. {django_enum-2.2.3 → django_enum-2.2.4}/tests/converters/apps.py +0 -0
  106. {django_enum-2.2.3 → django_enum-2.2.4}/tests/converters/urls.py +0 -0
  107. {django_enum-2.2.3 → django_enum-2.2.4}/tests/db_default/__init__.py +0 -0
  108. {django_enum-2.2.3 → django_enum-2.2.4}/tests/db_default/apps.py +0 -0
  109. {django_enum-2.2.3 → django_enum-2.2.4}/tests/db_default/models.py +0 -0
  110. {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/__init__.py +0 -0
  111. {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/admin.py +0 -0
  112. {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/apps.py +0 -0
  113. {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/enums.py +0 -0
  114. {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/forms.py +0 -0
  115. {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/models.py +0 -0
  116. {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/urls.py +0 -0
  117. {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/views.py +0 -0
  118. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/__init__.py +0 -0
  119. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/apps.py +0 -0
  120. {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/models.py +0 -0
  121. {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/__init__.py +0 -0
  122. {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/admin.py +0 -0
  123. {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/apps.py +0 -0
  124. {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/forms.py +0 -0
  125. {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/urls.py +0 -0
  126. {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/views.py +0 -0
  127. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/__init__.py +0 -0
  128. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/admin.py +0 -0
  129. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/apps.py +0 -0
  130. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/basic_example.py +0 -0
  131. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/checkboxes_form_howto.py +0 -0
  132. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/choice_form_howto.py +0 -0
  133. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/custom_value_example.py +0 -0
  134. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/drf_modelserializer_howto.py +0 -0
  135. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/drf_serializer_howto.py +0 -0
  136. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/enums/__init__.py +0 -0
  137. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/enums/color.py +0 -0
  138. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/enums/permissions.py +0 -0
  139. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/equivalency_howto.py +0 -0
  140. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/extern_howto.py +0 -0
  141. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/filterfield_howto.py +0 -0
  142. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/filterset_howto.py +0 -0
  143. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/flag_example.py +0 -0
  144. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/flag_form_howto.py +0 -0
  145. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/flag_howto.py +0 -0
  146. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/flagfilterfield_howto.py +0 -0
  147. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/gnss_tutorial.py +0 -0
  148. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/gnss_vanilla_tutorial.py +0 -0
  149. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/hash_equivalency_howto.py +0 -0
  150. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/mapbox_tutorial.py +0 -0
  151. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/mixed_value_example.py +0 -0
  152. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/__init__.py +0 -0
  153. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/basic.py +0 -0
  154. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/custom_value.py +0 -0
  155. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/equivalency.py +0 -0
  156. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/extern.py +0 -0
  157. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/flag.py +0 -0
  158. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/flag_howto.py +0 -0
  159. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/gnss.py +0 -0
  160. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/gnss_vanilla.py +0 -0
  161. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/hash_equivalency.py +0 -0
  162. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/mapbox.py +0 -0
  163. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/mixed_value.py +0 -0
  164. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/no_coerce.py +0 -0
  165. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/path_value.py +0 -0
  166. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/strict.py +0 -0
  167. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/widgets.py +0 -0
  168. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/no_coerce_howto.py +0 -0
  169. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/path_value_example.py +0 -0
  170. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/properties_example.py +0 -0
  171. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/radio_form_howto.py +0 -0
  172. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/strict_howto.py +0 -0
  173. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/templates/tests_examples/choice_form_howto.html +0 -0
  174. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/templates/tests_examples/flag_form_howto.html +0 -0
  175. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/templates/tests_examples/textchoicesexample_filter.html +0 -0
  176. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/text_choices_howto.py +0 -0
  177. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/url_converter_howto.py +0 -0
  178. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/urls.py +0 -0
  179. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/urls_forms.py +0 -0
  180. {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/urls_howto.py +0 -0
  181. {django_enum-2.2.3 → django_enum-2.2.4}/tests/flag_constraints/__init__.py +0 -0
  182. {django_enum-2.2.3 → django_enum-2.2.4}/tests/flag_constraints/apps.py +0 -0
  183. {django_enum-2.2.3 → django_enum-2.2.4}/tests/flag_constraints/enums.py +0 -0
  184. {django_enum-2.2.3 → django_enum-2.2.4}/tests/flag_constraints/models.py +0 -0
  185. {django_enum-2.2.3 → django_enum-2.2.4}/tests/oracle_patch.py +0 -0
  186. {django_enum-2.2.3 → django_enum-2.2.4}/tests/settings.py +0 -0
  187. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_admin.py +0 -0
  188. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_admin_ep.py +0 -0
  189. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_bulk.py +0 -0
  190. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_bulk_ep.py +0 -0
  191. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_choices.py +0 -0
  192. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_choices_ep.py +0 -0
  193. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_constraints.py +0 -0
  194. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_converter.py +0 -0
  195. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_db_defaults.py +0 -0
  196. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_eccentric.py +0 -0
  197. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_enum_props.py +0 -0
  198. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_errors.py +0 -0
  199. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_examples.py +0 -0
  200. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_external.py +0 -0
  201. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_field_types.py +0 -0
  202. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_field_types_ep.py +0 -0
  203. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_flags.py +0 -0
  204. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_flags_ep.py +0 -0
  205. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_forms.py +0 -0
  206. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_forms_ep.py +0 -0
  207. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_migrations.py +0 -0
  208. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_name_override.py +0 -0
  209. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_queries.py +0 -0
  210. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_queries_ep.py +0 -0
  211. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_requests.py +0 -0
  212. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_requests_ep.py +0 -0
  213. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_requests_flags.py +0 -0
  214. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_requests_flags_ep.py +0 -0
  215. {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_validation.py +0 -0
  216. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/__init__.py +0 -0
  217. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/apps.py +0 -0
  218. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/base.html +0 -0
  219. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/enumtester_confirm_delete.html +0 -0
  220. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/enumtester_detail.html +0 -0
  221. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/enumtester_form.html +0 -0
  222. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/enumtester_list.html +0 -0
  223. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/flagtester_confirm_delete.html +0 -0
  224. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/flagtester_detail.html +0 -0
  225. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/flagtester_form.html +0 -0
  226. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/flagtester_list.html +0 -0
  227. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templatetags/__init__.py +0 -0
  228. {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templatetags/test_tags.py +0 -0
  229. {django_enum-2.2.3 → django_enum-2.2.4}/tests/urls.py +0 -0
  230. {django_enum-2.2.3 → django_enum-2.2.4}/tests/utils.py +0 -0
@@ -28,9 +28,9 @@ jobs:
28
28
  env:
29
29
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30
30
  steps:
31
- - uses: actions/checkout@v4
31
+ - uses: actions/checkout@v5
32
32
  - name: Set up Python ${{ github.event.inputs.python-version }}
33
- uses: actions/setup-python@v5
33
+ uses: actions/setup-python@v6
34
34
  id: sp
35
35
  with:
36
36
  python-version: ${{ github.event.inputs.python-version }}
@@ -47,7 +47,7 @@ jobs:
47
47
  run: |
48
48
  sudo apt install emacs
49
49
  - name: Setup tmate session
50
- uses: mxschmitt/action-tmate@v3.21
50
+ uses: mxschmitt/action-tmate@v3.22
51
51
  with:
52
52
  detached: true
53
53
  timeout-minutes: 60
@@ -47,9 +47,9 @@ jobs:
47
47
  TEST_DJANGO_VERSION: ${{ matrix.django-version }}
48
48
 
49
49
  steps:
50
- - uses: actions/checkout@v4
50
+ - uses: actions/checkout@v5
51
51
  - name: Set up Python ${{ matrix.python-version }}
52
- uses: actions/setup-python@v5
52
+ uses: actions/setup-python@v6
53
53
  id: sp
54
54
  with:
55
55
  python-version: ${{ matrix.python-version }}
@@ -70,7 +70,7 @@ jobs:
70
70
  sudo apt install emacs
71
71
  - name: Setup tmate session
72
72
  if: ${{ github.event.inputs.debug == 'true' }}
73
- uses: mxschmitt/action-tmate@v3.21
73
+ uses: mxschmitt/action-tmate@v3.22
74
74
  with:
75
75
  detached: true
76
76
  timeout-minutes: 60
@@ -39,9 +39,9 @@ jobs:
39
39
  PACKAGE_NAME: ${{ steps.set-package.outputs.package_name }}
40
40
  RELEASE_VERSION: ${{ steps.set-package.outputs.release_version }}
41
41
  steps:
42
- - uses: actions/checkout@v4
42
+ - uses: actions/checkout@v5
43
43
  - name: Set up Python
44
- uses: actions/setup-python@v5
44
+ uses: actions/setup-python@v6
45
45
  id: sp
46
46
  with:
47
47
  python-version: "3.12" # for tomlib
@@ -99,12 +99,12 @@ jobs:
99
99
  id-token: write # IMPORTANT: mandatory for trusted publishing
100
100
  steps:
101
101
  - name: Download all the dists
102
- uses: actions/download-artifact@v4
102
+ uses: actions/download-artifact@v5
103
103
  with:
104
104
  name: python-package-distributions
105
105
  path: dist/
106
106
  - name: Publish distribution 📦 to PyPI
107
- uses: pypa/gh-action-pypi-publish@release/v1.12
107
+ uses: pypa/gh-action-pypi-publish@release/v1.13
108
108
 
109
109
  github-release:
110
110
  name: Publish GitHub Release
@@ -119,12 +119,12 @@ jobs:
119
119
 
120
120
  steps:
121
121
  - name: Download all the dists
122
- uses: actions/download-artifact@v4
122
+ uses: actions/download-artifact@v5
123
123
  with:
124
124
  name: python-package-distributions
125
125
  path: dist/
126
126
  - name: Sign the dists with Sigstore
127
- uses: sigstore/gh-action-sigstore-python@v3.0.0
127
+ uses: sigstore/gh-action-sigstore-python@v3.0.1
128
128
  with:
129
129
  inputs: >-
130
130
  ./dist/*.tar.gz
@@ -164,12 +164,12 @@ jobs:
164
164
 
165
165
  steps:
166
166
  - name: Download all the dists
167
- uses: actions/download-artifact@v4
167
+ uses: actions/download-artifact@v5
168
168
  with:
169
169
  name: python-package-distributions
170
170
  path: dist/
171
171
  - name: Publish distribution 📦 to TestPyPI
172
- uses: pypa/gh-action-pypi-publish@release/v1.12
172
+ uses: pypa/gh-action-pypi-publish@release/v1.13
173
173
  with:
174
174
  repository-url: https://test.pypi.org/legacy/
175
175
  skip-existing: true
@@ -20,12 +20,12 @@ jobs:
20
20
 
21
21
  steps:
22
22
  - name: "Checkout code"
23
- uses: actions/checkout@v4
23
+ uses: actions/checkout@v5
24
24
  with:
25
25
  persist-credentials: false
26
26
 
27
27
  - name: "Run analysis"
28
- uses: ossf/scorecard-action@v2.4.1
28
+ uses: ossf/scorecard-action@v2.4.2
29
29
  with:
30
30
  results_file: results.sarif
31
31
  results_format: sarif
@@ -33,7 +33,7 @@ jobs:
33
33
  strategy:
34
34
  fail-fast: false
35
35
  matrix:
36
- python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
36
+ python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14.0-rc.3']
37
37
  postgres-version: ['9.6', '12', 'latest']
38
38
  psycopg-version: ['psycopg2', 'psycopg3']
39
39
  django-version:
@@ -79,6 +79,19 @@ jobs:
79
79
  # https://github.com/psycopg/psycopg2/pull/1695
80
80
  - python-version: '3.13'
81
81
  psycopg-version: 'psycopg2'
82
+
83
+
84
+ - python-version: '3.14.0-rc.3'
85
+ django-version: '3.2'
86
+ - python-version: '3.14.0-rc.3'
87
+ django-version: '4.2'
88
+
89
+ - python-version: '3.14.0-rc.3'
90
+ django-version: '5.1'
91
+ # https://github.com/psycopg/psycopg2/pull/1695
92
+ - python-version: '3.14.0-rc.3'
93
+ psycopg-version: 'psycopg2'
94
+
82
95
  env:
83
96
  RDBMS: postgres
84
97
  POSTGRES_PASSWORD: postgres
@@ -111,10 +124,10 @@ jobs:
111
124
  - 5432:5432
112
125
 
113
126
  steps:
114
- - uses: actions/checkout@v4
127
+ - uses: actions/checkout@v5
115
128
  - name: Set up Python ${{ matrix.python-version }}
116
129
  id: sp
117
- uses: actions/setup-python@v5
130
+ uses: actions/setup-python@v6
118
131
  with:
119
132
  python-version: ${{ matrix.python-version }}
120
133
  - name: Install uv
@@ -133,7 +146,7 @@ jobs:
133
146
  sudo apt install emacs
134
147
  - name: Setup tmate session
135
148
  if: ${{ github.event.inputs.debug == 'true' }}
136
- uses: mxschmitt/action-tmate@v3.21
149
+ uses: mxschmitt/action-tmate@v3.22
137
150
  with:
138
151
  detached: true
139
152
  timeout-minutes: 60
@@ -173,9 +186,9 @@ jobs:
173
186
  django-version: '3.2'
174
187
 
175
188
  steps:
176
- - uses: actions/checkout@v4
189
+ - uses: actions/checkout@v5
177
190
  - name: Set up Python ${{ matrix.python-version }}
178
- uses: actions/setup-python@v5
191
+ uses: actions/setup-python@v6
179
192
  id: sp
180
193
  with:
181
194
  python-version: ${{ matrix.python-version }}
@@ -196,7 +209,7 @@ jobs:
196
209
  sudo apt install emacs
197
210
  - name: Setup tmate session
198
211
  if: ${{ github.event.inputs.debug == 'true' }}
199
- uses: mxschmitt/action-tmate@v3.21
212
+ uses: mxschmitt/action-tmate@v3.22
200
213
  with:
201
214
  detached: true
202
215
  timeout-minutes: 60
@@ -272,9 +285,9 @@ jobs:
272
285
  - 3306:3306
273
286
 
274
287
  steps:
275
- - uses: actions/checkout@v4
288
+ - uses: actions/checkout@v5
276
289
  - name: Set up Python ${{ matrix.python-version }}
277
- uses: actions/setup-python@v5
290
+ uses: actions/setup-python@v6
278
291
  id: sp
279
292
  with:
280
293
  python-version: ${{ matrix.python-version }}
@@ -284,7 +297,7 @@ jobs:
284
297
  sudo apt install emacs
285
298
  - name: Setup tmate session
286
299
  if: ${{ github.event.inputs.debug == 'true' }}
287
- uses: mxschmitt/action-tmate@v3.21
300
+ uses: mxschmitt/action-tmate@v3.22
288
301
  with:
289
302
  detached: true
290
303
  timeout-minutes: 60
@@ -377,9 +390,9 @@ jobs:
377
390
  - 3306:3306
378
391
 
379
392
  steps:
380
- - uses: actions/checkout@v4
393
+ - uses: actions/checkout@v5
381
394
  - name: Set up Python ${{ matrix.python-version }}
382
- uses: actions/setup-python@v5
395
+ uses: actions/setup-python@v6
383
396
  id: sp
384
397
  with:
385
398
  python-version: ${{ matrix.python-version }}
@@ -389,7 +402,7 @@ jobs:
389
402
  sudo apt install emacs
390
403
  - name: Setup tmate session
391
404
  if: ${{ github.event.inputs.debug == 'true' }}
392
- uses: mxschmitt/action-tmate@v3.21
405
+ uses: mxschmitt/action-tmate@v3.22
393
406
  with:
394
407
  detached: true
395
408
  timeout-minutes: 60
@@ -478,10 +491,10 @@ jobs:
478
491
  --health-retries 10
479
492
 
480
493
  steps:
481
- - uses: actions/checkout@v4
494
+ - uses: actions/checkout@v5
482
495
  - name: Set up Python ${{ matrix.python-version }}
483
496
  id: sp
484
- uses: actions/setup-python@v5
497
+ uses: actions/setup-python@v6
485
498
  with:
486
499
  python-version: ${{ matrix.python-version }}
487
500
  - name: Install Emacs
@@ -490,7 +503,7 @@ jobs:
490
503
  sudo apt install emacs
491
504
  - name: Setup tmate session
492
505
  if: ${{ github.event.inputs.debug == 'true' }}
493
- uses: mxschmitt/action-tmate@v3.21
506
+ uses: mxschmitt/action-tmate@v3.22
494
507
  with:
495
508
  detached: true
496
509
  timeout-minutes: 60
@@ -549,9 +562,9 @@ jobs:
549
562
  django-version: '3.2'
550
563
 
551
564
  steps:
552
- - uses: actions/checkout@v4
565
+ - uses: actions/checkout@v5
553
566
  - name: Set up Python ${{ matrix.python-version }}
554
- uses: actions/setup-python@v5
567
+ uses: actions/setup-python@v6
555
568
  id: sp
556
569
  with:
557
570
  python-version: ${{ matrix.python-version }}
@@ -571,7 +584,7 @@ jobs:
571
584
  uses: rhysd/action-setup-vim@v1
572
585
  - name: Setup tmate session
573
586
  if: ${{ github.event.inputs.debug == 'true' }}
574
- uses: mxschmitt/action-tmate@v3.21
587
+ uses: mxschmitt/action-tmate@v3.22
575
588
  with:
576
589
  detached: true
577
590
  timeout-minutes: 60
@@ -610,9 +623,9 @@ jobs:
610
623
  django-version: '3.2'
611
624
 
612
625
  steps:
613
- - uses: actions/checkout@v4
626
+ - uses: actions/checkout@v5
614
627
  - name: Set up Python ${{ matrix.python-version }}
615
- uses: actions/setup-python@v5
628
+ uses: actions/setup-python@v6
616
629
  id: sp
617
630
  with:
618
631
  python-version: ${{ matrix.python-version }}
@@ -633,7 +646,7 @@ jobs:
633
646
  brew install emacs
634
647
  - name: Setup tmate session
635
648
  if: ${{ github.event.inputs.debug == 'true' }}
636
- uses: mxschmitt/action-tmate@v3.21
649
+ uses: mxschmitt/action-tmate@v3.22
637
650
  with:
638
651
  detached: true
639
652
  timeout-minutes: 60
@@ -653,8 +666,8 @@ jobs:
653
666
  permissions:
654
667
  contents: read
655
668
  steps:
656
- - uses: actions/checkout@v4
657
- - uses: actions/setup-python@v5
669
+ - uses: actions/checkout@v5
670
+ - uses: actions/setup-python@v6
658
671
  id: sp
659
672
  with:
660
673
  python-version: '3.12'
@@ -670,7 +683,7 @@ jobs:
670
683
  just install
671
684
 
672
685
  - name: Get coverage files
673
- uses: actions/download-artifact@v4
686
+ uses: actions/download-artifact@v5
674
687
  with:
675
688
  pattern: "*.coverage"
676
689
  merge-multiple: true
@@ -23,7 +23,7 @@ jobs:
23
23
 
24
24
  steps:
25
25
  - name: Checkout repository
26
- uses: actions/checkout@v4
26
+ uses: actions/checkout@v5
27
27
  with:
28
28
  persist-credentials: false
29
29
 
@@ -32,7 +32,7 @@ jobs:
32
32
 
33
33
  - name: Install Zizmor
34
34
  run: |
35
- cargo install zizmor
35
+ cargo install --locked zizmor
36
36
 
37
37
  - name: Run Zizmor analysis
38
38
  run: |
@@ -20,7 +20,7 @@ We provide a platform independent justfile with recipes for all the development
20
20
  Next, initialize and install the development environment:
21
21
 
22
22
  ```bash
23
- just setup
23
+ just setup <optional python version>
24
24
  just install
25
25
  ```
26
26
 
@@ -33,6 +33,12 @@ Next, initialize and install the development environment:
33
33
  just docs
34
34
  ```
35
35
 
36
+ You can run a live documentation server that will automatically update during editing using:
37
+
38
+ ```bash
39
+ just docs-live
40
+ ```
41
+
36
42
  ## Static Analysis
37
43
 
38
44
  `django-enum` uses [ruff](https://docs.astral.sh/ruff) for python linting and formatting. [mypy](http://mypy-lang.org) is used for static type checking. Before any PR is accepted the following must be run, and static analysis tools should not produce any errors or warnings. Disabling certain errors or warnings where justified is acceptable:
@@ -45,6 +51,8 @@ Next, initialize and install the development environment:
45
51
 
46
52
  `django-enum` uses [pytest](https://docs.pytest.org/) to define and run tests. All the tests are housed under ``tests/``. Before a PR is accepted, all tests must be passing and the code coverage must be at 100%. A small number of exempted error handling branches are acceptable.
47
53
 
54
+ **Note if not using** ``just test-all`` **you will need to make sure the migrations exist first by running** ``just manage makemigrations``
55
+
48
56
  To run the full suite:
49
57
 
50
58
  ```bash
@@ -97,42 +105,44 @@ The release workflow is triggered by tag creation. You must have [git tag signin
97
105
 
98
106
  ## Just Recipes
99
107
 
100
- ```
101
- build # build docs and package
102
- build-docs # build the docs
103
- build-docs-html # build html documentation
104
- build-docs-pdf # build pdf documentation
105
- check # run all static checks
106
- check-docs # lint the documentation
107
- check-docs-links # check the documentation links for broken links
108
- check-format # check if the code needs formatting
109
- check-lint # lint the code
110
- check-package # run package checks
111
- check-readme # check that the readme renders
112
- check-types # run static type checking
113
- clean # remove all non repository artifacts
114
- clean-docs # remove doc build artifacts
115
- clean-env # remove the virtual environment
116
- clean-git-ignored # remove all git ignored files
117
- coverage # generate the test coverage report
118
- docs # build and open the documentation
119
- docs-live # serve the documentation, with auto-reload
120
- fix # fix formatting, linting issues and import sorting
121
- format # format the code and sort imports
122
- install *OPTS # update and install development dependencies
123
- install-docs # install documentation dependencies
124
- install-precommit # install git pre-commit hooks
125
- install_uv # install the uv package manager
126
- lint # sort the imports and fix linting issues
127
- manage *COMMAND # run the django admin
128
- open-docs # open the html documentation
129
- precommit # run the pre-commit checks
130
- release VERSION # issue a relase for the given semver string (e.g. 2.1.0)
131
- run +ARGS # run the command in the virtual environment
132
- setup python="python" # setup the venv and pre-commit hooks
133
- sort-imports # sort the python imports
134
- test *TESTS # run tests
135
- test-all DB_CLIENT="dev" # run all tests
136
- test-lock +PACKAGES # lock to specific python and versions of given dependencies
137
- validate_version VERSION # validate the given version string against the lib version
108
+ ```bash
109
+ build # build docs and package
110
+ build-docs # build the docs
111
+ build-docs-html # build html documentation
112
+ build-docs-pdf # build pdf documentation
113
+ check # run all static checks
114
+ check-docs # lint the documentation
115
+ check-docs-links # check the documentation links for broken links
116
+ check-format # check if the code needs formatting
117
+ check-lint # lint the code
118
+ check-package # run package checks
119
+ check-readme # check that the readme renders
120
+ check-types # run static type checking
121
+ clean # remove all non repository artifacts
122
+ clean-docs # remove doc build artifacts
123
+ clean-env # remove the virtual environment
124
+ clean-git-ignored # remove all git ignored files
125
+ coverage # generate the test coverage report
126
+ docs # build and open the documentation
127
+ docs-live # serve the documentation, with auto-reload
128
+ fetch-refs LIB # fetch the intersphinx references for the given package
129
+ fix # fix formatting, linting issues and import sorting
130
+ format # format the code and sort imports
131
+ install *OPTS="--all-extras" # update and install development dependencies
132
+ install-docs # install documentation dependencies
133
+ install-precommit # install git pre-commit hooks
134
+ install_uv # install the uv package manager
135
+ lint # sort the imports and fix linting issues
136
+ manage *COMMAND # run the django admin
137
+ open-docs # open the html documentation
138
+ precommit # run the pre-commit checks
139
+ release VERSION # issue a relase for the given semver string (e.g. 2.1.0)
140
+ run +ARGS # run the command in the virtual environment
141
+ runserver # run the development server
142
+ setup python="python" # setup the venv, pre-commit hooks and playwright dependencies
143
+ sort-imports # sort the python imports
144
+ test *TESTS # run tests
145
+ test-all DB_CLIENT="dev" # run all tests
146
+ test-lock +PACKAGES # lock to specific python and versions of given dependencies
147
+ validate_version VERSION # validate the given version string against the lib version
138
148
  ```
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-enum
3
- Version: 2.2.3
3
+ Version: 2.2.4
4
4
  Summary: Full and natural support for enumerations as Django model fields.
5
5
  Project-URL: Homepage, https://django-enum.readthedocs.io
6
6
  Project-URL: Documentation, https://django-enum.readthedocs.io
@@ -32,6 +32,7 @@ Classifier: Programming Language :: Python :: 3.10
32
32
  Classifier: Programming Language :: Python :: 3.11
33
33
  Classifier: Programming Language :: Python :: 3.12
34
34
  Classifier: Programming Language :: Python :: 3.13
35
+ Classifier: Programming Language :: Python :: 3.14
35
36
  Classifier: Topic :: Internet :: WWW/HTTP
36
37
  Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
37
38
  Classifier: Topic :: Software Development :: Libraries
@@ -41,7 +42,8 @@ Requires-Dist: django<6.0,>=3.2
41
42
  Provides-Extra: filters
42
43
  Requires-Dist: django-filter>=21; extra == 'filters'
43
44
  Provides-Extra: properties
44
- Requires-Dist: enum-properties>=2.3.0; extra == 'properties'
45
+ Requires-Dist: enum-properties>=2.3.0; (python_version < '3.14') and extra == 'properties'
46
+ Requires-Dist: enum-properties>=2.4.0; (python_version >= '3.14') and extra == 'properties'
45
47
  Provides-Extra: rest
46
48
  Requires-Dist: djangorestframework<4.0,>=3.9; extra == 'rest'
47
49
  Description-Content-Type: text/markdown
@@ -1,7 +1,7 @@
1
1
  # Security Policy
2
2
 
3
3
  [![CodeQL](https://github.com/django-commons/django-enum/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main)](https://github.com/django-commons/django-enum/actions/workflows/github-code-scanning/codeql?query=branch:main)
4
- [![Zizmor](https://github.com/django-commons/django-enum/actions/workflows/zizmor.yml/badge.svg?branch=main)](https://woodruffw.github.io/zizmor)
4
+ [![Zizmor](https://github.com/django-commons/django-enum/actions/workflows/zizmor.yml/badge.svg?branch=main)](https://docs.zizmor.sh/)
5
5
  [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/django-commons/django-enum/badge)](https://securityscorecards.dev/viewer/?uri=github.com/django-commons/django-enum)
6
6
 
7
7
  ## Supported Versions
@@ -0,0 +1,33 @@
1
+
2
+ section#reference div.highlight pre {
3
+ color: #b30000;
4
+ display: block; /* ensures it's treated as a block */
5
+ margin-left: auto; /* auto margins center block elements */
6
+ margin-right: auto;
7
+ width: fit-content;
8
+ }
9
+ body[data-theme="light"] section#reference div.highlight,
10
+ body[data-theme="light"] section#reference div.highlight pre {
11
+ background-color: #f8f8f8;
12
+ }
13
+
14
+ body[data-theme="dark"] section#reference div.highlight,
15
+ body[data-theme="dark"] section#reference div.highlight pre {
16
+ background-color: #202020;
17
+ }
18
+
19
+ /* AUTO → system prefers DARK (acts like dark unless user forced light) */
20
+ @media (prefers-color-scheme: dark) {
21
+ body:not([data-theme="light"]) #reference .highlight,
22
+ body:not([data-theme="light"]) #reference .highlight pre {
23
+ background-color: #202020;
24
+ }
25
+ }
26
+
27
+ /* AUTO → system prefers LIGHT (acts like light unless user forced dark) */
28
+ @media (prefers-color-scheme: light) {
29
+ body:not([data-theme="dark"]) #reference .highlight,
30
+ body:not([data-theme="dark"]) #reference .highlight pre {
31
+ background-color: #f8f8f8;
32
+ }
33
+ }
@@ -4,6 +4,13 @@
4
4
  Change Log
5
5
  ==========
6
6
 
7
+ v2.2.4 (2025-09-21)
8
+ ===================
9
+
10
+ * Documented `Choices derived enum-properties types do not unpack member tuples on declaration <https://github.com/django-commons/django-enum/issues/136>`_
11
+ * Implemented `Support Python 3.14 <https://github.com/django-commons/django-enum/issues/135>`_
12
+ * Fixed `Avoid depending on typing_extensions. <https://github.com/django-commons/django-enum/pull/134>`_
13
+
7
14
  v2.2.3 (2025-04-28)
8
15
  ===================
9
16
 
@@ -72,7 +72,8 @@ html_theme_options = {
72
72
  # Add any paths that contain custom static files (such as style sheets) here,
73
73
  # relative to this directory. They are copied after the builtin static files,
74
74
  # so a file named "default.css" will overwrite the builtin "default.css".
75
- html_static_path = []
75
+ html_static_path = ['_static']
76
+ html_css_files = ['style.css']
76
77
 
77
78
  todo_include_todos = True
78
79
 
@@ -87,6 +88,8 @@ intersphinx_mapping = {
87
88
  "python": ('https://docs.python.org/3', None)
88
89
  }
89
90
 
91
+ linkcheck_allow_redirects = True
92
+
90
93
 
91
94
  def setup(app):
92
95
  # Register a sphinx.ext.autodoc.between listener to ignore everything
@@ -143,7 +143,13 @@ check-docs-links: _link_check
143
143
  from pathlib import Path
144
144
  # The json output isn't valid, so we have to fix it before we can process.
145
145
  data = json.loads(f"[{','.join((Path(os.getcwd()) / 'doc/build/output.json').read_text().splitlines())}]")
146
- broken_links = [link for link in data if link["status"] not in {"working", "redirected", "unchecked", "ignored"}]
146
+ broken_links = [
147
+ link for link in data
148
+ if (
149
+ link["status"] not in {"working", "redirected", "unchecked", "ignored"}
150
+ and link["uri"] not in {"https://www.mysql.com"}
151
+ )
152
+ ]
147
153
  if broken_links:
148
154
  for link in broken_links:
149
155
  print(f"[{link['status']}] {link['filename']}:{link['lineno']} -> {link['uri']}", file=sys.stderr)
@@ -205,7 +211,7 @@ lint: sort-imports
205
211
  fix: lint format
206
212
 
207
213
  # run all static checks
208
- check: check-lint check-format check-types check-package check-docs check-docs-links check-readme
214
+ check: install-docs check-lint check-format check-types check-package check-docs check-docs-links check-readme
209
215
 
210
216
  # run all tests
211
217
  test-all DB_CLIENT="dev":
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "django-enum"
3
- version = "2.2.3"
3
+ version = "2.2.4"
4
4
  description = "Full and natural support for enumerations as Django model fields."
5
5
  requires-python = ">=3.9,<4.0"
6
6
  authors = [
@@ -38,6 +38,7 @@ classifiers = [
38
38
  "Programming Language :: Python :: 3.11",
39
39
  "Programming Language :: Python :: 3.12",
40
40
  "Programming Language :: Python :: 3.13",
41
+ "Programming Language :: Python :: 3.14",
41
42
  "Topic :: Internet :: WWW/HTTP",
42
43
  "Topic :: Internet :: WWW/HTTP :: Site Management",
43
44
  "Topic :: Software Development :: Libraries",
@@ -61,7 +62,10 @@ packages = ["src/django_enum"]
61
62
 
62
63
 
63
64
  [project.optional-dependencies]
64
- properties = ["enum-properties>=2.3.0"]
65
+ properties = [
66
+ "enum-properties>=2.3.0; python_version < '3.14'",
67
+ "enum-properties>=2.4.0; python_version >= '3.14'",
68
+ ]
65
69
  filters = ["django-filter>=21"]
66
70
  rest = ["djangorestframework>=3.9,<4.0"]
67
71
 
@@ -84,13 +88,14 @@ dev = [
84
88
  "deepdiff>=8.2.0",
85
89
  "django-extensions>=3.2.3",
86
90
  "django-stubs[compatible-mypy]>=5.1.3",
87
- # todo - update when version > 1.4.0 released
88
- "django-test-migrations @ git+https://github.com/wemake-services/django-test-migrations.git@master#egg=django-test-migrations",
91
+ "django-test-migrations>=1.5.0; python_version >= '3.10'",
92
+ "django-test-migrations<1.5.0; python_version < '3.10'",
89
93
  "djlint>=1.36.4",
90
94
  "ipdb>=0.13.13",
91
95
  "matplotlib>=3.9.4",
96
+ "numpy>=2.2; python_version >= '3.13'",
97
+ "numpy>=2.0,<2.2; python_version < '3.13'",
92
98
  "mypy>=1.15.0",
93
- "numpy>=2.0.2",
94
99
  "packaging>=24.2",
95
100
  "pre-commit>=4.1.0",
96
101
  "pytest>=8.3.4",
@@ -0,0 +1,32 @@
1
+ r"""
2
+ ::
3
+
4
+ ██████╗ ██╗ █████╗ ███╗ ██╗ ██████╗ ██████╗
5
+ ██╔══██╗ ██║██╔══██╗████╗ ██║██╔════╝ ██╔═══██╗
6
+ ██║ ██║ ██║███████║██╔██╗ ██║██║ ███╗██║ ██║
7
+ ██║ ██║██ ██║██╔══██║██║╚██╗██║██║ ██║██║ ██║
8
+ ██████╔╝╚█████╔╝██║ ██║██║ ╚████║╚██████╔╝╚██████╔╝
9
+ ╚═════╝ ╚════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═════╝
10
+
11
+ ███████╗███╗ ██╗██╗ ██╗███╗ ███╗
12
+ ██╔════╝████╗ ██║██║ ██║████╗ ████║
13
+ █████╗ ██╔██╗ ██║██║ ██║██╔████╔██║
14
+ ██╔══╝ ██║╚██╗██║██║ ██║██║╚██╔╝██║
15
+ ███████╗██║ ╚████║╚██████╔╝██║ ╚═╝ ██║
16
+ ╚══════╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝
17
+
18
+
19
+ Full and natural support for enumerations as Django model fields.
20
+ """
21
+
22
+ from django_enum.fields import EnumField
23
+
24
+ __all__ = ["EnumField"]
25
+
26
+ VERSION = (2, 2, 4)
27
+
28
+ __title__ = "Django Enum"
29
+ __version__ = ".".join(str(i) for i in VERSION)
30
+ __author__ = "Brian Kohan"
31
+ __license__ = "MIT"
32
+ __copyright__ = "Copyright 2022-2025 Brian Kohan"