From 733706e9f536d4169f393f54bdb39b02c122fb58 Mon Sep 17 00:00:00 2001
From: awais qureshi <awais.qureshi@arbisoft.com>
Date: Wed, 28 Feb 2024 18:33:10 +0500
Subject: [PATCH 01/10] feat: python3.12 support.

---
 .github/workflows/ci.yml | 4 +---
 tox.ini                  | 4 +---
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e9448f8..042d0d9 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -14,11 +14,9 @@ jobs:
     strategy:
       matrix:
         os: [ubuntu-20.04]
-        python-version: ["3.8"]
+        python-version: ["3.8", "3.12"]
         toxenv:
           [
-            py38-django32-drf312,
-            py38-django32-drflatest,
             py38-django42-drflatest,
             quality,
           ]
diff --git a/tox.ini b/tox.ini
index 1c380fb..6fa7929 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,7 +1,6 @@
 [tox]
 envlist =
-    py38-django{32}-drf{312, latest}
-    py38-django{42}-drf{latest} # Django 4.2 is not supported by DRF < 3.14
+    py{38,312}-django{42}-drf{latest} # Django 4.2 is not supported by DRF < 3.14
     quality
 
 [pytest]
@@ -11,7 +10,6 @@ norecursedirs = .* docs requirements
 
 [testenv]
 deps =
-    django32: Django>=3.2,<4.0
     django42: Django>=4.2,<4.3
     drf312: djangorestframework>=3.13,<3.14
     drflatest: djangorestframework

From fa61ff2e83901411f39c8431f132d1fe3a31d723 Mon Sep 17 00:00:00 2001
From: awais qureshi <awais.qureshi@arbisoft.com>
Date: Wed, 28 Feb 2024 18:35:38 +0500
Subject: [PATCH 02/10] feat: python3.12 support.

---
 tox.ini | 1 -
 1 file changed, 1 deletion(-)

diff --git a/tox.ini b/tox.ini
index 6fa7929..68ebc15 100644
--- a/tox.ini
+++ b/tox.ini
@@ -11,7 +11,6 @@ norecursedirs = .* docs requirements
 [testenv]
 deps =
     django42: Django>=4.2,<4.3
-    drf312: djangorestframework>=3.13,<3.14
     drflatest: djangorestframework
     -r{toxinidir}/requirements/test.txt
 commands =

From 76965f418b5da1f02c6b77fe55ee051090433f50 Mon Sep 17 00:00:00 2001
From: awais qureshi <awais.qureshi@arbisoft.com>
Date: Wed, 28 Feb 2024 18:37:13 +0500
Subject: [PATCH 03/10] feat: python3.12 support.

---
 .github/workflows/ci.yml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 042d0d9..840f82e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -17,8 +17,7 @@ jobs:
         python-version: ["3.8", "3.12"]
         toxenv:
           [
-            py38-django42-drflatest,
-            quality,
+            py38-django42-drflatest,quality
           ]
 
     steps:

From 1f7f9fbc5305eed8bfb42356e80e7f79be0a7367 Mon Sep 17 00:00:00 2001
From: awais qureshi <awais.qureshi@arbisoft.com>
Date: Wed, 28 Feb 2024 18:47:42 +0500
Subject: [PATCH 04/10] feat: python3.12 support.

---
 tox.ini | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tox.ini b/tox.ini
index 68ebc15..3a51fd2 100644
--- a/tox.ini
+++ b/tox.ini
@@ -35,6 +35,7 @@ allowlist_externals =
     make
     rm
 deps =
+    setuptools
     -r{toxinidir}/requirements/quality.txt
 commands =
     make quality

From c1b1d4c75af815d16a938bc5025fc58da4992acf Mon Sep 17 00:00:00 2001
From: awais qureshi <awais.qureshi@arbisoft.com>
Date: Wed, 28 Feb 2024 19:07:57 +0500
Subject: [PATCH 05/10] feat: python3.12 support.

---
 CHANGELOG.rst                       |  7 ++++
 Makefile                            | 14 +++++++-
 edx_api_doc_tools/__init__.py       |  2 +-
 requirements/base.txt               | 10 +++---
 requirements/ci.txt                 |  2 +-
 requirements/common_constraints.txt | 15 +++++++++
 requirements/constraints.txt        |  4 ++-
 requirements/dev.txt                | 52 ++++++++++-------------------
 requirements/doc.txt                | 35 ++++++++-----------
 requirements/pip.txt                |  2 +-
 requirements/quality.txt            | 41 +++++++++--------------
 requirements/test.txt               | 13 +++++---
 12 files changed, 101 insertions(+), 96 deletions(-)
 create mode 100644 requirements/common_constraints.txt

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 07d7879..2588140 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -14,6 +14,13 @@ Change Log
 Unreleased
 ----------
 
+1.8.0 --- 2024-02-29
+--------------------
+* Add support for python 3.12 support.
+* Removed django32 support.
+
+
+
 1.7.0 --- 2023-07-23
 --------------------
 
diff --git a/Makefile b/Makefile
index 6aca9e1..33419d8 100644
--- a/Makefile
+++ b/Makefile
@@ -48,10 +48,22 @@ pip:
 upgrade-pip-tools: pip-tools
 	pip-compile --upgrade requirements/pip-tools.in
 
+define COMMON_CONSTRAINTS_TEMP_COMMENT
+# This is a temporary solution to override the real common_constraints.txt\n# In edx-lint, until the pyjwt constraint in edx-lint has been removed.\n# See BOM-2721 for more details.\n# Below is the copied and edited version of common_constraints\n
+endef
+
+COMMON_CONSTRAINTS_TXT=requirements/common_constraints.txt
+.PHONY: $(COMMON_CONSTRAINTS_TXT)
+$(COMMON_CONSTRAINTS_TXT):
+	wget -O "$(@)" https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt || touch "$(@)"
+	echo "$(COMMON_CONSTRAINTS_TEMP_COMMENT)" | cat - $(@) > temp && mv temp $(@)
+
 upgrade: export CUSTOM_COMPILE_COMMAND=make upgrade
-upgrade:  ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in
+upgrade:  $(COMMON_CONSTRAINTS_TXT) ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in
 	# Make sure to compile files after any other files they include!
 	pip install -qr requirements/pip-tools.txt
+	sed 's/Django<4.0//g' requirements/common_constraints.txt > requirements/common_constraints.tmp
+	mv requirements/common_constraints.tmp requirements/common_constraints.txt
 	pip-compile --upgrade -o requirements/pip-tools.txt requirements/pip-tools.in
 	pip-compile --upgrade --allow-unsafe --rebuild -o requirements/pip.txt requirements/pip.in
 	pip install -qr requirements/pip-tools.txt
diff --git a/edx_api_doc_tools/__init__.py b/edx_api_doc_tools/__init__.py
index 201177b..d4926a4 100644
--- a/edx_api_doc_tools/__init__.py
+++ b/edx_api_doc_tools/__init__.py
@@ -46,4 +46,4 @@
 )
 
 
-__version__ = '1.7.0'
+__version__ = '1.8.0'
diff --git a/requirements/base.txt b/requirements/base.txt
index 1ffbefe..c73eeb3 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -6,9 +6,12 @@
 #
 asgiref==3.7.2
     # via django
-django==3.2.24
+backports-zoneinfo==0.2.1 ; python_version < "3.9"
+    # via
+    #   -c requirements/constraints.txt
+    #   django
+django==4.2.10
     # via
-    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/base.in
     #   djangorestframework
     #   drf-yasg
@@ -24,14 +27,13 @@ packaging==23.2
     # via drf-yasg
 pytz==2024.1
     # via
-    #   django
     #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
     # via drf-yasg
 sqlparse==0.4.4
     # via django
-typing-extensions==4.9.0
+typing-extensions==4.10.0
     # via asgiref
 uritemplate==4.1.1
     # via drf-yasg
diff --git a/requirements/ci.txt b/requirements/ci.txt
index e7a8760..88a39ff 100644
--- a/requirements/ci.txt
+++ b/requirements/ci.txt
@@ -4,7 +4,7 @@
 #
 #    make upgrade
 #
-cachetools==5.3.2
+cachetools==5.3.3
     # via tox
 chardet==5.2.0
     # via tox
diff --git a/requirements/common_constraints.txt b/requirements/common_constraints.txt
new file mode 100644
index 0000000..a971933
--- /dev/null
+++ b/requirements/common_constraints.txt
@@ -0,0 +1,15 @@
+# This is a temporary solution to override the real common_constraints.txt
+# In edx-lint, until the pyjwt constraint in edx-lint has been removed.
+# See BOM-2721 for more details.
+# Below is the copied and edited version of common_constraints
+
+# This is a temporary solution to override the real common_constraints.txt
+# In edx-lint, until the pyjwt constraint in edx-lint has been removed.
+# See BOM-2721 for more details.
+# Below is the copied and edited version of common_constraints
+
+# This is a temporary solution to override the real common_constraints.txt
+# In edx-lint, until the pyjwt constraint in edx-lint has been removed.
+# See BOM-2721 for more details.
+# Below is the copied and edited version of common_constraints
+
diff --git a/requirements/constraints.txt b/requirements/constraints.txt
index 7be88d2..5801947 100644
--- a/requirements/constraints.txt
+++ b/requirements/constraints.txt
@@ -9,4 +9,6 @@
 # linking to it here is good.
 
 # Common constraints for edx repos
