From 32d3a3af92ef5fa01f502812badaa11b213924a7 Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 14:33:54 -0700 Subject: [PATCH 01/13] add 3.13 to github CI --- .github/workflows/test.yml | 9 +++++++-- django_enum/__init__.py | 2 +- doc/source/changelog.rst | 5 +++++ pyproject.toml | 3 ++- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 471b086..9804304 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.7', '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 @@ -32,7 +32,12 @@ jobs: 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' steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} 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/doc/source/changelog.rst b/doc/source/changelog.rst index bc238b9..20a6326 100644 --- a/doc/source/changelog.rst +++ b/doc/source/changelog.rst @@ -2,6 +2,11 @@ Change Log ========== +v1.3.3 +====== + +* Implemented `Support python 3.13 `_ + v1.3.2 ====== diff --git a/pyproject.toml b/pyproject.toml index f6cf1b8..3f98743 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" @@ -30,6 +30,7 @@ classifiers = [ "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", From dc1bed849599459257539ac0441e94aef2d628ad Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 14:46:13 -0700 Subject: [PATCH 02/13] fix django version installation in CI matrix --- .github/workflows/test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9804304..2071a6a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -63,6 +63,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 @@ -72,18 +73,21 @@ jobs: - name: Install djangorestframework run: | poetry install -E djangorestframework + poetry run pip install -U "Django~=${{ matrix.django-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 }}" - 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 }}" - name: Run Full Unit Tests run: | poetry run pytest From fbc215faa7a38db50db763c823c9c19ace9ff48a Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 14:51:18 -0700 Subject: [PATCH 03/13] update django-filter dependency version --- .github/workflows/test.yml | 1 - pyproject.toml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2071a6a..48af83b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -48,7 +48,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 diff --git a/pyproject.toml b/pyproject.toml index 3f98743..ee051ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,7 @@ exclude = ["django_enum/tests"] python = ">=3.7,<4.0" Django = ">=3.2,<6.0" enum-properties = {version = "^1.7.0", optional = true} -django-filter = {version = ">=21,<24", optional = true} +django-filter = {version = ">=21", optional = true} djangorestframework = {version = "^3.9", optional = true} [tool.poetry.group.dev.dependencies] From 8292097b05d2cff9401375b0348b1afc7a9ac2cb Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 14:54:42 -0700 Subject: [PATCH 04/13] drop support for python 3.7 --- .github/workflows/test.yml | 8 +------- pyproject.toml | 3 +-- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 48af83b..1db92c7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,17 +7,13 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13.0-rc.1'] + 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 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' @@ -25,8 +21,6 @@ jobs: - python-version: '3.11' django-version: '3.2' - python-version: '3.12' - django-version: '3.2' - - python-version: '3.7' django-version: '5.1' - python-version: '3.8' django-version: '5.1' diff --git a/pyproject.toml b/pyproject.toml index ee051ce..fd97901 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,6 @@ 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", @@ -43,7 +42,7 @@ 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", optional = true} From 9bfdb851748e0358102d92cac178162dee2fb2f7 Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 14:57:54 -0700 Subject: [PATCH 05/13] fix CI test version matrix --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1db92c7..958f3a4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,6 +20,8 @@ jobs: django-version: '5.0' - python-version: '3.11' django-version: '3.2' + - python-version: '3.11' + django-version: '3.2' - python-version: '3.12' django-version: '5.1' - python-version: '3.8' From f05209a8860bc93491defd7467461914cd750b70 Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 15:00:54 -0700 Subject: [PATCH 06/13] set enum-properties version range --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fd97901..ef0a3ca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,7 +44,7 @@ exclude = ["django_enum/tests"] [tool.poetry.dependencies] python = ">=3.8,<4.0" Django = ">=3.2,<6.0" -enum-properties = {version = "^1.7.0", optional = true} +enum-properties = {version = ">=1.7.0,<2.0", optional = true} django-filter = {version = ">=21", optional = true} djangorestframework = {version = "^3.9", optional = true} From f8edec829c15a012b74f56734789e75bf4746775 Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 15:03:50 -0700 Subject: [PATCH 07/13] relax perf tests --- django_enum/tests/tests.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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? From 4e63b91c3531f904a97a261ec9459695fa8012ea Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 15:15:33 -0700 Subject: [PATCH 08/13] set drf version based on django version in CI --- .github/workflows/test.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 958f3a4..9a59045 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -69,6 +69,10 @@ jobs: run: | poetry install -E djangorestframework poetry run pip install -U "Django~=${{ matrix.django-version }}" + # Check if Django version is 4.2 or higher + if [[ "${{ matrix.django-version }}" =~ ^4\.2|^4\.3 ]]; then + poetry run pip install "djangorestframework<3.15" + fi - name: Run Unit Tests w/ djangorestframework run: | poetry run pytest --cov-fail-under=30 @@ -76,6 +80,10 @@ jobs: run: | poetry install -E filters poetry run pip install -U "Django~=${{ matrix.django-version }}" + # Check if Django version is 4.2 or higher + if [[ "${{ matrix.django-version }}" =~ ^4\.2|^4\.3 ]]; then + poetry run pip install "djangorestframework<3.15" + fi - name: Run Unit Tests w/ django-filter run: | poetry run pytest --cov-fail-under=30 @@ -83,6 +91,10 @@ jobs: run: | poetry install -E all poetry run pip install -U "Django~=${{ matrix.django-version }}" + # Check if Django version is 4.2 or higher + if [[ "${{ matrix.django-version }}" =~ ^4\.2|^4\.3 ]]; then + poetry run pip install "djangorestframework<3.15" + fi - name: Run Full Unit Tests run: | poetry run pytest From bc3f17c789c0a002f4f9c987a6dc1edee74724c4 Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 15:16:21 -0700 Subject: [PATCH 09/13] adjust drf version in CI --- .github/workflows/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9a59045..15a465b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -71,7 +71,7 @@ jobs: poetry run pip install -U "Django~=${{ matrix.django-version }}" # Check if Django version is 4.2 or higher if [[ "${{ matrix.django-version }}" =~ ^4\.2|^4\.3 ]]; then - poetry run pip install "djangorestframework<3.15" + poetry run pip install "djangorestframework<3.15.1" fi - name: Run Unit Tests w/ djangorestframework run: | @@ -82,7 +82,7 @@ jobs: poetry run pip install -U "Django~=${{ matrix.django-version }}" # Check if Django version is 4.2 or higher if [[ "${{ matrix.django-version }}" =~ ^4\.2|^4\.3 ]]; then - poetry run pip install "djangorestframework<3.15" + poetry run pip install "djangorestframework<3.15.1" fi - name: Run Unit Tests w/ django-filter run: | @@ -93,7 +93,7 @@ jobs: poetry run pip install -U "Django~=${{ matrix.django-version }}" # Check if Django version is 4.2 or higher if [[ "${{ matrix.django-version }}" =~ ^4\.2|^4\.3 ]]; then - poetry run pip install "djangorestframework<3.15" + poetry run pip install "djangorestframework<3.15.1" fi - name: Run Full Unit Tests run: | From aa3b6a003cf7604ec8e731d267fb3ff2ada7f5fb Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 15:21:53 -0700 Subject: [PATCH 10/13] work drf into version matrix in CI --- .github/workflows/test.yml | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 15a465b..442d43e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,6 +13,9 @@ jobs: - '4.2' # LTS April 2026 - '5.0' # April 2025 - '5.1' # December 2025 + drf-version: + - '3.14' + - '3.15' exclude: - python-version: '3.8' django-version: '5.0' @@ -34,6 +37,16 @@ jobs: 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' + steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} @@ -69,10 +82,7 @@ jobs: run: | poetry install -E djangorestframework poetry run pip install -U "Django~=${{ matrix.django-version }}" - # Check if Django version is 4.2 or higher - if [[ "${{ matrix.django-version }}" =~ ^4\.2|^4\.3 ]]; then - poetry run pip install "djangorestframework<3.15.1" - fi + poetry run pip install -U "djangorestframework~=${{ matrix.drf-version }}" - name: Run Unit Tests w/ djangorestframework run: | poetry run pytest --cov-fail-under=30 @@ -80,10 +90,7 @@ jobs: run: | poetry install -E filters poetry run pip install -U "Django~=${{ matrix.django-version }}" - # Check if Django version is 4.2 or higher - if [[ "${{ matrix.django-version }}" =~ ^4\.2|^4\.3 ]]; then - poetry run pip install "djangorestframework<3.15.1" - fi + poetry run pip install -U "djangorestframework~=${{ matrix.drf-version }}" - name: Run Unit Tests w/ django-filter run: | poetry run pytest --cov-fail-under=30 @@ -91,10 +98,7 @@ jobs: run: | poetry install -E all poetry run pip install -U "Django~=${{ matrix.django-version }}" - # Check if Django version is 4.2 or higher - if [[ "${{ matrix.django-version }}" =~ ^4\.2|^4\.3 ]]; then - poetry run pip install "djangorestframework<3.15.1" - fi + poetry run pip install -U "djangorestframework~=${{ matrix.drf-version }}" - name: Run Full Unit Tests run: | poetry run pytest From c10bad6f732d9eb225a19f80c78e151655b15fe2 Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 15:23:45 -0700 Subject: [PATCH 11/13] fix drf/django install in CI --- .github/workflows/test.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 442d43e..b12095d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -46,7 +46,7 @@ jobs: drf-version: '3.14' - django-version: '5.1' drf-version: '3.14' - + steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} @@ -81,24 +81,21 @@ jobs: - name: Install djangorestframework run: | poetry install -E djangorestframework - poetry run pip install -U "Django~=${{ matrix.django-version }}" - poetry run pip install -U "djangorestframework~=${{ matrix.drf-version }}" + 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 }}" - poetry run pip install -U "djangorestframework~=${{ matrix.drf-version }}" + poetry run pip install -U "Django~=${{ matrix.django-version }}" "djangorestframework~=${{ matrix.drf-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 }}" - poetry run pip install -U "djangorestframework~=${{ matrix.drf-version }}" + poetry run pip install -U "Django~=${{ matrix.django-version }}" "djangorestframework~=${{ matrix.drf-version }}" - name: Run Full Unit Tests run: | poetry run pytest From da639c565e0bfd1746f8ba8ec18c8046b727a526 Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 15:35:19 -0700 Subject: [PATCH 12/13] add django-filter version to CI --- .github/workflows/test.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b12095d..8f157d5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,6 +16,9 @@ jobs: drf-version: - '3.14' - '3.15' + filter-version: + - '23.5' + - '24.0' exclude: - python-version: '3.8' django-version: '5.0' @@ -46,6 +49,15 @@ jobs: 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 @@ -88,14 +100,14 @@ jobs: - name: Install django-filters run: | poetry install -E filters - poetry run pip install -U "Django~=${{ matrix.django-version }}" "djangorestframework~=${{ matrix.drf-version }}" + 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 }}" + 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 From daf1eba70e380ee6e8df55b65542e8eb6d7634b0 Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Mon, 26 Aug 2024 15:44:30 -0700 Subject: [PATCH 13/13] update changelog --- doc/source/changelog.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/source/changelog.rst b/doc/source/changelog.rst index 20a6326..aab3485 100644 --- a/doc/source/changelog.rst +++ b/doc/source/changelog.rst @@ -5,7 +5,8 @@ Change Log v1.3.3 ====== -* Implemented `Support python 3.13 `_ +* Implemented `Support python 3.13 `_ +* Implemented `Drop support for Python 3.7 `_ v1.3.2 ======