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
+}

Reply via email to