From e2cc2530fc6d54ebc975c01a4ff887ce12f0a736 Mon Sep 17 00:00:00 2001 From: Pavel Aharoni Date: Wed, 29 Mar 2017 13:35:45 +0300 Subject: [SDC-6] sdc-distribution-client 1707 rebasing Change-Id: I322a05fd79beb6ba4fee4d32afffecf531b86e98 Signed-off-by: Pavel Aharoni --- .../site-packages/pip/backwardcompat/__init__.py | 168 +++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 jython-tosca-parser/src/main/resources/Lib/site-packages/pip/backwardcompat/__init__.py (limited to 'jython-tosca-parser/src/main/resources/Lib/site-packages/pip/backwardcompat/__init__.py') diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/backwardcompat/__init__.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/backwardcompat/__init__.py new file mode 100644 index 0000000..6384f9e --- /dev/null +++ b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/backwardcompat/__init__.py @@ -0,0 +1,168 @@ +"""Stuff that differs in different Python versions and platform +distributions.""" + +# flake8: noqa + +import os +import imp +import sys +import site + +__all__ = ['WindowsError'] + +uses_pycache = hasattr(imp, 'cache_from_source') + + +class NeverUsedException(Exception): + """this exception should never be raised""" + +try: + WindowsError = WindowsError +except NameError: + WindowsError = NeverUsedException + +try: + #new in Python 3.3 + PermissionError = PermissionError +except NameError: + PermissionError = NeverUsedException + +console_encoding = sys.__stdout__.encoding + + +try: + unicode + + def binary(s): + if isinstance(s, unicode): + return s.encode('ascii') + return s +except NameError: + def binary(s): + if isinstance(s, str): + return s.encode('ascii') + + +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, urlretrieve, pathname2url + 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 get_http_message_param(http_message, param, default_value): + return http_message.get_param(param, default_value) + + 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, pathname2url + 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 get_http_message_param(http_message, param, default_value): + result = http_message.getparam(param) + return result or default_value + + bytes = str + string_types = (basestring,) + reduce = reduce + cmp = cmp + raw_input = raw_input + BytesIO = StringIO + + +from distutils.sysconfig import get_python_lib, get_python_version + +#site.USER_SITE was created in py2.6 +user_site = getattr(site, 'USER_SITE', None) + + +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) + + +def get_path_uid(path): + """ + Return path's uid. + + Does not follow symlinks: + https://github.com/pypa/pip/pull/935#discussion_r5307003 + + Placed this function in backwardcompat due to differences on AIX and + Jython, that should eventually go away. + + :raises OSError: When path is a symlink or can't be read. + """ + if hasattr(os, 'O_NOFOLLOW'): + fd = os.open(path, os.O_RDONLY | os.O_NOFOLLOW) + file_uid = os.fstat(fd).st_uid + os.close(fd) + else: # AIX and Jython + # WARNING: time of check vulnerabity, but best we can do w/o NOFOLLOW + if not os.path.islink(path): + # older versions of Jython don't have `os.fstat` + file_uid = os.stat(path).st_uid + else: + # raise OSError for parity with os.O_NOFOLLOW above + raise OSError( + "%s is a symlink; Will not return uid for symlinks" % path + ) + return file_uid + + +# packages in the stdlib that may have installation metadata, but should not be +# considered 'installed'. this theoretically could be determined based on +# dist.location (py27:`sysconfig.get_paths()['stdlib']`, +# py26:sysconfig.get_config_vars('LIBDEST')), but fear platform variation may +# make this ineffective, so hard-coding +stdlib_pkgs = ['python', 'wsgiref'] +if sys.version_info >= (2, 7): + stdlib_pkgs.extend(['argparse']) -- cgit 1.2.3-korg