diff --git a/ChangeLog.txt b/ChangeLog.txt index 64958a0c..faedc89c 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,10 @@ +3.7.3 - 11/12/2019 +FIxed: +- Bugfix: Slackware-current from Alien Bob 20191130 #119 +- Improving call class methods for reposiory updating +- Replace requests dependency with urllib3 +- Code style to python3 compatibility + 3.7.2 - 06/12/2019 Fixed: - Bugfix handle requests raise ConnectionError diff --git a/README.md b/README.md index 3cb0c21e..22382b34 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# slpkg 3.7.2 +# slpkg 3.7.3 Slpkg is a powerful software package manager that installs, updates, and removes packages on [Slackware](http://www.slackware.com/) based systems. It automatically computes dependencies and @@ -16,7 +16,7 @@ display warning messages, etc. #### Asciicast: -[](https://asciinema.org/a/3uFNAOX8o16AmKKJDIvdezPBa) +[](https://asciinema.org/a/3uFNAOX8o16AmKKJDIvdezPBa) ##### Copyright diff --git a/requirements.txt b/requirements.txt index 2edcd05f..8eeb20f6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,4 +11,4 @@ # perl 5 language and graph-easy >= 0.75 (drawing dependencies ascii diagram) # python3-pythondialog >= 3.5.0 (Python interface to the UNIX dialog utility) -python-requests >= 2.22.0 +urllib3 >= 1.25.7 diff --git a/setup.py b/setup.py index 25e90606..4896a5ad 100755 --- a/setup.py +++ b/setup.py @@ -37,7 +37,7 @@ except ImportError: docs_requires = [] tests_requires = [] install_requires = [ - "requests>=2.22.0" + "urllib3>=1.25.7" ] optional_requires = [ "pythondialog>=3.5.0", diff --git a/slpkg/__metadata__.py b/slpkg/__metadata__.py index bda10ff3..0f7f19d6 100644 --- a/slpkg/__metadata__.py +++ b/slpkg/__metadata__.py @@ -78,7 +78,7 @@ class MetaData: __all__ = "slpkg" __author__ = "dslackw" - __version_info__ = (3, 7, 2) + __version_info__ = (3, 7, 3) __version__ = "{0}.{1}.{2}".format(*__version_info__) __license__ = "GNU General Public License v3 (GPLv3)" __email__ = "d.zlatanidis@gmail.com" diff --git a/slpkg/file_size.py b/slpkg/file_size.py index 3dd901a6..2b178776 100644 --- a/slpkg/file_size.py +++ b/slpkg/file_size.py @@ -23,7 +23,7 @@ import os -import requests +import urllib3 class FileSize: @@ -31,15 +31,15 @@ class FileSize: """ def __init__(self, registry): self.registry = registry + self.http = urllib3.PoolManager() def server(self): """Returns the size of remote files """ try: - r = requests.head(self.registry) + r = self.http.request("GET", self.registry) return int(r.headers["Content-Length"]) - except (requests.exceptions.Timeout, - requests.exceptions.ConnectionError): + except urllib3.exceptions.NewConnectionError: return " " def local(self): diff --git a/slpkg/init.py b/slpkg/init.py index 209c3ed6..9ae00f93 100644 --- a/slpkg/init.py +++ b/slpkg/init.py @@ -25,6 +25,7 @@ import os import shutil +from slpkg.utils import Utils from slpkg.repositories import Repo from slpkg.file_size import FileSize from slpkg.downloader import Download @@ -701,10 +702,13 @@ class Initialization: def merge(self, path, outfile, infiles): """Merge files """ - with open(path + outfile, 'w') as out_f: - for i in infiles: - if os.path.isfile("{0}{1}".format(path, i)): - with open(path + i, "r") as in_f: + code = "utf-8" + with open(path + outfile, 'w', encoding=code) as out_f: + for f in infiles: + if os.path.isfile("{0}{1}".format(path, f)): + # checking the encoding before read the file + code = Utils.check_encoding(path, f) + with open(path + f, "r", encoding=code) as in_f: for line in in_f: out_f.write(line) @@ -748,10 +752,10 @@ class Initialization: Update().repository(only) -class Update(object): +class Update: def __init__(self): - self._init = "Initialization(False)" + self.initialization = globals()['Initialization'](False) self.meta = _meta_ self.done = "{0}Done{1}\n".format(self.meta.color["GREY"], self.meta.color["ENDC"]) @@ -770,14 +774,13 @@ class Update(object): if check_for_local_repos(repo) is True: continue print("{0}Check repository [{1}{2}{3}] ... " - "{4}".format( - self.meta.color["GREY"], - self.meta.color["CYAN"], repo, - self.meta.color["GREY"], - self.meta.color["ENDC"]), end="") - print(end="", flush=True) + "{4}".format(self.meta.color["GREY"], + self.meta.color["CYAN"], repo, + self.meta.color["GREY"], + self.meta.color["ENDC"]), end="", flush=True) if repo in default: - exec("{0}.{1}()".format(self._init, repo)) + update = getattr(self.initialization, repo) + update() print(self.done, end="") elif repo in enabled: Initialization(False).custom(repo) diff --git a/slpkg/url_read.py b/slpkg/url_read.py index 4cb17e57..ba26139a 100644 --- a/slpkg/url_read.py +++ b/slpkg/url_read.py @@ -22,7 +22,7 @@ # along with this program. If not, see . -import requests +import urllib3 from slpkg.__metadata__ import MetaData as _meta_ @@ -33,15 +33,15 @@ class URL: def __init__(self, link): self.link = link self.meta = _meta_ + self.http = urllib3.PoolManager() def reading(self): """Open url and read """ try: - f = requests.get(self.link) - return f.text - except (requests.exceptions.Timeout, - requests.exceptions.ConnectionError): + f = self.http.request('GET', self.link) + return f.data.decode("utf-8") + except urllib3.exceptions.NewConnectionError: print("\n{0}Can't read the file '{1}'{2}".format( self.meta.color["RED"], self.link.split("/")[-1], self.meta.color["ENDC"])) diff --git a/slpkg/utils.py b/slpkg/utils.py index d3a39357..fd9b28af 100644 --- a/slpkg/utils.py +++ b/slpkg/utils.py @@ -102,6 +102,16 @@ class Utils: else: return file_name + @staticmethod + def check_encoding(path, f): + """Checking the file encoding default is utf-8 + """ + try: + with open(path + f, "r") as ftest: + ftest.read() + except UnicodeDecodeError: + return "ISO-8859-1" + def debug(self, test): """Function used for print some stuff for debugging """