summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbiao716.wang <biao716.wang@samsung.com>2022-10-28 12:42:00 +0900
committerbiao716.wang <biao716.wang@samsung.com>2022-10-28 22:27:21 +0900
commit1e5da010ab8cb514b495eb7c1d3afce6baec7f4d (patch)
tree5b76563463d1b46ff399bf99907c54e5ce03e561
parentb0bfbb2cab1b0ebdc9657c89de6bc21ab0de173b (diff)
downloadgit-buildpackage-1e5da010ab8cb514b495eb7c1d3afce6baec7f4d.tar.gz
git-buildpackage-1e5da010ab8cb514b495eb7c1d3afce6baec7f4d.tar.bz2
git-buildpackage-1e5da010ab8cb514b495eb7c1d3afce6baec7f4d.zip
port code from python2.x to python3.x
Change-Id: I798c72d07e44839cc5d1e25ec75fca0bd8068567 Signed-off-by: biao716.wang <biao716.wang@samsung.com>
-rwxr-xr-xdebian/control21
-rw-r--r--debian/git-buildpackage-bb.install4
-rw-r--r--debian/git-buildpackage-common.docs1
-rw-r--r--debian/not-installed7
-rwxr-xr-xdebian/rules6
-rwxr-xr-xexamples/zeitgeist-git.py10
-rw-r--r--gbp/bb/__init__.py6
-rw-r--r--gbp/config.py6
-rw-r--r--gbp/deb/changelog.py8
-rw-r--r--gbp/deb/control.py2
-rw-r--r--gbp/deb/source.py2
-rw-r--r--gbp/git/args.py2
-rw-r--r--gbp/git/modifier.py4
-rw-r--r--gbp/git/repository.py10
-rw-r--r--gbp/git/vfs.py4
-rw-r--r--gbp/log.py4
-rw-r--r--gbp/patch_series.py2
-rw-r--r--gbp/pkg/__init__.py9
-rw-r--r--gbp/rpm/__init__.py30
-rw-r--r--gbp/rpm/linkedlist.py14
-rw-r--r--gbp/rpm/policy.py2
-rwxr-xr-xgbp/scripts/buildpackage.py8
-rw-r--r--gbp/scripts/buildpackage_bb.py12
-rwxr-xr-xgbp/scripts/buildpackage_rpm.py10
-rwxr-xr-xgbp/scripts/clone.py4
-rwxr-xr-xgbp/scripts/clone_bb.py4
-rw-r--r--gbp/scripts/common/import_orig.py4
-rw-r--r--gbp/scripts/common/pq.py10
-rwxr-xr-xgbp/scripts/config.py4
-rwxr-xr-xgbp/scripts/create_remote_repo.py26
-rwxr-xr-xgbp/scripts/dch.py14
-rwxr-xr-xgbp/scripts/import_bb.py6
-rwxr-xr-xgbp/scripts/import_dsc.py6
-rw-r--r--gbp/scripts/import_dscs.py6
-rw-r--r--gbp/scripts/import_orig.py4
-rwxr-xr-xgbp/scripts/import_orig_rpm.py6
-rwxr-xr-xgbp/scripts/import_srpm.py14
-rwxr-xr-xgbp/scripts/pq.py6
-rwxr-xr-xgbp/scripts/pq_bb.py6
-rwxr-xr-xgbp/scripts/pq_rpm.py14
-rwxr-xr-xgbp/scripts/pull.py4
-rwxr-xr-xgbp/scripts/rpm_ch.py12
-rwxr-xr-xgbp/scripts/submit_bb.py8
-rw-r--r--gbp/scripts/supercommand.py14
-rw-r--r--gbp/tristate.py4
-rwxr-xr-xpackaging/PKGBUILD10
-rwxr-xr-xpackaging/git-buildpackage.spec81
-rw-r--r--setup.py6
-rw-r--r--tests/02_test_upstream_source_tar_unpack.py8
-rw-r--r--tests/03_test_dch_guess_version.py2
-rw-r--r--tests/09_test_write_tree.py2
-rw-r--r--tests/14_test_gbp_import_dscs.py2
-rw-r--r--tests/15_test_DebianSource.py2
-rw-r--r--tests/17_test_dch_guess_documented_commit.py2
-rw-r--r--tests/19_test_gbp_scripts_config.py2
-rw-r--r--tests/component/__init__.py2
-rw-r--r--tests/component/rpm/__init__.py2
-rw-r--r--tests/component/rpm/test_import_orig_rpm.py4
-rw-r--r--tests/component/rpm/test_import_srpm.py10
-rw-r--r--tests/test_GitRepository.py4
-rw-r--r--tests/test_import_orig.py6
-rw-r--r--tests/test_rpm.py2
62 files changed, 257 insertions, 250 deletions
diff --git a/debian/control b/debian/control
index 34cc0978..5d13d2f4 100755
--- a/debian/control
+++ b/debian/control
@@ -4,20 +4,21 @@ Priority: optional
Maintainer: Guido Günther <agx@sigxcpu.org>
Build-Depends:
bash-completion,
+ dh-python,
debhelper (>= 9~),
docbook-utils,
gtk-doc-tools,
openjade,
perl,
- python (>> 2.6.6-3~),
+ python3,
python-epydoc | pydoctor | python-pydoctor,
- python-nose,
- python-pkg-resources,
- python-setuptools,
+ python3-nose,
+ python3-pkg-resources,
+ python3-setuptools,
sgml2x,
librpm-tizen,
# For rpm (epydoc)
- python-rpm
+ python3-rpm
Standards-Version: 3.9.4
Vcs-Git: git://honk.sigxcpu.org/git/git-buildpackage.git
Vcs-Browser: https://honk.sigxcpu.org/gitweb/?p=git-buildpackage.git
@@ -27,12 +28,12 @@ X-Python-Version: >= 2.6
Package: git-buildpackage-common
Architecture: all
-Depends: ${python:Depends},
+Depends: ${python3:Depends},
${shlibs:Depends},
${misc:Depends},
git (>= 1:1.7.9.1-1~),
man-db,
- python-pkg-resources,
+ python3-pkg-resources,
#unittest need
zipmerge
Recommends: pristine-tar (>= 0.5)
@@ -42,7 +43,7 @@ Description: Suite to help with packaging in Git repositories
Package: git-buildpackage
Architecture: all
-Depends: ${python:Depends},
+Depends: ${python3:Depends},
${shlibs:Depends},
${misc:Depends},
devscripts,
@@ -62,7 +63,7 @@ Description: Suite to help with Debian packages in Git repositories
Package: git-buildpackage-rpm
Architecture: all
-Depends: ${python:Depends},
+Depends: ${python3:Depends},
${shlibs:Depends},
${misc:Depends},
python-rpm,
@@ -80,7 +81,7 @@ Description: Suite to help with rpm packages in Git repositories
Package: git-buildpackage-bb
Architecture: all
-Depends: ${python:Depends},
+Depends: ${python3:Depends},
${misc:Depends},
git-buildpackage-common (= ${binary:Version}),
git-buildpackage-rpm (= ${binary:Version}),
diff --git a/debian/git-buildpackage-bb.install b/debian/git-buildpackage-bb.install
index 39b39afa..c76b64bb 100644
--- a/debian/git-buildpackage-bb.install
+++ b/debian/git-buildpackage-bb.install
@@ -1,2 +1,2 @@
-usr/lib/python2.?/dist-packages/gbp/bb/
-usr/lib/python2.?/dist-packages/gbp/scripts/*bb*.py*
+usr/lib/python*/dist-packages/gbp/bb/
+usr/lib/python*/dist-packages/gbp/scripts/*bb*.py*
diff --git a/debian/git-buildpackage-common.docs b/debian/git-buildpackage-common.docs
index ce06068d..7fdec518 100644
--- a/debian/git-buildpackage-common.docs
+++ b/debian/git-buildpackage-common.docs
@@ -1,3 +1,2 @@
README
docs/manual-html/
-build/apidocs/
diff --git a/debian/not-installed b/debian/not-installed
new file mode 100644
index 00000000..e5804d04
--- /dev/null
+++ b/debian/not-installed
@@ -0,0 +1,7 @@
+debian/tmp/usr/lib/python3.*/dist-packages/gbp/deb/__pycache__
+debian/tmp/usr/lib/python3.*/dist-packages/gbp/git/__pycache__
+debian/tmp/usr/lib/python3.*/dist-packages/gbp/pkg/__pycache__
+debian/tmp/usr/lib/python3.*/dist-packages/gbp/__pycache__
+debian/tmp/usr/lib/python3.*/dist-packages/gbp/rpm/__pycache__
+debian/tmp/usr/lib/python3.*/dist-packages/gbp/scripts/common/__pycache__
+debian/tmp/usr/lib/python3.*/dist-packages/gbp/scripts/__pycache__
diff --git a/debian/rules b/debian/rules
index 434e58c2..91265d43 100755
--- a/debian/rules
+++ b/debian/rules
@@ -18,7 +18,7 @@ ZSH_COMPDIR = /usr/share/zsh/vendor-completions/
PYCHECKER_ARGS=-boptparse --no-override --no-shadowbuiltin
%:
- dh $@ --with python2
+ dh $@ --with python3 --buildsystem=pybuild
override_dh_auto_test:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
@@ -28,7 +28,7 @@ ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
export GIT_COMMITTER_NAME=$$GIT_AUTHOR_NAME; \
export GIT_COMMITTER_EMAIL=$$GIT_AUTHOR_EMAIL; \
PYTHONPATH=. \
- python setup.py nosetests
+ python3 setup.py nosetests
else
@echo "Checks disabled via DEB_BUILD_OPTIONS"
@@ -38,7 +38,7 @@ override_dh_auto_build:
dh_auto_build
make -C docs
#generate apidocs
- sh gen_apidocs.sh
+ #sh gen_apidocs.sh
override_dh_auto_install:
dh_auto_install
dh_bash-completion
diff --git a/examples/zeitgeist-git.py b/examples/zeitgeist-git.py
index 4edd9461..92f72d87 100755
--- a/examples/zeitgeist-git.py
+++ b/examples/zeitgeist-git.py
@@ -48,7 +48,7 @@ else:
try:
CLIENT = ZeitgeistClient()
except RuntimeError as e:
- print "Unable to connect to Zeitgeist, won't send events. Reason: '%s'" %e
+ print("Unable to connect to Zeitgeist, won't send events. Reason: '%s'" %e)
def get_repo():
@@ -64,10 +64,10 @@ def get_repo():
else:
sep = ':'
try:
- repo = unicode(uri.rsplit(sep, 1)[1])
+ repo = str(uri.rsplit(sep, 1)[1])
except IndexError: # no known separator
repo = uri
- repo = repo.rsplit(u'.git', 1)[0]
+ repo = repo.rsplit('.git', 1)[0]
return repo, uri
@@ -78,11 +78,11 @@ def main(argv):
# * branch
# * log summary (git log -1 --format=%s HEAD)
curdir = os.path.abspath(os.curdir).decode(sys.getfilesystemencoding())
- uri = u"file://%s" % curdir
+ uri = "file://%s" % curdir
repo, origin = get_repo()
if not repo:
- repo = unicode(curdir.rsplit('/', 1)[1])
+ repo = str(curdir.rsplit('/', 1)[1])
origin = uri
subject = Subject.new_for_values(
diff --git a/gbp/bb/__init__.py b/gbp/bb/__init__.py
index d6f205b4..60204b7e 100644
--- a/gbp/bb/__init__.py
+++ b/gbp/bb/__init__.py
@@ -42,8 +42,8 @@ def import_bb():
try:
return __import__('bb')
except ImportError:
- print "ERROR: Unable to find bitbake/lib, try initializing build " \
- "environment with the 'oe-init-build-env' script\n"
+ print("ERROR: Unable to find bitbake/lib, try initializing build " \
+ "environment with the 'oe-init-build-env' script\n")
# Return None instead of raising (ImportError) so that building of
# this package succeeds in Debian. Otherwise dpkg-buildpackage fails
# because of an import error in epydoc.
@@ -257,7 +257,7 @@ class BBFile(object):
if match and match.group('name') == var:
if not self.was_set:
self.was_set = True
- print "Setting value %s = %s" % (var, val)
+ print("Setting value %s = %s" % (var, val))
return ['%s = "%s"\n' % (var, val)]
else:
return []
diff --git a/gbp/config.py b/gbp/config.py
index 267400ce..0f0bdc6f 100644
--- a/gbp/config.py
+++ b/gbp/config.py
@@ -17,7 +17,7 @@
"""handles command line and config file option parsing for the gbp commands"""
from optparse import OptionParser, OptionGroup, Option, OptionValueError
-from ConfigParser import SafeConfigParser, NoSectionError
+from configparser import SafeConfigParser, NoSectionError
from copy import copy
import os.path
import tempfile
@@ -427,11 +427,11 @@ class GbpOptionParser(OptionParser):
if parser.has_section(cmd):
# Don't use items() until we got rid of the compat sections
# since this pulls in the defaults again
- self.config.update(dict(parser._sections[cmd].items()))
+ self.config.update(dict(list(parser._sections[cmd].items())))
for section in self.sections:
if parser.has_section(section):
- self.config.update(dict(parser._sections[section].items()))
+ self.config.update(dict(list(parser._sections[section].items())))
else:
raise NoSectionError("Mandatory section [%s] does not exist."
% section)
diff --git a/gbp/deb/changelog.py b/gbp/deb/changelog.py
index 356f74d7..9b3c03bb 100644
--- a/gbp/deb/changelog.py
+++ b/gbp/deb/changelog.py
@@ -166,7 +166,7 @@ class ChangeLog(object):
@return: C{True} if the version has an epoch, C{False} otherwise
@rtype: C{bool}
"""
- return self._cp.has_key('Epoch')
+ return 'Epoch' in self._cp
@property
def author(self):
@@ -264,11 +264,11 @@ class ChangeLog(object):
new_cl = open("debian/changelog.bak", "w")
for line in old_cl:
if line == " * [[[insert-git-dch-commit-message-here]]]\n":
- print >> new_cl, " * " + msg[0]
+ print(" * " + msg[0], file=new_cl)
for line in msg[1:]:
- print >> new_cl, " " + line
+ print(" " + line, file=new_cl)
else:
- print >> new_cl, line,
+ print(line, end=' ', file=new_cl)
os.rename("debian/changelog.bak", "debian/changelog")
def add_entry(self, msg, author=None, email=None, dch_options=[]):
diff --git a/gbp/deb/control.py b/gbp/deb/control.py
index a4cef2fa..4ac12ccd 100644
--- a/gbp/deb/control.py
+++ b/gbp/deb/control.py
@@ -50,7 +50,7 @@ class Control(object):
with open(filename) as f:
control = email.message_from_file(f)
- if not control.items():
+ if not list(control.items()):
raise ParseControlError("Empty or invalid control file or contents")
self._control = control
diff --git a/gbp/deb/source.py b/gbp/deb/source.py
index c7403613..938e5a1b 100644
--- a/gbp/deb/source.py
+++ b/gbp/deb/source.py
@@ -51,7 +51,7 @@ class DebianSource(object):
"""
self._changelog = None
- if isinstance(vfs, basestring):
+ if isinstance(vfs, str):
self._vfs = FileVfs(vfs)
else:
self._vfs = vfs
diff --git a/gbp/git/args.py b/gbp/git/args.py
index f9fc64d6..5a40553a 100644
--- a/gbp/git/args.py
+++ b/gbp/git/args.py
@@ -55,7 +55,7 @@ class GitArgs(object):
Add arguments to argument list
"""
for arg in args:
- if isinstance(arg, basestring):
+ if isinstance(arg, str):
self._args.append(arg)
elif isinstance(arg, collections.Iterable):
for i in iter(arg):
diff --git a/gbp/git/modifier.py b/gbp/git/modifier.py
index 2452e0b5..5f5b5999 100644
--- a/gbp/git/modifier.py
+++ b/gbp/git/modifier.py
@@ -59,7 +59,7 @@ class GitModifier(object):
self._date = None
tz = GitTz(0)
- if isinstance(date, basestring):
+ if isinstance(date, str):
timestamp, offset = date.split()
offset_h = int(offset[:-2])
offset_m = int(offset[-2:])
@@ -153,7 +153,7 @@ class GitModifier(object):
def items(self):
items = []
- for key in self.keys():
+ for key in list(self.keys()):
val = self.__getitem__(key)
if val:
items.append((key, val))
diff --git a/gbp/git/repository.py b/gbp/git/repository.py
index 6d971c22..42661678 100644
--- a/gbp/git/repository.py
+++ b/gbp/git/repository.py
@@ -39,7 +39,7 @@ class GitRemote(object):
def __init__(self, name, fetch_url, push_urls):
self._name = name
self._fetch_url = fetch_url
- if isinstance(push_urls, basestring):
+ if isinstance(push_urls, str):
self._push_urls = [push_urls]
else:
self._push_urls = [url for url in push_urls]
@@ -1392,7 +1392,7 @@ class GitRepository(object):
@param verbose: be verbose
@type verbose: C{bool}
"""
- if isinstance(paths, basestring):
+ if isinstance(paths, str):
paths = [ paths ]
args = [] if verbose else ['--quiet']
@@ -1594,10 +1594,10 @@ class GitRepository(object):
@type committer: C{dict} with keys 'name' and 'email'
"""
extra_env = {}
- for key, val in author.items():
+ for key, val in list(author.items()):
if val:
extra_env['GIT_AUTHOR_%s' % key.upper()] = val
- for key, val in committer.items():
+ for key, val in list(committer.items()):
if val:
extra_env['GIT_COMMITTER_%s' % key.upper()] = val
@@ -1644,7 +1644,7 @@ class GitRepository(object):
args.add(until)
args.add_cond(options, options)
args.add("--")
- if isinstance(paths, basestring):
+ if isinstance(paths, str):
paths = [ paths ]
args.add_cond(paths, paths)
diff --git a/gbp/git/vfs.py b/gbp/git/vfs.py
index 5d5e1323..6f10442a 100644
--- a/gbp/git/vfs.py
+++ b/gbp/git/vfs.py
@@ -16,7 +16,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""Make blobs in a git repository accessible as file like objects"""
-import StringIO
+import io
from gbp.git.repository import GitRepositoryError
class GitVfs(object):
@@ -29,7 +29,7 @@ class GitVfs(object):
"""
def __init__(self, content):
self._iter = iter
- self._data = StringIO.StringIO(content)
+ self._data = io.StringIO(content)
def readline(self):
return self._data.readline()
diff --git a/gbp/log.py b/gbp/log.py
index 7b9a4aa8..15479b1f 100644
--- a/gbp/log.py
+++ b/gbp/log.py
@@ -26,8 +26,8 @@ import gbp.tristate
# Initialize default logger
LOGGER = logging.getLogger(__name__)
-COLORS = dict([('none', 0)] + zip(['black', 'red', 'green', 'yellow', 'blue',
- 'magenta', 'cyan', 'white'], range(30, 38)))
+COLORS = dict([('none', 0)] + list(zip(['black', 'red', 'green', 'yellow', 'blue',
+ 'magenta', 'cyan', 'white'], list(range(30, 38)))))
DEFAULT_COLOR_SCHEME = {DEBUG: COLORS['green'],
INFO: COLORS['green'],
WARNING: COLORS['red'],
diff --git a/gbp/patch_series.py b/gbp/patch_series.py
index 6ca24f2c..f608f200 100644
--- a/gbp/patch_series.py
+++ b/gbp/patch_series.py
@@ -130,7 +130,7 @@ class Patch(object):
if self.info == None:
self._read_info()
- if self.info.has_key(key):
+ if key in self.info:
return self.info[key]
else:
return get_val() if get_val else None
diff --git a/gbp/pkg/__init__.py b/gbp/pkg/__init__.py
index 8162286b..320973d2 100644
--- a/gbp/pkg/__init__.py
+++ b/gbp/pkg/__init__.py
@@ -86,7 +86,7 @@ def parse_archive_filename(filename):
base_name = ".".join(split[:-1])
(archive_fmt, compression) = (split[-1], None)
else:
- for (c, o) in compressor_opts.iteritems():
+ for (c, o) in compressor_opts.items():
if o[1] == split[-1]:
base_name = ".".join(split[:-1])
compression = c
@@ -187,14 +187,13 @@ class PkgPolicy(object):
version_chars = r'[a-zA-Z\d\.\~\-\:\+]'
basename = parse_archive_filename(os.path.basename(filename))[0]
- version_filters = map ( lambda x: x % version_chars,
- ( # Debian upstream tarball: package_'<version>.orig.tar.gz'
+ version_filters = [x % version_chars for x in ( # Debian upstream tarball: package_'<version>.orig.tar.gz'
r'^(?P<package>[a-z\d\.\+\-]+)_(?P<version>%s+)\.orig',
# Debian native: 'package_<version>.tar.gz'
r'^(?P<package>[a-z\d\.\+\-]+)_(?P<version>%s+)',
# Upstream 'package-<version>.tar.gz'
# or directory 'package-<version>':
- r'^(?P<package>[a-zA-Z\d\.\+\-]+)(-)(?P<version>[0-9]%s*)'))
+ r'^(?P<package>[a-zA-Z\d\.\+\-]+)(-)(?P<version>[0-9]%s*)')]
if extra_regex:
version_filters = extra_regex + version_filters
@@ -509,7 +508,7 @@ class UpstreamSource(object):
@staticmethod
def known_compressions():
- return [ args[1][-1] for args in compressor_opts.items() ]
+ return [ args[1][-1] for args in list(compressor_opts.items()) ]
def guess_version(self, extra_regex=r''):
return self._pkg_policy.guess_upstream_src_version(self.path,
diff --git a/gbp/rpm/__init__.py b/gbp/rpm/__init__.py
index 0fe2b4d8..0a376e18 100644
--- a/gbp/rpm/__init__.py
+++ b/gbp/rpm/__init__.py
@@ -17,7 +17,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""provides some rpm source package related helpers"""
-import commands
+import subprocess
import sys
import os
import re
@@ -243,7 +243,7 @@ class SpecFile(object):
def sources(self):
"""Get all source tags as a dict"""
sources = {}
- for src in self._sources().values():
+ for src in list(self._sources().values()):
sources[src['num']] = src['linevalue']
return sources
@@ -303,7 +303,7 @@ class SpecFile(object):
tagvalue = None
# We don't support "multivalue" tags like "Provides:" or "SourceX:"
# Rpm python doesn't support many of these, thus the explicit list
- if type(tagvalue) is int or type(tagvalue) is long:
+ if type(tagvalue) is int or type(tagvalue) is int:
tagvalue = str(tagvalue)
elif type(tagvalue) is list or tagname in self._listtags:
tagvalue = None
@@ -480,7 +480,7 @@ class SpecFile(object):
indent_re = re.compile(r'^([a-z]+([0-9]+)?\s*:\s*)', flags=re.I)
match = indent_re.match(str(insertafter))
if not match:
- match = indent_re.match(str(insertafter.next))
+ match = indent_re.match(str(insertafter.__next__))
indent = 12 if not match else len(match.group(1))
text = '%-*s%s\n' % (indent, '%s:' % tagname, value)
if key in self._tags:
@@ -574,11 +574,11 @@ class SpecFile(object):
"which to update" % name)
line = self._special_directives[name][0]['line']
gbp.log.debug("Removing content of %s section" % name)
- while line.next:
- match = self.directive_re.match(str(line.next))
+ while line.__next__:
+ match = self.directive_re.match(str(line.__next__))
if match and match.group('name') in self.section_identifiers:
break
- self._content.delete(line.next)
+ self._content.delete(line.__next__)
else:
gbp.log.debug("Adding %s section to the end of spec file" % name)
line = self._content.append('%%%s\n' % name)
@@ -598,8 +598,8 @@ class SpecFile(object):
text = ''
if 'changelog' in self._special_directives:
line = self._special_directives['changelog'][0]['line']
- while line.next:
- line = line.next
+ while line.__next__:
+ line = line.__next__
match = self.directive_re.match(str(line))
if match and match.group('name') in self.section_identifiers:
break
@@ -613,7 +613,7 @@ class SpecFile(object):
macro_prev = None
ignored = self.ignorepatches
# Remove 'Patch:̈́' tags
- for tag in self._patches().values():
+ for tag in list(self._patches().values()):
if not tag['num'] in ignored:
tag_prev = self._delete_tag('patch', tag['num'])
# Remove a preceding comment if it seems to originate from GBP
@@ -626,7 +626,7 @@ class SpecFile(object):
if not macro['id'] in ignored:
macro_prev = self._delete_special_macro('patch', macro['id'])
# Remove surrounding if-else
- macro_next = macro_prev.next
+ macro_next = macro_prev.__next__
if (str(macro_prev).startswith('%if') and
str(macro_next).startswith('%endif')):
self._content.delete(macro_next)
@@ -694,7 +694,7 @@ class SpecFile(object):
macro_line = self._content.insert_after(macro_line, comment_text)
macro_line = self._set_special_macro('patch', patchnum, '-p1',
macro_line)
- for cmd, args in cmds.iteritems():
+ for cmd, args in cmds.items():
if cmd in ('if', 'ifarch'):
self._content.insert_before(macro_line, '%%%s %s\n' %
(cmd, args))
@@ -779,7 +779,7 @@ class SpecFile(object):
"""
orig = None
sources = self.sources()
- for num, filename in sorted(sources.iteritems()):
+ for num, filename in sorted(sources.items()):
src = {'num': num, 'filename': os.path.basename(filename),
'uri': filename}
src['filename_base'], src['archive_fmt'], src['compression'] = \
@@ -803,9 +803,9 @@ def parse_srpm(srpmfile):
"""parse srpm by creating a SrcRpmFile object"""
try:
srcrpm = SrcRpmFile(srpmfile)
- except IOError, err:
+ except IOError as err:
raise GbpError("Error reading src.rpm file: %s" % err)
- except librpm.error, err:
+ except librpm.error as err:
raise GbpError("RPM error while reading src.rpm: %s" % err)
return srcrpm
diff --git a/gbp/rpm/linkedlist.py b/gbp/rpm/linkedlist.py
index 74d897bc..0840fef6 100644
--- a/gbp/rpm/linkedlist.py
+++ b/gbp/rpm/linkedlist.py
@@ -63,8 +63,8 @@ class LinkedListNode(object):
def delete(self):
"""Delete node"""
if self.prev:
- self.prev.next = self.next
- if self.next:
+ self.prev.next = self.__next__
+ if self.__next__:
self.next.prev = self.prev
self._data = None
@@ -75,10 +75,10 @@ class LinkedListIterator(collections.Iterator):
def __init__(self, obj):
self._next = obj.first
- def next(self):
+ def __next__(self):
ret = self._next
if ret:
- self._next = ret.next
+ self._next = ret.__next__
else:
raise StopIteration
return ret
@@ -171,8 +171,8 @@ class LinkedList(collections.Iterable):
>>> [str(data) for data in list]
['foo', 'baz', 'bar']
"""
- new = LinkedListNode(data, prev_node=node, next_node=node.next)
- if node.next:
+ new = LinkedListNode(data, prev_node=node, next_node=node.__next__)
+ if node.__next__:
node.next.prev = new
else:
self._last = new
@@ -205,7 +205,7 @@ class LinkedList(collections.Iterable):
"""
ret = node.prev
if node is self._first:
- ret = self._first = self._first.next
+ ret = self._first = self._first.__next__
if node is self._last:
self._last = self._last.prev
node.delete()
diff --git a/gbp/rpm/policy.py b/gbp/rpm/policy.py
index 93625545..82e877da 100644
--- a/gbp/rpm/policy.py
+++ b/gbp/rpm/policy.py
@@ -264,7 +264,7 @@ class RpmPkgPolicy(PkgPolicy):
text.extend([" " + line for line in body if line.strip()])
# Add bts tags and ids in the end
- for tag, ids in bts_tags.iteritems():
+ for tag, ids in bts_tags.items():
bts_msg = " (%s: %s)" % (tag, ', '.join(ids))
if len(text[-1]) + len(bts_msg) >= cls.max_entry_line_length:
text.append(" ")
diff --git a/gbp/scripts/buildpackage.py b/gbp/scripts/buildpackage.py
index 43dc261e..5ed16281 100755
--- a/gbp/scripts/buildpackage.py
+++ b/gbp/scripts/buildpackage.py
@@ -17,7 +17,7 @@
#
"""Build a debian package out of a GIT repository"""
-import ConfigParser
+import configparser
import errno
import os, os.path
import sys
@@ -296,7 +296,7 @@ def guess_comp_type(repo, comp_type, cp, tarball_dir):
if comp_type != 'auto':
comp_type = compressor_aliases.get(comp_type, comp_type)
- if not compressor_opts.has_key(comp_type):
+ if comp_type not in compressor_opts:
gbp.log.warn("Unknown compression type - guessing.")
comp_type = 'auto'
@@ -305,7 +305,7 @@ def guess_comp_type(repo, comp_type, cp, tarball_dir):
if not tarball_dir:
tarball_dir = '..'
detected = None
- for comp in compressor_opts.keys():
+ for comp in list(compressor_opts.keys()):
if du.DebianPkgPolicy.has_orig(du.orig_file(cp, comp), tarball_dir):
if detected is not None:
raise GbpError("Multiple orig tarballs found.")
@@ -384,7 +384,7 @@ def changes_file_suffix(dpkg_args):
def build_parser(name, prefix=None):
try:
parser = GbpOptionParserDebian(command=os.path.basename(name), prefix=prefix)
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
diff --git a/gbp/scripts/buildpackage_bb.py b/gbp/scripts/buildpackage_bb.py
index 340724c8..5dd4eda7 100644
--- a/gbp/scripts/buildpackage_bb.py
+++ b/gbp/scripts/buildpackage_bb.py
@@ -17,7 +17,7 @@
#
"""Build an RPM package out of a Git repo with Bitbake meta data"""
-import ConfigParser
+import configparser
import os, os.path
import sys
import shutil
@@ -46,7 +46,7 @@ def guess_export_params(repo, options):
"""Get commit and tree from where to export packaging and patches"""
tree = None
branch = None
- if options.export in wc_names.keys() + [index_name, 'HEAD']:
+ if options.export in list(wc_names.keys()) + [index_name, 'HEAD']:
branch = get_current_branch(repo)
elif options.export in repo.get_local_branches():
branch = options.export
@@ -112,8 +112,8 @@ def guess_export_dir(options, tinfoil, repo, treeish):
gbp.log.debug("Found matching recipe filename: %s" % name)
return os.path.dirname(name)
else:
- for name, appends in tinfoil.cooker.collection.appendlist.iteritems():
- print name, appends
+ for name, appends in tinfoil.cooker.collection.appendlist.items():
+ print(name, appends)
if name.rsplit('_', 1)[0] == pkg_name:
gbp.log.debug("Found %s from appends" % name)
for append_name in appends:
@@ -212,7 +212,7 @@ def build_parser(name, prefix=None, git_treeish=None):
try:
parser = GbpOptionParserBB(command=os.path.basename(name),
prefix=prefix, git_treeish=git_treeish)
- except ConfigParser.ParsingError, err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
@@ -507,7 +507,7 @@ def main(argv):
if len(err.__str__()):
gbp.log.err(err)
retval = 2
- except GbpError, err:
+ except GbpError as err:
if len(err.__str__()):
gbp.log.err(err)
retval = 1
diff --git a/gbp/scripts/buildpackage_rpm.py b/gbp/scripts/buildpackage_rpm.py
index 7708dfce..537f96d7 100755
--- a/gbp/scripts/buildpackage_rpm.py
+++ b/gbp/scripts/buildpackage_rpm.py
@@ -18,7 +18,7 @@
#
"""run commands to build an RPM package out of a git repository"""
-import ConfigParser
+import configparser
import errno
import os, os.path
import sys
@@ -207,7 +207,7 @@ def guess_export_params(repo, options):
"""Get commit and tree from where to export packaging and patches"""
tree = None
branch = None
- if options.export in wc_names.keys() + [index_name, 'HEAD']:
+ if options.export in list(wc_names.keys()) + [index_name, 'HEAD']:
branch = get_current_branch(repo)
elif options.export in repo.get_local_branches():
branch = options.export
@@ -390,7 +390,7 @@ def parse_args(argv, prefix, git_treeish=None):
try:
parser = GbpOptionParserRpm(command=os.path.basename(argv[0]),
prefix=prefix, git_treeish=git_treeish)
- except ConfigParser.ParsingError, err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None, None, None
@@ -544,7 +544,7 @@ def main(argv):
# Create base temporary directory for this run
options.tmp_dir = tempfile.mkdtemp(dir=options.tmp_dir,
prefix='buildpackage-rpm_')
- except GbpError, err:
+ except GbpError as err:
gbp.log.err(err)
return 1
@@ -697,7 +697,7 @@ def main(argv):
if len(err.__str__()):
gbp.log.err(err)
retval = 2
- except GbpError, err:
+ except GbpError as err:
if len(err.__str__()):
gbp.log.err(err)
retval = 1
diff --git a/gbp/scripts/clone.py b/gbp/scripts/clone.py
index 2810a310..cdc7317a 100755
--- a/gbp/scripts/clone.py
+++ b/gbp/scripts/clone.py
@@ -19,7 +19,7 @@
#
"""Clone a GIT repository and set it up for gbp"""
-import ConfigParser
+import configparser
import sys
import os, os.path
from gbp.config import (GbpOptionParser, GbpOptionGroup)
@@ -36,7 +36,7 @@ def build_parser(name):
try:
parser = GbpOptionParser(command=os.path.basename(name), prefix='',
usage='%prog [options] repository - clone a remote repository')
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
diff --git a/gbp/scripts/clone_bb.py b/gbp/scripts/clone_bb.py
index 7cc6b9a2..817baa57 100755
--- a/gbp/scripts/clone_bb.py
+++ b/gbp/scripts/clone_bb.py
@@ -20,7 +20,7 @@
#
"""Clone a package Git repository from a bitbake-based distro"""
-import ConfigParser
+import configparser
import re
import sys
import os, os.path
@@ -57,7 +57,7 @@ def build_parser(name):
parser = GbpOptionParser(command=os.path.basename(name), prefix='',
usage='%prog [options] repository - clone a '
'remote per-package repository')
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
diff --git a/gbp/scripts/common/import_orig.py b/gbp/scripts/common/import_orig.py
index 16244423..30df6101 100644
--- a/gbp/scripts/common/import_orig.py
+++ b/gbp/scripts/common/import_orig.py
@@ -47,7 +47,7 @@ def ask_package_name(default, name_validator_func, err_msg):
@param default: The default package name to suggest to the user.
"""
while True:
- sourcepackage = raw_input("What will be the source package name? [%s] " % default)
+ sourcepackage = input("What will be the source package name? [%s] " % default)
if not sourcepackage: # No input, use the default.
sourcepackage = default
# Valid package name, return it.
@@ -66,7 +66,7 @@ def ask_package_version(default, ver_validator_func, err_msg):
@param default: The default package version to suggest to the user.
"""
while True:
- version = raw_input("What is the upstream version? [%s] " % default)
+ version = input("What is the upstream version? [%s] " % default)
if not version: # No input, use the default.
version = default
# Valid version, return it.
diff --git a/gbp/scripts/common/pq.py b/gbp/scripts/common/pq.py
index a91ec8e9..60157b2f 100644
--- a/gbp/scripts/common/pq.py
+++ b/gbp/scripts/common/pq.py
@@ -180,7 +180,7 @@ def patch_path_filter(file_status, exclude_regex=None):
"""
if exclude_regex:
include_paths = []
- for file_list in file_status.values():
+ for file_list in list(file_status.values()):
for fname in file_list:
if not re.match(exclude_regex, fname):
include_paths.append(fname)
@@ -208,13 +208,13 @@ def write_patch_file(filename, commit_info, diff):
# Git compat: put name in quotes if special characters found
if re.search("[,.@()\[\]\\\:;]", name):
name = '"%s"' % name
- from_header = Header(unicode(name, 'utf-8'), charset, 77, 'from')
- from_header.append(unicode('<%s>' % email))
+ from_header = Header(str(name, 'utf-8'), charset, 77, 'from')
+ from_header.append(str('<%s>' % email))
msg['From'] = from_header
date = commit_info['author'].datetime
datestr = date.strftime('%a, %-d %b %Y %H:%M:%S %z')
- msg['Date'] = Header(unicode(datestr, 'utf-8'), charset, 77, 'date')
- msg['Subject'] = Header(unicode(commit_info['subject'], 'utf-8'),
+ msg['Date'] = Header(str(datestr, 'utf-8'), charset, 77, 'date')
+ msg['Subject'] = Header(str(commit_info['subject'], 'utf-8'),
charset, 77, 'subject')
# Write message body
if commit_info['body']:
diff --git a/gbp/scripts/config.py b/gbp/scripts/config.py
index 07c731c0..c914e7da 100755
--- a/gbp/scripts/config.py
+++ b/gbp/scripts/config.py
@@ -17,7 +17,7 @@
#
"""Query and display config file values"""
-import ConfigParser
+import configparser
import sys
import os, os.path
from gbp.config import (GbpOptionParser, GbpOptionGroup)
@@ -30,7 +30,7 @@ def build_parser(name):
try:
parser = GbpOptionParser(command=os.path.basename(name), prefix='',
usage='%prog [options] command[.optionname] - display configuration settings')
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
diff --git a/gbp/scripts/create_remote_repo.py b/gbp/scripts/create_remote_repo.py
index a9832a1d..3b5aa764 100755
--- a/gbp/scripts/create_remote_repo.py
+++ b/gbp/scripts/create_remote_repo.py
@@ -18,10 +18,10 @@
# Based on the aa-create-git-repo and dom-new-git-repo shell scripts
"""Create a remote GIT repository based on the current one"""
-import ConfigParser
+import configparser
import sys
import os, os.path
-import urlparse
+import urllib.parse
import subprocess
import tty, termios
import re
@@ -51,22 +51,22 @@ def print_config(remote, branches):
merge = refs/heads/bar
"""
- print """[remote "%(name)s"]
+ print("""[remote "%(name)s"]
url = %(url)s
- fetch = +refs/heads/*:refs/remotes/%(name)s/*""" % remote
+ fetch = +refs/heads/*:refs/remotes/%(name)s/*""" % remote)
for branch in branches:
- print " push = %s" % branch
+ print(" push = %s" % branch)
for branch in branches:
- print """[branch "%s"]
+ print("""[branch "%s"]
remote = %s
- merge = refs/heads/%s""" % (branch, remote['name'], branch)
+ merge = refs/heads/%s""" % (branch, remote['name'], branch))
def sort_dict(d):
"""Return a sorted list of (key, value) tuples"""
s = []
- for key in sorted(d.iterkeys()):
+ for key in sorted(d.keys()):
s.append((key, d[key]))
return s
@@ -103,7 +103,7 @@ def parse_url(remote_url, name, pkg, template_dir=None):
...
GbpError: URL contains invalid ~username expansion.
"""
- frags = urlparse.urlparse(remote_url)
+ frags = urllib.parse.urlparse(remote_url)
if frags.scheme in ['ssh', 'git+ssh', '']:
scheme = frags.scheme
else:
@@ -232,7 +232,7 @@ def build_parser(name, sections=[]):
usage='%prog [options] - '
'create a remote repository',
sections=sections)
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
@@ -306,7 +306,7 @@ def main(argv):
try:
options, args = parse_args(argv)
except Exception as e:
- print >>sys.stderr, "%s" % e
+ print("%s" % e, file=sys.stderr)
return 1
gbp.log.setup(options.color, options.verbose, options.color_scheme)
@@ -350,11 +350,11 @@ def main(argv):
remote_script = build_remote_script(remote, branches[0])
if options.verbose:
- print remote_script
+ print(remote_script)
cmd = build_cmd(remote)
if options.verbose:
- print cmd
+ print(cmd)
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE)
proc.communicate(remote_script)
diff --git a/gbp/scripts/dch.py b/gbp/scripts/dch.py
index b8a86a77..90d448c6 100755
--- a/gbp/scripts/dch.py
+++ b/gbp/scripts/dch.py
@@ -17,7 +17,7 @@
#
"""Generate Debian changelog entries from GIT commit messages"""
-import ConfigParser
+import configparser
import os.path
import re
import sys
@@ -137,8 +137,8 @@ def mangle_changelog(changelog, cp, snapshot=''):
cw = open(tmpfile, 'w')
cr = open(changelog, 'r')
- print >>cw, ("%(Source)s (%(MangledVersion)s) "
- "%(Distribution)s; urgency=%(urgency)s\n" % cp)
+ print(("%(Source)s (%(MangledVersion)s) "
+ "%(Distribution)s; urgency=%(urgency)s\n" % cp), file=cw)
cr.readline() # skip version and empty line
cr.readline()
@@ -148,10 +148,10 @@ def mangle_changelog(changelog, cp, snapshot=''):
line = ''
if snapshot:
- print >>cw, " ** SNAPSHOT build @%s **\n" % snapshot
+ print(" ** SNAPSHOT build @%s **\n" % snapshot, file=cw)
if line:
- print >>cw, line.rstrip()
+ print(line.rstrip(), file=cw)
shutil.copyfileobj(cr, cw)
cw.close()
cr.close()
@@ -242,7 +242,7 @@ def has_snapshot_banner(cp):
def get_customizations(customization_file):
if customization_file:
- execfile(customization_file,
+ exec(compile(open(customization_file, "rb").read(), customization_file, 'exec'),
user_customizations,
user_customizations)
@@ -295,7 +295,7 @@ def build_parser(name):
try:
parser = GbpOptionParserDebian(command=os.path.basename(name),
usage='%prog [options] paths')
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
diff --git a/gbp/scripts/import_bb.py b/gbp/scripts/import_bb.py
index 5d249776..07417999 100755
--- a/gbp/scripts/import_bb.py
+++ b/gbp/scripts/import_bb.py
@@ -16,7 +16,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""Import an RPM package in Bitbake format"""
-import ConfigParser
+import configparser
import sys
import os
import shutil
@@ -57,7 +57,7 @@ def build_parser(name):
prefix='',
usage='%prog [options] /path/to/package'
'.src.rpm')
- except ConfigParser.ParsingError, err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
@@ -256,7 +256,7 @@ def import_upstream_archive(repo, pkg_data, fetch_data, dirs, options):
def import_upstream_git(repo, fetch_data, options):
"""Import upstream sources from Git"""
# Fetch from local cached repo
- for branch in fetch_data.branches.values():
+ for branch in list(fetch_data.branches.values()):
repo.fetch(repo=fetch_data.localpath, refspec=branch)
commit = fetch_data.revision
diff --git a/gbp/scripts/import_dsc.py b/gbp/scripts/import_dsc.py
index 41eae8c7..08addabe 100755
--- a/gbp/scripts/import_dsc.py
+++ b/gbp/scripts/import_dsc.py
@@ -16,7 +16,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""Import a Debian source package into a GIT repository"""
-import ConfigParser
+import configparser
import sys
import re
import os
@@ -209,7 +209,7 @@ def build_parser(name):
try:
parser = GbpOptionParserDebian(command=os.path.basename(name), prefix='',
usage='%prog [options] /path/to/package.dsc')
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
@@ -416,7 +416,7 @@ def main(argv):
os.chdir(dirs['top'])
for d in [ 'tmp', 'download' ]:
- if dirs.has_key(d):
+ if d in dirs:
gbpc.RemoveTree(dirs[d])()
if not ret and not skipped:
diff --git a/gbp/scripts/import_dscs.py b/gbp/scripts/import_dscs.py
index 5409ca11..c37cea80 100644
--- a/gbp/scripts/import_dscs.py
+++ b/gbp/scripts/import_dscs.py
@@ -79,13 +79,13 @@ def set_gbp_conf_files():
gbp.log.debug("Setting GBP_CONF_FILES to '%s'" % gbp_conf_files)
def print_help():
- print """Usage: gbp import-dscs [options] [gbp-import-dsc options] /path/to/dsc1 [/path/to/dsc2] ...
+ print("""Usage: gbp import-dscs [options] [gbp-import-dsc options] /path/to/dsc1 [/path/to/dsc2] ...
gbp import-dscs --debsnap [options] [gbp-import-dsc options] package
Options:
--ignore-repo-config: ignore gbp.conf in git repo
-"""
+""")
def main(argv):
@@ -159,7 +159,7 @@ def main(argv):
gbp.log.err(err)
ret = 1
finally:
- if dirs.has_key('tmp'):
+ if 'tmp' in dirs:
gbpc.RemoveTree(dirs['tmp'])()
os.chdir(dirs['top'])
diff --git a/gbp/scripts/import_orig.py b/gbp/scripts/import_orig.py
index 56b1d9dc..532b3e4a 100644
--- a/gbp/scripts/import_orig.py
+++ b/gbp/scripts/import_orig.py
@@ -17,7 +17,7 @@
#
"""Import a new upstream version into a GIT repository"""
-import ConfigParser
+import configparser
import os
import sys
import gbp.tmpfile as tempfile
@@ -146,7 +146,7 @@ def build_parser(name):
try:
parser = GbpOptionParserDebian(command=os.path.basename(name), prefix='',
usage='%prog [options] /path/to/upstream-version.tar.gz | --uscan')
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
diff --git a/gbp/scripts/import_orig_rpm.py b/gbp/scripts/import_orig_rpm.py
index 4b318a2c..ced92fc7 100755
--- a/gbp/scripts/import_orig_rpm.py
+++ b/gbp/scripts/import_orig_rpm.py
@@ -18,7 +18,7 @@
#
"""Import a new upstream version into a git repository"""
-import ConfigParser
+import configparser
import os
import sys
import gbp.tmpfile as tempfile
@@ -152,7 +152,7 @@ def parse_args(argv):
parser = GbpOptionParserRpm(command=os.path.basename(argv[0]),
prefix='',
usage='%prog [options] /path/to/upstream-version.tar.gz')
- except ConfigParser.ParsingError, err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None, None
@@ -331,7 +331,7 @@ def main(argv):
repo.force_head(current_branch, hard=True)
except (GitRepositoryError, gbpc.CommandExecFailed):
raise GbpError("Import of %s failed" % source.path)
- except GbpError, err:
+ except GbpError as err:
if len(err.__str__()):
gbp.log.err(err)
ret = 1
diff --git a/gbp/scripts/import_srpm.py b/gbp/scripts/import_srpm.py
index b573f2bc..0712288e 100755
--- a/gbp/scripts/import_srpm.py
+++ b/gbp/scripts/import_srpm.py
@@ -17,7 +17,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""Import an RPM source package into a GIT repository"""
-import ConfigParser
+import configparser
import sys
import re
import os
@@ -25,7 +25,7 @@ import glob
import time
import shutil
import errno
-import urllib2
+import urllib.request, urllib.error, urllib.parse
import gbp.tmpfile as tempfile
import gbp.command_wrappers as gbpc
@@ -68,13 +68,13 @@ def download_file(target_dir, url):
"""Download a remote file"""
gbp.log.info("Downloading '%s'..." % url)
try:
- urlobj = urllib2.urlopen(url)
+ urlobj = urllib.request.urlopen(url)
local_fn = os.path.join(target_dir, os.path.basename(url))
with open(local_fn, "wb") as local_file:
local_file.write(urlobj.read())
- except urllib2.HTTPError as err:
+ except urllib.error.HTTPError as err:
raise GbpError("Download failed: %s" % err)
- except urllib2.URLError as err:
+ except urllib.error.URLError as err:
raise GbpError("Download failed: %s" % err.reason)
return local_fn
@@ -176,7 +176,7 @@ def parse_args(argv):
prefix='',
usage='%prog [options] /path/to/package'
'.src.rpm')
- except ConfigParser.ParsingError, err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None, None
@@ -337,7 +337,7 @@ def main(argv):
# Need to copy files to the packaging directory given by caller
files = [os.path.basename(patch.path) \
for patch in spec.patchseries(unapplied=True, ignored=True)]
- for filename in spec.sources().values():
+ for filename in list(spec.sources().values()):
files.append(os.path.basename(filename))
files.append(os.path.join(spec.specdir, spec.specfile))
# Don't copy orig source archive, though
diff --git a/gbp/scripts/pq.py b/gbp/scripts/pq.py
index f15753ce..029e7182 100755
--- a/gbp/scripts/pq.py
+++ b/gbp/scripts/pq.py
@@ -17,7 +17,7 @@
#
"""Manage Debian patches on a patch queue branch"""
-import ConfigParser
+import configparser
import errno
import os
import shutil
@@ -119,7 +119,7 @@ def format_series_diff(added, removed, options):
bugs, dummy = extract_bts_cmds(patch.long_desc.split('\n'), options)
if bugs:
msg += '\n'
- for k, v in bugs.items():
+ for k, v in list(bugs.items()):
msg += '\n%s: %s' % (k, ', '.join(v))
else:
msg = "Rediff patches\n\n"
@@ -326,7 +326,7 @@ def build_parser(name):
" drop drop (delete) the patch queue associated to the current branch.\n"
" apply apply a patch\n"
" switch switch to patch-queue branch and vice versa")
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
diff --git a/gbp/scripts/pq_bb.py b/gbp/scripts/pq_bb.py
index 23e9e896..e1dbae13 100755
--- a/gbp/scripts/pq_bb.py
+++ b/gbp/scripts/pq_bb.py
@@ -18,7 +18,7 @@
#
"""manage patches in a patch queue"""
-import ConfigParser
+import configparser
import errno
import os
import shutil
@@ -289,7 +289,7 @@ def build_parser(name):
try:
parser = GbpOptionParserBB(command=os.path.basename(name),
prefix='', usage=USAGE_STRING)
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
@@ -411,7 +411,7 @@ def main(argv):
except GitRepositoryError as err:
gbp.log.err("Git command failed: %s" % err)
retval = 1
- except GbpError, err:
+ except GbpError as err:
if len(err.__str__()):
gbp.log.err(err)
retval = 1
diff --git a/gbp/scripts/pq_rpm.py b/gbp/scripts/pq_rpm.py
index 32ffadee..011c4165 100755
--- a/gbp/scripts/pq_rpm.py
+++ b/gbp/scripts/pq_rpm.py
@@ -18,7 +18,7 @@
#
"""manage patches in a patch queue"""
-import ConfigParser
+import configparser
import errno
import os
import shutil
@@ -147,7 +147,7 @@ def generate_patches(repo, start, squash, end, outdir, options):
"into one monolithic diff" % (start_sha1, merge_sha1))
patches.append(patch_fn)
start = merge_sha1
- print start
+ print(start)
# Generate patches
for commit in reversed(repo.get_commits(start, end_commit)):
@@ -348,14 +348,14 @@ def import_extra_files(repo, commitish, files, patch_ignore=True):
if found:
gbp.log.info("Importing additional file(s) from branch '%s' into '%s'" %
(commitish, repo.get_branch()))
- for fname, content in found.iteritems():
+ for fname, content in found.items():
dirname = os.path.dirname(fname)
if dirname and not os.path.exists(dirname):
os.makedirs(dirname)
with open(fname, 'w') as fobj:
fobj.write(content)
- files = found.keys()
+ files = list(found.keys())
gbp.log.debug('Adding/commiting %s' % files)
repo.add_files(files, force=True)
commit_msg = ("Auto-import file(s) from branch '%s':\n %s\n" %
@@ -363,7 +363,7 @@ def import_extra_files(repo, commitish, files, patch_ignore=True):
if patch_ignore:
commit_msg += "\nGbp: Ignore\nGbp-Rpm: Ignore"
repo.commit_files(files, msg=commit_msg)
- return found.keys()
+ return list(found.keys())
def import_spec_patches(repo, options):
"""
@@ -618,7 +618,7 @@ def main(argv):
try:
parser = GbpOptionParserRpm(command=os.path.basename(argv[0]),
prefix='', usage=USAGE_STRING)
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err('Invalid config file: %s' % err)
return 1
@@ -727,7 +727,7 @@ def main(argv):
except GitRepositoryError as err:
gbp.log.err("Git command failed: %s" % err)
retval = 1
- except GbpError, err:
+ except GbpError as err:
if len(err.__str__()):
gbp.log.err(err)
retval = 1
diff --git a/gbp/scripts/pull.py b/gbp/scripts/pull.py
index 166955a9..4725a8eb 100755
--- a/gbp/scripts/pull.py
+++ b/gbp/scripts/pull.py
@@ -19,7 +19,7 @@
#
"""Pull remote changes and fast forward debian, upstream and pristine-tar branch"""
-import ConfigParser
+import configparser
import sys
import os, os.path
from gbp.command_wrappers import (Command, CommandExecFailed)
@@ -100,7 +100,7 @@ def build_parser(name):
try:
parser = GbpOptionParser(command=os.path.basename(name), prefix='',
usage='%prog [options] - safely update a repository from remote')
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
diff --git a/gbp/scripts/rpm_ch.py b/gbp/scripts/rpm_ch.py
index 33058372..e5fddb4e 100755
--- a/gbp/scripts/rpm_ch.py
+++ b/gbp/scripts/rpm_ch.py
@@ -18,7 +18,7 @@
#
"""Generate RPM changelog entries from git commit messages"""
-import ConfigParser
+import configparser
from datetime import datetime
import os.path
import pwd
@@ -92,7 +92,7 @@ def load_customizations(customization_file):
return
customizations = {}
try:
- execfile(customization_file, customizations, customizations)
+ exec(compile(open(customization_file, "rb").read(), customization_file, 'exec'), customizations, customizations)
except Exception as err:
raise GbpError("Failed to load customization file: %s" % err)
@@ -134,7 +134,7 @@ def check_repo_state(repo, options):
if options.commit:
unstaged = []
status = repo.status()
- for group, files in status.iteritems():
+ for group, files in status.items():
if group != '??' and group[1] != ' ':
unstaged.extend(files)
if unstaged:
@@ -340,7 +340,7 @@ def update_changelog(changelog, entries, repo, spec, options):
revision = options.changelog_revision % rev_str_fields
except KeyError as err:
raise GbpError("Unable to construct revision field: unknown key "
- "%s, only %s are accepted" % (err, rev_str_fields.keys()))
+ "%s, only %s are accepted" % (err, list(rev_str_fields.keys())))
# Add a new changelog section if new release or an empty changelog
if options.release or not changelog.sections:
@@ -366,7 +366,7 @@ def create_commit_message(spec, options):
return options.commit_msg % fields
except KeyError as err:
raise GbpError("Unknown key %s in commit-msg string, "
- "only %s are accepted" % (err, fields.keys()))
+ "only %s are accepted" % (err, list(fields.keys())))
def commit_changelog(repo, changelog, message, author, committer, edit):
"""Commit changelog and create a packaging/release tag"""
@@ -380,7 +380,7 @@ def parse_args(argv):
try:
parser = GbpOptionParserRpm(command=os.path.basename(argv[0]),
prefix='', usage='%prog [options] paths')
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.error('invalid config file: %s' % err)
return None, None
diff --git a/gbp/scripts/submit_bb.py b/gbp/scripts/submit_bb.py
index b3a9b852..95d29a02 100755
--- a/gbp/scripts/submit_bb.py
+++ b/gbp/scripts/submit_bb.py
@@ -17,7 +17,7 @@
#
"""Create and push submit tag"""
-import ConfigParser
+import configparser
import os
import sys
from datetime import datetime
@@ -38,11 +38,11 @@ def guess_remote(repo, options):
raise GbpError("Local repo has no remotes configured. Please add one "
"or use --remote to define the remote where to push.")
elif len(remotes) == 1:
- return remotes.keys()[0]
+ return list(remotes.keys())[0]
else:
raise GbpError("Local repo has multiple remotes (%s). Don't know which "
"one to choose. Use --remote to define where to push." %
- ', '.join(remotes.keys()))
+ ', '.join(list(remotes.keys())))
def build_parser(name):
@@ -51,7 +51,7 @@ def build_parser(name):
try:
parser = GbpOptionParserBB(command=os.path.basename(name), prefix='',
usage=usage_str)
- except ConfigParser.ParsingError as err:
+ except configparser.ParsingError as err:
gbp.log.err(err)
return None
diff --git a/gbp/scripts/supercommand.py b/gbp/scripts/supercommand.py
index 493554f2..a47c4db8 100644
--- a/gbp/scripts/supercommand.py
+++ b/gbp/scripts/supercommand.py
@@ -34,7 +34,7 @@ def sanitize(cmd):
return cmd.replace('-', '_')
def usage():
- print """
+ print("""
Usage:
gbp <command> [<args>]
@@ -46,14 +46,14 @@ The most commonly used commands are:
import-dscs - import multiple Debian source packages
Use '--list-cmds' to list all available commands.
-"""
+""")
def version(prog):
try:
from gbp.version import gbp_version
except ImportError:
gbp_version = '[Unknown version]'
- print("%s %s" % (os.path.basename(prog), gbp_version))
+ print(("%s %s" % (os.path.basename(prog), gbp_version)))
def import_command(cmd):
@@ -90,7 +90,7 @@ def list_available_commands():
path = os.path.dirname(mod.__file__)
maxlen = 0
- print("Available commands in %s\n" % path)
+ print(("Available commands in %s\n" % path))
cmds = sorted(get_available_commands(path))
for cmd in cmds:
if len(cmd[0]) > maxlen:
@@ -98,7 +98,7 @@ def list_available_commands():
for cmd in cmds:
mod = import_command(cmd[0])
doc = mod.__doc__
- print(" %s - %s" % (cmd[0].rjust(maxlen), doc))
+ print((" %s - %s" % (cmd[0].rjust(maxlen), doc)))
print('')
@@ -127,10 +127,10 @@ def supercommand(argv=None):
try:
module = import_command(cmd)
except ImportError as e:
- print >>sys.stderr, "'%s' is not a valid command." % cmd
+ print("'%s' is not a valid command." % cmd, file=sys.stderr)
usage()
if '--verbose' in args:
- print >>sys.stderr, e
+ print(e, file=sys.stderr)
return 2
return module.main(args)
diff --git a/gbp/tristate.py b/gbp/tristate.py
index 0a800ecd..81cb75c3 100644
--- a/gbp/tristate.py
+++ b/gbp/tristate.py
@@ -36,7 +36,7 @@ class Tristate(object):
self._state = self.AUTO
else:
self._state = self.OFF
- elif type(val) in [ type(t) for t in ("", u"") ]:
+ elif type(val) in [ type(t) for t in ("", "") ]:
if val.lower() in [ 'on', 'true' ]:
self._state = self.ON
elif val.lower() in [ 'auto' ]:
@@ -66,7 +66,7 @@ class Tristate(object):
else:
return 'off'
- def __nonzero__(self):
+ def __bool__(self):
"""
>>> Tristate('on').__nonzero__()
True
diff --git a/packaging/PKGBUILD b/packaging/PKGBUILD
index 60ffa9f6..b26bbb70 100755
--- a/packaging/PKGBUILD
+++ b/packaging/PKGBUILD
@@ -8,7 +8,7 @@ url="https://honk.sigxcpu.org/piki/projects/git-buildpackage/"
license=('GPLv2')
conflicts=('git-buildpackage')
provides=('git-buildpackage')
-makedepends=('python2-distribute' 'gtk-doc' 'docbook-sgml' 'docbook-utils')
+makedepends=('python3-distribute' 'gtk-doc' 'docbook-sgml' 'docbook-utils')
source=(git-buildpackage_${pkgver}.tar.gz)
sha256sums=(SKIP)
@@ -24,7 +24,7 @@ prepare()
build() {
cd $srcdir/$pkgbase-$pkgver
WITHOUT_NOSETESTS=1 \
- python2 setup.py build
+ python3 setup.py build
# Prepare apidocs
epydoc -n git-buildpackage --no-sourcecode -o docs/apidocs/ \
@@ -36,12 +36,12 @@ build() {
package_git-buildpackage-common() {
depends=('man-db'
- 'python2'
+ 'python3'
'git')
optdepends=('pristine-tar: regenerate pristine tarballs')
cd $srcdir/$pkgbase-$pkgver
WITHOUT_NOSETESTS=1 \
- python2 setup.py install \
+ python3 setup.py install \
--root="$pkgdir" \
--prefix=/usr \
-O1
@@ -56,7 +56,7 @@ package_git-buildpackage-rpm() {
provides=("tizen-gbp-rpm=20160302")
cd $srcdir/$pkgbase-$pkgver
WITHOUT_NOSETESTS=1 \
- python2 setup.py install \
+ python3 setup.py install \
--root="$pkgdir" \
--prefix=/usr \
-O1
diff --git a/packaging/git-buildpackage.spec b/packaging/git-buildpackage.spec
index 880e862b..ef9ca93c 100755
--- a/packaging/git-buildpackage.spec
+++ b/packaging/git-buildpackage.spec
@@ -1,3 +1,4 @@
+%{!?python3_sitelib: %define python3_sitelib %(python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])')}
# Add --without docs rpmbuild option, i.e. docs are enabled by default
%bcond_without docs
@@ -32,22 +33,22 @@ Source0: %{name}_%{version}.tar.gz
%endif
%if 0%{?fedora} || 0%{?centos_ver} || 0%{?tizen_version:1}
-%define python_pkg_name python
+%define python_pkg_name python3
%else
-%define python_pkg_name python-base
+%define python_pkg_name python3
%endif
%if 0%{?tizen_version:1}
-%define rpm_python_pkg_name python-rpm
+%define rpm_python_pkg_name python3-rpm
%else
-%define rpm_python_pkg_name rpm-python
+%define rpm_python_pkg_name rpm-python3
%endif
Requires: %{name}-common = %{version}-%{release}
Requires: %{dpkg_pkg_name}
Requires: %{devscripts_pkg_name}
-BuildRequires: python
-BuildRequires: python-setuptools
+BuildRequires: python3
+BuildRequires: python3-setuptools
%if %{with docs}
BuildRequires: docbook-utils
@@ -59,8 +60,8 @@ BuildRequires: perl-podlators
%endif
%if 0%{?do_unittests}
-BuildRequires: python-coverage
-BuildRequires: python-nose
+BuildRequires: python3-coverage
+BuildRequires: python3-nose
BuildRequires: git-core
BuildRequires: %{man_pkg_name}
BuildRequires: %{dpkg_pkg_name}
@@ -150,7 +151,7 @@ Debian and the RPM tool set.
%build
-WITHOUT_NOSETESTS=1 %{__python} ./setup.py build
+WITHOUT_NOSETESTS=1 python3 ./setup.py build
%if %{with docs}
# Prepare apidocs
@@ -167,14 +168,14 @@ HAVE_SGML2X=0 make -C docs/
GIT_CEILING_DIRECTORIES=%{_builddir} \
GIT_AUTHOR_EMAIL=rpmbuild@example.com GIT_AUTHOR_NAME=rpmbuild \
GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL \
- %{__python} setup.py nosetests
+ python3 setup.py nosetests
%endif
%install
rm -rf %{buildroot}
-WITHOUT_NOSETESTS=1 %{__python} ./setup.py install --root=%{buildroot} --prefix=/usr
-rm -rf %{buildroot}%{python_sitelib}/*info
+WITHOUT_NOSETESTS=1 python3 ./setup.py install --root=%{buildroot} --prefix=/usr
+rm -rf %{buildroot}%{python3_sitelib}/*info
%if %{with docs}
# Install man pages
@@ -197,14 +198,14 @@ cat > files.list << EOF
%{_bindir}/git-import-orig
%{_bindir}/git-pbuilder
%{_bindir}/gbp-create-remote-repo
-%{python_sitelib}/gbp/deb
-%{python_sitelib}/gbp/scripts/pq.py*
-%{python_sitelib}/gbp/scripts/buildpackage.py*
-%{python_sitelib}/gbp/scripts/dch.py*
-%{python_sitelib}/gbp/scripts/import_dsc.py*
-%{python_sitelib}/gbp/scripts/import_dscs.py*
-%{python_sitelib}/gbp/scripts/import_orig.py*
-%{python_sitelib}/gbp/scripts/create_remote_repo.py*
+%{python3_sitelib}/gbp/deb
+%{python3_sitelib}/gbp/scripts/pq.py*
+%{python3_sitelib}/gbp/scripts/buildpackage.py*
+%{python3_sitelib}/gbp/scripts/dch.py*
+%{python3_sitelib}/gbp/scripts/import_dsc.py*
+%{python3_sitelib}/gbp/scripts/import_dscs.py*
+%{python3_sitelib}/gbp/scripts/import_orig.py*
+%{python3_sitelib}/gbp/scripts/create_remote_repo.py*
EOF
%if %{with docs}
@@ -237,20 +238,20 @@ done
%{_bindir}/gbp
%{_bindir}/gbp-clone
%{_bindir}/gbp-pull
-%dir %{python_sitelib}/gbp
-%dir %{python_sitelib}/gbp/git
-%dir %{python_sitelib}/gbp/pkg
-%dir %{python_sitelib}/gbp/scripts
-%dir %{python_sitelib}/gbp/scripts/common
-%{python_sitelib}/gbp/*.py*
-%{python_sitelib}/gbp/scripts/__init__.py*
-%{python_sitelib}/gbp/scripts/clone.py*
-%{python_sitelib}/gbp/scripts/config.py*
-%{python_sitelib}/gbp/scripts/pull.py*
-%{python_sitelib}/gbp/scripts/supercommand.py*
-%{python_sitelib}/gbp/scripts/common/*.py*
-%{python_sitelib}/gbp/git/*.py*
-%{python_sitelib}/gbp/pkg/*.py*
+%dir %{python3_sitelib}/gbp
+%dir %{python3_sitelib}/gbp/git
+%dir %{python3_sitelib}/gbp/pkg
+%dir %{python3_sitelib}/gbp/scripts
+%dir %{python3_sitelib}/gbp/scripts/common
+%{python3_sitelib}/gbp/*.py*
+%{python3_sitelib}/gbp/scripts/__init__.py*
+%{python3_sitelib}/gbp/scripts/clone.py*
+%{python3_sitelib}/gbp/scripts/config.py*
+%{python3_sitelib}/gbp/scripts/pull.py*
+%{python3_sitelib}/gbp/scripts/supercommand.py*
+%{python3_sitelib}/gbp/scripts/common/*.py*
+%{python3_sitelib}/gbp/git/*.py*
+%{python3_sitelib}/gbp/pkg/*.py*
%config %{_sysconfdir}/git-buildpackage
%if %{with docs}
%{_mandir}/man1/gbp.1*
@@ -263,10 +264,10 @@ done
%files rpm
%defattr(-,root,root,-)
-%dir %{python_sitelib}/gbp/rpm
+%dir %{python3_sitelib}/gbp/rpm
%{_bindir}/*rpm*
-%{python_sitelib}/gbp/scripts/*rpm*.py*
-%{python_sitelib}/gbp/rpm/*py*
+%{python3_sitelib}/gbp/scripts/*rpm*.py*
+%{python3_sitelib}/gbp/rpm/*py*
%if %{with docs}
%{_mandir}/man1/gbp-buildpackage-rpm.1*
%{_mandir}/man1/gbp-import-orig-rpm.1*
@@ -278,9 +279,9 @@ done
%files bb
%defattr(-,root,root,-)
-%dir %{python_sitelib}/gbp/bb
-%{python_sitelib}/gbp/scripts/*bb*.py*
-%{python_sitelib}/gbp/bb/*py*
+%dir %{python3_sitelib}/gbp/bb
+%{python3_sitelib}/gbp/scripts/*bb*.py*
+%{python3_sitelib}/gbp/bb/*py*
%if %{with docs}
diff --git a/setup.py b/setup.py
index e733f9d7..4bf75f5b 100644
--- a/setup.py
+++ b/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
# vim: set fileencoding=utf-8 :
# Copyright (C) 2006-2011 Guido Günther <agx@sigxcpu.org>
#
@@ -29,7 +29,7 @@ def fetch_version():
try:
popen = subprocess.Popen('dpkg-parsechangelog', stdout=subprocess.PIPE)
out, ret = popen.communicate()
- for line in out.split('\n'):
+ for line in out.decode().split('\n'):
if line.startswith('Version:'):
version = line.split(' ')[1].strip()
break
@@ -49,7 +49,7 @@ def readme():
setup(name = "gbp",
version = fetch_version(),
- author = u'Guido Günther',
+ author = 'Guido Günther',
author_email = 'agx@sigxcpu.org',
url = 'https://honk.sigxcpu.org/piki/projects/git-buildpackage/',
description = 'Suite to help with Debian packages in Git repositories',
diff --git a/tests/02_test_upstream_source_tar_unpack.py b/tests/02_test_upstream_source_tar_unpack.py
index e6147abd..4d44f059 100644
--- a/tests/02_test_upstream_source_tar_unpack.py
+++ b/tests/02_test_upstream_source_tar_unpack.py
@@ -52,7 +52,7 @@ class TestUnpack(unittest.TestCase):
context.teardown()
def test_upstream_source_type(self):
- for (comp, archive) in self.archives.iteritems():
+ for (comp, archive) in self.archives.items():
source = gbp.pkg.UpstreamSource(archive[0])
assert source.is_orig() == True
assert source.is_dir() == False
@@ -63,13 +63,13 @@ class TestUnpack(unittest.TestCase):
assert type(source.unpacked) == str
def test_upstream_source_unpack(self):
- for (comp, archive) in self.archives.iteritems():
+ for (comp, archive) in self.archives.items():
source = gbp.pkg.UpstreamSource(archive[0])
source.unpack(".")
self._check_files(archive[1], comp)
def test_upstream_source_unpack_no_filter(self):
- for (comp, archive) in self.archives.iteritems():
+ for (comp, archive) in self.archives.items():
source = gbp.pkg.UpstreamSource(archive[0])
source.unpack(".", [])
self._check_files(archive[1], comp)
@@ -77,7 +77,7 @@ class TestUnpack(unittest.TestCase):
def test_upstream_source_unpack_filtered(self):
exclude = "README"
- for (comp, archive) in self.archives.iteritems():
+ for (comp, archive) in self.archives.items():
source = gbp.pkg.UpstreamSource(archive[0])
source.unpack(".", [exclude])
archive[1].remove(exclude)
diff --git a/tests/03_test_dch_guess_version.py b/tests/03_test_dch_guess_version.py
index 6109bfb3..5dca3b71 100644
--- a/tests/03_test_dch_guess_version.py
+++ b/tests/03_test_dch_guess_version.py
@@ -4,7 +4,7 @@
from . import context
-import testutils
+from . import testutils
from gbp.scripts import dch
diff --git a/tests/09_test_write_tree.py b/tests/09_test_write_tree.py
index 55a1da60..9ae636e3 100644
--- a/tests/09_test_write_tree.py
+++ b/tests/09_test_write_tree.py
@@ -20,7 +20,7 @@ class TestWriteTree(testutils.DebianGitTestRepo):
for i in range(4):
path = os.path.join(self.repo.path, 'testfile%d' % i)
with open(path, 'w') as f:
- print >>f, "testdata %d" % i
+ print("testdata %d" % i, file=f)
paths.append(path)
return paths
diff --git a/tests/14_test_gbp_import_dscs.py b/tests/14_test_gbp_import_dscs.py
index ba3d5f79..2fdc2e6e 100644
--- a/tests/14_test_gbp_import_dscs.py
+++ b/tests/14_test_gbp_import_dscs.py
@@ -17,7 +17,7 @@
from . import context
-import testutils
+from . import testutils
import gbp.log
import gbp.scripts.import_dscs as import_dscs
diff --git a/tests/15_test_DebianSource.py b/tests/15_test_DebianSource.py
index feca6256..a4ea5562 100644
--- a/tests/15_test_DebianSource.py
+++ b/tests/15_test_DebianSource.py
@@ -18,7 +18,7 @@
from . import context
import os
-import testutils
+from . import testutils
from gbp.deb.source import DebianSource, DebianSourceError
from gbp.deb.format import DebianSourceFormat
from gbp.git.vfs import GitVfs
diff --git a/tests/17_test_dch_guess_documented_commit.py b/tests/17_test_dch_guess_documented_commit.py
index 89eba2d3..78adca8a 100644
--- a/tests/17_test_dch_guess_documented_commit.py
+++ b/tests/17_test_dch_guess_documented_commit.py
@@ -4,7 +4,7 @@
from . import context
-import testutils
+from . import testutils
from gbp.scripts import dch
diff --git a/tests/19_test_gbp_scripts_config.py b/tests/19_test_gbp_scripts_config.py
index c984329a..8bb21053 100644
--- a/tests/19_test_gbp_scripts_config.py
+++ b/tests/19_test_gbp_scripts_config.py
@@ -78,7 +78,7 @@ class TestGbpConfigCommand(unittest.TestCase):
'pull' ]:
printstub = self.AllValuesPrintStub(cmd)
ret = gbp.scripts.config.print_cmd_all_values(cmd, printstub)
- self.assertTrue('%s.color' % cmd in printstub.result.keys())
+ self.assertTrue('%s.color' % cmd in list(printstub.result.keys()))
self.assertEqual(ret, 0)
def test_invalid_cms(self):
diff --git a/tests/component/__init__.py b/tests/component/__init__.py
index baabbbd3..66a5e2f4 100644
--- a/tests/component/__init__.py
+++ b/tests/component/__init__.py
@@ -24,7 +24,7 @@ import os
import re
import shutil
import tempfile
-from StringIO import StringIO
+from io import StringIO
from nose import SkipTest
from nose.tools import eq_, ok_ # pylint: disable=E0611
diff --git a/tests/component/rpm/__init__.py b/tests/component/rpm/__init__.py
index 26655756..008329b4 100644
--- a/tests/component/rpm/__init__.py
+++ b/tests/component/rpm/__init__.py
@@ -48,7 +48,7 @@ class RepoManifest(object):
for prj_e in self._doc.getElementsByTagName('project'):
branches = []
for br_e in prj_e.getElementsByTagName('branch'):
- branches.append(dict(br_e.attributes.items()))
+ branches.append(dict(list(br_e.attributes.items())))
yield prj_e.getAttribute('name'), branches
diff --git a/tests/component/rpm/test_import_orig_rpm.py b/tests/component/rpm/test_import_orig_rpm.py
index ebf592a0..620697c4 100644
--- a/tests/component/rpm/test_import_orig_rpm.py
+++ b/tests/component/rpm/test_import_orig_rpm.py
@@ -24,7 +24,7 @@ import tarfile
import tempfile
from nose.plugins.skip import SkipTest
from nose.tools import assert_raises, eq_ # pylint: disable=E0611
-from StringIO import StringIO
+from io import StringIO
from gbp.scripts.import_orig_rpm import main as import_orig_rpm
from gbp.git import GitRepository
@@ -112,7 +112,7 @@ class TestImportOrig(ImportOrigTestBase):
def _create_dummy_spec(path, **kwargs):
"""Create a dummy spec file"""
with open(path, 'w') as fobj:
- print kwargs
+ print(kwargs)
fobj.write(DUMMY_SPEC % kwargs)
def test_invalid_args(self):
diff --git a/tests/component/rpm/test_import_srpm.py b/tests/component/rpm/test_import_srpm.py
index 6635400b..7dcfe223 100644
--- a/tests/component/rpm/test_import_srpm.py
+++ b/tests/component/rpm/test_import_srpm.py
@@ -18,7 +18,7 @@
import os
import shutil
-import urllib2
+import urllib.request, urllib.error, urllib.parse
from nose.plugins.skip import SkipTest
from nose.tools import assert_raises, eq_, ok_ # pylint: disable=E0611
from mock import Mock
@@ -287,8 +287,8 @@ class TestDownloadImport(ComponentTestBase):
'master/gbp-test-1.0-1.src.rpm'
# Mock to use local files instead of really downloading
local_fn = os.path.join(DATA_DIR, os.path.basename(srpm))
- urllib2.urlopen = Mock()
- urllib2.urlopen.return_value = open(local_fn, 'r')
+ urllib.request.urlopen = Mock()
+ urllib.request.urlopen.return_value = open(local_fn, 'r')
eq_(mock_import(['--no-pristine-tar', '--download', srpm]), 0)
# Check repository state
@@ -299,8 +299,8 @@ class TestDownloadImport(ComponentTestBase):
"""Test graceful failure when trying download from nonexistent url"""
srpm = 'http://url.does.not.exist.com/foo.src.rpm'
# Do not connect to remote, mock failure
- urllib2.urlopen = Mock()
- urllib2.urlopen.side_effect = urllib2.HTTPError(srpm, 404, "Not found",
+ urllib.request.urlopen = Mock()
+ urllib.request.urlopen.side_effect = urllib.error.HTTPError(srpm, 404, "Not found",
None, None)
eq_(mock_import(['--download', srpm]), 1)
diff --git a/tests/test_GitRepository.py b/tests/test_GitRepository.py
index e44b60b7..f8cfafec 100644
--- a/tests/test_GitRepository.py
+++ b/tests/test_GitRepository.py
@@ -17,9 +17,9 @@ import gbp.log
gbp.log.setup(color=False, verbose=True)
-repo_dir, bare_dir, clone_dir, mirror_clone_dir = map(
+repo_dir, bare_dir, clone_dir, mirror_clone_dir = list(map(
lambda x, tmpdir=context.new_tmpdir(__name__): tmpdir.join(x),
- ['repo', 'bare', 'clone', 'mirror_clone'])
+ ['repo', 'bare', 'clone', 'mirror_clone']))
def test_create():
"""
diff --git a/tests/test_import_orig.py b/tests/test_import_orig.py
index aa39e380..72dc67f9 100644
--- a/tests/test_import_orig.py
+++ b/tests/test_import_orig.py
@@ -52,15 +52,15 @@ class TestFindSource(TestImportOrigBase):
def test_failure(self):
"""Test failure modes"""
- with self.assertRaisesRegexp(GbpError,
+ with self.assertRaisesRegex(GbpError,
"More than one archive specified"):
find_source(False, ['too', 'much'])
- with self.assertRaisesRegexp(GbpError,
+ with self.assertRaisesRegex(GbpError,
"No archive to import specified"):
find_source(False, [])
- with self.assertRaisesRegexp(GbpError,
+ with self.assertRaisesRegex(GbpError,
"you can't pass both --uscan and a filename"):
find_source(True, ['tarball'])
diff --git a/tests/test_rpm.py b/tests/test_rpm.py
index f059f556..3b25f8c6 100644
--- a/tests/test_rpm.py
+++ b/tests/test_rpm.py
@@ -319,7 +319,7 @@ class TestSpecFile(object):
spec = SpecFileTester(spec_filepath)
# Check all the tags
- for name, val in spec.protected('_tags').iteritems():
+ for name, val in spec.protected('_tags').items():
rval = None
if name in ('version', 'release', 'epoch'):
rval = '0'