dev-python/pipenv: remove toml dependency

Patch the upstream package to use tomli, also
declare tomli as dependency only if python is less than 3.11

Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/30866
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Oz Tiram
2023-05-06 00:32:32 +02:00
committed by Sam James
parent 85a7838c9b
commit a5db7dc669
2 changed files with 78 additions and 8 deletions

View File

@@ -0,0 +1,76 @@
diff --git a/pipenv/project.py b/pipenv/project.py
index ed43cf2bc..903667639 100644
--- a/pipenv/project.py
+++ b/pipenv/project.py
@@ -13,6 +13,13 @@ import urllib.parse
from json.decoder import JSONDecodeError
from pathlib import Path
+import click, tomlkit
+
+try:
+ import tomllib as toml
+except ImportError:
+ import tomli as toml
+
from pipenv.cmdparse import Script
from pipenv.environment import Environment
from pipenv.environments import Setting, is_in_virtualenv, normalize_pipfile_path
diff --git a/pipenv/utils/toml.py b/pipenv/utils/toml.py
index d4157d01c..27d9975ae 100644
--- a/pipenv/utils/toml.py
+++ b/pipenv/utils/toml.py
@@ -1,4 +1,9 @@
-from pipenv.vendor import toml, tomlkit
+try:
+ import tomllib as toml
+except ImportError:
+ import tomli as toml
+
+import tomlkit
def cleanup_toml(tml):
diff --git a/pipenv/vendor/dparse/parser.py b/pipenv/vendor/dparse/parser.py
index faaad2e8e..4c59474e9 100644
--- a/pipenv/vendor/dparse/parser.py
+++ b/pipenv/vendor/dparse/parser.py
@@ -10,6 +10,11 @@ from io import StringIO
from configparser import ConfigParser, NoOptionError
from pathlib import PurePath
+try:
+ import tomllib as toml
+except ImportError:
+ import tomli as toml
+
from .errors import MalformedDependencyFileError
from .regex import HASH_REGEX
@@ -17,7 +22,6 @@ from .dependencies import DependencyFile, Dependency
from pipenv.patched.pip._vendor.packaging.requirements import Requirement as PackagingRequirement,\
InvalidRequirement
from . import filetypes
-import pipenv.vendor.toml as toml
from pipenv.patched.pip._vendor.packaging.specifiers import SpecifierSet
from pipenv.patched.pip._vendor.packaging.version import Version, InvalidVersion
import json
diff --git a/pipenv/vendor/dparse/updater.py b/pipenv/vendor/dparse/updater.py
index 7b7ba9a53..fe20a213f 100644
--- a/pipenv/vendor/dparse/updater.py
+++ b/pipenv/vendor/dparse/updater.py
@@ -3,9 +3,13 @@ from __future__ import absolute_import, print_function, unicode_literals
import re
import json
import tempfile
-import pipenv.vendor.toml as toml
import os
+try:
+ import tomllib as toml
+except ImportError:
+ import tomli as toml
+
class RequirementsTXTUpdater(object):
SUB_REGEX = r"^{}(?=\s*\r?\n?$)"

View File

@@ -22,6 +22,7 @@ PATCHES=(
"${FILESDIR}/pipenv-2022.9.24-inject-site-packages.patch"
"${FILESDIR}/pipenv-2023.4.29-append-always-install.patch"
"${FILESDIR}/pipenv-2023.4.29-fix-imports.patch"
"${FILESDIR}/pipenv-2023.4.29-fix-toml-in-vendor.patch"
)
RDEPEND="
@@ -33,7 +34,7 @@ RDEPEND="
>=dev-python/pexpect-4.8.0[${PYTHON_USEDEP}]
>=dev-python/ptyprocess-0.7.0[${PYTHON_USEDEP}]
dev-python/pyparsing[${PYTHON_USEDEP}]
dev-python/toml[${PYTHON_USEDEP}]
$(python_gen_cond_dep ' dev-python/tomli[${PYTHON_USEDEP}] ' python3_{9..10})
>=dev-python/python-dateutil-2.8.2[${PYTHON_USEDEP}]
>=dev-python/python-dotenv-0.21.0[${PYTHON_USEDEP}]
>=dev-python/virtualenv-20.0.35[${PYTHON_USEDEP}]
@@ -90,13 +91,6 @@ src_prepare() {
sed --in-place \
-e "s/from pipenv\.vendor import plette, toml, tomlkit, vistir/from pipenv\.vendor import plette, toml, vistir\\nimport tomlkit/g"
# remove tomlkit from vendoring
for fname in pipenv/utils/toml.py tests/integration/conftest.py; do
sed --in-place -e "s/from pipenv\.vendor import toml, tomlkit/from pipenv\.vendor import toml\\nimport tomlkit/g" $fname || die "Failed sed in $fname"
done
#for fname in "tests/unit/test_vendor.py "; do
# sed --in-place -e "s/from pipenv\.vendor import tomlkit/import tomlkit/g" $fname || die "Failed sed in tomlkit"
#done
# remove python ruaml yaml
sed --in-place -e "s/from pipenv\.vendor\.ruamel\.yaml import YAML/from ruamel\.yaml import YAML/g" pipenv/patched/safety/util.py || die "Failed sed in ruaml-yaml"
sed --in-place -e "s/from pipenv\.vendor\.ruamel\.yaml\.error import MarkedYAMLError/from ruamel\.yaml\.error import MarkedYAMLError/g" pipenv/patched/safety/util.py || die "Failed sed in ruamel-yaml"