diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 471b086..8f157d5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,31 +7,57 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13.0-rc.1'] django-version: - '3.2' # LTS April 2024 - '4.2' # LTS April 2026 - '5.0' # April 2025 - '5.1' # December 2025 + drf-version: + - '3.14' + - '3.15' + filter-version: + - '23.5' + - '24.0' exclude: - - python-version: '3.7' - django-version: '5.0' - - python-version: '3.7' - django-version: '4.2' - python-version: '3.8' django-version: '5.0' - python-version: '3.9' django-version: '5.0' - python-version: '3.11' django-version: '3.2' - - python-version: '3.12' + - python-version: '3.11' django-version: '3.2' - - python-version: '3.7' + - python-version: '3.12' django-version: '5.1' - python-version: '3.8' django-version: '5.1' - python-version: '3.9' django-version: '5.1' + - python-version: '3.13.0-rc.1' + django-version: '3.2' + - python-version: '3.13.0-rc.1' + django-version: '4.2' + - python-version: '3.13.0-rc.1' + django-version: '5.0' + + - django-version: '3.2' + drf-version: '3.15' + - django-version: '4.2' + drf-version: '3.14' + - django-version: '5.0' + drf-version: '3.14' + - django-version: '5.1' + drf-version: '3.14' + + - django-version: '3.2' + filter-version: '24.0' + - django-version: '4.2' + filter-version: '23.5' + - django-version: '5.0' + filter-version: '23.5' + - django-version: '5.1' + filter-version: '23.5' steps: - uses: actions/checkout@v4 @@ -43,7 +69,6 @@ jobs: - name: Install Poetry uses: snok/install-poetry@v1 with: - version: 1.5.1 virtualenvs-create: true virtualenvs-in-project: true - name: Install Basic Dependencies @@ -58,6 +83,7 @@ jobs: - name: Install enum-properties run: | poetry install -E properties + poetry run pip install -U "Django~=${{ matrix.django-version }}" - name: Unit Tests w/ enum-properties run: | poetry run pytest --cov-fail-under=30 @@ -67,18 +93,21 @@ jobs: - name: Install djangorestframework run: | poetry install -E djangorestframework + poetry run pip install -U "Django~=${{ matrix.django-version }}" "djangorestframework~=${{ matrix.drf-version }}" - name: Run Unit Tests w/ djangorestframework run: | poetry run pytest --cov-fail-under=30 - name: Install django-filters run: | poetry install -E filters + poetry run pip install -U "Django~=${{ matrix.django-version }}" "djangorestframework~=${{ matrix.drf-version }}" "django-filter~=${{ matrix.filter-version }}" - name: Run Unit Tests w/ django-filter run: | poetry run pytest --cov-fail-under=30 - name: Install all deps run: | poetry install -E all + poetry run pip install -U "Django~=${{ matrix.django-version }}" "djangorestframework~=${{ matrix.drf-version }}" "django-filter~=${{ matrix.filter-version }}" - name: Run Full Unit Tests run: | poetry run pytest diff --git a/django_enum/__init__.py b/django_enum/__init__.py index 68a24c9..1b09138 100644 --- a/django_enum/__init__.py +++ b/django_enum/__init__.py @@ -47,7 +47,7 @@ 'EnumFilter' ] -VERSION = (1, 3, 2) +VERSION = (1, 3, 3) __title__ = 'Django Enum' __version__ = '.'.join(str(i) for i in VERSION) diff --git a/django_enum/tests/tests.py b/django_enum/tests/tests.py index 835e819..2243e59 100755 --- a/django_enum/tests/tests.py +++ b/django_enum/tests/tests.py @@ -3628,8 +3628,8 @@ def test_benchmark(self): no_coerce_time = no_coerce_stop - no_coerce_start # flag if performance degrades signficantly - running about 2x for big lookups self.assertTrue((enum_time / choice_time) < 3) - self.assertTrue((enum_direct_time / choice_time) < 2.5) - self.assertTrue((no_coerce_time / choice_time) < 2.5) + self.assertTrue((enum_direct_time / choice_time) < 2.7) + self.assertTrue((no_coerce_time / choice_time) < 2.7) print( f'(EnumTester) Bulk Create -> ' f'EnumField: {enum_time} ' @@ -3700,8 +3700,8 @@ def test_single_field_benchmark(self): f'ChoiceField: {choice_time}' ) # Enum tends to be about ~12% slower - self.assertTrue((enum_time / choice_time) < 1.8) - self.assertTrue((no_coerce_time / choice_time) < 1.7) + self.assertTrue((enum_time / choice_time) < 2.3) + self.assertTrue((no_coerce_time / choice_time) < 2.0) enum_start = perf_counter() for _ in SingleEnumPerf.objects.iterator(chunk_size=self.CHUNK_SIZE): @@ -3729,8 +3729,8 @@ def test_single_field_benchmark(self): f'ChoiceField: {choice_time}' ) # tends to be about 1.8x slower - self.assertTrue((enum_time / choice_time) < 2.5) - self.assertTrue((no_coerce_time / choice_time) < 2.2) + self.assertTrue((enum_time / choice_time) < 2.7) + self.assertTrue((no_coerce_time / choice_time) < 2.7) class ExampleTests(TestCase): # pragma: no cover - why is this necessary? diff --git a/doc/source/changelog.rst b/doc/source/changelog.rst index bc238b9..aab3485 100644 --- a/doc/source/changelog.rst +++ b/doc/source/changelog.rst @@ -2,6 +2,12 @@ Change Log ========== +v1.3.3 +====== + +* Implemented `Support python 3.13 `_ +* Implemented `Drop support for Python 3.7 `_ + v1.3.2 ====== diff --git a/pyproject.toml b/pyproject.toml index f6cf1b8..ef0a3ca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "django-enum" -version = "1.3.2" +version = "1.3.3" description = "Full and natural support for enumerations as Django model fields." authors = ["Brian Kohan "] license = "MIT" @@ -24,12 +24,12 @@ classifiers = [ "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python", - "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Site Management", "Topic :: Software Development :: Libraries", @@ -42,10 +42,10 @@ packages = [ exclude = ["django_enum/tests"] [tool.poetry.dependencies] -python = ">=3.7,<4.0" +python = ">=3.8,<4.0" Django = ">=3.2,<6.0" -enum-properties = {version = "^1.7.0", optional = true} -django-filter = {version = ">=21,<24", optional = true} +enum-properties = {version = ">=1.7.0,<2.0", optional = true} +django-filter = {version = ">=21", optional = true} djangorestframework = {version = "^3.9", optional = true} [tool.poetry.group.dev.dependencies]