From 59cdbbe4766893775a22462f1726e2956c21fd7a Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Aug 20 2019 17:03:48 +0000 Subject: [PATCH 1/9] Use modern exception handling syntax. --- diff --git a/R2rpm b/R2rpm index 03ea3c8..b1e0cd9 100755 --- a/R2rpm +++ b/R2rpm @@ -27,5 +27,5 @@ if __name__ == '__main__': ARG = PARSER.parse_args() try: R2rpm().main(ARG) - except R2specError, err: + except R2specError as err: print err diff --git a/R2spec b/R2spec index 97d8720..9327678 100755 --- a/R2spec +++ b/R2spec @@ -27,5 +27,5 @@ if __name__ == '__main__': ARG = PARSER.parse_args() try: R2spec().main(ARG) - except R2specError, err: + except R2specError as err: print err diff --git a/r2spec/__init__.py b/r2spec/__init__.py index 706932d..e8b9f09 100644 --- a/r2spec/__init__.py +++ b/r2spec/__init__.py @@ -64,7 +64,7 @@ def move_sources(fullpath, sources): shutil.copyfile(fullpath, dest) -class R2specError: +class R2specError(Exception): """ R2specError class Template for all the error of the project """ diff --git a/r2spec/build.py b/r2spec/build.py index b62c236..e4cd803 100644 --- a/r2spec/build.py +++ b/r2spec/build.py @@ -108,7 +108,7 @@ class Build: self.rpm.append(rpm) else: self.rpm.append(rpm) - except IOError, err: + except IOError as err: self.log.info('Could not read the file "%s"' % self.buildlog) self.log.debug('ERROR: %s' % err) @@ -131,7 +131,7 @@ class Build: stream = open(self.buildlog, 'r') log = stream.read() stream.close() - except IOError, err: + except IOError as err: self.log.info('An error occured during the build') self.log.debug('ERROR: %s' % err) print 'Stopping' diff --git a/r2spec/r2spec_obj.py b/r2spec/r2spec_obj.py index 4d84d30..553e3a9 100644 --- a/r2spec/r2spec_obj.py +++ b/r2spec/r2spec_obj.py @@ -393,11 +393,11 @@ class R2rpm(R2spec): self.build.build(specfile, mock_config=args.mock_config, mock_resultdir=args.mock_resultdir) self.__check_build_output() - except BuildDepencenciesError, err: + except BuildDepencenciesError as err: print 'Missing dependencies to build %s' % self.pack.name self.log.info(err) return 1 - except BuildError, err: + except BuildError as err: print 'An error occured during the build of %s' % self.pack.name self.log.debug('Build ERROR: %s' % err) return 1 diff --git a/r2spec/rpackage.py b/r2spec/rpackage.py index 77a4c9a..485ddb7 100644 --- a/r2spec/rpackage.py +++ b/r2spec/rpackage.py @@ -56,7 +56,7 @@ def package_in_repo(url, name): return (version) else: log.info("Not Found: %s in %s" % (name, url)) - except IOError, ex: + except IOError as ex: print 'Could not contact the repository at url: %s' % url log.debug('Error: %s' % ex) return None @@ -146,7 +146,7 @@ class RPackage(object): tar = tarfile.open(tarball) tar.extractall() tar.close() - except TarError, err: + except TarError as err: self.log.debug("Error while extracting the tarball") self.log.debug("ERROR: %s" % err) @@ -174,7 +174,7 @@ class RPackage(object): stream = open(description, 'r') content = stream.read() stream.close() - except IOError, err: + except IOError as err: self.log.info( 'An error occured while reading the DESCRIPTION file: %s' \ % description) @@ -208,7 +208,7 @@ class RPackage(object): self.log.info('Removing extracted sources: "%s"' % self.name) try: shutil.rmtree(self.name) - except (IOError, OSError), err: + except (IOError, OSError) as err: self.log.info('Could not remove the extracted sources: "%s"'\ % self.name) self.log.debug('ERROR: %s' % err) diff --git a/r2spec/spec.py b/r2spec/spec.py index f8f3283..c3fb857 100644 --- a/r2spec/spec.py +++ b/r2spec/spec.py @@ -212,7 +212,7 @@ class Spec: stream.close() mytemplate = Template(tplfile) self.spec = mytemplate.render(self.__dict) - except IOError, err: + except IOError as err: self.log.debug('ERROR: %s' % err) raise R2specError('Cannot read the file %s' % template) @@ -233,7 +233,7 @@ class Spec: stream = open(specfile, 'r') self.spec = stream.read() stream.close() - except IOError, err: + except IOError as err: self.log.info('Cannot read the file %s' % specfile) self.log.debug('ERROR: %s' % err) @@ -249,6 +249,6 @@ class Spec: self.log.debug('Spec file writen: %s' % specfile) if verbose: print 'Spec file writen: %s' % specfile - except IOError, err: + except IOError as err: self.log.info('Cannot write the file %s' % specfile) self.log.debug('ERROR: %s' % err) diff --git a/test/test_R2rpm.py b/test/test_R2rpm.py index c9dc710..7831298 100644 --- a/test/test_R2rpm.py +++ b/test/test_R2rpm.py @@ -95,7 +95,7 @@ class R2rpmtests(unittest.TestCase): arg = parser.parse_args() try: R2rpm().main(arg) - except R2specError, err: + except R2specError as err: self.assertEqual('Not enough argument given, see -h/--help', err.value) diff --git a/test/test_R2spec.py b/test/test_R2spec.py index 9a52fba..128273b 100644 --- a/test/test_R2spec.py +++ b/test/test_R2spec.py @@ -96,7 +96,7 @@ class R2spectests(unittest.TestCase): arg = parser.parse_args() try: R2spec().main(arg) - except R2specError, err: + except R2specError as err: self.assertEqual('Not enough argument given, see -h/--help', err.value) From 3b86e4c044108f246f07e0c3a9a203c9720a88ad Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Aug 20 2019 17:03:48 +0000 Subject: [PATCH 2/9] Update dict calls. --- diff --git a/r2spec/r2spec_obj.py b/r2spec/r2spec_obj.py index 553e3a9..efe03f6 100644 --- a/r2spec/r2spec_obj.py +++ b/r2spec/r2spec_obj.py @@ -135,7 +135,7 @@ class Settings(object): except OSError: # os.getlogin() raises an exception when the session is not # in /var/run/utmp (non-login sessions) - if os.environ.has_key('LOGNAME'): + if 'LOGNAME' in os.environ: packager = os.environ['LOGNAME'] else: packager = pwd.getpwuid(os.getuid())[0] @@ -176,7 +176,7 @@ class Settings(object): :arg key, name of the parameter to set from the settings. :arg value, value of the parameter to set from the settings. """ - if not key in self._dict.keys(): + if key not in self._dict: raise KeyError(key) self._dict[key] = value @@ -185,7 +185,7 @@ class Settings(object): :arg key, name of the parameter to retrieve from the settings. """ - if not key in self._dict.keys(): + if key not in self._dict: raise KeyError(key) return self._dict[key] @@ -200,7 +200,7 @@ class Settings(object): else: opts = set() - for name in self._dict.iterkeys(): + for name in self._dict: value = None if name in opts: value = parser.get(section, name) diff --git a/r2spec/rpackage.py b/r2spec/rpackage.py index 485ddb7..2b00427 100644 --- a/r2spec/rpackage.py +++ b/r2spec/rpackage.py @@ -158,7 +158,7 @@ class RPackage(object): :arg key, the key to retrieve from the DESCRIPTION file of the R package """ - if key and key in self.description.keys(): + if key and key in self.description: return self.description[key] else: return '' diff --git a/r2spec/spec.py b/r2spec/spec.py index c3fb857..11b3885 100644 --- a/r2spec/spec.py +++ b/r2spec/spec.py @@ -45,7 +45,7 @@ def format_dependencies(dependencies): ' ': ' ', } - for key in char.keys(): + for key in char: dependencies = dependencies.replace(key, char[key]) dep_list = [] From 828b4c0b88793364c5e30468ce60acdb50ece7d3 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Aug 20 2019 17:03:48 +0000 Subject: [PATCH 3/9] Add whitespace after comma. --- diff --git a/r2spec/rpackage.py b/r2spec/rpackage.py index 2b00427..88f95f3 100644 --- a/r2spec/rpackage.py +++ b/r2spec/rpackage.py @@ -129,7 +129,7 @@ class RPackage(object): return url = self.source0.rsplit('/', 1)[0] - url = '%s/%s' % (url,self.source) + url = '%s/%s' % (url, self.source) self.log.info('Downloading %s' % url) remotefile = urllib2.urlopen(url) @@ -239,7 +239,7 @@ class RPackage(object): self.source0 = self.config.get(repo, 'source') if self.up_version != self.down_version: self.source0 = self.source0.replace('%{version}', self.up_version) - self.source = '%s_%s.tar.gz' % (self.name,self.up_version) + self.source = '%s_%s.tar.gz' % (self.name, self.up_version) def set_repo(self, reponame): """ This function find the URL and Source0 tag for the spec file From cf219f98b400bb61ba266a1e6d928980f3b51045 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Aug 20 2019 17:03:48 +0000 Subject: [PATCH 4/9] Use print function instead of statement. --- diff --git a/R2rpm b/R2rpm index b1e0cd9..70f7d9a 100755 --- a/R2rpm +++ b/R2rpm @@ -19,6 +19,8 @@ """ R2rpm launcher script """ +from __future__ import print_function + from r2spec.r2spec_obj import R2rpm, setup_parser from r2spec import R2specError @@ -28,4 +30,4 @@ if __name__ == '__main__': try: R2rpm().main(ARG) except R2specError as err: - print err + print(err) diff --git a/R2spec b/R2spec index 9327678..384782c 100755 --- a/R2spec +++ b/R2spec @@ -19,6 +19,8 @@ """ R2spec launcher script """ +from __future__ import print_function + from r2spec.r2spec_obj import R2spec, setup_parser from r2spec import R2specError @@ -28,4 +30,4 @@ if __name__ == '__main__': try: R2spec().main(ARG) except R2specError as err: - print err + print(err) diff --git a/r2spec/__init__.py b/r2spec/__init__.py index e8b9f09..06e75dd 100644 --- a/r2spec/__init__.py +++ b/r2spec/__init__.py @@ -19,6 +19,7 @@ """ Miscellaneous functions used in R2spec. """ +from __future__ import print_function import logging import shutil diff --git a/r2spec/build.py b/r2spec/build.py index e4cd803..e8dec5a 100644 --- a/r2spec/build.py +++ b/r2spec/build.py @@ -19,6 +19,7 @@ """ Build related class and methods. """ +from __future__ import print_function import os import subprocess @@ -134,7 +135,7 @@ class Build: except IOError as err: self.log.info('An error occured during the build') self.log.debug('ERROR: %s' % err) - print 'Stopping' + print('Stopping') return(1) logs = log.split('\n') diff --git a/r2spec/r2spec_obj.py b/r2spec/r2spec_obj.py index efe03f6..b8e4f48 100644 --- a/r2spec/r2spec_obj.py +++ b/r2spec/r2spec_obj.py @@ -20,6 +20,7 @@ Main functions for R2spec """ +from __future__ import print_function import argparse import ConfigParser @@ -312,8 +313,8 @@ class R2rpm(R2spec): self.log.info("RPM %s done" % specfile) # Get the list of rpm generated self.build.get_rpm() - print "RPM generated:" - print "\n".join(self.build.rpm) + print("RPM generated:") + print("\n".join(self.build.rpm)) return False else: return True @@ -374,7 +375,7 @@ class R2rpm(R2spec): self.spec.clean_files_section() self.spec.write_spec() - print 'Building... %s' % self.pack.name + print('Building... %s' % self.pack.name) self.build.build(specfile, mock_config=args.mock_config, mock_resultdir=args.mock_resultdir) if self.__check_build_output(): @@ -389,16 +390,16 @@ class R2rpm(R2spec): # Rebuild the package when build has failed the first time if self.build.outcode: # == 1 when build failed and 0 when build passed - print 'Re-building... %s' % self.pack.name + print('Re-building... %s' % self.pack.name) self.build.build(specfile, mock_config=args.mock_config, mock_resultdir=args.mock_resultdir) self.__check_build_output() except BuildDepencenciesError as err: - print 'Missing dependencies to build %s' % self.pack.name + print('Missing dependencies to build %s' % self.pack.name) self.log.info(err) return 1 except BuildError as err: - print 'An error occured during the build of %s' % self.pack.name + print('An error occured during the build of %s' % self.pack.name) self.log.debug('Build ERROR: %s' % err) return 1 if not args.keep_logs: diff --git a/r2spec/rpackage.py b/r2spec/rpackage.py index 88f95f3..d18a606 100644 --- a/r2spec/rpackage.py +++ b/r2spec/rpackage.py @@ -20,6 +20,7 @@ R packages class. """ +from __future__ import print_function import ConfigParser import os @@ -57,7 +58,7 @@ def package_in_repo(url, name): else: log.info("Not Found: %s in %s" % (name, url)) except IOError as ex: - print 'Could not contact the repository at url: %s' % url + print('Could not contact the repository at url: %s' % url) log.debug('Error: %s' % ex) return None diff --git a/r2spec/spec.py b/r2spec/spec.py index 11b3885..82feeb4 100644 --- a/r2spec/spec.py +++ b/r2spec/spec.py @@ -20,6 +20,7 @@ Spec class, handles the read/write of the spec file """ +from __future__ import print_function import datetime import os @@ -248,7 +249,7 @@ class Spec: stream.close() self.log.debug('Spec file writen: %s' % specfile) if verbose: - print 'Spec file writen: %s' % specfile + print('Spec file writen: %s' % specfile) except IOError as err: self.log.info('Cannot write the file %s' % specfile) self.log.debug('ERROR: %s' % err) diff --git a/setup.py b/setup.py index 37bcb9e..802854c 100644 --- a/setup.py +++ b/setup.py @@ -3,6 +3,8 @@ Setup script """ +from __future__ import print_function + from distutils.core import setup from r2spec import VERSION diff --git a/test/test_R2rpm.py b/test/test_R2rpm.py index 7831298..16f6174 100644 --- a/test/test_R2rpm.py +++ b/test/test_R2rpm.py @@ -19,6 +19,7 @@ """ R2rpm tests script """ +from __future__ import print_function # Cases: # -p diff --git a/test/test_R2spec.py b/test/test_R2spec.py index 128273b..9b080ef 100644 --- a/test/test_R2spec.py +++ b/test/test_R2spec.py @@ -19,6 +19,7 @@ """ R2spec tests script """ +from __future__ import print_function # Cases: # -p diff --git a/tests.py b/tests.py index 1954691..37b6200 100755 --- a/tests.py +++ b/tests.py @@ -19,6 +19,8 @@ """ R2spec launcher script """ +from __future__ import print_function + import unittest from test.test_R2spec import R2spectests from test.test_R2rpm import R2rpmtests From a89e5a946113c627105bf903fa65f1ee1ee89627 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Aug 20 2019 17:03:48 +0000 Subject: [PATCH 5/9] Import standard library bits from new locations. --- diff --git a/r2spec/r2spec_obj.py b/r2spec/r2spec_obj.py index b8e4f48..582e05c 100644 --- a/r2spec/r2spec_obj.py +++ b/r2spec/r2spec_obj.py @@ -23,13 +23,16 @@ Main functions for R2spec from __future__ import print_function import argparse -import ConfigParser import logging import os import re import sys import pwd -from urlparse import urlparse + +try: + import configparser +except ImportError: + import ConfigParser as configparser from r2spec.build import Build from r2spec.rpackage import RPackage @@ -161,7 +164,7 @@ class Settings(object): :arg configfile, name of the configuration file loaded. :arg sec, section of the configuration retrieved. """ - parser = ConfigParser.ConfigParser() + parser = configparser.RawConfigParser() configfile = os.environ['HOME'] + "/" + configfile is_new = create_conf(configfile) parser.read(configfile) diff --git a/r2spec/rpackage.py b/r2spec/rpackage.py index d18a606..a78473d 100644 --- a/r2spec/rpackage.py +++ b/r2spec/rpackage.py @@ -22,16 +22,23 @@ R packages class. from __future__ import print_function -import ConfigParser import os import re import shutil import sys import tarfile -import urllib2 from tarfile import TarError +try: + import configparser +except ImportError: + import ConfigParser as configparser +try: + import urllib.request as urllib_request +except ImportError: + import urllib2 as urllib_request + from r2spec import get_logger, get_rpm_tag, R2specError @@ -45,7 +52,7 @@ def package_in_repo(url, name): """ log = get_logger() try: - stream = urllib2.urlopen(url) + stream = urllib_request.urlopen(url) content = stream.read() stream.close() sourcemotif = re.compile("Package:\s+%s\n" % name) @@ -69,7 +76,7 @@ class RPackage(object): def __init__(self, name=None, url=None, source0=None): """ Constructor. """ self.name = name - parser = ConfigParser.ConfigParser() + parser = configparser.RawConfigParser() parser.read('/etc/R2spec/repos.cfg') self.config = parser self.log = get_logger() @@ -133,7 +140,7 @@ class RPackage(object): url = '%s/%s' % (url, self.source) self.log.info('Downloading %s' % url) - remotefile = urllib2.urlopen(url) + remotefile = urllib_request.urlopen(url) localfile = open(sources, 'w') localfile.write(remotefile.read()) localfile.close() @@ -197,7 +204,7 @@ class RPackage(object): def read_config(self): """ Read the general configuration containing the repo information """ - parser = ConfigParser.ConfigParser() + parser = configparser.RawConfigParser() configfile = '/etc/R2spec/config' parser.read(configfile) self.config = parser diff --git a/test/test_R2rpm.py b/test/test_R2rpm.py index 16f6174..db1fb2f 100644 --- a/test/test_R2rpm.py +++ b/test/test_R2rpm.py @@ -42,7 +42,11 @@ import os import shutil import sys import unittest -import urllib2 + +try: + import urllib.request as urllib_request +except ImportError: + import urllib2 as urllib_request sys.path.insert(0, os.path.abspath('../')) from r2spec.r2spec_obj import R2rpm, setup_parser @@ -68,7 +72,7 @@ def download_sources(url): :arg url, url to the object to download """ sources = url.rsplit('/', 1)[1] - remotefile = urllib2.urlopen(url) + remotefile = urllib_request.urlopen(url) localfile = open(sources, 'w') localfile.write(remotefile.read()) localfile.close() diff --git a/test/test_R2spec.py b/test/test_R2spec.py index 9b080ef..7830980 100644 --- a/test/test_R2spec.py +++ b/test/test_R2spec.py @@ -43,7 +43,11 @@ import os import shutil import sys import unittest -import urllib2 + +try: + import urllib.request as urllib_request +except ImportError: + import urllib2 as urllib_request sys.path.insert(0, os.path.abspath('../')) from r2spec.r2spec_obj import R2spec, setup_parser @@ -69,7 +73,7 @@ def download_sources(url): :arg url, url to the object to download """ sources = url.rsplit('/', 1)[1] - remotefile = urllib2.urlopen(url) + remotefile = urllib_request.urlopen(url) localfile = open(sources, 'w') localfile.write(remotefile.read()) localfile.close() From 3a2c5a38f3ea21460308ece5c7b8e4c882c39948 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Aug 20 2019 17:03:48 +0000 Subject: [PATCH 6/9] Add other __future__ imports everywhere. These appear to have no other effect on things. --- diff --git a/R2rpm b/R2rpm index 70f7d9a..6601f2a 100755 --- a/R2rpm +++ b/R2rpm @@ -19,7 +19,7 @@ """ R2rpm launcher script """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function from r2spec.r2spec_obj import R2rpm, setup_parser from r2spec import R2specError diff --git a/R2spec b/R2spec index 384782c..c2bccca 100755 --- a/R2spec +++ b/R2spec @@ -19,7 +19,7 @@ """ R2spec launcher script """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function from r2spec.r2spec_obj import R2spec, setup_parser from r2spec import R2specError diff --git a/r2spec/__init__.py b/r2spec/__init__.py index 06e75dd..e854700 100644 --- a/r2spec/__init__.py +++ b/r2spec/__init__.py @@ -19,7 +19,7 @@ """ Miscellaneous functions used in R2spec. """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function import logging import shutil diff --git a/r2spec/build.py b/r2spec/build.py index e8dec5a..6e51378 100644 --- a/r2spec/build.py +++ b/r2spec/build.py @@ -19,7 +19,7 @@ """ Build related class and methods. """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function import os import subprocess diff --git a/r2spec/r2spec_obj.py b/r2spec/r2spec_obj.py index 582e05c..43e73dc 100644 --- a/r2spec/r2spec_obj.py +++ b/r2spec/r2spec_obj.py @@ -20,7 +20,7 @@ Main functions for R2spec """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function import argparse import logging diff --git a/r2spec/rpackage.py b/r2spec/rpackage.py index a78473d..a3d371f 100644 --- a/r2spec/rpackage.py +++ b/r2spec/rpackage.py @@ -20,7 +20,7 @@ R packages class. """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function import os import re diff --git a/r2spec/spec.py b/r2spec/spec.py index 82feeb4..817718f 100644 --- a/r2spec/spec.py +++ b/r2spec/spec.py @@ -20,7 +20,7 @@ Spec class, handles the read/write of the spec file """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function import datetime import os diff --git a/setup.py b/setup.py index 802854c..c4a1c66 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ Setup script """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function from distutils.core import setup from r2spec import VERSION diff --git a/test/test_R2rpm.py b/test/test_R2rpm.py index db1fb2f..016d6a1 100644 --- a/test/test_R2rpm.py +++ b/test/test_R2rpm.py @@ -19,7 +19,7 @@ """ R2rpm tests script """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function # Cases: # -p diff --git a/test/test_R2spec.py b/test/test_R2spec.py index 7830980..8ea4786 100644 --- a/test/test_R2spec.py +++ b/test/test_R2spec.py @@ -19,7 +19,7 @@ """ R2spec tests script """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function # Cases: # -p diff --git a/tests.py b/tests.py index 37b6200..b1920d6 100755 --- a/tests.py +++ b/tests.py @@ -19,7 +19,7 @@ """ R2spec launcher script """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function import unittest from test.test_R2spec import R2spectests From edee5efdcadce03c5e51b21cbaf458f41b56aa66 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Aug 20 2019 17:03:48 +0000 Subject: [PATCH 7/9] Decode output from Popen. --- diff --git a/r2spec/__init__.py b/r2spec/__init__.py index e854700..e9d29b6 100644 --- a/r2spec/__init__.py +++ b/r2spec/__init__.py @@ -41,7 +41,8 @@ def get_rpm_tag(tag): Code from José Matos. :arg tag, the rpm tag to find the value of """ - dirname = Popen(["rpm", "-E", '%' + tag], stdout=PIPE).stdout.read()[:-1] + dirname = Popen(["rpm", "-E", '%' + tag], + stdout=PIPE, universal_newlines=True).stdout.read()[:-1] return dirname @@ -49,7 +50,8 @@ def get_mock_root(): """" Calls mock to retrieve the root path and return it minus the last two levels. """ - dirname = Popen(["mock", "--print-root-path"], stdout=PIPE).stdout.read()[:-1] + dirname = Popen(["mock", "--print-root-path"], + stdout=PIPE, universal_newlines=True).stdout.read()[:-1] return dirname.rsplit('/', 3)[0] + '/' From 5b4c2f0d2509943bb2138599dc588e9fa33dde26 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Aug 20 2019 17:03:48 +0000 Subject: [PATCH 8/9] Decode urllib results where necessary. --- diff --git a/r2spec/rpackage.py b/r2spec/rpackage.py index a3d371f..ce6627a 100644 --- a/r2spec/rpackage.py +++ b/r2spec/rpackage.py @@ -53,7 +53,7 @@ def package_in_repo(url, name): log = get_logger() try: stream = urllib_request.urlopen(url) - content = stream.read() + content = stream.read().decode() stream.close() sourcemotif = re.compile("Package:\s+%s\n" % name) result = sourcemotif.search(content) @@ -141,9 +141,8 @@ class RPackage(object): self.log.info('Downloading %s' % url) remotefile = urllib_request.urlopen(url) - localfile = open(sources, 'w') - localfile.write(remotefile.read()) - localfile.close() + with open(sources, 'wb') as localfile: + localfile.write(remotefile.read()) def extract_sources(self): """ Extract the sources into the current directory. """ diff --git a/test/test_R2rpm.py b/test/test_R2rpm.py index 016d6a1..36f4484 100644 --- a/test/test_R2rpm.py +++ b/test/test_R2rpm.py @@ -73,9 +73,8 @@ def download_sources(url): """ sources = url.rsplit('/', 1)[1] remotefile = urllib_request.urlopen(url) - localfile = open(sources, 'w') - localfile.write(remotefile.read()) - localfile.close() + with open(sources, 'wb') as localfile: + localfile.write(remotefile.read()) return sources diff --git a/test/test_R2spec.py b/test/test_R2spec.py index 8ea4786..c45d190 100644 --- a/test/test_R2spec.py +++ b/test/test_R2spec.py @@ -74,9 +74,8 @@ def download_sources(url): """ sources = url.rsplit('/', 1)[1] remotefile = urllib_request.urlopen(url) - localfile = open(sources, 'w') - localfile.write(remotefile.read()) - localfile.close() + with open(sources, 'wb') as localfile: + localfile.write(remotefile.read()) return sources From 86355b266703815a8334b38751c55b23bffe2a6e Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Aug 20 2019 17:03:48 +0000 Subject: [PATCH 9/9] Use raw strings for regular expressions. This will avoid deprecation warnings / errors about invalid escape sequences in strings that comes about in newer Python 3. --- diff --git a/r2spec/r2spec_obj.py b/r2spec/r2spec_obj.py index 43e73dc..b826c2b 100644 --- a/r2spec/r2spec_obj.py +++ b/r2spec/r2spec_obj.py @@ -236,7 +236,7 @@ class R2spec(object): settings.set('email', args.email) if args.package: - pack = RPackage(re.sub('^R-', '', args.package)) + pack = RPackage(re.sub(r'^R-', '', args.package)) pack.search_package_in_repo() elif args.url: pack = RPackage(source0=args.url) @@ -331,7 +331,7 @@ class R2rpm(R2spec): specfile = '' if args.package: - self.pack.name = re.sub('^R-', '', args.package) + self.pack.name = re.sub(r'^R-', '', args.package) self.spec.package = self.pack specfile = self.spec.get_specfile() self.pack.search_package_in_repo() diff --git a/r2spec/rpackage.py b/r2spec/rpackage.py index ce6627a..a4a0f9b 100644 --- a/r2spec/rpackage.py +++ b/r2spec/rpackage.py @@ -55,11 +55,11 @@ def package_in_repo(url, name): stream = urllib_request.urlopen(url) content = stream.read().decode() stream.close() - sourcemotif = re.compile("Package:\s+%s\n" % name) + sourcemotif = re.compile(r"Package:\s+%s\n" % name) result = sourcemotif.search(content) if result is not None: log.info("Package found in : %s" % url) - versionmotif = re.compile("Package:\s+%s\nVersion:(.*)" % name) + versionmotif = re.compile(r"Package:\s+%s\nVersion:(.*)" % name) version = versionmotif.search(content).group(1).strip() return (version) else: @@ -189,7 +189,7 @@ class RPackage(object): key = None for row in content.split('\n'): if row.strip(): - pattern = re.compile("\w:*") + pattern = re.compile(r"\w:*") if pattern.match(row): key, value = row.split(':', 1) self.description[key.strip()] = value.strip() diff --git a/r2spec/spec.py b/r2spec/spec.py index 817718f..351379b 100644 --- a/r2spec/spec.py +++ b/r2spec/spec.py @@ -37,7 +37,7 @@ def format_dependencies(dependencies): ignorelist = ['R'] # Regular expression used to determine whether the string is a # version number - versionmotif = re.compile('\d\.\d\.?\d?') + versionmotif = re.compile(r'\d\.\d\.?\d?') char = { '\r': '', '(': ' ',