mirror of
https://github.com/jazzband/django-defender.git
synced 2026-03-16 22:10:32 +00:00
Upgrade to Django 5.2 & Python 3.12 (#249)
Some checks failed
Test / build (3.10, 5) (push) Has been cancelled
Test / build (3.10, 6) (push) Has been cancelled
Test / build (3.10, 7) (push) Has been cancelled
Test / build (3.11, 5) (push) Has been cancelled
Test / build (3.11, 6) (push) Has been cancelled
Test / build (3.11, 7) (push) Has been cancelled
Test / build (3.12, 5) (push) Has been cancelled
Test / build (3.12, 6) (push) Has been cancelled
Test / build (3.12, 7) (push) Has been cancelled
Test / build (3.13, 5) (push) Has been cancelled
Test / build (3.13, 6) (push) Has been cancelled
Test / build (3.13, 7) (push) Has been cancelled
Test / build (3.9, 5) (push) Has been cancelled
Test / build (3.9, 6) (push) Has been cancelled
Test / build (3.9, 7) (push) Has been cancelled
Some checks failed
Test / build (3.10, 5) (push) Has been cancelled
Test / build (3.10, 6) (push) Has been cancelled
Test / build (3.10, 7) (push) Has been cancelled
Test / build (3.11, 5) (push) Has been cancelled
Test / build (3.11, 6) (push) Has been cancelled
Test / build (3.11, 7) (push) Has been cancelled
Test / build (3.12, 5) (push) Has been cancelled
Test / build (3.12, 6) (push) Has been cancelled
Test / build (3.12, 7) (push) Has been cancelled
Test / build (3.13, 5) (push) Has been cancelled
Test / build (3.13, 6) (push) Has been cancelled
Test / build (3.13, 7) (push) Has been cancelled
Test / build (3.9, 5) (push) Has been cancelled
Test / build (3.9, 6) (push) Has been cancelled
Test / build (3.9, 7) (push) Has been cancelled
* feat: add support for Django 5.0, 5.1, and 5.2 * fix: resolve Python 3.12 build failures in docs and lint environments
This commit is contained in:
parent
289af19ce9
commit
daa6235caf
5 changed files with 45 additions and 26 deletions
|
|
@ -7,6 +7,7 @@ include CODE_OF_CONDUCT.md
|
||||||
include requirements.txt
|
include requirements.txt
|
||||||
include tox.ini
|
include tox.ini
|
||||||
include .pre-commit-config.yaml
|
include .pre-commit-config.yaml
|
||||||
|
include .readthedocs.yaml
|
||||||
recursive-include docs *
|
recursive-include docs *
|
||||||
recursive-include exampleapp *
|
recursive-include exampleapp *
|
||||||
recursive-include defender/templates *.html
|
recursive-include defender/templates *.html
|
||||||
|
|
|
||||||
|
|
@ -108,8 +108,8 @@ Admin pages
|
||||||
Requirements
|
Requirements
|
||||||
------------
|
------------
|
||||||
|
|
||||||
* Python: 3.7, 3.8, 3.9, 3.10, PyPy
|
* Python: 3.8, 3.9, 3.10, 3.11, 3.12, PyPy
|
||||||
* Django: 3.x, 4.x
|
* Django: 3.2, 4.2, 5.0, 5.1, 5.2
|
||||||
* Redis: 5.x, 6.x, 7.x
|
* Redis: 5.x, 6.x, 7.x
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -534,8 +534,8 @@ Below is a sample ``BasicAuthenticationDefender`` class based on ``rest_framewor
|
||||||
from django.contrib.auth.forms import PasswordResetForm, SetPasswordForm
|
from django.contrib.auth.forms import PasswordResetForm, SetPasswordForm
|
||||||
from django.contrib.auth.tokens import default_token_generator
|
from django.contrib.auth.tokens import default_token_generator
|
||||||
from django.utils.http import urlsafe_base64_decode as uid_decoder
|
from django.utils.http import urlsafe_base64_decode as uid_decoder
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_str
|
||||||
from rest_framework import serializers, exceptions, HTTP_HEADER_ENCODING
|
from rest_framework import serializers, exceptions, HTTP_HEADER_ENCODING
|
||||||
from rest_framework.exceptions import ValidationError
|
from rest_framework.exceptions import ValidationError
|
||||||
from defender import utils as defender_utils
|
from defender import utils as defender_utils
|
||||||
|
|
|
||||||
16
docs/conf.py
16
docs/conf.py
|
|
@ -13,7 +13,11 @@
|
||||||
# import os
|
# import os
|
||||||
# import sys
|
# import sys
|
||||||
# sys.path.insert(0, os.path.abspath("."))
|
# sys.path.insert(0, os.path.abspath("."))
|
||||||
from pkg_resources import get_distribution
|
try:
|
||||||
|
from importlib import metadata
|
||||||
|
except ImportError:
|
||||||
|
# Running on pre-3.8 Python; use importlib-metadata package
|
||||||
|
import importlib_metadata as metadata
|
||||||
|
|
||||||
# -- Project information -----------------------------------------------------
|
# -- Project information -----------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -22,7 +26,11 @@ copyright = "2024, Ken Cochrane"
|
||||||
author = "Ken Cochrane"
|
author = "Ken Cochrane"
|
||||||
|
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = get_distribution("django-defender").version
|
try:
|
||||||
|
release = metadata.version("django-defender")
|
||||||
|
except metadata.PackageNotFoundError:
|
||||||
|
# package is not installed
|
||||||
|
release = "0.0.0"
|
||||||
|
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = ".".join(release.split(".")[:2])
|
version = ".".join(release.split(".")[:2])
|
||||||
|
|
@ -38,7 +46,7 @@ master_doc = "index"
|
||||||
extensions = []
|
extensions = []
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory.
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
templates_path = ["_templates"]
|
templates_path = []
|
||||||
|
|
||||||
# List of patterns, relative to source directory, that match files and
|
# List of patterns, relative to source directory, that match files and
|
||||||
# directories to ignore when looking for source files.
|
# directories to ignore when looking for source files.
|
||||||
|
|
@ -56,4 +64,4 @@ html_theme = "sphinx_rtd_theme"
|
||||||
# Add any paths that contain custom static files (such as style sheets) here,
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
# relative to this directory. They are copied after the builtin static files,
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||||
html_static_path = ["_static"]
|
html_static_path = []
|
||||||
|
|
|
||||||
17
setup.py
17
setup.py
|
|
@ -34,16 +34,21 @@ setup(
|
||||||
"Framework :: Django :: 3.2",
|
"Framework :: Django :: 3.2",
|
||||||
"Framework :: Django :: 4.0",
|
"Framework :: Django :: 4.0",
|
||||||
"Framework :: Django :: 4.1",
|
"Framework :: Django :: 4.1",
|
||||||
|
"Framework :: Django :: 4.2",
|
||||||
|
"Framework :: Django :: 5.0",
|
||||||
|
"Framework :: Django :: 5.1",
|
||||||
|
"Framework :: Django :: 5.2",
|
||||||
"Intended Audience :: Developers",
|
"Intended Audience :: Developers",
|
||||||
"License :: OSI Approved :: Apache Software License",
|
"License :: OSI Approved :: Apache Software License",
|
||||||
"Operating System :: OS Independent",
|
"Operating System :: OS Independent",
|
||||||
"Programming Language :: Python",
|
"Programming Language :: Python",
|
||||||
'Programming Language :: Python :: 3',
|
"Programming Language :: Python :: 3",
|
||||||
'Programming Language :: Python :: 3 :: Only',
|
"Programming Language :: Python :: 3 :: Only",
|
||||||
"Programming Language :: Python :: 3.7",
|
|
||||||
"Programming Language :: Python :: 3.8",
|
"Programming Language :: Python :: 3.8",
|
||||||
"Programming Language :: Python :: 3.9",
|
"Programming Language :: Python :: 3.9",
|
||||||
"Programming Language :: Python :: 3.10",
|
"Programming Language :: Python :: 3.10",
|
||||||
|
"Programming Language :: Python :: 3.11",
|
||||||
|
"Programming Language :: Python :: 3.12",
|
||||||
"Programming Language :: Python :: Implementation :: PyPy",
|
"Programming Language :: Python :: Implementation :: PyPy",
|
||||||
"Programming Language :: Python :: Implementation :: CPython",
|
"Programming Language :: Python :: Implementation :: CPython",
|
||||||
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
||||||
|
|
@ -59,12 +64,12 @@ setup(
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
packages=find_packages(),
|
packages=find_packages(),
|
||||||
package_data=get_package_data("defender"),
|
package_data=get_package_data("defender"),
|
||||||
python_requires='~=3.7',
|
python_requires="~=3.8",
|
||||||
install_requires=["Django", "redis"],
|
install_requires=["Django", "redis>=4.0.0"],
|
||||||
tests_require=[
|
tests_require=[
|
||||||
"mockredispy>=2.9.0.11,<3.0",
|
"mockredispy>=2.9.0.11,<3.0",
|
||||||
"coverage",
|
"coverage",
|
||||||
"celery",
|
"celery",
|
||||||
"django-redis-cache",
|
"django-redis",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
|
||||||
29
tox.ini
29
tox.ini
|
|
@ -1,27 +1,29 @@
|
||||||
[tox]
|
[tox]
|
||||||
envlist =
|
envlist =
|
||||||
# list of supported Django/Python versions:
|
# list of supported Django/Python versions:
|
||||||
py{37,38,39,py3}-dj{32}
|
py{38,39,py3}-dj{32}
|
||||||
py{38,39,310,311}-dj{40,41,42}
|
py{38,39,310,311,312}-dj{42}
|
||||||
py{311}-dj{main}
|
py{310,311,312}-dj{50,51,52,main}
|
||||||
py38-{lint,docs}
|
py312-{lint,docs}
|
||||||
|
|
||||||
[gh-actions]
|
[gh-actions]
|
||||||
python =
|
python =
|
||||||
3.7: py37
|
|
||||||
3.8: py38
|
3.8: py38
|
||||||
3.9: py39
|
3.9: py39
|
||||||
3.10: py310
|
3.10: py310
|
||||||
3.11: py311
|
3.11: py311
|
||||||
|
3.12: py312
|
||||||
pypy3: pypy3
|
pypy3: pypy3
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
deps =
|
deps =
|
||||||
|
setuptools
|
||||||
-rrequirements.txt
|
-rrequirements.txt
|
||||||
dj32: django>=3.2,<4.0
|
dj32: django>=3.2,<4.0
|
||||||
dj40: django>=4.0,<4.1
|
dj42: django>=4.2,<5.0
|
||||||
dj41: django>=4.1,<4.2
|
dj50: django>=5.0,<5.1
|
||||||
dj42: django>=4.2,<4.3
|
dj51: django>=5.1,<5.2
|
||||||
|
dj52: django>=5.2,<5.3
|
||||||
djmain: https://github.com/django/django/archive/main.tar.gz
|
djmain: https://github.com/django/django/archive/main.tar.gz
|
||||||
usedevelop = True
|
usedevelop = True
|
||||||
commands =
|
commands =
|
||||||
|
|
@ -33,19 +35,22 @@ ignore_outcome =
|
||||||
ignore_errors =
|
ignore_errors =
|
||||||
djmain: True
|
djmain: True
|
||||||
|
|
||||||
[testenv:py38-docs]
|
[testenv:py312-docs]
|
||||||
basepython = python3.8
|
basepython = python3.12
|
||||||
deps =
|
deps =
|
||||||
-rrequirements.txt
|
-rrequirements.txt
|
||||||
Sphinx
|
Sphinx
|
||||||
sphinx_rtd_theme
|
sphinx_rtd_theme
|
||||||
|
setuptools
|
||||||
commands = sphinx-build -b html -d {envtmpdir}/doctrees docs {envtmpdir}/html
|
commands = sphinx-build -b html -d {envtmpdir}/doctrees docs {envtmpdir}/html
|
||||||
|
|
||||||
[testenv:py38-lint]
|
[testenv:py312-lint]
|
||||||
basepython = python3.8
|
basepython = python3.12
|
||||||
deps =
|
deps =
|
||||||
twine
|
twine
|
||||||
check-manifest
|
check-manifest
|
||||||
|
setuptools
|
||||||
|
setuptools_scm
|
||||||
commands =
|
commands =
|
||||||
check-manifest -v
|
check-manifest -v
|
||||||
python setup.py sdist
|
python setup.py sdist
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue