Imported Upstream version 5.4.4 upstream/5.4.4
authorJinWang An <jinwang.an@samsung.com>
Mon, 28 Dec 2020 04:47:28 +0000 (13:47 +0900)
committerJinWang An <jinwang.an@samsung.com>
Mon, 28 Dec 2020 04:47:28 +0000 (13:47 +0900)
16 files changed:
ChangeLog
PKG-INFO
pbr.egg-info/PKG-INFO
pbr/builddoc.py
pbr/git.py
pbr/options.py
pbr/packaging.py
pbr/tests/test_packaging.py
pbr/tests/test_setup.py
pbr/tests/test_wsgi.py
pbr/tests/testpackage/doc/source/conf.py
pbr/tests/util.py
pbr/util.py
pbr/version.py
test-requirements.txt
tox.ini

index f7b345fd00ec9c59eb341a16e76c906a0e6e4a07..35f1264a0e7125adfb44de1eaa2d2b1a7b4e2f35 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,13 @@
 CHANGES
 =======
 
+5.4.4
+-----
+
+* trivial: Use 'open' context manager
+* Update to latest hacking
+* Mark strings as raw
+
 5.4.3
 -----
 
index 9b9af736eeefe0beb65e5fe4d9ae6a391dac81a2..532d8bba2338506588755929ef4830d132c964fe 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pbr
-Version: 5.4.3
+Version: 5.4.4
 Summary: Python Build Reasonableness
 Home-page: https://docs.openstack.org/pbr/latest/
 Author: OpenStack
index 9b9af736eeefe0beb65e5fe4d9ae6a391dac81a2..532d8bba2338506588755929ef4830d132c964fe 100644 (file)
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pbr
-Version: 5.4.3
+Version: 5.4.4
 Summary: Python Build Reasonableness
 Home-page: https://docs.openstack.org/pbr/latest/
 Author: OpenStack
index f5c66ce004d0c9ee825c99c0cbabf5fd360e186f..276eec67accf58dd3f0d0777ea015c72d4d2acd5 100644 (file)
@@ -132,11 +132,11 @@ class LocalBuildDoc(setup_command.BuildDoc):
                 autoindex.write("   %s.rst\n" % module)
 
     def _sphinx_tree(self):
-            source_dir = self._get_source_dir()
-            cmd = ['-H', 'Modules', '-o', source_dir, '.']
-            if apidoc_use_padding:
-                cmd.insert(0, 'apidoc')
-            apidoc.main(cmd + self.autodoc_tree_excludes)
+        source_dir = self._get_source_dir()
+        cmd = ['-H', 'Modules', '-o', source_dir, '.']
+        if apidoc_use_padding:
+            cmd.insert(0, 'apidoc')
+        apidoc.main(cmd + self.autodoc_tree_excludes)
 
     def _sphinx_run(self):
         if not self.verbose:
