commit: 1a0ef72d2208774b6598ff30da002c07f7569934 Author: Oz N Tiram <oz.tiram <AT> gmail <DOT> com> AuthorDate: Tue Jan 11 09:20:20 2022 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Wed Jan 12 22:38:05 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1a0ef72d
dev-python/pipenv: add 2022.1.8 Dropped ~x86 due to unkeyworded dev-python/cerberus, rekeywording pending. Bug: https://bugs.gentoo.org/830982 Signed-off-by: Oz N Tiram <oz.tiram <AT> gmail.com> Closes: https://github.com/gentoo/gentoo/pull/23720 Signed-off-by: Sam James <sam <AT> gentoo.org> dev-python/pipenv/Manifest | 1 + ...ipenv-2022-1-8-remove-first-vendor-import.patch | 162 +++++++++++++++++++++ dev-python/pipenv/pipenv-2022.1.8.ebuild | 96 ++++++++++++ 3 files changed, 259 insertions(+) diff --git a/dev-python/pipenv/Manifest b/dev-python/pipenv/Manifest index 621cd3ceea21..e15fa639e79d 100644 --- a/dev-python/pipenv/Manifest +++ b/dev-python/pipenv/Manifest @@ -1,2 +1,3 @@ DIST pipenv-2021.11.23.tar.gz 11378116 BLAKE2B aa30c86aa3b20333d0bffc8c49761869cc9e86b69920abe5e58a0aa7ccf35a8faf6b8b29ce408c85239624a999ca4e67f4a687e1e9aa15271bea31a135acdb7d SHA512 3873a3e7de33677b63bb133e397f46030ec28a24479b38009a4c409d93277327e8f53694fa56fdb8120f9cd632e849fde6f4205e29d9f5704c8844101e8e8298 DIST pipenv-2021.11.9.tar.gz 11652360 BLAKE2B ab7d733e0c44a8551d2b786680646f5efa9effdc6b6a74fc0b8286336c84b9795229036cc8b7179a4ee3d6c91701d82fdd2e8303c7c9a9da1e06eb78fb2a0214 SHA512 6ad44fe70d3e3f5bbdedb891c76ad1c37863e6f4215c34f2ef6aa1a35b89fb6262f8c55f7f2e71544e550d66d20567f12ce4698f9e3a899853aa49a0849c3189 +DIST pipenv-2022.1.8.tar.gz 11379235 BLAKE2B b73df14688ebe6d0c6153c64c2f3cd5106f184466061177cebfac120fc49af403a5d27919a8ff0e5a40e04a9950ab9949938c1d4c8d0c1a4df98440a3a2a2ae0 SHA512 9bad380548723172eddbbb9ebfc35a46effbd8eeeff47ad347d0ab5ae9f52e20de8dfc205dab6fb8ae8763edc488cf867a64ed443895242feb444d1bc0d9b8e0 diff --git a/dev-python/pipenv/files/pipenv-2022-1-8-remove-first-vendor-import.patch b/dev-python/pipenv/files/pipenv-2022-1-8-remove-first-vendor-import.patch new file mode 100644 index 000000000000..a8ff7d107f9c --- /dev/null +++ b/dev-python/pipenv/files/pipenv-2022-1-8-remove-first-vendor-import.patch @@ -0,0 +1,162 @@ +From eefc2db1adcfdd9afc1955c81d73dc3d32c65a57 Mon Sep 17 00:00:00 2001 +From: Oz N Tiram <[email protected]> +Date: Sun, 9 Jan 2022 23:52:06 +0100 +Subject: [PATCH] Remove vendored first + +While first is nice to have, it adds a lot of code in vendor. +This patch achieves the same with less code in vendor (~80 lines less). +--- + pipenv/core.py | 4 +- + pipenv/vendor/first.LICENSE | 19 --------- + pipenv/vendor/first.py | 78 ------------------------------------- + pipenv/vendor/vendor.txt | 1 - + 4 files changed, 2 insertions(+), 100 deletions(-) + delete mode 100644 pipenv/vendor/first.LICENSE + delete mode 100644 pipenv/vendor/first.py + +diff --git a/pipenv/core.py b/pipenv/core.py +index 92811f74..1c04047c 100644 +--- a/pipenv/core.py ++++ b/pipenv/core.py +@@ -2525,7 +2525,6 @@ def do_check( + args=None, + pypi_mirror=None + ): +- from first import first + from pipenv.vendor.vistir.compat import JSONDecodeError + + if not system: +@@ -2569,7 +2568,8 @@ def do_check( + if not system: + python = project._which("python") + else: +- python = first(system_which(p) for p in ("python", "python3", "python2")) ++ interpreters = [system_which(p) for p in ("python", "python3", "python2")] ++ python = interpreters[0] if interpreters else None + if not python: + click.echo(crayons.red("The Python interpreter can't be found."), err=True) + sys.exit(1) +diff --git a/pipenv/vendor/first.LICENSE b/pipenv/vendor/first.LICENSE +deleted file mode 100644 +index a9c8c9db..00000000 +--- a/pipenv/vendor/first.LICENSE ++++ /dev/null +@@ -1,19 +0,0 @@ +-Copyright (c) 2012 Hynek Schlawack +- +-Permission is hereby granted, free of charge, to any person obtaining a copy of +-this software and associated documentation files (the "Software"), to deal in +-the Software without restriction, including without limitation the rights to +-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +-of the Software, and to permit persons to whom the Software is furnished to do +-so, subject to the following conditions: +- +-The above copyright notice and this permission notice shall be included in all +-copies or substantial portions of the Software. +- +-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +-SOFTWARE. +diff --git a/pipenv/vendor/first.py b/pipenv/vendor/first.py +deleted file mode 100644 +index 8cf9d2d1..00000000 +--- a/pipenv/vendor/first.py ++++ /dev/null +@@ -1,78 +0,0 @@ +-## -*- coding: utf-8 -*- +- +-""" +-first +-===== +- +-first is the function you always missed in Python. +- +-In the simplest case, it returns the first true element from an iterable: +- +->>> from first import first +->>> first([0, False, None, [], (), 42]) +-42 +- +-Or None if there is none: +- +->>> from first import first +->>> first([]) is None +-True +->>> first([0, False, None, [], ()]) is None +-True +- +-It also supports the passing of a key argument to help selecting the first +-match in a more advanced way. +- +->>> from first import first +->>> first([1, 1, 3, 4, 5], key=lambda x: x % 2 == 0) +-4 +- +-:copyright: (c) 2012 by Hynek Schlawack. +-:license: MIT, see LICENSE for more details. +- +-""" +- +-__title__ = 'first' +-__version__ = '2.0.2' +-__author__ = 'Hynek Schlawack' +-__license__ = 'MIT' +-__copyright__ = 'Copyright 2012 Hynek Schlawack' +- +- +-def first(iterable, default=None, key=None): +- """ +- Return first element of `iterable` that evaluates true, else return None +- (or an optional default value). +- +- >>> first([0, False, None, [], (), 42]) +- 42 +- +- >>> first([0, False, None, [], ()]) is None +- True +- +- >>> first([0, False, None, [], ()], default='ohai') +- 'ohai' +- +- >>> import re +- >>> m = first(re.match(regex, 'abc') for regex in ['b.*', 'a(.*)']) +- >>> m.group(1) +- 'bc' +- +- The optional `key` argument specifies a one-argument predicate function +- like that used for `filter()`. The `key` argument, if supplied, must be +- in keyword form. For example: +- +- >>> first([1, 1, 3, 4, 5], key=lambda x: x % 2 == 0) +- 4 +- +- """ +- if key is None: +- for el in iterable: +- if el: +- return el +- else: +- for el in iterable: +- if key(el): +- return el +- +- return default +diff --git a/pipenv/vendor/vendor.txt b/pipenv/vendor/vendor.txt +index 0530062e..3d7b39ea 100644 +--- a/pipenv/vendor/vendor.txt ++++ b/pipenv/vendor/vendor.txt +@@ -10,7 +10,6 @@ colorama==0.4.4 + distlib==0.3.2 + docopt==0.6.2 + dparse==0.5.1 +-first==2.0.2 + funcsigs==1.0.2 + idna==3.2 + importlib-metadata==4.6.1 +-- +2.32.0 + diff --git a/dev-python/pipenv/pipenv-2022.1.8.ebuild b/dev-python/pipenv/pipenv-2022.1.8.ebuild new file mode 100644 index 000000000000..ed11a603ff9d --- /dev/null +++ b/dev-python/pipenv/pipenv-2022.1.8.ebuild @@ -0,0 +1,96 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_SETUPTOOLS=rdepend +PYTHON_COMPAT=( python3_{8..10} ) + +inherit distutils-r1 multiprocessing + +MY_PV=${PV/_beta/b} +DESCRIPTION="Python Development Workflow for Humans" +HOMEPAGE="https://github.com/pypa/pipenv https://pypi.org/project/pipenv/" +SRC_URI="https://github.com/pypa/pipenv/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}"/${PN}-${MY_PV} + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" +IUSE="test" +RESTRICT="!test? ( test )" + +PATCHES=( + "${FILESDIR}/${PN}-${PV//./-}-remove-first-vendor-import.patch" + ) + +RDEPEND=" + ${PYTHON_DEPS} + dev-python/attrs[${PYTHON_USEDEP}] + dev-python/cached-property[${PYTHON_USEDEP}] + >=dev-python/cerberus-1.3.2[${PYTHON_USEDEP}] + >=dev-python/colorama-0.4.4[${PYTHON_USEDEP}] + dev-python/docopt[${PYTHON_USEDEP}] + >=dev-python/idna-3.2[${PYTHON_USEDEP}] + >=dev-python/pexpect-4.8.0[${PYTHON_USEDEP}] + dev-python/pip[${PYTHON_USEDEP}] + >=dev-python/python-dateutil-2.8.2[${PYTHON_USEDEP}] + >=dev-python/virtualenv-20.0.35[${PYTHON_USEDEP}] + dev-python/virtualenv-clone[${PYTHON_USEDEP}] + >=dev-python/requests-2.26.0[${PYTHON_USEDEP}] + dev-python/toml[${PYTHON_USEDEP}] + >=dev-python/tomli-1.2.2[${PYTHON_USEDEP}] + <dev-python/tomli-2[${PYTHON_USEDEP}] + >=dev-python/urllib3-1.26.7[${PYTHON_USEDEP}] + >=dev-python/wheel-0.36.0[${PYTHON_USEDEP}] + >=dev-python/zipp-3.6.0[${PYTHON_USEDEP}] +" + +BDEPEND=" + ${RDEPEND} + test? ( + dev-python/flaky[${PYTHON_USEDEP}] + dev-python/mock[${PYTHON_USEDEP}] + dev-python/pytest[${PYTHON_USEDEP}] + dev-python/pytz[${PYTHON_USEDEP}] + ) +" + +# IMPORTANT: The following sed command patches the vendor direcotry +# in the pipenv source. Attempts to simply bump the version of the +# package without checking that it works is likely to fail +# The vendored packages should eventually all be removed +# see: https://bugs.gentoo.org/717666 +src_prepare() { + + local jobs=$(makeopts_jobs) + local packages=( attr cerberus cached_property colorama docopt first idna pexpect dateutil requests \ + toml tomli urllib3 zipp ) + for pkgName in ${packages[@]}; do + find ./ -type f -print0 | \ + xargs --max-procs="${jobs}" --null \ + sed --in-place \ + -e 's/from pipenv.vendor import '"${pkgName}"'/import '"${pkgName}"'/g' \ + -e 's/from pipenv.vendor.'"${pkgName}"'\(.*\) import \(\w*\)/from '"${pkgName}"'\1 import \2/g' \ + -e 's/import pipenv.vendor.'"${pkgName}"' as '"${pkgName}"'/import '"${pkgName}"'/g' \ + -e 's/from .vendor import '"${pkgName}"'/import '"${pkgName}"'/g' + done + assert "Failed to sed sources" + + distutils-r1_src_prepare + + # remove vendored versions + for pkgName in ${packages[@]}; do + find ./pipenv/vendor/ -name "${pkgName}*" -prune -exec rm -rvf {} + || die + # package names can be foo-bar, their module will be however foo_bar + find ./pipenv/vendor/ -name "${pkgName/_/-}*" -prune -exec rm -rvf {} + || die + + done + + # not actually used by pipenv, but included in pipenv + rm -vR "${S}/${PN}/vendor/wheel/" || die +} + +python_test() { + pytest -vvv -x -m "not cli and not needs_internet" tests/unit/ || die +}
