Blame SOURCES/aliyuncli-python3-fixes.patch

4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/advance/ecsExportHandler.py b/bundled/aliyun/aliyun-cli/aliyuncli/advance/ecsExportHandler.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/advance/ecsExportHandler.py	2019-02-19 12:08:17.331785393 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/advance/ecsExportHandler.py	2019-02-19 14:40:39.656330971 +0100
4d1913
@@ -13,7 +13,7 @@
4d1913
     
4d1913
     def getFileName(self,keyValues):
4d1913
         filename = None
4d1913
-        if keyValues.has_key('--filename') and len(keyValues['--filename']) > 0:
4d1913
+        if '--filename' in keyValues and len(keyValues['--filename']) > 0:
4d1913
             filename = keyValues['--filename'][0]
4d1913
         else:
4d1913
             return filename, "A file name is needed! please use \'--filename\' and add the file name."
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/advance/ecsImportHandler.py b/bundled/aliyun/aliyun-cli/aliyuncli/advance/ecsImportHandler.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/advance/ecsImportHandler.py	2019-02-19 12:08:17.331785393 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/advance/ecsImportHandler.py	2019-02-19 14:41:48.927128430 +0100
4d1913
@@ -13,7 +13,7 @@
4d1913
     
4d1913
     def getFileName(self,keyValues):
4d1913
         filename = None
4d1913
-        if keyValues.has_key('--filename') and len(keyValues['--filename']) > 0:
4d1913
+        if '--filename' in keyValues and len(keyValues['--filename']) > 0:
4d1913
             filename = keyValues['--filename'][0]
4d1913
         else:
4d1913
             print("A profile is needed! please use \'--filename\' and add the profile name.")
4d1913
@@ -21,7 +21,7 @@
4d1913
 
4d1913
     def getInstanceCount(self,keyValues):
4d1913
         count = 1
4d1913
-        if keyValues.has_key('--instancecount') and len(keyValues['--instancecount']) > 0:
4d1913
+        if '--instancecount' in keyValues and len(keyValues['--instancecount']) > 0:
4d1913
             if  keyValues['--instancecount'][0].isdigit() and int(keyValues['--instancecount'][0]) >= 0:
4d1913
                 count = keyValues['--instancecount'][0]
4d1913
             else:
4d1913
@@ -113,7 +113,7 @@
4d1913
 
4d1913
     def isAllocatePublicIpAddress(self,keyValues):
4d1913
         _publicIp = False
4d1913
-        if keyValues.has_key('--allocatepublicip') and len(keyValues['--allocatepublicip']) > 0:
4d1913
+        if '--allocatepublicip' in keyValues and len(keyValues['--allocatepublicip']) > 0:
4d1913
             if  keyValues['--allocatepublicip'][0] == "yes":
4d1913
                 _publicIp = True
4d1913
         return _publicIp
4d1913
@@ -125,7 +125,7 @@
4d1913
             '''
4d1913
             data = json.loads(jsonbody)
4d1913
             '''
4d1913
-            if data.has_key('InstanceId') and len(data['InstanceId']) > 0:
4d1913
+            if 'InstanceId' in data and len(data['InstanceId']) > 0:
4d1913
                 instanceId = data['InstanceId']
4d1913
         except Exception as e:
4d1913
             pass
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/advance/rdsExportHandler.py b/bundled/aliyun/aliyun-cli/aliyuncli/advance/rdsExportHandler.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/advance/rdsExportHandler.py	2019-02-19 12:08:17.331785393 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/advance/rdsExportHandler.py	2019-02-19 14:42:11.772731833 +0100
4d1913
@@ -38,7 +38,7 @@
4d1913
 
4d1913
     def getFileName(self,keyValues):
4d1913
         filename = None
4d1913
-        if keyValues.has_key('--filename') and len(keyValues['--filename']) > 0:
4d1913
+        if '--filename' in keyValues and len(keyValues['--filename']) > 0:
4d1913
             filename = keyValues['--filename'][0]
4d1913
         else:
4d1913
             return filename, "A file name is needed! please use \'--filename\' and add the file name."
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/advance/rdsImportHandler.py b/bundled/aliyun/aliyun-cli/aliyuncli/advance/rdsImportHandler.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/advance/rdsImportHandler.py	2019-02-19 12:08:17.331785393 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/advance/rdsImportHandler.py	2019-02-19 14:39:09.247900469 +0100
4d1913
@@ -13,7 +13,7 @@
4d1913
     