index 6e0e3467a9b7421b35f0a2814618ae4dcc62fa79..f1d7c50101734d94a22ea4107049252055495d97 100644 (file)
@@ -156,9 +156,9 @@ def _clean_changelog_message(msg):
     * Escapes '`' which is interpreted as a literal
     """
 
-    msg = msg.replace('*', '\*')
-    msg = msg.replace('_', '\_')
-    msg = msg.replace('`', '\`')
+    msg = msg.replace('*', r'\*')
+    msg = msg.replace('_', r'\_')
+    msg = msg.replace('`', r'\`')
 
     return msg
 
@@ -276,13 +276,14 @@ def write_git_changelog(git_dir=None, dest_dir=os.path.curdir,
             changelog = _iter_changelog(changelog)
     if not changelog:
         return
+
     new_changelog = os.path.join(dest_dir, 'ChangeLog')
-    # If there's already a ChangeLog and it's not writable, just use it
-    if (os.path.exists(new_changelog)
-            and not os.access(new_changelog, os.W_OK)):
+    if os.path.exists(new_changelog) and not os.access(new_changelog, os.W_OK):
+        # If there's already a ChangeLog and it's not writable, just use it
         log.info('[pbr] ChangeLog not written (file already'
                  ' exists and it is not writeable)')
         return
+
     log.info('[pbr] Writing ChangeLog')
     with io.open(new_changelog, "w", encoding="utf-8") as changelog_file:
         for release, content in changelog:
@@ -297,13 +298,14 @@ def generate_authors(git_dir=None, dest_dir='.', option_dict=dict()):
                                              'SKIP_GENERATE_AUTHORS')
     if should_skip:
         return
+
     start = time.time()
     old_authors = os.path.join(dest_dir, 'AUTHORS.in')
     new_authors = os.path.join(dest_dir, 'AUTHORS')
-    # If there's already an AUTHORS file and it's not writable, just use it
-    if (os.path.exists(new_authors)
-            and not os.access(new_authors, os.W_OK)):
+    if os.path.exists(new_authors) and not os.access(new_authors, os.W_OK):
+        # If there's already an AUTHORS file and it's not writable, just use it
         return
+
     log.info('[pbr] Generating AUTHORS')
     ignore_emails = '((jenkins|zuul)@review|infra@lists|jenkins@openstack)'
     if git_dir is None:
index 105b200e61535fc5c50e25c0aa072aae04f78cb9..2313cc4a91e63896929de6c3212d51e72e37cb53 100644 (file)
@@ -48,6 +48,6 @@ TRUE_VALUES = ('true', '1', 'yes')
 
 
 def get_boolean_option(option_dict, option_name, env_name):
-    return ((option_name in option_dict
-             and option_dict[option_name][1].lower() in TRUE_VALUES) or
+    return ((option_name in option_dict and
+             option_dict[option_name][1].lower() in TRUE_VALUES) or
             str(os.getenv(env_name)).lower() in TRUE_VALUES)
index 0947de29308f01e6d5d69a7725e2e8a57b6a6d23..a697992826f55629f1909bf3ca101ad545f55c02 100644 (file)
@@ -110,20 +110,20 @@ def get_reqs_from_files(requirements_files):
 
 def egg_fragment(match):
     return re.sub(r'(?P<PackageName>[\w.-]+)-'
-                  '(?P<GlobalVersion>'
-                  '(?P<VersionTripple>'
-                  '(?P<Major>0|[1-9][0-9]*)\.'
-                  '(?P<Minor>0|[1-9][0-9]*)\.'
-                  '(?P<Patch>0|[1-9][0-9]*)){1}'
-                  '(?P<Tags>(?:\-'
-                  '(?P<Prerelease>(?:(?=[0]{1}[0-9A-Za-z-]{0})(?:[0]{1})|'
-                  '(?=[1-9]{1}[0-9]*[A-Za-z]{0})(?:[0-9]+)|'
-                  '(?=[0-9]*[A-Za-z-]+[0-9A-Za-z-]*)(?:[0-9A-Za-z-]+)){1}'
-                  '(?:\.(?=[0]{1}[0-9A-Za-z-]{0})(?:[0]{1})|'
-                  '\.(?=[1-9]{1}[0-9]*[A-Za-z]{0})(?:[0-9]+)|'
-                  '\.(?=[0-9]*[A-Za-z-]+[0-9A-Za-z-]*)'
-                  '(?:[0-9A-Za-z-]+))*){1}){0,1}(?:\+'
-                  '(?P<Meta>(?:[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))){0,1}))',
+                  r'(?P<GlobalVersion>'
+                  r'(?P<VersionTripple>'
+                  r'(?P<Major>0|[1-9][0-9]*)\.'
+                  r'(?P<Minor>0|[1-9][0-9]*)\.'
+                  r'(?P<Patch>0|[1-9][0-9]*)){1}'
+                  r'(?P<Tags>(?:\-'
+                  r'(?P<Prerelease>(?:(?=[0]{1}[0-9A-Za-z-]{0})(?:[0]{1})|'
+                  r'(?=[1-9]{1}[0-9]*[A-Za-z]{0})(?:[0-9]+)|'
+                  r'(?=[0-9]*[A-Za-z-]+[0-9A-Za-z-]*)(?:[0-9A-Za-z-]+)){1}'
+                  r'(?:\.(?=[0]{1}[0-9A-Za-z-]{0})(?:[0]{1})|'
+                  r'\.(?=[1-9]{1}[0-9]*[A-Za-z]{0})(?:[0-9]+)|'
+                  r'\.(?=[0-9]*[A-Za-z-]+[0-9A-Za-z-]*)'
+                  r'(?:[0-9A-Za-z-]+))*){1}){0,1}(?:\+'
+                  r'(?P<Meta>(?:[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))){0,1}))',
                   r'\g<PackageName>>=\g<GlobalVersion>',
                   match.groups()[-1])
 
@@ -328,6 +328,7 @@ except ImportError:
 def have_nose():
     return _have_nose
 
+
 _wsgi_text = """#PBR Generated from %(group)r
 
 import threading