--c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
+-c common_constraints.txt
+
+backports.zoneinfo;python_version<"3.9"
diff --git a/requirements/dev.txt b/requirements/dev.txt
index 27deda6..345701b 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -8,16 +8,21 @@ asgiref==3.7.2
     # via
     #   -r requirements/quality.txt
     #   django
-astroid==3.0.3
+astroid==3.1.0
     # via
     #   -r requirements/quality.txt
     #   pylint
     #   pylint-celery
+backports-zoneinfo==0.2.1 ; python_version < "3.9"
+    # via
+    #   -c requirements/constraints.txt
+    #   -r requirements/quality.txt
+    #   django
 build==1.0.3
     # via
     #   -r requirements/pip-tools.txt
     #   pip-tools
-cachetools==5.3.2
+cachetools==5.3.3
     # via
     #   -r requirements/ci.txt
     #   tox
@@ -25,10 +30,6 @@ certifi==2024.2.2
     # via
     #   -r requirements/quality.txt
     #   requests
-cffi==1.16.0
-    # via
-    #   -r requirements/quality.txt
-    #   cryptography
 chardet==5.2.0
     # via
     #   -r requirements/ci.txt
@@ -58,14 +59,10 @@ colorama==0.4.6
     # via
     #   -r requirements/ci.txt
     #   tox
-coverage[toml]==7.4.2
+coverage[toml]==7.4.3
     # via
     #   -r requirements/quality.txt
     #   pytest-cov
-cryptography==42.0.4
-    # via
-    #   -r requirements/quality.txt
-    #   secretstorage
 diff-cover==8.0.3
     # via -r requirements/dev.in
 dill==0.3.8
@@ -76,9 +73,8 @@ distlib==0.3.8
     # via
     #   -r requirements/ci.txt
     #   virtualenv
-django==3.2.24
+django==4.2.10
     # via
-    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/quality.txt
     #   djangorestframework
     #   drf-yasg
@@ -117,7 +113,7 @@ importlib-metadata==7.0.1
     #   build
     #   keyring
     #   twine
-importlib-resources==6.1.1
+importlib-resources==6.1.2
     # via
     #   -r requirements/quality.txt
     #   keyring
@@ -137,17 +133,12 @@ jaraco-classes==3.3.1
     # via
     #   -r requirements/quality.txt
     #   keyring
-jeepney==0.8.0
-    # via
-    #   -r requirements/quality.txt
-    #   keyring
-    #   secretstorage
 jinja2==3.1.3
     # via
     #   -r requirements/quality.txt
     #   code-annotations
     #   diff-cover
-keyring==24.3.0
+keyring==24.3.1
     # via
     #   -r requirements/quality.txt
     #   twine
@@ -217,10 +208,6 @@ polib==1.2.0
     # via edx-i18n-tools
 pycodestyle==2.11.1
     # via -r requirements/quality.txt
-pycparser==2.21
-    # via
-    #   -r requirements/quality.txt
-    #   cffi
 pydocstyle==6.3.0
     # via -r requirements/quality.txt
 pygments==2.17.2
@@ -229,7 +216,7 @@ pygments==2.17.2
     #   diff-cover
     #   readme-renderer
     #   rich
-pylint==3.0.3
+pylint==3.1.0
     # via
     #   -r requirements/quality.txt
     #   edx-lint
@@ -258,7 +245,7 @@ pyproject-hooks==1.0.0
     #   -r requirements/pip-tools.txt
     #   build
     #   pip-tools
-pytest==8.0.1
+pytest==8.0.2
     # via
     #   -r requirements/quality.txt
     #   pytest-cov
@@ -274,7 +261,6 @@ python-slugify==8.0.4
 pytz==2024.1
     # via
     #   -r requirements/quality.txt
-    #   django
     #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
@@ -283,7 +269,7 @@ pyyaml==6.0.1
     #   code-annotations
     #   drf-yasg
     #   edx-i18n-tools
-readme-renderer==42.0
+readme-renderer==43.0
     # via
     #   -r requirements/quality.txt
     #   twine
@@ -304,10 +290,6 @@ rich==13.7.0
     # via
     #   -r requirements/quality.txt
     #   twine
-secretstorage==3.3.3
-    # via
-    #   -r requirements/quality.txt
-    #   keyring
 six==1.16.0
     # via
     #   -r requirements/quality.txt
@@ -320,7 +302,7 @@ sqlparse==0.4.4
     # via
     #   -r requirements/quality.txt
     #   django
-stevedore==5.1.0
+stevedore==5.2.0
     # via
     #   -r requirements/quality.txt
     #   code-annotations
@@ -341,7 +323,7 @@ tomli==2.0.1
     #   pyproject-hooks
     #   pytest
     #   tox
-tomlkit==0.12.3
+tomlkit==0.12.4
     # via
     #   -r requirements/quality.txt
     #   pylint
@@ -349,7 +331,7 @@ tox==4.13.0
     # via -r requirements/ci.txt
 twine==5.0.0
     # via -r requirements/quality.txt
-typing-extensions==4.9.0
+typing-extensions==4.10.0
     # via
     #   -r requirements/quality.txt
     #   asgiref
diff --git a/requirements/doc.txt b/requirements/doc.txt
index cba7db0..a65b0c0 100644
--- a/requirements/doc.txt
+++ b/requirements/doc.txt
@@ -16,23 +16,23 @@ babel==2.14.0
     # via
     #   pydata-sphinx-theme
     #   sphinx
+backports-zoneinfo==0.2.1 ; python_version < "3.9"
+    # via
+    #   -c requirements/constraints.txt
+    #   -r requirements/test.txt
+    #   django
 beautifulsoup4==4.12.3
     # via pydata-sphinx-theme
 certifi==2024.2.2
     # via requests
-cffi==1.16.0
-    # via cryptography
 charset-normalizer==3.3.2
     # via requests
-coverage[toml]==7.4.2
+coverage[toml]==7.4.3
     # via
     #   -r requirements/test.txt
     #   pytest-cov
-cryptography==42.0.4
-    # via secretstorage
-django==3.2.24
+django==4.2.10
     # via
-    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/test.txt
     #   djangorestframework
     #   drf-yasg
@@ -64,7 +64,7 @@ importlib-metadata==7.0.1
     #   keyring
     #   sphinx
     #   twine
-importlib-resources==6.1.1
+importlib-resources==6.1.2
     # via keyring
 inflection==0.5.1
     # via
@@ -76,13 +76,9 @@ iniconfig==2.0.0
     #   pytest
 jaraco-classes==3.3.1
     # via keyring
-jeepney==0.8.0
-    # via
-    #   keyring
-    #   secretstorage
 jinja2==3.1.3
     # via sphinx
-keyring==24.3.0
+keyring==24.3.1
     # via twine
 markdown-it-py==3.0.0
     # via rich
@@ -109,8 +105,6 @@ pluggy==1.4.0
     # via
     #   -r requirements/test.txt
     #   pytest
-pycparser==2.21
-    # via cffi
 pydata-sphinx-theme==0.14.4
     # via sphinx-book-theme
 pygments==2.17.2
@@ -121,7 +115,7 @@ pygments==2.17.2
     #   readme-renderer
     #   rich
     #   sphinx
-pytest==8.0.1
+pytest==8.0.2
     # via
     #   -r requirements/test.txt
     #   pytest-cov
@@ -134,14 +128,13 @@ pytz==2024.1
     # via
     #   -r requirements/test.txt
     #   babel
-    #   django
     #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
     # via
     #   -r requirements/test.txt
     #   drf-yasg
-readme-renderer==42.0
+readme-renderer==43.0
     # via
     #   -r requirements/doc.in
     #   twine
@@ -158,8 +151,6 @@ rfc3986==2.0.0
     # via twine
 rich==13.7.0
     # via twine
-secretstorage==3.3.3
-    # via keyring
 snowballstemmer==2.2.0
     # via sphinx
 soupsieve==2.5
@@ -187,7 +178,7 @@ sqlparse==0.4.4
     # via
     #   -r requirements/test.txt
     #   django
-stevedore==5.1.0
+stevedore==5.2.0
     # via doc8
 tomli==2.0.1
     # via
@@ -197,7 +188,7 @@ tomli==2.0.1
     #   pytest
 twine==5.0.0
     # via -r requirements/doc.in
-typing-extensions==4.9.0
+typing-extensions==4.10.0
     # via
     #   -r requirements/test.txt
     #   asgiref
diff --git a/requirements/pip.txt b/requirements/pip.txt
index 71954cc..6665603 100644
--- a/requirements/pip.txt
+++ b/requirements/pip.txt
@@ -10,5 +10,5 @@ wheel==0.42.0
 # The following packages are considered to be unsafe in a requirements file:
 pip==24.0
     # via -r requirements/pip.in