4d1913
     def getFileName(self,keyValues):
4d1913
         filename = None
4d1913
-        if keyValues.has_key('--filename') and len(keyValues['--filename']) > 0:
4d1913
+        if '--filename' in keyValues and len(keyValues['--filename']) > 0:
4d1913
             filename = keyValues['--filename'][0]
4d1913
         else:
4d1913
             return filename, "A filename is needed! please use \'--filename\' and add the file name."
4d1913
@@ -21,7 +21,7 @@
4d1913
     def getInstanceCount(self,keyValues):
4d1913
         count = 1
4d1913
         import_count = "--count"
4d1913
-        if keyValues.has_key(import_count) and len(keyValues[import_count]) > 0:
4d1913
+        if import_count in keyValues and len(keyValues[import_count]) > 0:
4d1913
             if  keyValues[import_count][0].isdigit() and int(keyValues[import_count][0]) >= 0:
4d1913
                 count = keyValues[import_count][0]
4d1913
             else:
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/advance/userConfigHandler.py b/bundled/aliyun/aliyun-cli/aliyuncli/advance/userConfigHandler.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/advance/userConfigHandler.py	2018-01-24 04:08:33.000000000 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/advance/userConfigHandler.py	2019-02-19 11:01:46.116653274 +0100
4d1913
@@ -17,37 +17,37 @@
4d1913
 
4d1913
     def getConfigHandlerOptions(self):
4d1913
         return [ConfigCmd.name]
4d1913
-				
4d1913
+
4d1913
     def showConfig(self):
4d1913
         _credentialsPath = os.path.join(self.extensionCliHandler.aliyunConfigurePath,self.extensionCliHandler.credentials)
4d1913
         _configurePath = os.path.join(self.extensionCliHandler.aliyunConfigurePath,self.extensionCliHandler.configure)
4d1913
         config = dict()
4d1913
         configContent = dict() 
4d1913
-	credentialsContent = dict ()
4d1913
-	if os.path.exists(_configurePath):
4d1913
+        credentialsContent = dict ()
4d1913
+        if os.path.exists(_configurePath):
4d1913
             for line in open(_configurePath):
4d1913
                 line = line.strip('\n')
4d1913
                 if line.find('=') > 0:
4d1913
                     list = line.split("=",1)
4d1913
-		    configContent[list[0]] = list[1]
4d1913
-		else: 
4d1913
-		    pass
4d1913
-	config['configure'] = configContent
4d1913
-	if os.path.exists(_credentialsPath):
4d1913
-	    for line in open(_credentialsPath):
4d1913
+                    configContent[list[0]] = list[1]
4d1913
+                else: 
4d1913
+                    pass
4d1913
+        config['configure'] = configContent
4d1913
+        if os.path.exists(_credentialsPath):
4d1913
+            for line in open(_credentialsPath):
4d1913
                 line = line.strip('\n')
4d1913
                 if line.find('=') > 0:
4d1913
                     list = line.split("=",1)
4d1913
-		    credentialsContent[list[0]] = list[1]
4d1913
-		else: 
4d1913
-		    pass 
4d1913
-	config ['credentials'] = credentialsContent
4d1913
-	response.display_response("showConfigure",config,'table')
4d1913
+                    credentialsContent[list[0]] = list[1]
4d1913
+                else: 
4d1913
+                    pass 
4d1913
+        config ['credentials'] = credentialsContent
4d1913
+        response.display_response("showConfigure",config,'table')
4d1913
     def importConfig():
4d1913
         pass
4d1913
     def exportConfig():
4d1913
         pass
4d1913
-	
4d1913
+
4d1913
 
4d1913
 
4d1913
 if __name__ == "__main__":
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/advance/userProfileHandler.py b/bundled/aliyun/aliyun-cli/aliyuncli/advance/userProfileHandler.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/advance/userProfileHandler.py	2019-02-19 12:08:17.332785376 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/advance/userProfileHandler.py	2019-02-19 14:40:12.267806439 +0100
4d1913
@@ -20,7 +20,7 @@
4d1913
     def handleProfileCmd(self, cmd, keyValues):
4d1913
         if cmd.lower() == ProfileCmd.useProfile.lower(): # confirm command is right
4d1913
             #check --name is valid
4d1913
-            if keyValues.has_key(ProfileCmd.name) and len(keyValues[ProfileCmd.name]) > 0:
4d1913
+            if ProfileCmd.name in keyValues and len(keyValues[ProfileCmd.name]) > 0:
4d1913
                 _value = keyValues[ProfileCmd.name][0] # use the first value
4d1913
                 self.extensionCliHandler.setUserProfile(_value)
4d1913
             else:
4d1913
@@ -34,7 +34,7 @@
4d1913
         newProfileName = ''
4d1913
         if cmd.lower() == ProfileCmd.addProfile.lower(): # confirm command is right
4d1913
             #check --name is valid
4d1913
-            if keyValues.has_key(ProfileCmd.name) and len(keyValues[ProfileCmd.name]) > 0:
4d1913
+            if ProfileCmd.name in keyValues and len(keyValues[ProfileCmd.name]) > 0:
4d1913
                 _value = keyValues[ProfileCmd.name][0] # check the first value
4d1913
                 # only input key and secret
4d1913
                 newProfileName = _value
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/aliyunCliParser.py b/bundled/aliyun/aliyun-cli/aliyuncli/aliyunCliParser.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/aliyunCliParser.py	2019-02-19 12:08:17.332785376 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/aliyunCliParser.py	2019-02-19 14:35:32.009660989 +0100
4d1913
@@ -137,9 +137,9 @@
4d1913
                         values.append(self.args[index])
4d1913
                         index = index + 1
4d1913
                     keyValues[currentValue] = values
4d1913
-        if keyValues.has_key(keystr) and keyValues[keystr].__len__() > 0:
4d1913
+        if keystr in keyValues and keyValues[keystr].__len__() > 0:
4d1913
             _key = keyValues[keystr][0]
4d1913
-        if keyValues.has_key(secretstr) and keyValues[secretstr].__len__() > 0:
4d1913
+        if secretstr in keyValues and keyValues[secretstr].__len__() > 0:
4d1913
             _secret = keyValues[secretstr][0]
4d1913
         #print("accesskeyid: ", _key , "accesskeysecret: ",_secret)
4d1913
         return _key, _secret
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/aliyuncli.py b/bundled/aliyun/aliyun-cli/aliyuncli/aliyuncli.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/aliyuncli.py	2018-01-24 04:08:33.000000000 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/aliyuncli.py	2019-02-19 13:35:35.738680413 +0100
4d1913
@@ -19,8 +19,9 @@
4d1913
 '''
4d1913
 
4d1913
 import sys 
4d1913
-reload(sys)
4d1913
-sys.setdefaultencoding('utf-8')
4d1913
+if sys.version_info[0] < 3:
4d1913
+    reload(sys)
4d1913
+    sys.setdefaultencoding('utf-8')
4d1913
 __author__ = 'xixi.xxx'
4d1913
 import aliyunCliMain
4d1913
 
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/aliyunCliUpgrade.py b/bundled/aliyun/aliyun-cli/aliyuncli/aliyunCliUpgrade.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/aliyunCliUpgrade.py	2019-02-19 12:08:17.332785376 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/aliyunCliUpgrade.py	2019-02-19 11:15:19.920089641 +0100
4d1913
@@ -18,7 +18,7 @@
4d1913
 '''
4d1913
 
4d1913
 import aliyunCliConfiugre
4d1913
-import urllib2
4d1913
+import urllib3
4d1913
 import re
4d1913
 import os
4d1913
 import platform
4d1913
@@ -151,7 +151,7 @@
4d1913
 # this functino will get the latest version
4d1913
     def _getLatestTimeFromServer(self):
4d1913
         try:
4d1913
-            f = urllib2.urlopen(self.configure.server_url,data=None,timeout=5)
4d1913
+            f = urllib3.urlopen(self.configure.server_url,data=None,timeout=5)
4d1913
             s = f.read()
4d1913
             return s
4d1913
         except Exception as e:
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/aliyunOpenApiData.py b/bundled/aliyun/aliyun-cli/aliyuncli/aliyunOpenApiData.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/aliyunOpenApiData.py	2019-02-19 12:08:17.332785376 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/aliyunOpenApiData.py	2019-02-19 14:37:28.221649497 +0100
4d1913
@@ -26,7 +26,7 @@
4d1913
 import aliyunSdkConfigure
4d1913
 import json
4d1913
 import cliError
4d1913
-import urllib2
4d1913
+import urllib3
4d1913
 import handleEndPoint
4d1913
 
4d1913
 from __init__ import  __version__
4d1913
@@ -259,7 +259,7 @@
4d1913
     def changeEndPoint(self, classname, keyValues):
4d1913
         endpoint = "Endpoint"
4d1913
         try:
4d1913
-            if keyValues.has_key(endpoint) and keyValues[endpoint].__len__() > 0:
4d1913
+            if endpoint in keyValues and keyValues[endpoint].__len__() > 0:
4d1913
                 classname._RestApi__domain = keyValues[endpoint][0]
4d1913
         except Exception as e:
4d1913
             pass
4d1913
@@ -444,10 +444,10 @@
4d1913
 
4d1913
     def getTempVersion(self,keyValues):
4d1913
         key='--version'
4d1913
-        if keyValues is not None and keyValues.has_key(key):
4d1913
+        if keyValues is not None and key in keyValues:
4d1913
             return keyValues.get(key)
4d1913
         key = 'version'
4d1913
-        if keyValues is not None and keyValues.has_key(key):
4d1913
+        if keyValues is not None and key in keyValues:
4d1913
             return keyValues.get(key)
4d1913
 
4d1913
     def getVersionFromFile(self,cmd):
4d1913
@@ -513,7 +513,7 @@
4d1913
         self.checkForServer(response,cmd,operation)
4d1913
     def getRequestId(self,response):
4d1913
         try:
4d1913
-            if response.has_key('RequestId') and len(response['RequestId']) > 0:
4d1913
+            if 'RequestId' in response and len(response['RequestId']) > 0:
4d1913
                 requestId = response['RequestId']
4d1913
                 return  requestId
4d1913
         except Exception:
4d1913
@@ -532,7 +532,7 @@
4d1913
             ua = ""
4d1913
         url = configure.server_url + "?requesId=" + requestId + "&ak=" + ak +"&ua="+ua+"&cmd="+cmd+"&operation="+operation
4d1913
         try:
4d1913
-            f = urllib2.urlopen(url,data=None,timeout=5)
4d1913
+            f = urllib3.urlopen(url,data=None,timeout=5)
4d1913
             s = f.read()
4d1913
             return s
4d1913
         except Exception :
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/aliyunSdkConfigure.py b/bundled/aliyun/aliyun-cli/aliyuncli/aliyunSdkConfigure.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/aliyunSdkConfigure.py	2019-02-19 12:08:17.333785359 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/aliyunSdkConfigure.py	2019-02-19 14:38:04.032029661 +0100
4d1913
@@ -39,7 +39,7 @@
4d1913
 
4d1913
     def sdkConfigure(self,cmd,operation):
4d1913
         keyValues = self.parser._getKeyValues()
4d1913
-        if keyValues.has_key('--version') and len(keyValues['--version']) > 0:
4d1913
+        if '--version' in keyValues and len(keyValues['--version']) > 0:
4d1913
             version=keyValues['--version'][0]
4d1913
             filename=self.fileName
4d1913
             self.writeCmdVersionToFile(cmd,version,filename)
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/configure.py b/bundled/aliyun/aliyun-cli/aliyuncli/configure.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/configure.py	2019-02-19 12:08:17.333785359 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/configure.py	2019-02-19 11:12:58.670708353 +0100
4d1913
@@ -23,6 +23,8 @@
4d1913
 import aliyunCliParser
4d1913
 import platform
4d1913
 
4d1913
+if sys.version_info[0] > 2:
4d1913
+    raw_input = input
4d1913
 
4d1913
 OSS_CREDS_FILENAME = "%s/.aliyuncli/osscredentials" % os.path.expanduser('~')
4d1913
 OSS_CONFIG_SECTION = 'OSSCredentials'
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/paramOptimize.py b/bundled/aliyun/aliyun-cli/aliyuncli/paramOptimize.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/paramOptimize.py	2019-02-19 12:08:17.333785359 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/paramOptimize.py	2019-02-19 11:14:58.926181598 +0100
4d1913
@@ -19,7 +19,7 @@
4d1913
 #/usr/bin/env python