@@ -652,6 +653,7 @@ class LocalSDist(sdist.sdist):
             self.filelist.sort()
         sdist.sdist.make_distribution(self)
 
+
 try:
     from pbr import builddoc
     _have_sphinx = True
index 811715bbcc15b00337f97516a6afeb722f064a1b..07be54771a6381cae0c6105f8877b930aa97aec4 100644 (file)
@@ -108,7 +108,7 @@ class GPGKeyFixture(fixtures.Fixture):
     def setUp(self):
         super(GPGKeyFixture, self).setUp()
         tempdir = self.useFixture(fixtures.TempDir())
-        gnupg_version_re = re.compile('^gpg\s.*\s([\d+])\.([\d+])\.([\d+])')
+        gnupg_version_re = re.compile(r'^gpg\s.*\s([\d+])\.([\d+])\.([\d+])')
         gnupg_version = base._run_cmd(['gpg', '--version'], tempdir.path)
         for line in gnupg_version[0].split('\n'):
             gnupg_version = gnupg_version_re.match(line)
@@ -120,9 +120,9 @@ class GPGKeyFixture(fixtures.Fixture):
         else:
             if gnupg_version is None:
                 gnupg_version = (0, 0, 0)
-        config_file = tempdir.path + '/key-config'
-        f = open(config_file, 'wt')
-        try:
+
+        config_file = os.path.join(tempdir.path, 'key-config')
+        with open(config_file, 'wt') as f:
             if gnupg_version[0] == 2 and gnupg_version[1] >= 1:
                 f.write("""
                 %no-protection
@@ -138,8 +138,7 @@ class GPGKeyFixture(fixtures.Fixture):
             Preferences: (setpref)
             %commit
             """)
-        finally:
-            f.close()
+
         # Note that --quick-random (--debug-quick-random in GnuPG 2.x)
         # does not have a corresponding preferences file setting and
         # must be passed explicitly on the command line instead
@@ -149,6 +148,7 @@ class GPGKeyFixture(fixtures.Fixture):
             gnupg_random = '--debug-quick-random'
         else:
             gnupg_random = ''
+
         base._run_cmd(
             ['gpg', '--gen-key', '--batch', gnupg_random, config_file],
             tempdir.path)
@@ -293,23 +293,23 @@ class TestPackagingInGitRepoWithCommit(base.BaseTestCase):
         self.run_setup('sdist', allow_fail=False)
         with open(os.path.join(self.package_dir, 'ChangeLog'), 'r') as f:
             body = f.read()
-        self.assertIn('\*', body)
+        self.assertIn(r'\*', body)
 
     def test_changelog_handles_dead_links_in_commit(self):
         self.repo.commit(message_content="See os_ for to_do about qemu_.")
         self.run_setup('sdist', allow_fail=False)
         with open(os.path.join(self.package_dir, 'ChangeLog'), 'r') as f:
             body = f.read()
-        self.assertIn('os\_', body)
-        self.assertIn('to\_do', body)
-        self.assertIn('qemu\_', body)
+        self.assertIn(r'os\_', body)
+        self.assertIn(r'to\_do', body)
+        self.assertIn(r'qemu\_', body)
 
     def test_changelog_handles_backticks(self):
         self.repo.commit(message_content="Allow `openstack.org` to `work")
         self.run_setup('sdist', allow_fail=False)
         with open(os.path.join(self.package_dir, 'ChangeLog'), 'r') as f:
             body = f.read()
-        self.assertIn('\`', body)
+        self.assertIn(r'\`', body)
 
     def test_manifest_exclude_honoured(self):
         self.run_setup('sdist', allow_fail=False)
