aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2013-05-24 15:59:31 -0400
committerJason R. Coombs <jaraco@jaraco.com>2013-05-24 15:59:31 -0400
commitd189e4d498cf1b00d2d703d05117a75454df70f0 (patch)
treed2f4fa97ae742f55a2620db0b73ae9dbbf506d94
parent2faf1e9a78136fe09365e8054f0fc04cdb26db94 (diff)
parent62e96b0e72c19c087c9de388d6c8897710a3e080 (diff)
downloadexternal_python_setuptools-d189e4d498cf1b00d2d703d05117a75454df70f0.tar.gz
external_python_setuptools-d189e4d498cf1b00d2d703d05117a75454df70f0.tar.bz2
external_python_setuptools-d189e4d498cf1b00d2d703d05117a75454df70f0.zip
Merge with distribute 0.6.42
-rw-r--r--.hgtags1
-rw-r--r--CHANGES.txt9
-rw-r--r--CONTRIBUTORS.txt1
-rwxr-xr-xsetup.py10
-rwxr-xr-xsetuptools/command/easy_install.py2
-rwxr-xr-xsetuptools/package_index.py32
-rw-r--r--setuptools/py24compat.py11
-rw-r--r--[-rwxr-xr-x]setuptools/site-patch.py (renamed from site.py)0
8 files changed, 58 insertions, 8 deletions
diff --git a/.hgtags b/.hgtags
index f6d2c0bc..f27c75b9 100644
--- a/.hgtags
+++ b/.hgtags
@@ -52,3 +52,4 @@ d737b2039c5f92af8000f78bbc80b6a5183caa97 0.6.39
9b2e2aa06e058c63e06c5e42a7f279ddae2dfb7d 0.7b1
0a783fa0dceb95b5fc743e47c2d89c1523d0afb7 0.6.40
ad107e9b4beea24516ac4e1e854696e586fe279d 0.6.41
+f30167716b659f96c5e0b7ea3d5be2bcff8c0eac 0.6.42
diff --git a/CHANGES.txt b/CHANGES.txt
index c0c1c98c..614a8489 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -21,6 +21,14 @@ Added several features that were slated for setuptools 0.6c12:
an HTTPS service.
------
+0.6.42
+------
+
+* External links finder no longer yields duplicate links.
+* Issue #337: Moved site.py to setuptools/site-patch.py (graft of very old
+ patch from setuptools trunk which inspired PR #31).
+
+------
0.6.41
------
@@ -79,6 +87,7 @@ Added several features that were slated for setuptools 0.6c12:
0.6.35
------
+
Note this release is backward-incompatible with distribute 0.6.23-0.6.34 in
how it parses version numbers.
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 92dc368c..8515babe 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -8,6 +8,7 @@ Contributors
* Christophe Combelles
* Daniel Stutzbach
* Daniel Holth
+* Dirley Rodrigues
* Grigory Petrov
* Hanno Schlichting
* Jannis Leidel
diff --git a/setup.py b/setup.py
index 90baa789..134336ea 100755
--- a/setup.py
+++ b/setup.py
@@ -132,20 +132,18 @@ dist = setup(
test_suite = 'setuptools.tests',
src_root = src_root,
packages = find_packages(),
- package_data = {'setuptools':['*.exe'], 'setuptools.command':['*.xml']},
+ package_data = {'setuptools':['*.exe', 'site-patch.py'], 'setuptools.command':['*.xml']},
- py_modules = ['pkg_resources', 'easy_install', 'site'],
+ py_modules = ['pkg_resources', 'easy_install'],
zip_safe = (sys.version>="2.5"), # <2.5 needs unzipped for -m to work
cmdclass = {'test': test},
entry_points = {
-
"distutils.commands" : [
"%(cmd)s = setuptools.command.%(cmd)s:%(cmd)s" % locals()
for cmd in SETUP_COMMANDS
],
-
"distutils.setup_keywords": [
"eager_resources = setuptools.dist:assert_string_list",
"namespace_packages = setuptools.dist:check_nsp",
@@ -166,7 +164,6 @@ dist = setup(
"use_2to3_fixers = setuptools.dist:assert_string_list",
"use_2to3_exclude_fixers = setuptools.dist:assert_string_list",
],
-
"egg_info.writers": [
"PKG-INFO = setuptools.command.egg_info:write_pkg_info",
"requires.txt = setuptools.command.egg_info:write_requirements",
@@ -177,7 +174,6 @@ dist = setup(
"depends.txt = setuptools.command.egg_info:warn_depends_obsolete",
"dependency_links.txt = setuptools.command.egg_info:overwrite_arg",
],
-
"console_scripts": console_scripts,
"setuptools.file_finders":
@@ -185,7 +181,7 @@ dist = setup(
"setuptools.installation":
['eggsecutable = setuptools.command.easy_install:bootstrap'],
- },
+ },
classifiers = textwrap.dedent("""
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
index c98be5a2..f29faf9d 100755
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
@@ -1276,7 +1276,7 @@ Please make the appropriate changes for your system and try again.""" % (
return # already did it, or don't need to
sitepy = os.path.join(self.install_dir, "site.py")
- source = resource_string(Requirement.parse("setuptools"), "site.py")
+ source = resource_string("setuptools", "site-patch.py")
current = ""
if os.path.exists(sitepy):
diff --git a/setuptools/package_index.py b/setuptools/package_index.py
index 04a30a45..2701c873 100755
--- a/setuptools/package_index.py
+++ b/setuptools/package_index.py
@@ -1,5 +1,6 @@
"""PyPI and direct package downloading"""
import sys, os.path, re, urlparse, urllib2, shutil, random, socket, cStringIO
+import itertools
import base64
import httplib, urllib
from setuptools import ssl_support
@@ -11,6 +12,8 @@ try:
except ImportError:
from md5 import md5
from fnmatch import translate
+from .py24compat import wraps
+
EGG_FRAGMENT = re.compile(r'^egg=([-A-Za-z0-9_.]+)$')
HREF = re.compile("""href\\s*=\\s*['"]?([^'"> ]+)""", re.I)
# this is here to fix emacs' cruddy broken syntax highlighting
@@ -134,9 +137,38 @@ def interpret_distro_name(location, basename, metadata,
platform = platform
)
+# 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.ifilterfalse(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
+ only ever yields unique items.
+ """
+ @wraps(func)
+ def wrapper(*args, **kwargs):
+ return unique_everseen(func(*args, **kwargs))
+ return wrapper
+
REL = re.compile("""<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>""", re.I)
# this line is here to fix emacs' cruddy broken syntax highlighting
+@unique_values
def find_external_links(url, page):
"""Find rel="homepage" and rel="download" links in `page`, yielding URLs"""
diff --git a/setuptools/py24compat.py b/setuptools/py24compat.py
new file mode 100644
index 00000000..c5d7d204
--- /dev/null
+++ b/setuptools/py24compat.py
@@ -0,0 +1,11 @@
+"""
+Forward-compatibility support for Python 2.4 and earlier
+"""
+
+# from jaraco.compat 1.2
+try:
+ from functools import wraps
+except ImportError:
+ def wraps(func):
+ "Just return the function unwrapped"
+ return lambda x: x
diff --git a/site.py b/setuptools/site-patch.py
index a7166f14..a7166f14 100755..100644
--- a/site.py
+++ b/setuptools/site-patch.py