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.
- {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/debug.yml +3 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/lint.yml +3 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/release.yml +8 -8
- {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/scorecard.yml +2 -2
- {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/test.yml +38 -25
- {django_enum-2.2.3 → django_enum-2.2.4}/.github/workflows/zizmor.yml +2 -2
- {django_enum-2.2.3 → django_enum-2.2.4}/CONTRIBUTING.md +49 -39
- {django_enum-2.2.3 → django_enum-2.2.4}/PKG-INFO +4 -2
- {django_enum-2.2.3 → django_enum-2.2.4}/SECURITY.md +1 -1
- django_enum-2.2.4/doc/source/_static/style.css +33 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/changelog.rst +7 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/conf.py +4 -1
- {django_enum-2.2.3 → django_enum-2.2.4}/justfile +8 -2
- {django_enum-2.2.3 → django_enum-2.2.4}/pyproject.toml +10 -5
- django_enum-2.2.4/src/django_enum/__init__.py +32 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/choices.py +28 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/fields.py +2 -2
- {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/query.py +1 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/utils.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_1.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_10.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_2.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_3.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_4.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_5.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_6.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_7.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_8.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/edits/_9.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/enums.py +18 -19
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/models.py +3 -4
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/properties.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/properties_choices.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/text_choices.py +2 -3
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_utils.py +49 -4
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_verify_environment.py +10 -8
- django_enum-2.2.4/uv.lock +3829 -0
- django_enum-2.2.3/src/django_enum/__init__.py +0 -25
- django_enum-2.2.3/uv.lock +0 -2706
- {django_enum-2.2.3 → django_enum-2.2.4}/.codecov.yml +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/.gitattributes +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/.github/dependabot.yml +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/.gitignore +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/.pre-commit-config.yaml +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/CODE_OF_CONDUCT.md +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/LICENSE +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/README.md +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/.readthedocs.yaml +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/eccentric.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/admin.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/external.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/flags.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/forms.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/index.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/integrations.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/migrations.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/options.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/howto/urls.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/index.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/performance.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/plots/FlagSizeBenchmark.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/plots/IndexedExactQueryPerformance_postgres.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/plots/NoIndexQueryPerformance_postgres.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/plots/QueryPerformance_postgresql.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/DRF.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/choices.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/fields.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/filters.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/forms.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/index.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/query.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/urls.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/utils.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/reference/widgets.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/refs.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/tutorials/flags.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/tutorials/index.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/tutorials/properties.rst +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/FlagCheckbox.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/FlagCheckbox_nulls.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/FlagSelectMultiple.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/NonStrictFlagCheckbox.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/NonStrictFlagSelectMultiple.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/NonStrictRadioSelect.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/NonStrictSelect.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/RadioSelect.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/RadioSelect_nulls.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/doc/source/widgets/Select.png +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/drf.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/filters.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/forms.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/py.typed +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/src/django_enum/urls.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/benchmark/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/benchmark/apps.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/benchmark/enums.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/benchmark/models.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/benchmarks.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/constraints/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/constraints/apps.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/constraints/enums.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/constraints/models.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/converters/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/converters/apps.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/converters/urls.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/db_default/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/db_default/apps.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/db_default/models.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/admin.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/apps.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/enums.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/forms.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/models.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/urls.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/djenum/views.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/apps.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/edit_tests/models.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/admin.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/apps.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/forms.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/urls.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/enum_prop/views.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/admin.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/apps.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/basic_example.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/checkboxes_form_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/choice_form_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/custom_value_example.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/drf_modelserializer_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/drf_serializer_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/enums/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/enums/color.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/enums/permissions.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/equivalency_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/extern_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/filterfield_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/filterset_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/flag_example.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/flag_form_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/flag_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/flagfilterfield_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/gnss_tutorial.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/gnss_vanilla_tutorial.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/hash_equivalency_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/mapbox_tutorial.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/mixed_value_example.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/basic.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/custom_value.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/equivalency.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/extern.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/flag.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/flag_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/gnss.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/gnss_vanilla.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/hash_equivalency.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/mapbox.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/mixed_value.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/no_coerce.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/path_value.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/strict.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/models/widgets.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/no_coerce_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/path_value_example.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/properties_example.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/radio_form_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/strict_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/templates/tests_examples/choice_form_howto.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/templates/tests_examples/flag_form_howto.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/templates/tests_examples/textchoicesexample_filter.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/text_choices_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/url_converter_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/urls.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/urls_forms.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/examples/urls_howto.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/flag_constraints/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/flag_constraints/apps.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/flag_constraints/enums.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/flag_constraints/models.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/oracle_patch.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/settings.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_admin.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_admin_ep.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_bulk.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_bulk_ep.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_choices.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_choices_ep.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_constraints.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_converter.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_db_defaults.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_eccentric.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_enum_props.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_errors.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_examples.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_external.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_field_types.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_field_types_ep.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_flags.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_flags_ep.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_forms.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_forms_ep.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_migrations.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_name_override.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_queries.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_queries_ep.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_requests.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_requests_ep.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_requests_flags.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_requests_flags_ep.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/test_validation.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/apps.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/base.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/enumtester_confirm_delete.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/enumtester_detail.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/enumtester_form.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/enumtester_list.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/flagtester_confirm_delete.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/flagtester_detail.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/flagtester_form.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templates/flagtester_list.html +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templatetags/__init__.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/tmpls/templatetags/test_tags.py +0 -0
- {django_enum-2.2.3 → django_enum-2.2.4}/tests/urls.py +0 -0
- {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@
|
|
31
|
+
- uses: actions/checkout@v5
|
|
32
32
|
- name: Set up Python ${{ github.event.inputs.python-version }}
|
|
33
|
-
uses: actions/setup-python@
|
|
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.
|
|
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@
|
|
50
|
+
- uses: actions/checkout@v5
|
|
51
51
|
- name: Set up Python ${{ matrix.python-version }}
|
|
52
|
-
uses: actions/setup-python@
|
|
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.
|
|
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@
|
|
42
|
+
- uses: actions/checkout@v5
|
|
43
43
|
- name: Set up Python
|
|
44
|
-
uses: actions/setup-python@
|
|
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@
|
|
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.
|
|
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@
|
|
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.
|
|
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@
|
|
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.
|
|
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@
|
|
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.
|
|
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@
|
|
127
|
+
- uses: actions/checkout@v5
|
|
115
128
|
- name: Set up Python ${{ matrix.python-version }}
|
|
116
129
|
id: sp
|
|
117
|
-
uses: actions/setup-python@
|
|
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.
|
|
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@
|
|
189
|
+
- uses: actions/checkout@v5
|
|
177
190
|
- name: Set up Python ${{ matrix.python-version }}
|
|
178
|
-
uses: actions/setup-python@
|
|
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.
|
|
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@
|
|
288
|
+
- uses: actions/checkout@v5
|
|
276
289
|
- name: Set up Python ${{ matrix.python-version }}
|
|
277
|
-
uses: actions/setup-python@
|
|
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.
|
|
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@
|
|
393
|
+
- uses: actions/checkout@v5
|
|
381
394
|
- name: Set up Python ${{ matrix.python-version }}
|
|
382
|
-
uses: actions/setup-python@
|
|
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.
|
|
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@
|
|
494
|
+
- uses: actions/checkout@v5
|
|
482
495
|
- name: Set up Python ${{ matrix.python-version }}
|
|
483
496
|
id: sp
|
|
484
|
-
uses: actions/setup-python@
|
|
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.
|
|
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@
|
|
565
|
+
- uses: actions/checkout@v5
|
|
553
566
|
- name: Set up Python ${{ matrix.python-version }}
|
|
554
|
-
uses: actions/setup-python@
|
|
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.
|
|
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@
|
|
626
|
+
- uses: actions/checkout@v5
|
|
614
627
|
- name: Set up Python ${{ matrix.python-version }}
|
|
615
|
-
uses: actions/setup-python@
|
|
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.
|
|
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@
|
|
657
|
-
- uses: actions/setup-python@
|
|
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@
|
|
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@
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
+
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
|
[](https://github.com/django-commons/django-enum/actions/workflows/github-code-scanning/codeql?query=branch:main)
|
|
4
|
-
[](https://
|
|
4
|
+
[](https://docs.zizmor.sh/)
|
|
5
5
|
[](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 = [
|
|
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
|
+
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 = [
|
|
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
|
-
|
|
88
|
-
"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"
|