@@ -765,8 +765,10 @@ class TestVersions(base.BaseTestCase):
 
     def test_get_kwargs_corner_cases(self):
         # No tags:
-        git_dir = self.repo._basedir + '/.git'
-        get_kwargs = lambda tag: packaging._get_increment_kwargs(git_dir, tag)
+
+        def get_kwargs(tag):
+            git_dir = self.repo._basedir + '/.git'
+            return packaging._get_increment_kwargs(git_dir, tag)
 
         def _check_combinations(tag):
             self.repo.commit()
@@ -947,109 +949,109 @@ class TestRepositoryURLDependencies(base.BaseTestCase):
                 'pypi-proj1', 'pypi-proj2']))
 
     def test_egg_fragment(self):
-            expected = [
-                'django-thumborize',
-                'django-thumborize-beta',
-                'django-thumborize2-beta',
-                'django-thumborize2-beta>=4.0.1',
-                'django-thumborize2-beta>=1.0.0-alpha.beta.1',
-                'django-thumborize2-beta>=1.0.0-alpha-a.b-c-long+build.1-aef.1-its-okay',  # noqa
-                'django-thumborize2-beta>=2.0.0-rc.1+build.123',
-                'django-thumborize-beta>=0.0.4',
-                'django-thumborize-beta>=1.2.3',
-                'django-thumborize-beta>=10.20.30',
-                'django-thumborize-beta>=1.1.2-prerelease+meta',
-                'django-thumborize-beta>=1.1.2+meta',
-                'django-thumborize-beta>=1.1.2+meta-valid',
-                'django-thumborize-beta>=1.0.0-alpha',
-                'django-thumborize-beta>=1.0.0-beta',
-                'django-thumborize-beta>=1.0.0-alpha.beta',
-                'django-thumborize-beta>=1.0.0-alpha.beta.1',
-                'django-thumborize-beta>=1.0.0-alpha.1',
-                'django-thumborize-beta>=1.0.0-alpha0.valid',
-                'django-thumborize-beta>=1.0.0-alpha.0valid',
-                'django-thumborize-beta>=1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay',  # noqa
-                'django-thumborize-beta>=1.0.0-rc.1+build.1',
-                'django-thumborize-beta>=2.0.0-rc.1+build.123',
-                'django-thumborize-beta>=1.2.3-beta',
-                'django-thumborize-beta>=10.2.3-DEV-SNAPSHOT',
-                'django-thumborize-beta>=1.2.3-SNAPSHOT-123',
-                'django-thumborize-beta>=1.0.0',
-                'django-thumborize-beta>=2.0.0',
-                'django-thumborize-beta>=1.1.7',
-                'django-thumborize-beta>=2.0.0+build.1848',
-                'django-thumborize-beta>=2.0.1-alpha.1227',
-                'django-thumborize-beta>=1.0.0-alpha+beta',
-                'django-thumborize-beta>=1.2.3----RC-SNAPSHOT.12.9.1--.12+788',
-                'django-thumborize-beta>=1.2.3----R-S.12.9.1--.12+meta',
-                'django-thumborize-beta>=1.2.3----RC-SNAPSHOT.12.9.1--.12',
-                'django-thumborize-beta>=1.0.0+0.build.1-rc.10000aaa-kk-0.1',
-                'django-thumborize-beta>=999999999999999999.99999999999999.9999999999999',  # noqa
-                'Proj1',
-                'Proj2>=0.0.1',
-                'Proj3',
-                'Proj4>=0.0.2',
-                'Proj5',
-                'Proj>=0.0.3',
-                'Proj',
-                'Proj>=0.0.4',
-                'Proj',
-                'foo-bar>=1.2.4',
-            ]
-            tests = [
-                'egg=django-thumborize',
-                'egg=django-thumborize-beta',
-                'egg=django-thumborize2-beta',
-                'egg=django-thumborize2-beta-4.0.1',
-                'egg=django-thumborize2-beta-1.0.0-alpha.beta.1',
-                'egg=django-thumborize2-beta-1.0.0-alpha-a.b-c-long+build.1-aef.1-its-okay',  # noqa
-                'egg=django-thumborize2-beta-2.0.0-rc.1+build.123',
-                'egg=django-thumborize-beta-0.0.4',
-                'egg=django-thumborize-beta-1.2.3',
-                'egg=django-thumborize-beta-10.20.30',
-                'egg=django-thumborize-beta-1.1.2-prerelease+meta',
-                'egg=django-thumborize-beta-1.1.2+meta',
-                'egg=django-thumborize-beta-1.1.2+meta-valid',
-                'egg=django-thumborize-beta-1.0.0-alpha',
-                'egg=django-thumborize-beta-1.0.0-beta',
-                'egg=django-thumborize-beta-1.0.0-alpha.beta',
-                'egg=django-thumborize-beta-1.0.0-alpha.beta.1',
-                'egg=django-thumborize-beta-1.0.0-alpha.1',
-                'egg=django-thumborize-beta-1.0.0-alpha0.valid',
-                'egg=django-thumborize-beta-1.0.0-alpha.0valid',
-                'egg=django-thumborize-beta-1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay',  # noqa
-                'egg=django-thumborize-beta-1.0.0-rc.1+build.1',
-                'egg=django-thumborize-beta-2.0.0-rc.1+build.123',
-                'egg=django-thumborize-beta-1.2.3-beta',
-                'egg=django-thumborize-beta-10.2.3-DEV-SNAPSHOT',
-                'egg=django-thumborize-beta-1.2.3-SNAPSHOT-123',
-                'egg=django-thumborize-beta-1.0.0',
-                'egg=django-thumborize-beta-2.0.0',
-                'egg=django-thumborize-beta-1.1.7',
-                'egg=django-thumborize-beta-2.0.0+build.1848',
-                'egg=django-thumborize-beta-2.0.1-alpha.1227',
-                'egg=django-thumborize-beta-1.0.0-alpha+beta',
-                'egg=django-thumborize-beta-1.2.3----RC-SNAPSHOT.12.9.1--.12+788',  # noqa
-                'egg=django-thumborize-beta-1.2.3----R-S.12.9.1--.12+meta',
-                'egg=django-thumborize-beta-1.2.3----RC-SNAPSHOT.12.9.1--.12',
-                'egg=django-thumborize-beta-1.0.0+0.build.1-rc.10000aaa-kk-0.1',  # noqa
-                'egg=django-thumborize-beta-999999999999999999.99999999999999.9999999999999',  # noqa
-                'egg=Proj1',
-                'egg=Proj2-0.0.1',
-                'egg=Proj3',
-                'egg=Proj4-0.0.2',
-                'egg=Proj5',
-                'egg=Proj-0.0.3',
-                'egg=Proj',
-                'egg=Proj-0.0.4',
-                'egg=Proj',
-                'egg=foo-bar-1.2.4',
-            ]
-            for index, test in enumerate(tests):
-                self.assertEqual(expected[index],
-                                 re.sub(r'egg=([^&]+).*$',
-                                        packaging.egg_fragment,
-                                        test))
+        expected = [
+            'django-thumborize',
+            'django-thumborize-beta',
+            'django-thumborize2-beta',
+            'django-thumborize2-beta>=4.0.1',
+            'django-thumborize2-beta>=1.0.0-alpha.beta.1',
+            'django-thumborize2-beta>=1.0.0-alpha-a.b-c-long+build.1-aef.1-its-okay',  # noqa
+            'django-thumborize2-beta>=2.0.0-rc.1+build.123',
+            'django-thumborize-beta>=0.0.4',
+            'django-thumborize-beta>=1.2.3',
+            'django-thumborize-beta>=10.20.30',
+            'django-thumborize-beta>=1.1.2-prerelease+meta',
+            'django-thumborize-beta>=1.1.2+meta',
+            'django-thumborize-beta>=1.1.2+meta-valid',
+            'django-thumborize-beta>=1.0.0-alpha',
+            'django-thumborize-beta>=1.0.0-beta',
+            'django-thumborize-beta>=1.0.0-alpha.beta',
+            'django-thumborize-beta>=1.0.0-alpha.beta.1',
+            'django-thumborize-beta>=1.0.0-alpha.1',
+            'django-thumborize-beta>=1.0.0-alpha0.valid',
+            'django-thumborize-beta>=1.0.0-alpha.0valid',
+            'django-thumborize-beta>=1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay',  # noqa
+            'django-thumborize-beta>=1.0.0-rc.1+build.1',
+            'django-thumborize-beta>=2.0.0-rc.1+build.123',
+            'django-thumborize-beta>=1.2.3-beta',
+            'django-thumborize-beta>=10.2.3-DEV-SNAPSHOT',
+            'django-thumborize-beta>=1.2.3-SNAPSHOT-123',
+            'django-thumborize-beta>=1.0.0',
+            'django-thumborize-beta>=2.0.0',
+            'django-thumborize-beta>=1.1.7',
+            'django-thumborize-beta>=2.0.0+build.1848',
+            'django-thumborize-beta>=2.0.1-alpha.1227',
+            'django-thumborize-beta>=1.0.0-alpha+beta',
+            'django-thumborize-beta>=1.2.3----RC-SNAPSHOT.12.9.1--.12+788',
+            'django-thumborize-beta>=1.2.3----R-S.12.9.1--.12+meta',
+            'django-thumborize-beta>=1.2.3----RC-SNAPSHOT.12.9.1--.12',
+            'django-thumborize-beta>=1.0.0+0.build.1-rc.10000aaa-kk-0.1',
+            'django-thumborize-beta>=999999999999999999.99999999999999.9999999999999',  # noqa
+            'Proj1',
+            'Proj2>=0.0.1',
+            'Proj3',
+            'Proj4>=0.0.2',
+            'Proj5',
+            'Proj>=0.0.3',
+            'Proj',
+            'Proj>=0.0.4',
+            'Proj',
+            'foo-bar>=1.2.4',
+        ]
+        tests = [
+            'egg=django-thumborize',
+            'egg=django-thumborize-beta',
+            'egg=django-thumborize2-beta',
+            'egg=django-thumborize2-beta-4.0.1',
+            'egg=django-thumborize2-beta-1.0.0-alpha.beta.1',
+            'egg=django-thumborize2-beta-1.0.0-alpha-a.b-c-long+build.1-aef.1-its-okay',  # noqa
+            'egg=django-thumborize2-beta-2.0.0-rc.1+build.123',
+            'egg=django-thumborize-beta-0.0.4',
+            'egg=django-thumborize-beta-1.2.3',
+            'egg=django-thumborize-beta-10.20.30',
+            'egg=django-thumborize-beta-1.1.2-prerelease+meta',
+            'egg=django-thumborize-beta-1.1.2+meta',
+            'egg=django-thumborize-beta-1.1.2+meta-valid',
+            'egg=django-thumborize-beta-1.0.0-alpha',
+            'egg=django-thumborize-beta-1.0.0-beta',
+            'egg=django-thumborize-beta-1.0.0-alpha.beta',
+            'egg=django-thumborize-beta-1.0.0-alpha.beta.1',
+            'egg=django-thumborize-beta-1.0.0-alpha.1',
+            'egg=django-thumborize-beta-1.0.0-alpha0.valid',
+            'egg=django-thumborize-beta-1.0.0-alpha.0valid',
+            'egg=django-thumborize-beta-1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay',  # noqa
+            'egg=django-thumborize-beta-1.0.0-rc.1+build.1',
+            'egg=django-thumborize-beta-2.0.0-rc.1+build.123',
+            'egg=django-thumborize-beta-1.2.3-beta',
+            'egg=django-thumborize-beta-10.2.3-DEV-SNAPSHOT',
+            'egg=django-thumborize-beta-1.2.3-SNAPSHOT-123',
+            'egg=django-thumborize-beta-1.0.0',
+            'egg=django-thumborize-beta-2.0.0',
+            'egg=django-thumborize-beta-1.1.7',
+            'egg=django-thumborize-beta-2.0.0+build.1848',
+            'egg=django-thumborize-beta-2.0.1-alpha.1227',
+            'egg=django-thumborize-beta-1.0.0-alpha+beta',
+            'egg=django-thumborize-beta-1.2.3----RC-SNAPSHOT.12.9.1--.12+788',  # noqa
+            'egg=django-thumborize-beta-1.2.3----R-S.12.9.1--.12+meta',
+            'egg=django-thumborize-beta-1.2.3----RC-SNAPSHOT.12.9.1--.12',
+            'egg=django-thumborize-beta-1.0.0+0.build.1-rc.10000aaa-kk-0.1',  # noqa
+            'egg=django-thumborize-beta-999999999999999999.99999999999999.9999999999999',  # noqa
+            'egg=Proj1',
+            'egg=Proj2-0.0.1',
+            'egg=Proj3',
+            'egg=Proj4-0.0.2',
+            'egg=Proj5',
+            'egg=Proj-0.0.3',
+            'egg=Proj',
+            'egg=Proj-0.0.4',
+            'egg=Proj',
+            'egg=foo-bar-1.2.4',
+        ]
+        for index, test in enumerate(tests):
+            self.assertEqual(expected[index],
+                             re.sub(r'egg=([^&]+).*$',
+                                    packaging.egg_fragment,
+                                    test))
 
     def test_parse_repo_url_requirements(self):
         result = packaging.parse_requirements([self.requirements])
index 85d40ebf30dccf60d9b27ea4f8a6f7f480bcd178..d171d7c098fe8c83dcd41efccfffbf80e365e15c 100644 (file)
@@ -93,8 +93,9 @@ class SkipFileWrites(base.BaseTestCase):
                       option_dict=self.option_dict)
         self.assertEqual(
             not os.path.exists(self.filename),
-            (self.option_value.lower() in options.TRUE_VALUES
-             or self.env_value is not None))
+            (self.option_value.lower() in options.TRUE_VALUES or
+             self.env_value is not None))
+
 
 _changelog_content = """7780758\x00Break parser\x00 (tag: refs/tags/1_foo.1)
 04316fe\x00Make python\x00 (refs/heads/review/monty_taylor/27519)
@@ -125,6 +126,7 @@ def _make_old_git_changelog_format(line):
     refname = refname.replace('tag: ', '')
     return '\x00'.join((sha, msg, refname))
 
+
 _old_git_changelog_content = '\n'.join(
     _make_old_git_changelog_format(line)
     for line in _changelog_content.split('\n'))
@@ -162,7 +164,7 @@ class GitLogsTest(base.BaseTestCase):
             self.assertIn("------", changelog_contents)
             self.assertIn("Refactor hooks file", changelog_contents)
             self.assertIn(
-                "Bug fix: create\_stack() fails when waiting",
+                r"Bug fix: create\_stack() fails when waiting",
                 changelog_contents)
             self.assertNotIn("Refactor hooks file.", changelog_contents)
             self.assertNotIn("182feb3", changelog_contents)
@@ -176,7 +178,7 @@ class GitLogsTest(base.BaseTestCase):
             self.assertNotIn("ev)il", changelog_contents)
             self.assertNotIn("e(vi)l", changelog_contents)
             self.assertNotIn('Merge "', changelog_contents)
-            self.assertNotIn('1\_foo.1', changelog_contents)
+            self.assertNotIn(r'1\_foo.1', changelog_contents)
 
     def test_generate_authors(self):
         author_old = u"Foo Foo <email@foo.com>"
index 18732f741f970f4fef4829c39db3fc33bce8339e..a42fe785de8303cae1a592c7228f8d0d08ae827a 100644 (file)
@@ -98,7 +98,7 @@ class TestWsgiScripts(base.BaseTestCase):
 
         stdoutdata = p.stdout.readline()  # Available at ...
         print(stdoutdata)
-        m = re.search(b'(http://[^:]+:\d+)/', stdoutdata)
+        m = re.search(br'(http://[^:]+:\d+)/', stdoutdata)
         self.assertIsNotNone(m, "Regex failed to match on %s" % stdoutdata)
 
         stdoutdata = p.stdout.readline()  # DANGER! ...
index 73585100797772b6e59176d114d8e27c61665a8c..6edbe8e3b2dc63fae988823ee9cac005615a9069 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import os
-import sys
 
-sys.path.insert(0, os.path.abspath('../..'))
 # -- General configuration ----------------------------------------------------
 
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
 extensions = [
     'sphinx.ext.autodoc',
-    #'sphinx.ext.intersphinx',
 ]
 
 # autodoc generation is a bit aggressive and a nuisance when doing heavy
@@ -49,16 +45,8 @@ add_module_names = True
 # The name of the Pygments (syntax highlighting) style to use.
 pygments_style = 'sphinx'
 
-# -- Options for HTML output --------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages.  Major themes that come with
-# Sphinx are currently 'default' and 'sphinxdoc'.
-# html_theme_path = ["."]
-# html_theme = '_theme'
-# html_static_path = ['static']
 
-# Output file base name for HTML help builder.
-htmlhelp_basename = '%sdoc' % project
+# -- Options for HTML output --------------------------------------------------
 
 # Grouping the document tree into LaTeX files. List of tuples
 # (source start file, target name, title, author, documentclass
@@ -69,6 +57,3 @@ latex_documents = [
      u'%s Documentation' % project,
      u'OpenStack Foundation', 'manual'),
 ]
-
-# Example configuration for intersphinx: refer to the Python standard library.
-#intersphinx_mapping = {'http://docs.python.org/': None}
index 0e7bcf155b251ca56ca6fbad76650291dbb97455..8a00c8406ae9355cf07c1b5b84087ffc93c857b5 100644 (file)
@@ -53,9 +53,9 @@ except ImportError:
 @contextlib.contextmanager
 def open_config(filename):
     if sys.version_info >= (3, 2):
-            cfg = configparser.ConfigParser()
+        cfg = configparser.ConfigParser()
     else:
-            cfg = configparser.SafeConfigParser()
+        cfg = configparser.SafeConfigParser()
     cfg.read(filename)
     yield cfg
     with open(filename, 'w') as fp:
index 6b2e87d7d2f638f438592d0971ec2015644b602f..1e9fdc490fa00710fd4fb7afe6e5aab4d0146b84 100644 (file)
@@ -219,10 +219,11 @@ def cfg_to_args(path='setup.cfg', script_args=()):
     """
 
     # The method source code really starts here.
