summaryrefslogtreecommitdiff
path: root/setuptools
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2021-05-22 19:19:05 -0400
committerJason R. Coombs <jaraco@jaraco.com>2021-05-22 19:19:05 -0400
commit9c2cf25a13bf33a3fd706c97064c0d2fa22be179 (patch)
treec304c7604a18029b4fdff76f97a38b9bbdd6edf0 /setuptools
parent28f4890f20704e8aa0248843fef703883bdea544 (diff)
downloadpython-setuptools-git-9c2cf25a13bf33a3fd706c97064c0d2fa22be179.tar.gz
Use unique_everseen from more_itertools.
Diffstat (limited to 'setuptools')
-rw-r--r--setuptools/command/build_py.py22
-rw-r--r--setuptools/command/test.py4
-rw-r--r--setuptools/msvc.py27
-rw-r--r--setuptools/package_index.py21
4 files changed, 8 insertions, 66 deletions
diff --git a/setuptools/command/build_py.py b/setuptools/command/build_py.py
index b30aa129..df6fd323 100644
--- a/setuptools/command/build_py.py
+++ b/setuptools/command/build_py.py
@@ -8,6 +8,7 @@ import io
import distutils.errors
import itertools
import stat
+from setuptools.extern.more_itertools import unique_everseen
try:
from setuptools.lib2to3_ex import Mixin2to3
@@ -214,7 +215,7 @@ class build_py(orig.build_py, Mixin2to3):
if fn not in bad
)
# ditch dupes
- return list(_unique_everseen(keepers))
+ return list(unique_everseen(keepers))
@staticmethod
def _get_platform_patterns(spec, package, src_dir):
@@ -235,25 +236,6 @@ class build_py(orig.build_py, Mixin2to3):
)
-# from Python docs
-def _unique_everseen(iterable, key=None):
- "List unique elements, preserving order. Remember all elements ever seen."
- # unique_everseen('AAAABBBCCDAABBB') --> A B C D
- # unique_everseen('ABBCcAD', str.lower) --> A B C D
- seen = set()
- seen_add = seen.add
- if key is None:
- for element in itertools.filterfalse(seen.__contains__, iterable):
- seen_add(element)
- yield element
- else:
- for element in iterable:
- k = key(element)
- if k not in seen:
- seen_add(k)
- yield element
-
-
def assert_relative(path):
if not os.path.isabs(path):
return path
diff --git a/setuptools/command/test.py b/setuptools/command/test.py
index cf71ad01..de4f3d11 100644
--- a/setuptools/command/test.py
+++ b/setuptools/command/test.py
@@ -12,7 +12,7 @@ from pkg_resources import (resource_listdir, resource_exists, normalize_path,
working_set, _namespace_packages, evaluate_marker,
add_activation_listener, require, EntryPoint)
from setuptools import Command
-from .build_py import _unique_everseen
+from setuptools.extern.more_itertools import unique_everseen
class ScanningLoader(TestLoader):
@@ -182,7 +182,7 @@ class test(Command):
orig_pythonpath = os.environ.get('PYTHONPATH', nothing)
current_pythonpath = os.environ.get('PYTHONPATH', '')
try:
- prefix = os.pathsep.join(_unique_everseen(paths))
+ prefix = os.pathsep.join(unique_everseen(paths))
to_join = filter(None, [prefix, current_pythonpath])
new_path = os.pathsep.join(to_join)
if new_path:
diff --git a/setuptools/msvc.py b/setuptools/msvc.py
index fd4b0781..281ea1c2 100644
--- a/setuptools/msvc.py
+++ b/setuptools/msvc.py
@@ -30,6 +30,7 @@ import itertools
import subprocess
import distutils.errors
from setuptools.extern.packaging.version import LegacyVersion
+from setuptools.extern.more_itertools import unique_everseen
from .monkey import get_unpatched
@@ -1800,29 +1801,5 @@ class EnvironmentInfo:
if not extant_paths:
msg = "%s environment variable is empty" % name.upper()
raise distutils.errors.DistutilsPlatformError(msg)
- unique_paths = self._unique_everseen(extant_paths)
+ unique_paths = unique_everseen(extant_paths)
return pathsep.join(unique_paths)
-
- # from Python docs
- @staticmethod
- def _unique_everseen(iterable, key=None):
- """
- List unique elements, preserving order.
- Remember all elements ever seen.
-
- _unique_everseen('AAAABBBCCDAABBB') --> A B C D
-
- _unique_everseen('ABBCcAD', str.lower) --> A B C D
- """
- seen = set()
- seen_add = seen.add
- if key is None:
- for element in itertools.filterfalse(seen.__contains__, iterable):
- seen_add(element)
- yield element
- else:
- for element in iterable:
- k = key(element)
- if k not in seen:
- seen_add(k)
- yield element
diff --git a/setuptools/package_index.py b/setuptools/package_index.py
index 8bec05e7..d1f13378 100644
--- a/setuptools/package_index.py
+++ b/setuptools/package_index.py
@@ -28,6 +28,8 @@ from distutils import log
from distutils.errors import DistutilsError
from fnmatch import translate
from setuptools.wheel import Wheel
+from setuptools.extern.more_itertools import unique_everseen
+
EGG_FRAGMENT = re.compile(r'^egg=([-A-Za-z0-9_.+!]+)$')
HREF = re.compile(r"""href\s*=\s*['"]?([^'"> ]+)""", re.I)
@@ -183,25 +185,6 @@ def interpret_distro_name(
)
-# From Python 2.7 docs
-def unique_everseen(iterable, key=None):
- "List unique elements, preserving order. Remember all elements ever seen."
- # unique_everseen('AAAABBBCCDAABBB') --> A B C D
- # unique_everseen('ABBCcAD', str.lower) --> A B C D
- seen = set()
- seen_add = seen.add
- if key is None:
- for element in itertools.filterfalse(seen.__contains__, iterable):
- seen_add(element)
- yield element
- else:
- for element in iterable:
- k = key(element)
- if k not in seen:
- seen_add(k)
- yield element
-
-
def unique_values(func):
"""
Wrap a function returning an iterable such that the resulting iterable