From b07075db76544c630f255169c4a3d956d6ed06cb Mon Sep 17 00:00:00 2001 From: looooo Date: Thu, 11 May 2017 13:27:24 +0200 Subject: [PATCH] py3: AddonManager: use urllib.request insted of urllib2 issue 0000995 --- src/Mod/AddonManager/AddonManager.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Mod/AddonManager/AddonManager.py b/src/Mod/AddonManager/AddonManager.py index 9b7e722910cb..ca9a0bbaeefa 100644 --- a/src/Mod/AddonManager/AddonManager.py +++ b/src/Mod/AddonManager/AddonManager.py @@ -38,7 +38,12 @@ ''' from PySide import QtCore, QtGui -import FreeCAD,urllib2,re,os,shutil +import sys, os, re, shutil +import FreeCAD +if sys.version_info.major < 3: + import urllib2 +else: + import urllib.request as urllib2 NOGIT = False # for debugging purposes, set this to True to always use http downloads @@ -304,6 +309,8 @@ def run(self): self.progressbar_show.emit(True) u = urllib2.urlopen("https://github.com/FreeCAD/FreeCAD-addons") p = u.read() + if isinstance(p, bytes): + p = p.decode("utf-8") u.close() p = p.replace("\n"," ") p = re.findall("octicon-file-submodule(.*?)message",p) @@ -346,6 +353,8 @@ def run(self): url = repo[1] u = urllib2.urlopen(url) p = u.read() + if isinstance(p, bytes): + p = p.decode("utf-8") u.close() desc = re.findall("",p) if desc: @@ -374,6 +383,8 @@ def run(self): macropath = FreeCAD.ParamGet('User parameter:BaseApp/Preferences/Macro').GetString("MacroPath",os.path.join(FreeCAD.ConfigGet("UserAppData"),"Macro")) u = urllib2.urlopen("http://www.freecadweb.org/wiki/Macros_recipes") p = u.read() + if isinstance(p, bytes): + p = p.decode("utf-8") u.close() macros = re.findall("title=\"(Macro.*?)\"",p) macros = [mac for mac in macros if (not("translated" in mac))] @@ -414,6 +425,8 @@ def run(self): self.info_label.emit(translate("AddonsInstaller", "Retrieving info from ") + str(url)) u = urllib2.urlopen(url) p = u.read() + if isinstance(p, bytes): + p = p.decode("utf-8") u.close() desc = re.findall("",p) if desc: @@ -456,6 +469,8 @@ def run(self): self.info_label.emit("Retrieving info from " + str(url)) u = urllib2.urlopen(url) p = u.read() + if isinstance(p, bytes): + p = p.decode("utf-8") u.close() code = re.findall("
(.*?)<\/pre>",p.replace("\n","--endl--"))
             if code:
@@ -559,7 +574,8 @@ def run(self):
 
     def download(self,giturl,clonedir):
         "downloads and unzip from github"
-        import StringIO,zipfile
+        import zipfile
+        import io
         bakdir = None
         if os.path.exists(clonedir):
             bakdir = clonedir+".bak"
@@ -573,7 +589,7 @@ def download(self,giturl,clonedir):
             u = urllib2.urlopen(zipurl)
         except:
             return translate("AddonsInstaller", "Error: Unable to download") + " " + zipurl
-        zfile = StringIO.StringIO()
+        zfile = io.StringIO()
         zfile.write(u.read())
         zfile = zipfile.ZipFile(zfile)
         master = zfile.namelist()[0] # github will put everything in a subfolder