4d1913
 #!-*- coding:utf-8 -*-
4d1913
 import os
4d1913
-import urllib2
4d1913
+import urllib3
4d1913
 import cliError
4d1913
 
4d1913
 
4d1913
@@ -64,9 +64,9 @@
4d1913
         print(e)
4d1913
 def _getParamFromUrl(prefix,value,mode):
4d1913
 
4d1913
-    req = urllib2.Request(value)
4d1913
+    req = urllib3.Request(value)
4d1913
     try:
4d1913
-        response=urllib2.urlopen(req)
4d1913
+        response=urllib3.urlopen(req)
4d1913
         if response.getcode() == 200:
4d1913
             return response.read()
4d1913
         else:
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/aliyuncli/six.py b/bundled/aliyun/aliyun-cli/aliyuncli/six.py
4d1913
--- a/bundled/aliyun/aliyun-cli/aliyuncli/six.py	2018-01-24 04:08:33.000000000 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/aliyuncli/six.py	2019-02-19 11:14:40.505262286 +0100
4d1913
@@ -340,8 +340,8 @@
4d1913
 
4d1913
 
4d1913
 _urllib_error_moved_attributes = [
4d1913
-    MovedAttribute("URLError", "urllib2", "urllib.error"),
4d1913
-    MovedAttribute("HTTPError", "urllib2", "urllib.error"),
4d1913
+    MovedAttribute("URLError", "urllib3", "urllib.error"),
4d1913
+    MovedAttribute("HTTPError", "urllib3", "urllib.error"),
4d1913
     MovedAttribute("ContentTooShortError", "urllib", "urllib.error"),
4d1913
 ]
4d1913
 for attr in _urllib_error_moved_attributes:
4d1913
@@ -359,34 +359,34 @@
4d1913
 
4d1913
 
4d1913
 _urllib_request_moved_attributes = [
4d1913
-    MovedAttribute("urlopen", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("install_opener", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("build_opener", "urllib2", "urllib.request"),
4d1913
+    MovedAttribute("urlopen", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("install_opener", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("build_opener", "urllib3", "urllib.request"),
4d1913
     MovedAttribute("pathname2url", "urllib", "urllib.request"),
4d1913
     MovedAttribute("url2pathname", "urllib", "urllib.request"),
4d1913
     MovedAttribute("getproxies", "urllib", "urllib.request"),
4d1913
-    MovedAttribute("Request", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("OpenerDirector", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("ProxyHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("BaseHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("HTTPHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("FileHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("FTPHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("UnknownHandler", "urllib2", "urllib.request"),
4d1913
-    MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"),
4d1913
+    MovedAttribute("Request", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("OpenerDirector", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("HTTPDefaultErrorHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("HTTPRedirectHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("HTTPCookieProcessor", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("ProxyHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("BaseHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("HTTPPasswordMgr", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("AbstractBasicAuthHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("HTTPBasicAuthHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("ProxyBasicAuthHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("AbstractDigestAuthHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("HTTPDigestAuthHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("ProxyDigestAuthHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("HTTPHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("HTTPSHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("FileHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("FTPHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("CacheFTPHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("UnknownHandler", "urllib3", "urllib.request"),
4d1913
+    MovedAttribute("HTTPErrorProcessor", "urllib3", "urllib.request"),
4d1913
     MovedAttribute("urlretrieve", "urllib", "urllib.request"),
4d1913
     MovedAttribute("urlcleanup", "urllib", "urllib.request"),
4d1913
     MovedAttribute("URLopener", "urllib", "urllib.request"),
4d1913
diff -uNr a/bundled/aliyun/aliyun-cli/setup.py b/bundled/aliyun/aliyun-cli/setup.py
4d1913
--- a/bundled/aliyun/aliyun-cli/setup.py	2018-01-24 04:08:33.000000000 +0100
4d1913
+++ b/bundled/aliyun/aliyun-cli/setup.py	2019-02-19 13:33:29.069848394 +0100
4d1913
@@ -24,7 +24,7 @@
4d1913
 
4d1913
 install_requires = [
4d1913
         'colorama>=0.2.5,<=0.3.3',
4d1913
-        'jmespath>=0.7.0,<=0.7.1',
4d1913
+        'jmespath>=0.7.0',
4d1913
         ]
4d1913
 def main():
4d1913
     setup(