commit:     8b662f6292291606e579c70c581c6c76adba9534
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 23 11:04:17 2023 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Jul 23 11:24:11 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8b662f62

dev-python/django: Enable py3.12

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/django/django-4.2.3-r1.ebuild         | 98 ++++++++++++++++++++++++
 dev-python/django/files/django-4.2.3-py312.patch | 25 ++++++
 2 files changed, 123 insertions(+)

diff --git a/dev-python/django/django-4.2.3-r1.ebuild 
b/dev-python/django/django-4.2.3-r1.ebuild
new file mode 100644
index 000000000000..f51d9733c439
--- /dev/null
+++ b/dev-python/django/django-4.2.3-r1.ebuild
@@ -0,0 +1,98 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..12} )
+PYTHON_REQ_USE='sqlite?,threads(+)'
+
+inherit bash-completion-r1 distutils-r1 optfeature verify-sig
+
+DESCRIPTION="High-level Python web framework"
+HOMEPAGE="
+       https://www.djangoproject.com/
+       https://github.com/django/django/
+       https://pypi.org/project/Django/
+"
+SRC_URI="
+       https://media.djangoproject.com/releases/$(ver_cut 1-2)/${P^}.tar.gz
+       verify-sig? ( https://media.djangoproject.com/pgp/${P^}.checksum.txt )
+"
+S="${WORKDIR}/${P^}"
+
+LICENSE="BSD"
+# admin fonts: Roboto (media-fonts/roboto)
+LICENSE+=" Apache-2.0"
+# admin icons, jquery, xregexp.js
+LICENSE+=" MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+IUSE="doc sqlite test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+       <dev-python/asgiref-4[${PYTHON_USEDEP}]
+       >=dev-python/asgiref-3.6.0[${PYTHON_USEDEP}]
+       >=dev-python/sqlparse-0.3.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+       test? (
+               $(python_gen_impl_dep sqlite)
+               ${RDEPEND}
+               dev-python/docutils[${PYTHON_USEDEP}]
+               dev-python/jinja[${PYTHON_USEDEP}]
+               dev-python/numpy[${PYTHON_USEDEP}]
+               dev-python/pillow[webp,${PYTHON_USEDEP}]
+               dev-python/pyyaml[${PYTHON_USEDEP}]
+               dev-python/selenium[${PYTHON_USEDEP}]
+               dev-python/tblib[${PYTHON_USEDEP}]
+               sys-devel/gettext
+       )
+       verify-sig? ( >=sec-keys/openpgp-keys-django-20230606 )
+"
+
+PATCHES=(
+       "${FILESDIR}"/django-4.0-bashcomp.patch
+       "${FILESDIR}"/django-4.2.3-py312.patch
+)
+
+distutils_enable_sphinx docs --no-autodoc
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/django.asc
+
+src_unpack() {
+       if use verify-sig; then
+               cd "${DISTDIR}" || die
+               verify-sig_verify_signed_checksums \
+                       "${P^}.checksum.txt" sha256 "${P^}.tar.gz"
+               cd "${WORKDIR}" || die
+       fi
+
+       default
+}
+
+python_test() {
+       # Tests have non-standard assumptions about PYTHONPATH,
+       # and don't work with ${BUILD_DIR}/lib.
+       PYTHONPATH=. "${EPYTHON}" tests/runtests.py --settings=test_sqlite -v2 
||
+               die "Tests fail with ${EPYTHON}"
+}
+
+python_install_all() {
+       newbashcomp extras/django_bash_completion ${PN}-admin
+       bashcomp_alias ${PN}-admin django-admin.py
+
+       distutils-r1_python_install_all
+}
+
+pkg_postinst() {
+       optfeature_header "Additional Backend support can be enabled via:"
+       optfeature "MySQL backend support" dev-python/mysqlclient
+       optfeature "PostgreSQL backend support" dev-python/psycopg:2
+       optfeature_header
+       optfeature "GEO Django" "sci-libs/gdal[geos]"
+       optfeature "Memcached support" dev-python/pylibmc 
dev-python/python-memcached
+       optfeature "ImageField Support" dev-python/pillow
+       optfeature "Password encryption" dev-python/bcrypt
+}

diff --git a/dev-python/django/files/django-4.2.3-py312.patch 
b/dev-python/django/files/django-4.2.3-py312.patch
new file mode 100644
index 000000000000..7989f8e7cbcc
--- /dev/null
+++ b/dev-python/django/files/django-4.2.3-py312.patch
@@ -0,0 +1,25 @@
+This is a hack to get the tests to pass prior to:
+
+[e83a88566a71a2353cebc35992c110be0f8628af] Fixed #32172 -- Adapted signals to 
allow async handlers.
+
+diff --git a/django/test/signals.py b/django/test/signals.py
+index 94a5161e82..1358101b98 100644
+--- a/django/test/signals.py
++++ b/django/test/signals.py
+@@ -14,6 +14,7 @@ from django.utils import timezone
+ from django.utils.formats import FORMAT_SETTINGS, reset_format_cache
+ from django.utils.functional import empty
+ from django.utils.module_loading import import_string
++from django.utils.version import PY312
+ 
+ template_rendered = Signal()
+ 
+@@ -183,7 +184,7 @@ def complex_setting_changed(*, enter, setting, **kwargs):
+         # this stacklevel shows the line containing the override_settings 
call.
+         warnings.warn(
+             f"Overriding setting {setting} can lead to unexpected behavior.",
+-            stacklevel=6,
++            stacklevel=5 if PY312 else 6,
+         )
+ 
+ 

Reply via email to