-setuptools==69.1.0
+setuptools==69.1.1
     # via -r requirements/pip.in
diff --git a/requirements/quality.txt b/requirements/quality.txt
index a43b88c..075fc9b 100644
--- a/requirements/quality.txt
+++ b/requirements/quality.txt
@@ -8,14 +8,17 @@ asgiref==3.7.2
     # via
     #   -r requirements/test.txt
     #   django
-astroid==3.0.3
+astroid==3.1.0
     # via
     #   pylint
     #   pylint-celery
+backports-zoneinfo==0.2.1 ; python_version < "3.9"
+    # via
+    #   -c requirements/constraints.txt
+    #   -r requirements/test.txt
+    #   django
 certifi==2024.2.2
     # via requests
-cffi==1.16.0
-    # via cryptography
 charset-normalizer==3.3.2
     # via requests
 click==8.1.7
@@ -27,17 +30,14 @@ click-log==0.4.0
     # via edx-lint
 code-annotations==1.6.0
     # via edx-lint
-coverage[toml]==7.4.2
+coverage[toml]==7.4.3
     # via
     #   -r requirements/test.txt
     #   pytest-cov
-cryptography==42.0.4
-    # via secretstorage
 dill==0.3.8
     # via pylint
-django==3.2.24
+django==4.2.10
     # via
-    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/test.txt
     #   djangorestframework
     #   drf-yasg
@@ -61,7 +61,7 @@ importlib-metadata==7.0.1
     # via
     #   keyring
     #   twine
-importlib-resources==6.1.1
+importlib-resources==6.1.2
     # via keyring
 inflection==0.5.1
     # via
@@ -77,13 +77,9 @@ isort==5.13.2
     #   pylint
 jaraco-classes==3.3.1
     # via keyring
-jeepney==0.8.0
-    # via
-    #   keyring
-    #   secretstorage
 jinja2==3.1.3
     # via code-annotations
-keyring==24.3.0
+keyring==24.3.1
     # via twine
 markdown-it-py==3.0.0
     # via rich
@@ -114,15 +110,13 @@ pluggy==1.4.0
     #   pytest
 pycodestyle==2.11.1
     # via -r requirements/quality.in
-pycparser==2.21
-    # via cffi
 pydocstyle==6.3.0
     # via -r requirements/quality.in
 pygments==2.17.2
     # via
     #   readme-renderer
     #   rich
-pylint==3.0.3
+pylint==3.1.0
     # via
     #   edx-lint
     #   pylint-celery
@@ -136,7 +130,7 @@ pylint-plugin-utils==0.8.2
     # via
     #   pylint-celery
     #   pylint-django
-pytest==8.0.1
+pytest==8.0.2
     # via
     #   -r requirements/test.txt
     #   pytest-cov
@@ -150,7 +144,6 @@ python-slugify==8.0.4
 pytz==2024.1
     # via
     #   -r requirements/test.txt
-    #   django
     #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
@@ -158,7 +151,7 @@ pyyaml==6.0.1
     #   -r requirements/test.txt
     #   code-annotations
     #   drf-yasg
-readme-renderer==42.0
+readme-renderer==43.0
     # via twine
 requests==2.31.0
     # via
@@ -170,8 +163,6 @@ rfc3986==2.0.0
     # via twine
 rich==13.7.0
     # via twine
-secretstorage==3.3.3
-    # via keyring
 six==1.16.0
     # via edx-lint
 snowballstemmer==2.2.0
@@ -180,7 +171,7 @@ sqlparse==0.4.4
     # via
     #   -r requirements/test.txt
     #   django
-stevedore==5.1.0
+stevedore==5.2.0
     # via code-annotations
 text-unidecode==1.3
     # via python-slugify
@@ -190,11 +181,11 @@ tomli==2.0.1
     #   coverage
     #   pylint
     #   pytest
-tomlkit==0.12.3
+tomlkit==0.12.4
     # via pylint
 twine==5.0.0
     # via -r requirements/quality.in
-typing-extensions==4.9.0
+typing-extensions==4.10.0
     # via
     #   -r requirements/test.txt
     #   asgiref
diff --git a/requirements/test.txt b/requirements/test.txt
index 83a159a..18029a9 100644
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -8,10 +8,14 @@ asgiref==3.7.2
     # via
     #   -r requirements/base.txt
     #   django
-coverage[toml]==7.4.2
+backports-zoneinfo==0.2.1 ; python_version < "3.9"
+    # via
+    #   -c requirements/constraints.txt
+    #   -r requirements/base.txt
+    #   django
+coverage[toml]==7.4.3
     # via pytest-cov
     # via
-    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/base.txt
     #   djangorestframework
     #   drf-yasg
@@ -35,7 +39,7 @@ packaging==23.2
     #   pytest
 pluggy==1.4.0
     # via pytest
-pytest==8.0.1
+pytest==8.0.2
     # via
     #   pytest-cov
     #   pytest-django
@@ -46,7 +50,6 @@ pytest-django==4.8.0
 pytz==2024.1
     # via
     #   -r requirements/base.txt
-    #   django
     #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
@@ -61,7 +64,7 @@ tomli==2.0.1
     # via
     #   coverage
     #   pytest
-typing-extensions==4.9.0
+typing-extensions==4.10.0
     # via
     #   -r requirements/base.txt
     #   asgiref

From eecaae08a2ba07dec33f8383dc03a55f0a1e2575 Mon Sep 17 00:00:00 2001
From: awais qureshi <awais.qureshi@arbisoft.com>
Date: Mon, 1 Apr 2024 14:10:19 +0500
Subject: [PATCH 06/10] feat: python3.11 and 3.12 support.

---
 CHANGELOG.rst | 2 +-
 setup.py      | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 2588140..6e9224d 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -16,7 +16,7 @@ Unreleased
 
 1.8.0 --- 2024-02-29
 --------------------
-* Add support for python 3.12 support.
+* Add support for python 3.11 and 3.12 support.
 * Removed django32 support.
 
 
diff --git a/setup.py b/setup.py
index 40b3ca3..916433b 100644
--- a/setup.py
+++ b/setup.py
@@ -124,12 +124,13 @@ def is_requirement(line):
     classifiers=[
         'Development Status :: 3 - Alpha',
         'Framework :: Django',
-        'Framework :: Django :: 3.2',
         'Framework :: Django :: 4.2',
         'Intended Audience :: Developers',
         'License :: OSI Approved :: Apache Software License',
         'Natural Language :: English',
         'Programming Language :: Python :: 3',
         'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.11',
+        'Programming Language :: Python :: 3.12',
     ],
 )

From f34f4b9f29a313fe930a0be5ef8652b68658094e Mon Sep 17 00:00:00 2001
From: awais qureshi <awais.qureshi@arbisoft.com>
Date: Wed, 28 Feb 2024 18:33:10 +0500
Subject: [PATCH 07/10] feat: python3.11 and 3.12 support.

---
 .github/workflows/ci.yml            |  7 ++--
 CHANGELOG.rst                       |  7 ++++
 Makefile                            | 14 +++++++-
 edx_api_doc_tools/__init__.py       |  2 +-
 requirements/base.txt               | 10 +++---
 requirements/ci.txt                 |  2 +-
 requirements/common_constraints.txt | 15 +++++++++
 requirements/constraints.txt        |  4 ++-
 requirements/dev.txt                | 52 ++++++++++-------------------
 requirements/doc.txt                | 35 ++++++++-----------
 requirements/pip.txt                |  2 +-
 requirements/quality.txt            | 41 +++++++++--------------
 requirements/test.txt               | 13 +++++---
 setup.py                            |  3 +-
 tox.ini                             |  6 ++--
 15 files changed, 107 insertions(+), 106 deletions(-)
 create mode 100644 requirements/common_constraints.txt

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e9448f8..840f82e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -14,13 +14,10 @@ jobs:
     strategy:
       matrix:
         os: [ubuntu-20.04]
-        python-version: ["3.8"]
+        python-version: ["3.8", "3.12"]
         toxenv:
           [
-            py38-django32-drf312,
-            py38-django32-drflatest,
-            py38-django42-drflatest,
-            quality,
+            py38-django42-drflatest,quality
           ]
 
     steps:
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 07d7879..6e9224d 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -14,6 +14,13 @@ Change Log
 Unreleased
 ----------
 
+1.8.0 --- 2024-02-29
+--------------------
+* Add support for python 3.11 and 3.12 support.
+* Removed django32 support.
+
+
+
 1.7.0 --- 2023-07-23
 --------------------
 
diff --git a/Makefile b/Makefile
index 6aca9e1..33419d8 100644
--- a/Makefile
+++ b/Makefile
@@ -48,10 +48,22 @@ pip:
 upgrade-pip-tools: pip-tools
 	pip-compile --upgrade requirements/pip-tools.in
 
+define COMMON_CONSTRAINTS_TEMP_COMMENT
+# This is a temporary solution to override the real common_constraints.txt\n# In edx-lint, until the pyjwt constraint in edx-lint has been removed.\n# See BOM-2721 for more details.\n# Below is the copied and edited version of common_constraints\n
+endef
+
+COMMON_CONSTRAINTS_TXT=requirements/common_constraints.txt
+.PHONY: $(COMMON_CONSTRAINTS_TXT)
+$(COMMON_CONSTRAINTS_TXT):
+	wget -O "$(@)" https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt || touch "$(@)"
+	echo "$(COMMON_CONSTRAINTS_TEMP_COMMENT)" | cat - $(@) > temp && mv temp $(@)
+
 upgrade: export CUSTOM_COMPILE_COMMAND=make upgrade
-upgrade:  ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in
+upgrade:  $(COMMON_CONSTRAINTS_TXT) ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in
 	# Make sure to compile files after any other files they include!
 	pip install -qr requirements/pip-tools.txt
+	sed 's/Django<4.0//g' requirements/common_constraints.txt > requirements/common_constraints.tmp
+	mv requirements/common_constraints.tmp requirements/common_constraints.txt
 	pip-compile --upgrade -o requirements/pip-tools.txt requirements/pip-tools.in
 	pip-compile --upgrade --allow-unsafe --rebuild -o requirements/pip.txt requirements/pip.in
 	pip install -qr requirements/pip-tools.txt
diff --git a/edx_api_doc_tools/__init__.py b/edx_api_doc_tools/__init__.py
index 201177b..d4926a4 100644
--- a/edx_api_doc_tools/__init__.py
+++ b/edx_api_doc_tools/__init__.py
@@ -46,4 +46,4 @@
 )
 
 
-__version__ = '1.7.0'
+__version__ = '1.8.0'
diff --git a/requirements/base.txt b/requirements/base.txt
index 1ffbefe..c73eeb3 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -6,9 +6,12 @@
 #
 asgiref==3.7.2
     # via django
-django==3.2.24
+backports-zoneinfo==0.2.1 ; python_version < "3.9"
+    # via
+    #   -c requirements/constraints.txt
+    #   django
+django==4.2.10
     # via
-    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/base.in
     #   djangorestframework
     #   drf-yasg
@@ -24,14 +27,13 @@ packaging==23.2
     # via drf-yasg
 pytz==2024.1
     # via
-    #   django
     #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
     # via drf-yasg
 sqlparse==0.4.4
     # via django
-typing-extensions==4.9.0
+typing-extensions==4.10.0
     # via asgiref
 uritemplate==4.1.1
     # via drf-yasg
diff --git a/requirements/ci.txt b/requirements/ci.txt
index e7a8760..88a39ff 100644
--- a/requirements/ci.txt
+++ b/requirements/ci.txt
@@ -4,7 +4,7 @@
 #
 #    make upgrade
 #
-cachetools==5.3.2
+cachetools==5.3.3
     # via tox
 chardet==5.2.0
     # via tox
diff --git a/requirements/common_constraints.txt b/requirements/common_constraints.txt
new file mode 100644
index 0000000..a971933
--- /dev/null
+++ b/requirements/common_constraints.txt
@@ -0,0 +1,15 @@
+# This is a temporary solution to override the real common_constraints.txt
+# In edx-lint, until the pyjwt constraint in edx-lint has been removed.
+# See BOM-2721 for more details.
+# Below is the copied and edited version of common_constraints
+
+# This is a temporary solution to override the real common_constraints.txt
+# In edx-lint, until the pyjwt constraint in edx-lint has been removed.
+# See BOM-2721 for more details.
+# Below is the copied and edited version of common_constraints
+
+# This is a temporary solution to override the real common_constraints.txt
+# In edx-lint, until the pyjwt constraint in edx-lint has been removed.
+# See BOM-2721 for more details.
+# Below is the copied and edited version of common_constraints
+
diff --git a/requirements/constraints.txt b/requirements/constraints.txt
index 7be88d2..5801947 100644
--- a/requirements/constraints.txt
+++ b/requirements/constraints.txt
@@ -9,4 +9,6 @@
 # linking to it here is good.
 
 # Common constraints for edx repos
--c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
+-c common_constraints.txt
+
+backports.zoneinfo;python_version<"3.9"
diff --git a/requirements/dev.txt b/requirements/dev.txt
index 27deda6..345701b 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -8,16 +8,21 @@ asgiref==3.7.2
     # via
     #   -r requirements/quality.txt
     #   django
-astroid==3.0.3
+astroid==3.1.0
     # via
     #   -r requirements/quality.txt
     #   pylint
     #   pylint-celery
+backports-zoneinfo==0.2.1 ; python_version < "3.9"
+    # via
+    #   -c requirements/constraints.txt
+    #   -r requirements/quality.txt
+    #   django
 build==1.0.3
     # via
     #   -r requirements/pip-tools.txt
     #   pip-tools
-cachetools==5.3.2
+cachetools==5.3.3
     # via
     #   -r requirements/ci.txt
     #   tox
@@ -25,10 +30,6 @@ certifi==2024.2.2
     # via
     #   -r requirements/quality.txt
     #   requests
-cffi==1.16.0
-    # via
-    #   -r requirements/quality.txt
-    #   cryptography
 chardet==5.2.0
     # via
     #   -r requirements/ci.txt
@@ -58,14 +59,10 @@ colorama==0.4.6
     # via
     #   -r requirements/ci.txt
     #   tox
-coverage[toml]==7.4.2
+coverage[toml]==7.4.3
     # via
     #   -r requirements/quality.txt
     #   pytest-cov
-cryptography==42.0.4
-    # via
-    #   -r requirements/quality.txt
-    #   secretstorage
 diff-cover==8.0.3
     # via -r requirements/dev.in
 dill==0.3.8
@@ -76,9 +73,8 @@ distlib==0.3.8
     # via
     #   -r requirements/ci.txt
     #   virtualenv
-django==3.2.24
+django==4.2.10
     # via
-    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/quality.txt
     #   djangorestframework
     #   drf-yasg
@@ -117,7 +113,7 @@ importlib-metadata==7.0.1
     #   build
     #   keyring
     #   twine
-importlib-resources==6.1.1
+importlib-resources==6.1.2
     # via
     #   -r requirements/quality.txt
     #   keyring
@@ -137,17 +133,12 @@ jaraco-classes==3.3.1
     # via
     #   -r requirements/quality.txt
     #   keyring
-jeepney==0.8.0
-    # via
-    #   -r requirements/quality.txt
-    #   keyring
-    #   secretstorage
 jinja2==3.1.3
     # via
     #   -r requirements/quality.txt
     #   code-annotations
     #   diff-cover
-keyring==24.3.0
+keyring==24.3.1
     # via
     #   -r requirements/quality.txt
     #   twine
@@ -217,10 +208,6 @@ polib==1.2.0
     # via edx-i18n-tools
 pycodestyle==2.11.1
     # via -r requirements/quality.txt
-pycparser==2.21
-    # via
-    #   -r requirements/quality.txt
-    #   cffi
 pydocstyle==6.3.0
     # via -r requirements/quality.txt
 pygments==2.17.2
@@ -229,7 +216,7 @@ pygments==2.17.2
     #   diff-cover
     #   readme-renderer
     #   rich
-pylint==3.0.3
+pylint==3.1.0
     # via
     #   -r requirements/quality.txt
     #   edx-lint
@@ -258,7 +245,7 @@ pyproject-hooks==1.0.0
     #   -r requirements/pip-tools.txt
     #   build
     #   pip-tools
-pytest==8.0.1
+pytest==8.0.2
     # via
     #   -r requirements/quality.txt
     #   pytest-cov
@@ -274,7 +261,6 @@ python-slugify==8.0.4
 pytz==2024.1
     # via
     #   -r requirements/quality.txt
-    #   django
     #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
@@ -283,7 +269,7 @@ pyyaml==6.0.1
     #   code-annotations
     #   drf-yasg
     #   edx-i18n-tools
-readme-renderer==42.0
+readme-renderer==43.0
     # via
     #   -r requirements/quality.txt
     #   twine
@@ -304,10 +290,6 @@ rich==13.7.0
     # via
     #   -r requirements/quality.txt
     #   twine
-secretstorage==3.3.3
-    # via
-    #   -r requirements/quality.txt
-    #   keyring
 six==1.16.0
     # via
     #   -r requirements/quality.txt
@@ -320,7 +302,7 @@ sqlparse==0.4.4
     # via
     #   -r requirements/quality.txt
     #   django
-stevedore==5.1.0
+stevedore==5.2.0
     # via
     #   -r requirements/quality.txt
     #   code-annotations
@@ -341,7 +323,7 @@ tomli==2.0.1
     #   pyproject-hooks
     #   pytest
     #   tox
-tomlkit==0.12.3
+tomlkit==0.12.4
     # via
     #   -r requirements/quality.txt
     #   pylint
@@ -349,7 +331,7 @@ tox==4.13.0
     # via -r requirements/ci.txt
 twine==5.0.0
     # via -r requirements/quality.txt