-    if sys.version_info >= (3, 2):
-            parser = configparser.ConfigParser()
+    if sys.version_info >= (3, 0):
+        parser = configparser.ConfigParser()
     else:
-            parser = configparser.SafeConfigParser()
+        parser = configparser.SafeConfigParser()
+
     if not os.path.exists(path):
         raise errors.DistutilsFileError("file '%s' does not exist" %
                                         os.path.abspath(path))
index 5eb217afe89900fe32fcd48c78460e3962a05912..46c6020705c1d8a35252ea9b7bdc1b89fc5dad07 100644 (file)
@@ -323,8 +323,8 @@ class SemanticVersion(object):
             version number of the component to preserve sorting. (Used for
             rpm support)
         """
-        if ((self._prerelease_type or self._dev_count)
-                and pre_separator is None):
+        if ((self._prerelease_type or self._dev_count) and
+                pre_separator is None):
             segments = [self.decrement().brief_string()]
             pre_separator = "."
         else:
index c30a2b1712d8689f8cbded8abad48d60d2289887..09efec05e8327737d751e1321e3990bf7656125e 100644 (file)
@@ -1,9 +1,10 @@
 # The order of packages is significant, because pip processes them in the order
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
+
 wheel>=0.32.0 # MIT
 fixtures>=3.0.0 # Apache-2.0/BSD
-hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
+hacking>=1.1.0,<1.2.0 # Apache-2.0
 mock>=2.0.0 # BSD
 six>=1.10.0 # MIT
 stestr>=2.1.0 # Apache-2.0
diff --git a/tox.ini b/tox.ini
index ca870027208db5e3191253a686161a5b759e7a92..d48c770104ea350762e4329beaba04d7489343d9 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -48,10 +48,8 @@ commands =
   coverage xml -o cover/coverage.xml
 
 [flake8]
-# H405  multi line docstring summary not separated with an empty line
-# H904 "Wrap lines in parentheses and not a backslash for line continuation
-# Removed in current hacking (https://review.openstack.org/#/c/101701/).
-ignore = H803,H904
+# W504 (you have to choose this or W503)
+ignore = W504
 exclude = .venv,.tox,dist,doc,*.egg,build
 show-source = true