diff options
Diffstat (limited to 'lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/backwardcompat.py')
-rw-r--r-- | lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/backwardcompat.py | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/backwardcompat.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/backwardcompat.py new file mode 100644 index 0000000..e33da98 --- /dev/null +++ b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/backwardcompat.py @@ -0,0 +1,135 @@ +"""Stuff that differs in different Python versions""" + +import sys +import os +import shutil + +__all__ = ['any', 'WindowsError', 'md5', 'copytree'] + +try: + WindowsError = WindowsError +except NameError: + class NeverUsedException(Exception): + """this exception should never be raised""" + WindowsError = NeverUsedException +try: + from hashlib import md5 +except ImportError: + import md5 as md5_module + md5 = md5_module.new + +try: + from pkgutil import walk_packages +except ImportError: + # let's fall back as long as we can + from pip._pkgutil import walk_packages + +try: + any = any +except NameError: + + def any(seq): + for item in seq: + if item: + return True + return False + +console_encoding = sys.__stdout__.encoding + +if sys.version_info >= (3,): + from io import StringIO, BytesIO + from functools import reduce + from urllib.error import URLError, HTTPError + from queue import Queue, Empty + from urllib.request import url2pathname + from urllib.request import urlretrieve + from email import message as emailmessage + import urllib.parse as urllib + import urllib.request as urllib2 + import configparser as ConfigParser + import xmlrpc.client as xmlrpclib + import urllib.parse as urlparse + import http.client as httplib + + def cmp(a, b): + return (a > b) - (a < b) + + def b(s): + return s.encode('utf-8') + + def u(s): + return s.decode('utf-8') + + def console_to_str(s): + try: + return s.decode(console_encoding) + except UnicodeDecodeError: + return s.decode('utf_8') + + def fwrite(f, s): + f.buffer.write(b(s)) + + bytes = bytes + string_types = (str,) + raw_input = input +else: + from cStringIO import StringIO + from urllib2 import URLError, HTTPError + from Queue import Queue, Empty + from urllib import url2pathname, urlretrieve + from email import Message as emailmessage + import urllib + import urllib2 + import urlparse + import ConfigParser + import xmlrpclib + import httplib + + def b(s): + return s + + def u(s): + return s + + def console_to_str(s): + return s + + def fwrite(f, s): + f.write(s) + + bytes = str + string_types = (basestring,) + reduce = reduce + cmp = cmp + raw_input = raw_input + BytesIO = StringIO + +try: + from email.parser import FeedParser +except ImportError: + # python lesser than 2.5 + from email.FeedParser import FeedParser + +from distutils.sysconfig import get_python_lib, get_python_version + + +def copytree(src, dst): + if sys.version_info < (2, 5): + before_last_dir = os.path.dirname(dst) + if not os.path.exists(before_last_dir): + os.makedirs(before_last_dir) + shutil.copytree(src, dst) + shutil.copymode(src, dst) + else: + shutil.copytree(src, dst) + + +def product(*args, **kwds): + # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy + # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111 + pools = list(map(tuple, args)) * kwds.get('repeat', 1) + result = [[]] + for pool in pools: + result = [x+[y] for x in result for y in pool] + for prod in result: + yield tuple(prod) |