Commit b8327d7f authored by Jason R. Coombs's avatar Jason R. Coombs

Add unique_everseen from Python 2.7 docs

--HG--
branch : distribute
parent 4a45583a
"""PyPI and direct package downloading""" """PyPI and direct package downloading"""
import sys, os.path, re, urlparse, urllib, urllib2, shutil, random, socket, cStringIO import sys, os.path, re, urlparse, urllib, urllib2, shutil, random, socket, cStringIO
import itertools
import base64 import base64
import httplib import httplib
from pkg_resources import * from pkg_resources import *
...@@ -134,6 +135,24 @@ def interpret_distro_name(location, basename, metadata, ...@@ -134,6 +135,24 @@ def interpret_distro_name(location, basename, metadata,
platform = platform 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
REL = re.compile("""<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>""", re.I) REL = re.compile("""<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>""", re.I)
# this line is here to fix emacs' cruddy broken syntax highlighting # this line is here to fix emacs' cruddy broken syntax highlighting
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment