diff --git a/dev-python/django/Manifest b/dev-python/django/Manifest new file mode 100644 index 0000000..71ea2ed --- /dev/null +++ b/dev-python/django/Manifest @@ -0,0 +1,2 @@ +DIST Django-3.2.7.checksum.txt 2548 BLAKE2B a5ec208e268bc4e9c2fb5899dcd784840f7a1cd310deb83756f658fca5b946ae4d0f54ff3fa2dbe87562f7a646c5eb8e85174e417b45cc10d2ea3795283c5760 SHA512 a8917ba75d38dc4d8ac1a02dd970bc91f419fc1a2251513591c9932415b8108c8d32fab83c4c7f402eab90489662f0e1081eb0aec606a2241d4a0f7a2c021ed2 +DIST Django-3.2.7.tar.gz 9808777 BLAKE2B f088f9f234d53909754e320df0a00e5f3c9b13626054f4f12065386e55ecc4eaca7e58fdb03feca0704b864e3dc9e7ea9363469e2703ab1284e281200ea33a94 SHA512 6dc497fdeee24dbca85654999ae98cb776cf32b7c38e4431eeed66befb7d663e3880bf5dec0a9573e64678938c443282c3e5b9be9d25b6863481c5208a1ed98c diff --git a/dev-python/django/django-3.2.7.ebuild b/dev-python/django/django-3.2.7.ebuild new file mode 100644 index 0000000..49eee54 --- /dev/null +++ b/dev-python/django/django-3.2.7.ebuild @@ -0,0 +1,103 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{8..10} ) +PYTHON_REQ_USE='sqlite?,threads(+)' + +inherit bash-completion-r1 distutils-r1 optfeature verify-sig + +MY_P=${P^} +DESCRIPTION="High-level Python web framework" +HOMEPAGE="https://www.djangoproject.com/ https://pypi.org/project/Django/" +SRC_URI=" + https://media.djangoproject.com/releases/$(ver_cut 1-2)/${MY_P}.tar.gz + verify-sig? ( https://media.djangoproject.com/pgp/${MY_P}.checksum.txt )" +S="${WORKDIR}/${MY_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 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos" +IUSE="doc sqlite test" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=dev-python/asgiref-3.3.4[${PYTHON_USEDEP}] + dev-python/pytz[${PYTHON_USEDEP}] + >=dev-python/sqlparse-0.2.2[${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 + !!=app-crypt/openpgp-keys-django-20201201 ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-3.1-bashcomp.patch + # https://github.com/django/django/pull/14732 + "${FILESDIR}"/${P}-argparse-py310.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 \ + "${MY_P}.checksum.txt" sha256 "${MY_P}.tar.gz" + cd "${WORKDIR}" || die + fi + + default +} + +python_prepare_all() { + # Fails because of warnings + sed -i 's/test_dumpdata_proxy_with_concrete/_&/' tests/fixtures/tests.py + + distutils-r1_python_prepare_all +} + +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 + optfeature "High-level abstractions for Django forms" dev-python/django-formtools +} diff --git a/dev-python/django/files/django-3.1-bashcomp.patch b/dev-python/django/files/django-3.1-bashcomp.patch new file mode 100644 index 0000000..1652842 --- /dev/null +++ b/dev-python/django/files/django-3.1-bashcomp.patch @@ -0,0 +1,56 @@ +From e0a8c0663debeb222bf78b97678f60929313b60a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Wed, 6 May 2020 07:24:05 +0200 +Subject: [PATCH] Remove completions unsuitable for autoloading + +The override of 'python*' completions, as well as the attempt +to './manage.py' completion are not going to work with autoloader. +Strip them. +--- + extras/django_bash_completion | 33 +-------------------------------- + 1 file changed, 1 insertion(+), 32 deletions(-) + +diff --git a/extras/django_bash_completion b/extras/django_bash_completion +index fa77d59aff..dfeb439a2e 100755 +--- a/extras/django_bash_completion ++++ b/extras/django_bash_completion +@@ -37,35 +37,4 @@ _django_completion() + DJANGO_AUTO_COMPLETE=1 $1 ) ) + } + # When the django-admin.py deprecation ends, remove django-admin.py. +-complete -F _django_completion -o default django-admin.py manage.py django-admin +- +-_python_django_completion() +-{ +- if [[ ${COMP_CWORD} -ge 2 ]]; then +- local PYTHON_EXE=${COMP_WORDS[0]##*/} +- if echo "$PYTHON_EXE" | grep -qE "python([3-9]\.[0-9])?"; then +- local PYTHON_SCRIPT=${COMP_WORDS[1]##*/} +- if echo "$PYTHON_SCRIPT" | grep -qE "manage\.py|django-admin(\.py)?"; then +- COMPREPLY=( $( COMP_WORDS=( "${COMP_WORDS[*]:1}" ) +- COMP_CWORD=$(( COMP_CWORD-1 )) +- DJANGO_AUTO_COMPLETE=1 ${COMP_WORDS[*]} ) ) +- fi +- fi +- fi +-} +- +-# Support for multiple interpreters. +-unset pythons +-if command -v whereis &>/dev/null; then +- python_interpreters=$(whereis python | cut -d " " -f 2-) +- for python in $python_interpreters; do +- [[ $python != *-config ]] && pythons="${pythons} ${python##*/}" +- done +- unset python_interpreters +- pythons=$(echo "$pythons" | tr " " "\n" | sort -u | tr "\n" " ") +-else +- pythons=python +-fi +- +-complete -F _python_django_completion -o default $pythons +-unset pythons ++complete -F _django_completion -o default django-admin.py django-admin +-- +2.28.0 + diff --git a/dev-python/django/files/django-3.2.7-argparse-py310.patch b/dev-python/django/files/django-3.2.7-argparse-py310.patch new file mode 100644 index 0000000..3702a4c --- /dev/null +++ b/dev-python/django/files/django-3.2.7-argparse-py310.patch @@ -0,0 +1,52 @@ +From dc7d30c03ff72917584952e70b3b25c9a0c59033 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Tue, 3 Aug 2021 10:04:22 +0200 +Subject: [PATCH] Refs #32074 -- Update expected argparse error in invalid + choice test + +Python 3.10.0rc1 changed the error messages issued by argparse on +invalid choice to include the argument name. Update the expected test +output to account for that. +--- + django/utils/version.py | 1 + + tests/user_commands/tests.py | 5 +++-- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/django/utils/version.py b/django/utils/version.py +index 4b26586b36..54b10e89d7 100644 +--- a/django/utils/version.py ++++ b/django/utils/version.py +@@ -13,6 +13,7 @@ PY36 = sys.version_info >= (3, 6) + PY37 = sys.version_info >= (3, 7) + PY38 = sys.version_info >= (3, 8) + PY39 = sys.version_info >= (3, 9) ++PY310 = sys.version_info >= (3, 10) + + + def get_version(version=None): +diff --git a/tests/user_commands/tests.py b/tests/user_commands/tests.py +index 9262e2717a..9da0977c38 100644 +--- a/tests/user_commands/tests.py ++++ b/tests/user_commands/tests.py +@@ -17,7 +17,7 @@ from django.test import SimpleTestCase, override_settings + from django.test.utils import captured_stderr, extend_sys_path, ignore_warnings + from django.utils import translation + from django.utils.deprecation import RemovedInDjango41Warning +-from django.utils.version import PY37 ++from django.utils.version import PY37, PY310 + + from .management.commands import dance + +@@ -334,7 +334,8 @@ class CommandTests(SimpleTestCase): + self.assertIn('bar', out.getvalue()) + + def test_subparser_invalid_option(self): +- msg = "Error: invalid choice: 'test' (choose from 'foo')" ++ msg = "Error: %sinvalid choice: 'test' (choose from 'foo')" % ( ++ 'argument {foo}: ' if PY310 else '') + with self.assertRaisesMessage(CommandError, msg): + management.call_command('subparser', 'test', 12) + if PY37: +-- +2.32.0 + diff --git a/dev-python/django/metadata.xml b/dev-python/django/metadata.xml new file mode 100644 index 0000000..c23d3d6 --- /dev/null +++ b/dev-python/django/metadata.xml @@ -0,0 +1,13 @@ + + + + + python@gentoo.org + Python + + + + Django + django/django + +