-typing-extensions==4.9.0
+typing-extensions==4.10.0
     # via
     #   -r requirements/quality.txt
     #   asgiref
diff --git a/requirements/doc.txt b/requirements/doc.txt
index cba7db0..a65b0c0 100644
--- a/requirements/doc.txt
+++ b/requirements/doc.txt
@@ -16,23 +16,23 @@ babel==2.14.0
     # via
     #   pydata-sphinx-theme
     #   sphinx
+backports-zoneinfo==0.2.1 ; python_version < "3.9"
+    # via
+    #   -c requirements/constraints.txt
+    #   -r requirements/test.txt
+    #   django
 beautifulsoup4==4.12.3
     # via pydata-sphinx-theme
 certifi==2024.2.2
     # via requests
-cffi==1.16.0
-    # via cryptography
 charset-normalizer==3.3.2
     # via requests
-coverage[toml]==7.4.2
+coverage[toml]==7.4.3
     # via
     #   -r requirements/test.txt
     #   pytest-cov
-cryptography==42.0.4
-    # via secretstorage
-django==3.2.24
+django==4.2.10
     # via
-    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/test.txt
     #   djangorestframework
     #   drf-yasg
@@ -64,7 +64,7 @@ importlib-metadata==7.0.1
     #   keyring
     #   sphinx
     #   twine
-importlib-resources==6.1.1
+importlib-resources==6.1.2
     # via keyring
 inflection==0.5.1
     # via
@@ -76,13 +76,9 @@ iniconfig==2.0.0
     #   pytest
 jaraco-classes==3.3.1
     # via keyring
-jeepney==0.8.0
-    # via
-    #   keyring
-    #   secretstorage
 jinja2==3.1.3
     # via sphinx
-keyring==24.3.0
+keyring==24.3.1
     # via twine
 markdown-it-py==3.0.0
     # via rich
@@ -109,8 +105,6 @@ pluggy==1.4.0
     # via
     #   -r requirements/test.txt
     #   pytest
-pycparser==2.21
-    # via cffi
 pydata-sphinx-theme==0.14.4
     # via sphinx-book-theme
 pygments==2.17.2
@@ -121,7 +115,7 @@ pygments==2.17.2
     #   readme-renderer
     #   rich
     #   sphinx
-pytest==8.0.1
+pytest==8.0.2
     # via
     #   -r requirements/test.txt
     #   pytest-cov
@@ -134,14 +128,13 @@ pytz==2024.1
     # via
     #   -r requirements/test.txt
     #   babel
-    #   django
     #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
     # via
     #   -r requirements/test.txt
     #   drf-yasg
-readme-renderer==42.0
+readme-renderer==43.0
     # via
     #   -r requirements/doc.in
     #   twine
@@ -158,8 +151,6 @@ rfc3986==2.0.0
     # via twine
 rich==13.7.0
     # via twine
-secretstorage==3.3.3
-    # via keyring
 snowballstemmer==2.2.0
     # via sphinx
 soupsieve==2.5
@@ -187,7 +178,7 @@ sqlparse==0.4.4
     # via
     #   -r requirements/test.txt
     #   django
-stevedore==5.1.0
+stevedore==5.2.0
     # via doc8
 tomli==2.0.1
     # via
@@ -197,7 +188,7 @@ tomli==2.0.1
     #   pytest
 twine==5.0.0
     # via -r requirements/doc.in
-typing-extensions==4.9.0
+typing-extensions==4.10.0
     # via
     #   -r requirements/test.txt
     #   asgiref
diff --git a/requirements/pip.txt b/requirements/pip.txt
index 71954cc..6665603 100644
--- a/requirements/pip.txt
+++ b/requirements/pip.txt
@@ -10,5 +10,5 @@ wheel==0.42.0
 # The following packages are considered to be unsafe in a requirements file:
 pip==24.0
     # via -r requirements/pip.in
-setuptools==69.1.0
+setuptools==69.1.1
     # via -r requirements/pip.in
diff --git a/requirements/quality.txt b/requirements/quality.txt
index a43b88c..075fc9b 100644
--- a/requirements/quality.txt
+++ b/requirements/quality.txt
@@ -8,14 +8,17 @@ asgiref==3.7.2
     # via
     #   -r requirements/test.txt
     #   django
-astroid==3.0.3
+astroid==3.1.0
     # via
     #   pylint
     #   pylint-celery
+backports-zoneinfo==0.2.1 ; python_version < "3.9"
+    # via
+    #   -c requirements/constraints.txt
+    #   -r requirements/test.txt
+    #   django
 certifi==2024.2.2
     # via requests
-cffi==1.16.0
-    # via cryptography
 charset-normalizer==3.3.2
     # via requests
 click==8.1.7
@@ -27,17 +30,14 @@ click-log==0.4.0
     # via edx-lint
 code-annotations==1.6.0
     # via edx-lint
-coverage[toml]==7.4.2
+coverage[toml]==7.4.3
     # via
     #   -r requirements/test.txt
     #   pytest-cov
-cryptography==42.0.4
-    # via secretstorage
 dill==0.3.8
     # via pylint
-django==3.2.24
+django==4.2.10
     # via
-    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/test.txt
     #   djangorestframework
     #   drf-yasg
@@ -61,7 +61,7 @@ importlib-metadata==7.0.1
     # via
     #   keyring
     #   twine
-importlib-resources==6.1.1
+importlib-resources==6.1.2
     # via keyring
 inflection==0.5.1
     # via
@@ -77,13 +77,9 @@ isort==5.13.2
     #   pylint
 jaraco-classes==3.3.1
     # via keyring
-jeepney==0.8.0
-    # via
-    #   keyring
-    #   secretstorage
 jinja2==3.1.3
     # via code-annotations
-keyring==24.3.0
+keyring==24.3.1
     # via twine
 markdown-it-py==3.0.0
     # via rich
@@ -114,15 +110,13 @@ pluggy==1.4.0
     #   pytest
 pycodestyle==2.11.1
     # via -r requirements/quality.in
-pycparser==2.21
-    # via cffi
 pydocstyle==6.3.0
     # via -r requirements/quality.in
 pygments==2.17.2
     # via
     #   readme-renderer
     #   rich
-pylint==3.0.3
+pylint==3.1.0
     # via
     #   edx-lint
     #   pylint-celery
@@ -136,7 +130,7 @@ pylint-plugin-utils==0.8.2
     # via
     #   pylint-celery
     #   pylint-django
-pytest==8.0.1
+pytest==8.0.2
     # via
     #   -r requirements/test.txt
     #   pytest-cov
@@ -150,7 +144,6 @@ python-slugify==8.0.4
 pytz==2024.1
     # via
     #   -r requirements/test.txt
-    #   django
     #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
@@ -158,7 +151,7 @@ pyyaml==6.0.1
     #   -r requirements/test.txt
     #   code-annotations
     #   drf-yasg
-readme-renderer==42.0
+readme-renderer==43.0
     # via twine
 requests==2.31.0
     # via
@@ -170,8 +163,6 @@ rfc3986==2.0.0
     # via twine
 rich==13.7.0
     # via twine
-secretstorage==3.3.3
-    # via keyring
 six==1.16.0
     # via edx-lint
 snowballstemmer==2.2.0
@@ -180,7 +171,7 @@ sqlparse==0.4.4
     # via
     #   -r requirements/test.txt
     #   django
-stevedore==5.1.0
+stevedore==5.2.0
     # via code-annotations
 text-unidecode==1.3
     # via python-slugify
@@ -190,11 +181,11 @@ tomli==2.0.1
     #   coverage
     #   pylint
     #   pytest
-tomlkit==0.12.3
+tomlkit==0.12.4
     # via pylint
 twine==5.0.0
     # via -r requirements/quality.in
-typing-extensions==4.9.0
+typing-extensions==4.10.0
     # via
     #   -r requirements/test.txt
     #   asgiref
diff --git a/requirements/test.txt b/requirements/test.txt
index 83a159a..18029a9 100644
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -8,10 +8,14 @@ asgiref==3.7.2
     # via
     #   -r requirements/base.txt
     #   django
-coverage[toml]==7.4.2
+backports-zoneinfo==0.2.1 ; python_version < "3.9"
+    # via
+    #   -c requirements/constraints.txt
+    #   -r requirements/base.txt
+    #   django
+coverage[toml]==7.4.3
     # via pytest-cov
     # via
-    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/base.txt
     #   djangorestframework
     #   drf-yasg
@@ -35,7 +39,7 @@ packaging==23.2
     #   pytest
 pluggy==1.4.0
     # via pytest
-pytest==8.0.1
+pytest==8.0.2
     # via
     #   pytest-cov
     #   pytest-django
@@ -46,7 +50,6 @@ pytest-django==4.8.0
 pytz==2024.1
     # via
     #   -r requirements/base.txt
-    #   django
     #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
@@ -61,7 +64,7 @@ tomli==2.0.1
     # via
     #   coverage
     #   pytest
-typing-extensions==4.9.0
+typing-extensions==4.10.0
     # via
     #   -r requirements/base.txt
     #   asgiref
diff --git a/setup.py b/setup.py
index 40b3ca3..916433b 100644
--- a/setup.py
+++ b/setup.py
@@ -124,12 +124,13 @@ def is_requirement(line):
     classifiers=[
         'Development Status :: 3 - Alpha',
         'Framework :: Django',
-        'Framework :: Django :: 3.2',
         'Framework :: Django :: 4.2',
         'Intended Audience :: Developers',
         'License :: OSI Approved :: Apache Software License',
         'Natural Language :: English',
         'Programming Language :: Python :: 3',
         'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.11',
+        'Programming Language :: Python :: 3.12',
     ],
 )
diff --git a/tox.ini b/tox.ini
index 1c380fb..3a51fd2 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,7 +1,6 @@
 [tox]
 envlist =
-    py38-django{32}-drf{312, latest}
-    py38-django{42}-drf{latest} # Django 4.2 is not supported by DRF < 3.14
+    py{38,312}-django{42}-drf{latest} # Django 4.2 is not supported by DRF < 3.14
     quality
 
 [pytest]
@@ -11,9 +10,7 @@ norecursedirs = .* docs requirements
 
 [testenv]
 deps =
-    django32: Django>=3.2,<4.0
     django42: Django>=4.2,<4.3
-    drf312: djangorestframework>=3.13,<3.14
     drflatest: djangorestframework
     -r{toxinidir}/requirements/test.txt
 commands =
@@ -38,6 +35,7 @@ allowlist_externals =
     make
     rm
 deps =
+    setuptools
     -r{toxinidir}/requirements/quality.txt
 commands =
     make quality

From c5e5700fdfeaed90d6f945f399422ab962376653 Mon Sep 17 00:00:00 2001
From: edX requirements bot <devops+edx-requirements-bot@edx.org>
Date: Mon, 1 Apr 2024 05:11:34 -0400
Subject: [PATCH 08/10] chore: Updating Python Requirements

---
 requirements/base.txt               | 14 +++---
 requirements/ci.txt                 |  6 +--
 requirements/common_constraints.txt | 38 +++++++++++---
 requirements/dev.txt                | 78 ++++++++++++++++++++---------
 requirements/doc.txt                | 54 +++++++++++++-------
 requirements/pip-tools.txt          | 16 +++---
 requirements/pip.txt                |  4 +-
 requirements/quality.txt            | 56 ++++++++++++++-------
 requirements/test.txt               | 13 ++---
 9 files changed, 188 insertions(+), 91 deletions(-)

diff --git a/requirements/base.txt b/requirements/base.txt
index c73eeb3..172e082 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -4,18 +4,20 @@
 #
 #    make upgrade
 #
-asgiref==3.7.2
+asgiref==3.8.1
     # via django
 backports-zoneinfo==0.2.1 ; python_version < "3.9"
     # via
     #   -c requirements/constraints.txt
     #   django
-django==4.2.10
+    #   djangorestframework
+django==4.2.11
     # via
+    #   -c requirements/common_constraints.txt
     #   -r requirements/base.in
     #   djangorestframework
     #   drf-yasg
-djangorestframework==3.14.0
+djangorestframework==3.15.1
     # via
     #   -r requirements/base.in
     #   drf-yasg
@@ -23,12 +25,10 @@ drf-yasg==1.21.7
     # via -r requirements/base.in
 inflection==0.5.1
     # via drf-yasg
-packaging==23.2
+packaging==24.0
     # via drf-yasg
 pytz==2024.1
-    # via
-    #   djangorestframework
-    #   drf-yasg
+    # via drf-yasg
 pyyaml==6.0.1
     # via drf-yasg
 sqlparse==0.4.4
diff --git a/requirements/ci.txt b/requirements/ci.txt
index 88a39ff..c085cbc 100644
--- a/requirements/ci.txt
+++ b/requirements/ci.txt
@@ -12,11 +12,11 @@ colorama==0.4.6
     # via tox
 distlib==0.3.8
     # via virtualenv
-filelock==3.13.1
+filelock==3.13.3
     # via
     #   tox
     #   virtualenv
-packaging==23.2
+packaging==24.0
     # via
     #   pyproject-api
     #   tox
@@ -32,7 +32,7 @@ tomli==2.0.1
     # via
     #   pyproject-api
     #   tox
-tox==4.13.0
+tox==4.14.2
     # via -r requirements/ci.in
 virtualenv==20.25.1
     # via tox
diff --git a/requirements/common_constraints.txt b/requirements/common_constraints.txt
index a971933..c9d8d9c 100644
--- a/requirements/common_constraints.txt
+++ b/requirements/common_constraints.txt
@@ -3,13 +3,35 @@
 # See BOM-2721 for more details.
 # Below is the copied and edited version of common_constraints
 
-# This is a temporary solution to override the real common_constraints.txt
-# In edx-lint, until the pyjwt constraint in edx-lint has been removed.
-# See BOM-2721 for more details.
-# Below is the copied and edited version of common_constraints
+# A central location for most common version constraints
+# (across edx repos) for pip-installation.
+#
+# Similar to other constraint files this file doesn't install any packages.
+# It specifies version constraints that will be applied if a package is needed.
+# When pinning something here, please provide an explanation of why it is a good
+# idea to pin this package across all edx repos, Ideally, link to other information
+# that will help people in the future to remove the pin when possible.
+# Writing an issue against the offending project and linking to it here is good.
+#
+# Note: Changes to this file will automatically be used by other repos, referencing
+#  this file from Github directly. It does not require packaging in edx-lint.
 
-# This is a temporary solution to override the real common_constraints.txt
-# In edx-lint, until the pyjwt constraint in edx-lint has been removed.
-# See BOM-2721 for more details.
-# Below is the copied and edited version of common_constraints
 
+# using LTS django version
+Django<5.0
+
+# elasticsearch>=7.14.0 includes breaking changes in it which caused issues in discovery upgrade process.
+# elastic search changelog: https://www.elastic.co/guide/en/enterprise-search/master/release-notes-7.14.0.html
+elasticsearch<7.14.0
+
+# django-simple-history>3.0.0 adds indexing and causes a lot of migrations to be affected
+django-simple-history==3.0.0
+
+# opentelemetry requires version 6.x at the moment:
+# https://github.com/open-telemetry/opentelemetry-python/issues/3570
+# Normally this could be added as a constraint in edx-django-utils, where we're
+# adding the opentelemetry dependency. However, when we compile pip-tools.txt,
+# that uses version 7.x, and then there's no undoing that when compiling base.txt.
+# So we need to pin it globally, for now.
+# Ticket for unpinning: https://github.com/openedx/edx-lint/issues/407
+importlib-metadata<7
diff --git a/requirements/dev.txt b/requirements/dev.txt
index 345701b..ecdfa7c 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -4,7 +4,7 @@
 #
 #    make upgrade
 #
-asgiref==3.7.2
+asgiref==3.8.1
     # via
     #   -r requirements/quality.txt
     #   django
@@ -18,7 +18,8 @@ backports-zoneinfo==0.2.1 ; python_version < "3.9"
     #   -c requirements/constraints.txt
     #   -r requirements/quality.txt
     #   django
-build==1.0.3
+    #   djangorestframework
+build==1.2.1
     # via
     #   -r requirements/pip-tools.txt
     #   pip-tools
@@ -30,6 +31,10 @@ certifi==2024.2.2
     # via
     #   -r requirements/quality.txt
     #   requests
+cffi==1.16.0
+    # via
+    #   -r requirements/quality.txt
+    #   cryptography
 chardet==5.2.0
     # via
     #   -r requirements/ci.txt
@@ -51,7 +56,7 @@ click-log==0.4.0
     # via
     #   -r requirements/quality.txt
     #   edx-lint
-code-annotations==1.6.0
+code-annotations==1.7.0
     # via
     #   -r requirements/quality.txt
     #   edx-lint
@@ -59,10 +64,14 @@ colorama==0.4.6
     # via
     #   -r requirements/ci.txt
     #   tox
-coverage[toml]==7.4.3
+coverage[toml]==7.4.4
     # via
     #   -r requirements/quality.txt
     #   pytest-cov
+cryptography==42.0.5
+    # via
+    #   -r requirements/quality.txt
+    #   secretstorage
 diff-cover==8.0.3
     # via -r requirements/dev.in
 dill==0.3.8
@@ -73,13 +82,14 @@ distlib==0.3.8
     # via
     #   -r requirements/ci.txt
     #   virtualenv
-django==4.2.10
+django==4.2.11
     # via
+    #   -c requirements/common_constraints.txt
     #   -r requirements/quality.txt
     #   djangorestframework
     #   drf-yasg
     #   edx-i18n-tools
-djangorestframework==3.14.0
+djangorestframework==3.15.1
     # via
     #   -r requirements/quality.txt
     #   drf-yasg
@@ -97,7 +107,7 @@ exceptiongroup==1.2.0
     # via
     #   -r requirements/quality.txt
     #   pytest
-filelock==3.13.1
+filelock==3.13.3
     # via
     #   -r requirements/ci.txt
     #   tox
@@ -106,14 +116,15 @@ idna==3.6
     # via
     #   -r requirements/quality.txt
     #   requests
-importlib-metadata==7.0.1
+importlib-metadata==6.11.0
     # via
+    #   -c requirements/common_constraints.txt
     #   -r requirements/pip-tools.txt
     #   -r requirements/quality.txt
     #   build
     #   keyring
     #   twine
-importlib-resources==6.1.2
+importlib-resources==6.4.0
     # via
     #   -r requirements/quality.txt
     #   keyring
@@ -129,20 +140,33 @@ isort==5.13.2
     # via
     #   -r requirements/quality.txt
     #   pylint
-jaraco-classes==3.3.1
+jaraco-classes==3.4.0
+    # via
+    #   -r requirements/quality.txt
+    #   keyring
+jaraco-context==4.3.0
+    # via
+    #   -r requirements/quality.txt
+    #   keyring
+jaraco-functools==4.0.0
     # via
     #   -r requirements/quality.txt
     #   keyring
+jeepney==0.8.0
+    # via
+    #   -r requirements/quality.txt
+    #   keyring
+    #   secretstorage
 jinja2==3.1.3
     # via
     #   -r requirements/quality.txt
     #   code-annotations
     #   diff-cover
-keyring==24.3.1
+keyring==25.0.0
     # via
     #   -r requirements/quality.txt
     #   twine
-lxml==5.1.0
+lxml==5.2.0
     # via edx-i18n-tools
 markdown-it-py==3.0.0
     # via
@@ -164,11 +188,12 @@ more-itertools==10.2.0
     # via
     #   -r requirements/quality.txt
     #   jaraco-classes
-nh3==0.2.15
+    #   jaraco-functools
+nh3==0.2.17
     # via
     #   -r requirements/quality.txt
     #   readme-renderer
-packaging==23.2
+packaging==24.0
     # via
     #   -r requirements/ci.txt
     #   -r requirements/pip-tools.txt
@@ -184,9 +209,9 @@ pbr==6.0.0
     # via
     #   -r requirements/quality.txt
     #   stevedore
-pip-tools==7.4.0
+pip-tools==7.4.1
     # via -r requirements/pip-tools.txt
-pkginfo==1.9.6
+pkginfo==1.10.0
     # via
     #   -r requirements/quality.txt
     #   twine
@@ -208,6 +233,10 @@ polib==1.2.0
     # via edx-i18n-tools
 pycodestyle==2.11.1
     # via -r requirements/quality.txt
+pycparser==2.22
+    # via
+    #   -r requirements/quality.txt
+    #   cffi
 pydocstyle==6.3.0
     # via -r requirements/quality.txt
 pygments==2.17.2
@@ -245,12 +274,12 @@ pyproject-hooks==1.0.0
     #   -r requirements/pip-tools.txt
     #   build
     #   pip-tools
-pytest==8.0.2
+pytest==8.1.1
     # via
     #   -r requirements/quality.txt
     #   pytest-cov
     #   pytest-django
-pytest-cov==4.1.0
+pytest-cov==5.0.0
     # via -r requirements/quality.txt
 pytest-django==4.8.0
     # via -r requirements/quality.txt
@@ -261,7 +290,6 @@ python-slugify==8.0.4
 pytz==2024.1
     # via
     #   -r requirements/quality.txt
-    #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
     # via
@@ -286,10 +314,14 @@ rfc3986==2.0.0
     # via
     #   -r requirements/quality.txt
     #   twine
-rich==13.7.0
+rich==13.7.1
     # via
     #   -r requirements/quality.txt
     #   twine
+secretstorage==3.3.3
+    # via
+    #   -r requirements/quality.txt
+    #   keyring
 six==1.16.0
     # via
     #   -r requirements/quality.txt
@@ -327,7 +359,7 @@ tomlkit==0.12.4
     # via
     #   -r requirements/quality.txt
     #   pylint
-tox==4.13.0
+tox==4.14.2
     # via -r requirements/ci.txt
 twine==5.0.0
     # via -r requirements/quality.txt
@@ -351,11 +383,11 @@ virtualenv==20.25.1
     # via
     #   -r requirements/ci.txt
     #   tox
-wheel==0.42.0
+wheel==0.43.0
     # via
     #   -r requirements/pip-tools.txt
     #   pip-tools
-zipp==3.17.0
+zipp==3.18.1
     # via
     #   -r requirements/pip-tools.txt
     #   -r requirements/quality.txt
diff --git a/requirements/doc.txt b/requirements/doc.txt
index a65b0c0..d573cbb 100644
--- a/requirements/doc.txt
+++ b/requirements/doc.txt
@@ -8,7 +8,7 @@ accessible-pygments==0.0.4
     # via pydata-sphinx-theme
 alabaster==0.7.13
     # via sphinx
-asgiref==3.7.2
+asgiref==3.8.1
     # via
     #   -r requirements/test.txt
     #   django
@@ -21,22 +21,28 @@ backports-zoneinfo==0.2.1 ; python_version < "3.9"
     #   -c requirements/constraints.txt
     #   -r requirements/test.txt
     #   django
+    #   djangorestframework
 beautifulsoup4==4.12.3
     # via pydata-sphinx-theme
 certifi==2024.2.2
     # via requests
+cffi==1.16.0
+    # via cryptography
 charset-normalizer==3.3.2
     # via requests
-coverage[toml]==7.4.3
+coverage[toml]==7.4.4
     # via
     #   -r requirements/test.txt
     #   pytest-cov
-django==4.2.10
+cryptography==42.0.5
+    # via secretstorage
+django==4.2.11
     # via
+    #   -c requirements/common_constraints.txt
     #   -r requirements/test.txt
     #   djangorestframework
     #   drf-yasg
-djangorestframework==3.14.0
+djangorestframework==3.15.1
     # via
     #   -r requirements/test.txt
     #   drf-yasg
@@ -59,12 +65,13 @@ idna==3.6
     # via requests
 imagesize==1.4.1
     # via sphinx
-importlib-metadata==7.0.1
+importlib-metadata==6.11.0
     # via
+    #   -c requirements/common_constraints.txt
     #   keyring
     #   sphinx
     #   twine
-importlib-resources==6.1.2
+importlib-resources==6.4.0
     # via keyring
 inflection==0.5.1
     # via
@@ -74,11 +81,19 @@ iniconfig==2.0.0
     # via
     #   -r requirements/test.txt
     #   pytest
-jaraco-classes==3.3.1
+jaraco-classes==3.4.0
+    # via keyring
+jaraco-context==4.3.0
     # via keyring
+jaraco-functools==4.0.0
+    # via keyring
+jeepney==0.8.0
+    # via
+    #   keyring
+    #   secretstorage
 jinja2==3.1.3
     # via sphinx
-keyring==24.3.1
+keyring==25.0.0
     # via twine
 markdown-it-py==3.0.0
     # via rich
@@ -87,10 +102,12 @@ markupsafe==2.1.5
 mdurl==0.1.2
     # via markdown-it-py
 more-itertools==10.2.0
-    # via jaraco-classes
-nh3==0.2.15
+    # via
+    #   jaraco-classes
+    #   jaraco-functools
+nh3==0.2.17
     # via readme-renderer
-packaging==23.2
+packaging==24.0
     # via
     #   -r requirements/test.txt
     #   drf-yasg
@@ -99,12 +116,14 @@ packaging==23.2
     #   sphinx
 pbr==6.0.0
     # via stevedore
-pkginfo==1.9.6
+pkginfo==1.10.0
     # via twine
 pluggy==1.4.0
     # via
     #   -r requirements/test.txt
     #   pytest
+pycparser==2.22
+    # via cffi
 pydata-sphinx-theme==0.14.4
     # via sphinx-book-theme
 pygments==2.17.2
@@ -115,12 +134,12 @@ pygments==2.17.2
     #   readme-renderer
     #   rich
     #   sphinx
-pytest==8.0.2
+pytest==8.1.1
     # via
     #   -r requirements/test.txt
     #   pytest-cov
     #   pytest-django
-pytest-cov==4.1.0
+pytest-cov==5.0.0
     # via -r requirements/test.txt
 pytest-django==4.8.0
     # via -r requirements/test.txt
@@ -128,7 +147,6 @@ pytz==2024.1
     # via
     #   -r requirements/test.txt
     #   babel
-    #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
     # via
@@ -149,8 +167,10 @@ restructuredtext-lint==1.4.0
     # via doc8
 rfc3986==2.0.0
     # via twine
-rich==13.7.0
+rich==13.7.1
     # via twine
+secretstorage==3.3.3
+    # via keyring
 snowballstemmer==2.2.0
     # via sphinx
 soupsieve==2.5
@@ -202,7 +222,7 @@ urllib3==2.2.1
     # via
     #   requests
     #   twine
-zipp==3.17.0
+zipp==3.18.1
     # via
     #   importlib-metadata
     #   importlib-resources
diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt
index 44c48d9..6401f54 100644
--- a/requirements/pip-tools.txt
+++ b/requirements/pip-tools.txt
@@ -4,15 +4,17 @@
 #
 #    make upgrade
 #
-build==1.0.3
+build==1.2.1
     # via pip-tools
 click==8.1.7
     # via pip-tools
-importlib-metadata==7.0.1
-    # via build
-packaging==23.2
+importlib-metadata==6.11.0
+    # via
+    #   -c requirements/common_constraints.txt
+    #   build
+packaging==24.0
     # via build
-pip-tools==7.4.0
+pip-tools==7.4.1
     # via -r requirements/pip-tools.in
 pyproject-hooks==1.0.0
     # via
@@ -23,9 +25,9 @@ tomli==2.0.1
     #   build
     #   pip-tools
     #   pyproject-hooks
-wheel==0.42.0
+wheel==0.43.0
     # via pip-tools
-zipp==3.17.0
+zipp==3.18.1
     # via importlib-metadata
 
 # The following packages are considered to be unsafe in a requirements file:
diff --git a/requirements/pip.txt b/requirements/pip.txt
index 6665603..cf44902 100644
--- a/requirements/pip.txt
+++ b/requirements/pip.txt
@@ -4,11 +4,11 @@
 #
 #    make upgrade
 #
-wheel==0.42.0
+wheel==0.43.0
     # via -r requirements/pip.in
 
 # The following packages are considered to be unsafe in a requirements file:
 pip==24.0
     # via -r requirements/pip.in
-setuptools==69.1.1
+setuptools==69.2.0
     # via -r requirements/pip.in
diff --git a/requirements/quality.txt b/requirements/quality.txt
index 075fc9b..655308a 100644
--- a/requirements/quality.txt
+++ b/requirements/quality.txt
@@ -4,7 +4,7 @@
 #
 #    make upgrade
 #
-asgiref==3.7.2
+asgiref==3.8.1
     # via
     #   -r requirements/test.txt
     #   django
@@ -17,8 +17,11 @@ backports-zoneinfo==0.2.1 ; python_version < "3.9"
     #   -c requirements/constraints.txt
     #   -r requirements/test.txt
     #   django
+    #   djangorestframework
 certifi==2024.2.2
     # via requests
+cffi==1.16.0
+    # via cryptography
 charset-normalizer==3.3.2
     # via requests
 click==8.1.7
@@ -28,20 +31,23 @@ click==8.1.7
     #   edx-lint
 click-log==0.4.0
     # via edx-lint
-code-annotations==1.6.0
+code-annotations==1.7.0
     # via edx-lint
-coverage[toml]==7.4.3
+coverage[toml]==7.4.4
     # via
     #   -r requirements/test.txt
     #   pytest-cov
+cryptography==42.0.5
+    # via secretstorage
 dill==0.3.8
     # via pylint
-django==4.2.10
+django==4.2.11
     # via
+    #   -c requirements/common_constraints.txt
     #   -r requirements/test.txt
     #   djangorestframework
     #   drf-yasg
-djangorestframework==3.14.0
+djangorestframework==3.15.1
     # via
     #   -r requirements/test.txt
     #   drf-yasg
@@ -57,11 +63,12 @@ exceptiongroup==1.2.0
     #   pytest
 idna==3.6
     # via requests
-importlib-metadata==7.0.1
+importlib-metadata==6.11.0
     # via
+    #   -c requirements/common_constraints.txt
     #   keyring
     #   twine
-importlib-resources==6.1.2
+importlib-resources==6.4.0
     # via keyring
 inflection==0.5.1
     # via
@@ -75,11 +82,19 @@ isort==5.13.2
     # via
     #   -r requirements/quality.in
     #   pylint
-jaraco-classes==3.3.1
+jaraco-classes==3.4.0
+    # via keyring
+jaraco-context==4.3.0
     # via keyring
+jaraco-functools==4.0.0
+    # via keyring
+jeepney==0.8.0
+    # via
+    #   keyring
+    #   secretstorage
 jinja2==3.1.3
     # via code-annotations
-keyring==24.3.1
+keyring==25.0.0
     # via twine
 markdown-it-py==3.0.0
     # via rich
@@ -90,17 +105,19 @@ mccabe==0.7.0
 mdurl==0.1.2
     # via markdown-it-py
 more-itertools==10.2.0
-    # via jaraco-classes
-nh3==0.2.15
+    # via
+    #   jaraco-classes
+    #   jaraco-functools
+nh3==0.2.17
     # via readme-renderer
-packaging==23.2
+packaging==24.0
     # via
     #   -r requirements/test.txt
     #   drf-yasg
     #   pytest
 pbr==6.0.0
     # via stevedore
-pkginfo==1.9.6
+pkginfo==1.10.0
     # via twine
 platformdirs==4.2.0
     # via pylint
@@ -110,6 +127,8 @@ pluggy==1.4.0
     #   pytest
 pycodestyle==2.11.1
     # via -r requirements/quality.in
+pycparser==2.22
+    # via cffi
 pydocstyle==6.3.0
     # via -r requirements/quality.in
 pygments==2.17.2
@@ -130,12 +149,12 @@ pylint-plugin-utils==0.8.2
     # via
     #   pylint-celery
     #   pylint-django
-pytest==8.0.2
+pytest==8.1.1
     # via
     #   -r requirements/test.txt
     #   pytest-cov
     #   pytest-django
-pytest-cov==4.1.0
+pytest-cov==5.0.0
     # via -r requirements/test.txt
 pytest-django==4.8.0
     # via -r requirements/test.txt
@@ -144,7 +163,6 @@ python-slugify==8.0.4
 pytz==2024.1
     # via
     #   -r requirements/test.txt
-    #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
     # via
@@ -161,8 +179,10 @@ requests-toolbelt==1.0.0
     # via twine
 rfc3986==2.0.0
     # via twine
-rich==13.7.0
+rich==13.7.1
     # via twine
+secretstorage==3.3.3
+    # via keyring
 six==1.16.0
     # via edx-lint
 snowballstemmer==2.2.0
@@ -200,7 +220,7 @@ urllib3==2.2.1
     # via
     #   requests
     #   twine
-zipp==3.17.0
+zipp==3.18.1
     # via
     #   importlib-metadata
     #   importlib-resources
diff --git a/requirements/test.txt b/requirements/test.txt
index 18029a9..8d59da1 100644
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -4,7 +4,7 @@
 #
 #    make upgrade
 #
-asgiref==3.7.2
+asgiref==3.8.1
     # via
     #   -r requirements/base.txt
     #   django
@@ -13,9 +13,11 @@ backports-zoneinfo==0.2.1 ; python_version < "3.9"
     #   -c requirements/constraints.txt
     #   -r requirements/base.txt
     #   django
-coverage[toml]==7.4.3
+    #   djangorestframework
+coverage[toml]==7.4.4
     # via pytest-cov
     # via
+    #   -c requirements/common_constraints.txt
     #   -r requirements/base.txt
     #   djangorestframework
     #   drf-yasg
@@ -32,25 +34,24 @@ inflection==0.5.1
     #   drf-yasg
 iniconfig==2.0.0
     # via pytest
-packaging==23.2
+packaging==24.0
     # via
     #   -r requirements/base.txt
     #   drf-yasg
     #   pytest
 pluggy==1.4.0
     # via pytest
-pytest==8.0.2
+pytest==8.1.1
     # via
     #   pytest-cov
     #   pytest-django
-pytest-cov==4.1.0
+pytest-cov==5.0.0
     # via -r requirements/test.in
 pytest-django==4.8.0
     # via -r requirements/test.in
 pytz==2024.1
     # via
     #   -r requirements/base.txt
-    #   djangorestframework
     #   drf-yasg
 pyyaml==6.0.1
     # via

From 2e2c71607dcd9120b07c2439d4154d22fa7459fb Mon Sep 17 00:00:00 2001
From: Awais Qureshi <awais.qureshi@arbisoft.com>
Date: Mon, 1 Apr 2024 14:25:08 +0500
Subject: [PATCH 09/10] feat: Update ci.yml

---
 .github/workflows/ci.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 840f82e..fc792fc 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -14,7 +14,7 @@ jobs:
     strategy:
       matrix:
         os: [ubuntu-20.04]
-        python-version: ["3.8", "3.12"]
+        python-version: ["3.8", "3.11", "3.12"]
         toxenv:
           [
             py38-django42-drflatest,quality

From 192e3c378d05e8b6acdd67d6280f834846cb5a26 Mon Sep 17 00:00:00 2001
From: Awais Qureshi <awais.qureshi@arbisoft.com>
Date: Mon, 1 Apr 2024 14:25:37 +0500
Subject: [PATCH 10/10] chore: Update tox.ini

---
 tox.ini | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tox.ini b/tox.ini
index 3a51fd2..2cacba7 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,6 +1,6 @@
 [tox]
 envlist =
-    py{38,312}-django{42}-drf{latest} # Django 4.2 is not supported by DRF < 3.14
+    py{38,311,312}-django{42}-drf{latest} # Django 4.2 is not supported by DRF < 3.14
     quality
 
 [pytest]