public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/rpkg] f44: New release 1.70
@ 2026-07-31  2:55 
  0 siblings, 0 replies; only message in thread
From:  @ 2026-07-31  2:55 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/rpkg
            Branch : f44
            Commit : ccb7313fa6a1b1eec306746e7f97697c673acf66
            Author : Ondřej Nosek <onosek@redhat.com>
            Date   : 2026-07-31T02:54:23+00:00
            Stats  : +27/-886 in 9 file(s)
            URL    : https://src.fedoraproject.org/rpms/rpkg/c/ccb7313fa6a1b1eec306746e7f97697c673acf66?branch=f44

            Log:
            New release 1.70

Signed-off-by: Ondřej Nosek <onosek@redhat.com>

---
diff --git a/.gitignore b/.gitignore
index 4e5316b..799ebe7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,3 +65,4 @@
 /rpkg-1.67.tar.gz
 /rpkg-1.68.tar.gz
 /rpkg-1.69.tar.gz
+/rpkg-1.70.tar.gz

diff --git a/0002-Execute-shell-command-Non-interactive-stdin.patch b/0002-Execute-shell-command-Non-interactive-stdin.patch
deleted file mode 100644
index 82e9517..0000000
--- a/0002-Execute-shell-command-Non-interactive-stdin.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-From 0123ce42d214968defe74b8a05ba7d9c7ecfa6c1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ond=C5=99ej=20Nosek?= <onosek@redhat.com>
-Date: Mon, 6 Oct 2025 00:23:26 +0200
-Subject: [PATCH] Execute shell command: Non-interactive stdin
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-During the `push` command on non-interactive environment, rhpkg hangs.
-
-JIRA: RHELBLD-17387
-
-Signed-off-by: Ondřej Nosek <onosek@redhat.com>
----
- pyrpkg/__init__.py     |  9 ++++++++-
- tests/test_commands.py | 23 +++++++++++++++--------
- 2 files changed, 23 insertions(+), 9 deletions(-)
-
-diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
-index 57b273d..4d453ca 100644
---- a/pyrpkg/__init__.py
-+++ b/pyrpkg/__init__.py
-@@ -1302,6 +1302,7 @@ class Commands(object):
-                 # stderr, so....
-                 parent_proc = subprocess.Popen(
-                     command, env=environ, shell=shell, cwd=cwd,  # nosec
-+                    stdin=subprocess.DEVNULL,
-                     stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- 
-                 proc = subprocess.Popen(
-@@ -1309,9 +1310,11 @@ class Commands(object):
-                     stdin=parent_proc.stdout,
-                     stdout=proc_stdout, stderr=proc_stderr,
-                     universal_newlines=return_text)
-+                parent_proc.stdout.close()
-             else:
-                 proc = subprocess.Popen(
-                     command, env=environ, shell=shell, cwd=cwd,  # nosec
-+                    stdin=subprocess.DEVNULL,
-                     stdout=proc_stdout, stderr=proc_stderr,
-                     universal_newlines=return_text)
-         except KeyboardInterrupt:
-@@ -1319,7 +1322,11 @@ class Commands(object):
-         except Exception as e:
-             raise rpkgError(e)
- 
--        exit_code = proc.wait()
-+        try:
-+            exit_code = proc.wait(timeout=3600)
-+        except subprocess.TimeoutExpired:
-+            proc.kill()
-+            raise rpkgError('Command timed out.')
-         if exit_code > 0 and not return_stderr:
-             raise rpkgError('Failed to execute command.')
- 
-diff --git a/tests/test_commands.py b/tests/test_commands.py
-index 732d79f..b0b18a3 100644
---- a/tests/test_commands.py
-+++ b/tests/test_commands.py
-@@ -1118,7 +1118,8 @@ class TestRunCommand(CommandTestCase):
-         self.assertEqual((0, None, None), result)
-         Popen.assert_called_once_with(
-             'rpmbuild', env=os.environ, shell=True, cwd=None,  # nosec
--            stdout=None, stderr=None, universal_newlines=False)
-+            stdin=subprocess.DEVNULL, stdout=None, stderr=None,
-+            universal_newlines=False)
- 
-     @patch('subprocess.Popen')
-     def test_run_command_without_shell(self, Popen):
-@@ -1129,7 +1130,8 @@ class TestRunCommand(CommandTestCase):
-         self.assertEqual((0, None, None), result)
-         Popen.assert_called_once_with(
-             ['rpmbuild'], env=os.environ, shell=False, cwd=None,
--            stdout=None, stderr=None, universal_newlines=False)
-+            stdin=subprocess.DEVNULL, stdout=None, stderr=None,
-+            universal_newlines=False)
- 
-     @patch('subprocess.Popen')
-     def test_return_stdout(self, Popen):
-@@ -1142,7 +1144,8 @@ class TestRunCommand(CommandTestCase):
-         self.assertEqual((0, 'output', None), result)
-         Popen.assert_called_once_with(
-             ['rpmbuild'], env=os.environ, shell=False, cwd=None,
--            stdout=subprocess.PIPE, stderr=None, universal_newlines=False)
-+            stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=None,
-+            universal_newlines=False)
- 
-     @patch('subprocess.Popen')
-     def test_return_stderr(self, Popen):
-@@ -1155,7 +1158,8 @@ class TestRunCommand(CommandTestCase):
-         self.assertEqual((0, None, 'output'), result)
-         Popen.assert_called_once_with(
-             ['rpmbuild'], env=os.environ, shell=False, cwd=None,
--            stdout=None, stderr=subprocess.PIPE, universal_newlines=False)
-+            stdin=subprocess.DEVNULL, stdout=None, stderr=subprocess.PIPE,
-+            universal_newlines=False)
- 
-     @patch('subprocess.Popen')
-     def test_pipe(self, Popen):
-@@ -1174,7 +1178,7 @@ class TestRunCommand(CommandTestCase):
-         Popen.assert_has_calls([
-             call(['rpmbuild'],
-                  env=os.environ, shell=False, cwd=None,
--                 stdout=subprocess.PIPE, stderr=subprocess.STDOUT),
-+                 stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=subprocess.STDOUT),
-             call(['grep', 'src.rpm'],
-                  env=os.environ, shell=False, cwd=None,
-                  stdin=first_proc.stdout, stdout=None, stderr=None,
-@@ -1215,7 +1219,8 @@ class TestRunCommand(CommandTestCase):
-             self.assertEqual((0, None, None), result)
-             Popen.assert_called_once_with(
-                 ['rpmbuild'], env={'myvar': 'test'},
--                shell=False, cwd=None, stdout=None, stderr=None,
-+                shell=False, cwd=None,
-+                stdin=subprocess.DEVNULL, stdout=None, stderr=None,
-                 universal_newlines=False)
- 
-     @patch('subprocess.Popen')
-@@ -1227,7 +1232,8 @@ class TestRunCommand(CommandTestCase):
- 
-         Popen.assert_called_once_with(
-             ['rpmbuild'], env=os.environ, shell=False, cwd=tempdir,
--            stdout=None, stderr=None, universal_newlines=False)
-+            stdin=subprocess.DEVNULL, stdout=None, stderr=None,
-+            universal_newlines=False)
- 
-         shutil.rmtree(tempdir)
- 
-@@ -1240,4 +1246,5 @@ class TestRunCommand(CommandTestCase):
- 
-         Popen.assert_called_once_with(
-             ['rpmbuild'], env=os.environ, shell=False, cwd=None,
--            stdout=subprocess.PIPE, stderr=None, universal_newlines=True)
-+            stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=None,
-+            universal_newlines=True)
--- 
-2.51.1
-

diff --git a/0003-Use-ruff-code-checker-instead-of-bandit.patch b/0003-Use-ruff-code-checker-instead-of-bandit.patch
deleted file mode 100644
index 3081d04..0000000
--- a/0003-Use-ruff-code-checker-instead-of-bandit.patch
+++ /dev/null
@@ -1,256 +0,0 @@
-From 4187379b9c316aa245602f704ed9b88aac8d8c2c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ond=C5=99ej=20Nosek?= <onosek@redhat.com>
-Date: Wed, 26 Nov 2025 00:11:47 +0100
-Subject: [PATCH] Use ruff code checker instead of bandit
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-In the testing CI (Jenkins), stop using bandit in favour of ruff.
-Bandit is deprecated in the latest Fedora release (F43).
-Added an environment for code coverage analysis.
-
-JIRA: RHELCMP-14985
-
-Signed-off-by: Ondřej Nosek <onosek@redhat.com>
----
- CONTRIBUTING.md         |  4 +++-
- Jenkinsfile             |  2 +-
- jenkins_test.dockerfile |  6 +++---
- pyproject.toml          | 34 ++++++++++++++++++++++++++++++++++
- pyrpkg/__init__.py      |  8 ++++----
- pyrpkg/cli.py           |  2 +-
- tests/test_cli.py       |  2 +-
- tests/test_commands.py  |  6 +++---
- tox.ini                 | 23 ++++++++++++++++++++---
- 9 files changed, 70 insertions(+), 17 deletions(-)
-
-diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
-index b3c1d31..a14d3d5 100644
---- a/CONTRIBUTING.md
-+++ b/CONTRIBUTING.md
-@@ -32,11 +32,13 @@ You can increase the chance of your Pull Request being merged by:
- * having good test coverage
- * writing documentation
- * following PEP 8 for code formatting
--* don't have [bandit][bandit] complains
-+* ~~don't have [bandit][bandit] complains~~ (not active in the Jenkins)
-+* don't have [ruff][ruff] complains (some categories are currently excluded in the configuration)
- * writing [a good commit message][commit-message]
- 
- [commit-message]: https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
- [bandit]: https://bandit.readthedocs.io
-+[ruff]: https://github.com/astral-sh/ruff
- 
- 
- [places]:
-diff --git a/Jenkinsfile b/Jenkinsfile
-index 9b38735..61872ed 100644
---- a/Jenkinsfile
-+++ b/Jenkinsfile
-@@ -49,7 +49,7 @@ git fetch proposed
- git checkout "origin/$params.BRANCH_TO"
- git merge --no-ff "proposed/$params.BRANCH" -m "Merge PR"
- 
--podman run --rm -v .:/src:Z quay.io/exd-guild-source-tools/rpkg-test:latest tox -e py36,py39,py312,py313,flake8,bandit --workdir /tmp/tox ${TOX_POSARGS}
-+podman run --rm -v .:/src:Z quay.io/exd-guild-source-tools/rpkg-test:latest tox -e py36,py39,py312,py313,py314,flake8,ruff --workdir /tmp/tox ${TOX_POSARGS}
- # disabled py27 environment for now; keep just flake8 for Python 2
- podman run --rm -v .:/src:Z quay.io/exd-guild-source-tools/rpkg-test-py2:latest tox -e flake8python2 --workdir /tmp/tox ${TOX_POSARGS}
-                         """
-diff --git a/jenkins_test.dockerfile b/jenkins_test.dockerfile
-index 8ef932a..e950280 100644
---- a/jenkins_test.dockerfile
-+++ b/jenkins_test.dockerfile
-@@ -1,4 +1,4 @@
--FROM fedora:41
-+FROM fedora:42
- LABEL \
-     name="rpkg test" \
-     description="Run tests using tox with Python 3" \
-@@ -27,11 +27,11 @@ RUN dnf -y install \
-         openssl-devel \
-         make \
-         git \
--        bandit
-+        ruff
- RUN dnf clean all
- 
- WORKDIR /src
- 
- COPY . .
- 
--CMD ["tox", "-e", "py36,py39,py312,py313,py314,flake8,bandit"]
-+CMD ["tox", "-e", "py36,py39,py312,py313,py314,flake8,ruff"]
-diff --git a/pyproject.toml b/pyproject.toml
-index 255a7bc..d9f30a7 100644
---- a/pyproject.toml
-+++ b/pyproject.toml
-@@ -87,3 +87,37 @@ include = [
- packages = [
-     "pyrpkg",
- ]
-+
-+[tool.ruff]
-+line-length = 100
-+
-+[tool.ruff.lint]
-+select = [
-+    # pycodestyle
-+    "E",
-+    # pycodestyle warnings
-+    "W",
-+    # Pyflakes
-+    "F",
-+    # pyupgrade
-+    #"UP",
-+    # flake8-bugbear
-+    #"B",
-+    # flake8-simplify
-+    #"SIM",
-+    # isort
-+    #"I",
-+    # flake8-bandit
-+    "S",
-+    # flake8-type-checking
-+    #"TCH",
-+    # flake8-comprehensions
-+    #"C4",
-+    # pep8-naming
-+    #"N",
-+    # flake8-annotations
-+    #"ANN",
-+    # flake8-pytest-style
-+    #"PT",
-+]
-+ignore = ["S101", "S311", "S603", "S607"]
-diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
-index 4d453ca..a4b4dd7 100644
---- a/pyrpkg/__init__.py
-+++ b/pyrpkg/__init__.py
-@@ -832,7 +832,7 @@ class Commands(object):
-         tmp_resultdir = tempfile.mkdtemp(prefix="mock_resultdir")
-         cmd += ['-r', root, '--chroot', '--resultdir', tmp_resultdir]
- 
--        tmp_root = '/var/tmp'  # temporary directory inside the mock root  # nosec
-+        tmp_root = '/var/tmp'  # temporary directory inside the mock root  # nosec # noqa: S108
-         copyin_cmd = cmd + ['--copyin', specfile_path, tmp_root]
- 
-         # We make sure there is a space at the end of our query so that
-@@ -1405,7 +1405,7 @@ class Commands(object):
-             # anyway.
-             if int(re.search(r'\d+', self.distval).group()) < 6:
-                 return 'md5'
--        except Exception:
-+        except Exception:  # noqa: S110
-             # An error here is OK, don't bother the user.
-             pass
- 
-@@ -2004,7 +2004,7 @@ class Commands(object):
-             try:
-                 output = subprocess.check_output(cmd)
-                 hash = output.split()[0]
--            except Exception:
-+            except Exception:  # noqa: S110
-                 # don't do anything here, we'll handle not having hash
-                 # later
-                 pass
-@@ -4187,7 +4187,7 @@ class Commands(object):
-                 data = body
-             auth = requests_gssapi.HTTPSPNEGOAuth(
-                 mutual_authentication=requests_gssapi.OPTIONAL)
--            resp = requests.request(verb, url, data=data, auth=auth, **kwargs)
-+            resp = requests.request(verb, url, data=data, auth=auth, timeout=1800, **kwargs)
-             if resp.status_code == 401:
-                 raise rpkgError('MBS authentication using Kerberos failed. '
-                                 'Make sure you have a valid Kerberos ticket.')
-diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py
-index decef3f..160baff 100644
---- a/pyrpkg/cli.py
-+++ b/pyrpkg/cli.py
-@@ -66,7 +66,7 @@ class _ArgumentParser(argparse.ArgumentParser):
-             return None
- 
-         # if it doesn't start with a prefix, it was meant to be positional
--        if not arg_string[0] in self.prefix_chars:
-+        if arg_string[0] not in self.prefix_chars:
-             return None
- 
-         # if the option string is present in the parser, return the action
-diff --git a/tests/test_cli.py b/tests/test_cli.py
-index f734c43..efe50f1 100644
---- a/tests/test_cli.py
-+++ b/tests/test_cli.py
-@@ -1475,7 +1475,7 @@ class LookasideCacheMock(object):
-             f.write('binary data')
- 
-     def hash_file(self, filename):
--        md5 = hashlib.md5()  # nosec
-+        md5 = hashlib.md5()  # nosec # noqa: S324
-         with open(filename, 'rb') as f:
-             content = f.read()
-             md5.update(content)
-diff --git a/tests/test_commands.py b/tests/test_commands.py
-index b0b18a3..a757c7e 100644
---- a/tests/test_commands.py
-+++ b/tests/test_commands.py
-@@ -1113,11 +1113,11 @@ class TestRunCommand(CommandTestCase):
-     def test_run_command_within_shell(self, Popen):
-         Popen.return_value.wait.return_value = 0
- 
--        result = self.cmd._run_command(['rpmbuild'], shell=True)  # nosec
-+        result = self.cmd._run_command(['rpmbuild'], shell=True)  # nosec # noqa: S604
- 
-         self.assertEqual((0, None, None), result)
--        Popen.assert_called_once_with(
--            'rpmbuild', env=os.environ, shell=True, cwd=None,  # nosec
-+        Popen.assert_called_once_with(   # nosec # noqa: S604
-+            'rpmbuild', env=os.environ, shell=True, cwd=None,
-             stdin=subprocess.DEVNULL, stdout=None, stderr=None,
-             universal_newlines=False)
- 
-diff --git a/tox.ini b/tox.ini
-index ccbdac2..8bf9c3f 100644
---- a/tox.ini
-+++ b/tox.ini
-@@ -1,5 +1,6 @@
- [tox]
--envlist = py27,py36,py39,py312,py313,py314,flake8,doc,bandit
-+envlist = py27,py36,py39,py312,py313,py314,flake8,doc,bandit,coverage,ruff
-+basepython = {env:TOXPYTHON:python3}
- 
- [testenv]
- skip_install = True
-@@ -13,8 +14,6 @@ basepython=
-     py314: {env:TOXPYTHON:python3.14}
-     flake8: {env:TOXPYTHON:python3.6}
-     flake8python2: {env:TOXPYTHON:python2.7}
--    doc: {env:TOXPYTHON:python3}
--    bandit: {env:TOXPYTHON:python3}
- 
- deps =
-     -r{toxinidir}/requirements/pypi.txt
-@@ -71,3 +70,21 @@ skip_install = true
- deps = bandit
- commands = bandit -r -ll pyrpkg tests
- ignore_outcome = False
-+
-+[testenv:coverage]
-+deps =
-+    {[testenv]deps}
-+    pytest-cov
-+skip_install = True
-+commands =
-+    python -m pytest --cov=pyrpkg --cov-report=term --cov-report=html {posargs}
-+
-+[coverage:run]
-+source = pyrpkg
-+omit =
-+
-+[testenv:ruff]
-+deps = ruff
-+skip_install = True
-+commands =
-+    python -m ruff check pyrpkg/ tests/
--- 
-2.51.1
-

diff --git a/0004-update-interactive-editor-is-broken.patch b/0004-update-interactive-editor-is-broken.patch
deleted file mode 100644
index c8e1f0d..0000000
--- a/0004-update-interactive-editor-is-broken.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 4d758fc593db84ca5797efca55f151dfcb1aab2d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ond=C5=99ej=20Nosek?= <onosek@redhat.com>
-Date: Tue, 9 Dec 2025 03:13:39 +0100
-Subject: [PATCH 1/2] `update`: interactive editor is broken
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Revert "Execute shell command: Non-interactive stdin"
-This (partially) reverts commit 0123ce42d214968defe74b8a05ba7d9c7ecfa6c1.
-
-Fixes: #762
-Signed-off-by: Ondřej Nosek <onosek@redhat.com>
----
- pyrpkg/__init__.py     |  2 --
- tests/test_commands.py | 23 ++++++++---------------
- 2 files changed, 8 insertions(+), 17 deletions(-)
-
-diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
-index a4b4dd7..38ccbcf 100644
---- a/pyrpkg/__init__.py
-+++ b/pyrpkg/__init__.py
-@@ -1302,7 +1302,6 @@ class Commands(object):
-                 # stderr, so....
-                 parent_proc = subprocess.Popen(
-                     command, env=environ, shell=shell, cwd=cwd,  # nosec
--                    stdin=subprocess.DEVNULL,
-                     stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- 
-                 proc = subprocess.Popen(
-@@ -1314,7 +1313,6 @@ class Commands(object):
-             else:
-                 proc = subprocess.Popen(
-                     command, env=environ, shell=shell, cwd=cwd,  # nosec
--                    stdin=subprocess.DEVNULL,
-                     stdout=proc_stdout, stderr=proc_stderr,
-                     universal_newlines=return_text)
-         except KeyboardInterrupt:
-diff --git a/tests/test_commands.py b/tests/test_commands.py
-index a757c7e..012a618 100644
---- a/tests/test_commands.py
-+++ b/tests/test_commands.py
-@@ -1118,8 +1118,7 @@ class TestRunCommand(CommandTestCase):
-         self.assertEqual((0, None, None), result)
-         Popen.assert_called_once_with(   # nosec # noqa: S604
-             'rpmbuild', env=os.environ, shell=True, cwd=None,
--            stdin=subprocess.DEVNULL, stdout=None, stderr=None,
--            universal_newlines=False)
-+            stdout=None, stderr=None, universal_newlines=False)
- 
-     @patch('subprocess.Popen')
-     def test_run_command_without_shell(self, Popen):
-@@ -1130,8 +1129,7 @@ class TestRunCommand(CommandTestCase):
-         self.assertEqual((0, None, None), result)
-         Popen.assert_called_once_with(
-             ['rpmbuild'], env=os.environ, shell=False, cwd=None,
--            stdin=subprocess.DEVNULL, stdout=None, stderr=None,
--            universal_newlines=False)
-+            stdout=None, stderr=None, universal_newlines=False)
- 
-     @patch('subprocess.Popen')
-     def test_return_stdout(self, Popen):
-@@ -1144,8 +1142,7 @@ class TestRunCommand(CommandTestCase):
-         self.assertEqual((0, 'output', None), result)
-         Popen.assert_called_once_with(
-             ['rpmbuild'], env=os.environ, shell=False, cwd=None,
--            stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=None,
--            universal_newlines=False)
-+            stdout=subprocess.PIPE, stderr=None, universal_newlines=False)
- 
-     @patch('subprocess.Popen')
-     def test_return_stderr(self, Popen):
-@@ -1158,8 +1155,7 @@ class TestRunCommand(CommandTestCase):
-         self.assertEqual((0, None, 'output'), result)
-         Popen.assert_called_once_with(
-             ['rpmbuild'], env=os.environ, shell=False, cwd=None,
--            stdin=subprocess.DEVNULL, stdout=None, stderr=subprocess.PIPE,
--            universal_newlines=False)
-+            stdout=None, stderr=subprocess.PIPE, universal_newlines=False)
- 
-     @patch('subprocess.Popen')
-     def test_pipe(self, Popen):
-@@ -1178,7 +1174,7 @@ class TestRunCommand(CommandTestCase):
-         Popen.assert_has_calls([
-             call(['rpmbuild'],
-                  env=os.environ, shell=False, cwd=None,
--                 stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=subprocess.STDOUT),
-+                 stdout=subprocess.PIPE, stderr=subprocess.STDOUT),
-             call(['grep', 'src.rpm'],
-                  env=os.environ, shell=False, cwd=None,
-                  stdin=first_proc.stdout, stdout=None, stderr=None,
-@@ -1219,8 +1215,7 @@ class TestRunCommand(CommandTestCase):
-             self.assertEqual((0, None, None), result)
-             Popen.assert_called_once_with(
-                 ['rpmbuild'], env={'myvar': 'test'},
--                shell=False, cwd=None,
--                stdin=subprocess.DEVNULL, stdout=None, stderr=None,
-+                shell=False, cwd=None, stdout=None, stderr=None,
-                 universal_newlines=False)
- 
-     @patch('subprocess.Popen')
-@@ -1232,8 +1227,7 @@ class TestRunCommand(CommandTestCase):
- 
-         Popen.assert_called_once_with(
-             ['rpmbuild'], env=os.environ, shell=False, cwd=tempdir,
--            stdin=subprocess.DEVNULL, stdout=None, stderr=None,
--            universal_newlines=False)
-+            stdout=None, stderr=None, universal_newlines=False)
- 
-         shutil.rmtree(tempdir)
- 
-@@ -1246,5 +1240,4 @@ class TestRunCommand(CommandTestCase):
- 
-         Popen.assert_called_once_with(
-             ['rpmbuild'], env=os.environ, shell=False, cwd=None,
--            stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=None,
--            universal_newlines=True)
-+            stdout=subprocess.PIPE, stderr=None, universal_newlines=True)
--- 
-2.52.0
-

diff --git a/0005-Check-the-correct-sorting-of-imports-from-now-on.patch b/0005-Check-the-correct-sorting-of-imports-from-now-on.patch
deleted file mode 100644
index 0d8fa82..0000000
--- a/0005-Check-the-correct-sorting-of-imports-from-now-on.patch
+++ /dev/null
@@ -1,282 +0,0 @@
-From 2ecdd95bed7833f201e14dd603feb3cdcbe4031f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ond=C5=99ej=20Nosek?= <onosek@redhat.com>
-Date: Tue, 9 Dec 2025 03:35:42 +0100
-Subject: [PATCH 2/2] Check the correct sorting of imports from now on
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Ondřej Nosek <onosek@redhat.com>
----
- pyproject.toml                    |  2 +-
- pyrpkg/__init__.py                | 27 +++++++++++++++++++--------
- pyrpkg/layout/__init__.py         |  9 +++++++--
- pyrpkg/lookaside.py               |  3 +--
- tests/commands/test_check_repo.py |  3 ++-
- tests/commands/test_clone.py      |  1 +
- tests/test_commands.py            |  1 +
- tests/test_flatpak_build.py       |  4 ++--
- tests/test_lookaside.py           |  3 +--
- tests/test_retire.py              |  5 +++--
- tests/test_side_tag.py            |  3 ++-
- tests/test_spec.py                |  2 +-
- tests/test_utils.py               | 13 +++++++++----
- tests/utils.py                    |  1 +
- 14 files changed, 51 insertions(+), 26 deletions(-)
-
-diff --git a/pyproject.toml b/pyproject.toml
-index d9f30a7..fee23af 100644
---- a/pyproject.toml
-+++ b/pyproject.toml
-@@ -106,7 +106,7 @@ select = [
-     # flake8-simplify
-     #"SIM",
-     # isort
--    #"I",
-+    "I",
-     # flake8-bandit
-     "S",
-     # flake8-type-checking
-diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
-index 38ccbcf..8276b2b 100644
---- a/pyrpkg/__init__.py
-+++ b/pyrpkg/__init__.py
-@@ -45,15 +45,27 @@ from six.moves import configparser, urllib
- from six.moves.urllib.parse import urljoin
- 
- from pyrpkg import layout
--from pyrpkg.errors import (AlreadyUploadedError, HashtypeMixingError,
--                           NoSourcesError, SpecfileDoesntMatchRepoNameError,
--                           UnknownTargetError, rpkgAuthError, rpkgError)
-+from pyrpkg.errors import (
-+    AlreadyUploadedError,
-+    HashtypeMixingError,
-+    NoSourcesError,
-+    SpecfileDoesntMatchRepoNameError,
-+    UnknownTargetError,
-+    rpkgAuthError,
-+    rpkgError,
-+)
- from pyrpkg.lookaside import CGILookasideCache
- from pyrpkg.sources import SourcesFile
- from pyrpkg.spec import SpecFile
--from pyrpkg.utils import (cached_property, extract_srpm, find_me,
--                          is_file_tracked, is_lookaside_eligible_file,
--                          log_result, spec_file_undo_rpmautospec)
-+from pyrpkg.utils import (
-+    cached_property,
-+    extract_srpm,
-+    find_me,
-+    is_file_tracked,
-+    is_lookaside_eligible_file,
-+    log_result,
-+    spec_file_undo_rpmautospec,
-+)
- 
- from .gitignore import GitIgnore
- 
-@@ -78,8 +90,7 @@ except ImportError:
-     specfile_uses_rpmautospec = None
- 
- try:
--    from rpmautospec import \
--        calculate_release_number as rpmautospec_calculate_release_number
-+    from rpmautospec import calculate_release_number as rpmautospec_calculate_release_number
-     from rpmautospec import process_distgit as rpmautospec_process_distgit
- except ImportError:
-     rpmautospec_process_distgit = None
-diff --git a/pyrpkg/layout/__init__.py b/pyrpkg/layout/__init__.py
-index 850ddc2..c17a81e 100644
---- a/pyrpkg/layout/__init__.py
-+++ b/pyrpkg/layout/__init__.py
-@@ -12,8 +12,13 @@
- from pyrpkg.errors import LayoutError
- 
- from .base import MetaLayout
--from .layouts import (DistGitLayout, DistGitResultsDirLayout,  # noqa: F401
--                      IncompleteLayout, RetiredLayout, SRPMLayout)
-+from .layouts import (  # noqa: F401
-+    DistGitLayout,
-+    DistGitResultsDirLayout,
-+    IncompleteLayout,
-+    RetiredLayout,
-+    SRPMLayout,
-+)
- 
- 
- def build(path, hint=None):
-diff --git a/pyrpkg/lookaside.py b/pyrpkg/lookaside.py
-index 2a786df..689b8b6 100644
---- a/pyrpkg/lookaside.py
-+++ b/pyrpkg/lookaside.py
-@@ -26,8 +26,7 @@ import pycurl
- import six
- from six.moves import http_client, urllib
- 
--from .errors import (AlreadyUploadedError, DownloadError, InvalidHashType,
--                     UploadError)
-+from .errors import AlreadyUploadedError, DownloadError, InvalidHashType, UploadError
- 
- 
- class CGILookasideCache(object):
-diff --git a/tests/commands/test_check_repo.py b/tests/commands/test_check_repo.py
-index 8952481..29a0849 100644
---- a/tests/commands/test_check_repo.py
-+++ b/tests/commands/test_check_repo.py
-@@ -5,9 +5,10 @@ import subprocess
- import sys
- import tempfile
- 
--from pyrpkg.errors import rpkgError
- from six.moves import StringIO
- 
-+from pyrpkg.errors import rpkgError
-+
- try:
-     from unittest.mock import patch
- except ImportError:
-diff --git a/tests/commands/test_clone.py b/tests/commands/test_clone.py
-index 85fdfd1..d9ed832 100644
---- a/tests/commands/test_clone.py
-+++ b/tests/commands/test_clone.py
-@@ -4,6 +4,7 @@ import sys
- import tempfile
- 
- import git
-+
- import pyrpkg
- 
- from . import CommandTestCase
-diff --git a/tests/test_commands.py b/tests/test_commands.py
-index 012a618..383edf4 100644
---- a/tests/test_commands.py
-+++ b/tests/test_commands.py
-@@ -11,6 +11,7 @@ from datetime import datetime
- import git
- import rpm
- import six
-+
- from pyrpkg import rpkgError
- 
- try:
-diff --git a/tests/test_flatpak_build.py b/tests/test_flatpak_build.py
-index 32926a8..3a143db 100644
---- a/tests/test_flatpak_build.py
-+++ b/tests/test_flatpak_build.py
-@@ -3,10 +3,10 @@ import subprocess
- from textwrap import dedent
- 
- import requests
--from pyrpkg import Modulemd
--
- from utils import CommandTestCase
- 
-+from pyrpkg import Modulemd
-+
- try:
-     import unittest2 as unittest
- except ImportError:
-diff --git a/tests/test_lookaside.py b/tests/test_lookaside.py
-index 6bace2e..b42b447 100644
---- a/tests/test_lookaside.py
-+++ b/tests/test_lookaside.py
-@@ -21,8 +21,7 @@ try:
- except ImportError:
-     import mock
- 
--from pyrpkg.errors import (AlreadyUploadedError, DownloadError,
--                           InvalidHashType, UploadError)
-+from pyrpkg.errors import AlreadyUploadedError, DownloadError, InvalidHashType, UploadError
- from pyrpkg.lookaside import CGILookasideCache
- 
- old_stat = os.stat
-diff --git a/tests/test_retire.py b/tests/test_retire.py
-index 1fdeafd..3f4d943 100644
---- a/tests/test_retire.py
-+++ b/tests/test_retire.py
-@@ -5,11 +5,12 @@ import shutil
- import subprocess
- import tempfile
- 
--import pyrpkg.cli
- import six
--from pyrpkg.errors import rpkgError
- from six.moves import configparser
- 
-+import pyrpkg.cli
-+from pyrpkg.errors import rpkgError
-+
- try:
-     from unittest import mock
- except ImportError:
-diff --git a/tests/test_side_tag.py b/tests/test_side_tag.py
-index 7a7f859..be96778 100644
---- a/tests/test_side_tag.py
-+++ b/tests/test_side_tag.py
-@@ -4,10 +4,11 @@ import logging
- import os
- 
- import koji
--import pyrpkg.cli
- import six
- from six.moves import StringIO, configparser
- 
-+import pyrpkg.cli
-+
- try:
-     from unittest import mock
- except ImportError:
-diff --git a/tests/test_spec.py b/tests/test_spec.py
-index 0c7907a..2f61c2c 100644
---- a/tests/test_spec.py
-+++ b/tests/test_spec.py
-@@ -1,7 +1,7 @@
- import os
- import shutil
--import unittest
- import tempfile
-+import unittest
- 
- from pyrpkg import spec
- from pyrpkg.errors import rpkgError
-diff --git a/tests/test_utils.py b/tests/test_utils.py
-index 0cd62d8..c0feda6 100644
---- a/tests/test_utils.py
-+++ b/tests/test_utils.py
-@@ -14,12 +14,17 @@ try:
- except ImportError:
-     import mock
- 
--from pyrpkg.utils import (cached_property, is_file_in_directory,
--                          is_file_tracked, log_result,
--                          spec_file_undo_rpmautospec, warn_deprecated)
--
- from utils import CommandTestCase
- 
-+from pyrpkg.utils import (
-+    cached_property,
-+    is_file_in_directory,
-+    is_file_tracked,
-+    log_result,
-+    spec_file_undo_rpmautospec,
-+    warn_deprecated,
-+)
-+
- 
- class CachedPropertyTestCase(unittest.TestCase):
-     def test_computed_only_once(self):
-diff --git a/tests/utils.py b/tests/utils.py
-index c58d836..52b9215 100644
---- a/tests/utils.py
-+++ b/tests/utils.py
-@@ -7,6 +7,7 @@ import sys
- import tempfile
- 
- import six
-+
- from pyrpkg import Commands
- 
- # For running tests with Python 2
--- 
-2.52.0
-

diff --git a/0006-_run_command-timeout-is-not-supported-in-Python-2.patch b/0006-_run_command-timeout-is-not-supported-in-Python-2.patch
deleted file mode 100644
index 8df5ea6..0000000
--- a/0006-_run_command-timeout-is-not-supported-in-Python-2.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From d0a4e9a8e4778d4b232af4565b36e4b83ae6071b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ond=C5=99ej=20Nosek?= <onosek@redhat.com>
-Date: Tue, 9 Dec 2025 21:39:32 +0100
-Subject: [PATCH] _run_command: timeout is not supported in Python 2
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Splitting this functionality for Python's versions.
-This relates to the commit 0123ce42d214968defe74b8a05ba7d9c7ecfa6c1.
-
-Signed-off-by: Ondřej Nosek <onosek@redhat.com>
----
- pyrpkg/__init__.py | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
-index 8276b2b..8df338c 100644
---- a/pyrpkg/__init__.py
-+++ b/pyrpkg/__init__.py
-@@ -1331,11 +1331,14 @@ class Commands(object):
-         except Exception as e:
-             raise rpkgError(e)
- 
--        try:
--            exit_code = proc.wait(timeout=3600)
--        except subprocess.TimeoutExpired:
--            proc.kill()
--            raise rpkgError('Command timed out.')
-+        if six.PY3:
-+            try:
-+                exit_code = proc.wait(timeout=3600)
-+            except subprocess.TimeoutExpired:
-+                proc.kill()
-+                raise rpkgError('Command timed out.')
-+        else:
-+            exit_code = proc.wait()
-         if exit_code > 0 and not return_stderr:
-             raise rpkgError('Failed to execute command.')
- 
--- 
-2.52.0
-

diff --git a/0007-Submitting-the-module-build-duplicate-timeout.patch b/0007-Submitting-the-module-build-duplicate-timeout.patch
deleted file mode 100644
index 32006c8..0000000
--- a/0007-Submitting-the-module-build-duplicate-timeout.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 7ccbd04656ca09617fb6b422365e0f35babd62ad Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ond=C5=99ej=20Nosek?= <onosek@redhat.com>
-Date: Thu, 11 Dec 2025 17:29:39 +0100
-Subject: [PATCH] Submitting the module build - duplicate timeout
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The change was suggested by a static code checker, but it caused
-duplicate timeout argument that was passed in kwargs.
-
-Fixes: #766
-JIRA: RHELCMP-15058
-
-Signed-off-by: Ondřej Nosek <onosek@redhat.com>
----
- pyrpkg/__init__.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
-index 8df338c..6f4d63b 100644
---- a/pyrpkg/__init__.py
-+++ b/pyrpkg/__init__.py
-@@ -4199,7 +4199,7 @@ class Commands(object):
-                 data = body
-             auth = requests_gssapi.HTTPSPNEGOAuth(
-                 mutual_authentication=requests_gssapi.OPTIONAL)
--            resp = requests.request(verb, url, data=data, auth=auth, timeout=1800, **kwargs)
-+            resp = requests.request(verb, url, data=data, auth=auth, **kwargs)  # noqa: S113
-             if resp.status_code == 401:
-                 raise rpkgError('MBS authentication using Kerberos failed. '
-                                 'Make sure you have a valid Kerberos ticket.')
--- 
-2.52.0
-

diff --git a/rpkg.spec b/rpkg.spec
index a610e61..bc96cea 100644
--- a/rpkg.spec
+++ b/rpkg.spec
@@ -1,14 +1,14 @@
 Name:           rpkg
-Version:        1.69
-Release:        9%{?dist}
+Version:        1.70
+Release:        1%{?dist}
 
 Summary:        Python library for interacting with rpm+git
 # Automatically converted from old format: GPLv2+ and LGPLv2 - reviewed
 # and converted to SPDX license expression
 License:        GPL-2.0-or-later AND LGPL-2.1-only
-URL:            https://pagure.io/rpkg
+URL:            https://forge.fedoraproject.org/packaging/rpkg
 BuildArch:      noarch
-Source0:        https://pagure.io/releases/rpkg/%{name}-%{version}.tar.gz
+Source0:        https://forge.fedoraproject.org/packaging/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
 
 # RHEL7 is currently the only release that is built for Python 2.
 %if 0%{?rhel} == 7
@@ -47,12 +47,6 @@ Patch0:         remove-koji-and-rpm-py-installer-from-requires.patch
 %if 0%{?with_python2}
 Patch1:         0001-Remove-Environment-Markers-syntax.patch
 %endif
-Patch2:         0002-Execute-shell-command-Non-interactive-stdin.patch
-Patch3:         0003-Use-ruff-code-checker-instead-of-bandit.patch
-Patch4:         0004-update-interactive-editor-is-broken.patch
-Patch5:         0005-Check-the-correct-sorting-of-imports-from-now-on.patch
-Patch6:         0006-_run_command-timeout-is-not-supported-in-Python-2.patch
-Patch7:         0007-Submitting-the-module-build-duplicate-timeout.patch
 
 %description
 Python library for interacting with rpm+git
@@ -289,6 +283,27 @@ example_cli_dir=$RPM_BUILD_ROOT%{_datadir}/%{name}/examples/cli
 
 
 %changelog
+* Fri Jul 31 2026 Ondřej Nosek <onosek@redhat.com> - 1.70-1
+- Fix SRPM import for files with a backslash in the name - unittests (onosek)
+- Fixing ruff and flake8 complaints (onosek)
+- Add verrel --json support (onosek)
+- Fix Jenkinsfile for a Jenkins CI triggered from the Forge (onosek)
+- Links to a new documentation at Readthedocs.io (onosek)
+- Web documentation at Readthedocs.io (onosek)
+- Post-migration steps (onosek)
+- Fix SRPM import for files with a backslash in the name (pavel)
+- Remove deprecated 'clean --dry-run' argument - rhbz#2458827 (onosek)
+- Add configurable HTTP version for lookaside transfers (onosek)
+- docs: modernize Sphinx conf.py (onosek)
+- pre_push_check: unset GIT_DIR to fix worktree support - #769 (vashirov)
+- Various code linter issues fixed (onosek)
+- Submitting the module build - duplicate timeout - #766 (onosek)
+- _run_command: timeout is not supported in Python 2 (onosek)
+- Check the correct sorting of imports from now on (onosek)
+- `update`: interactive editor is broken - #762 (onosek)
+- Use ruff code checker instead of bandit (onosek)
+- Execute shell command: Non-interactive stdin (onosek)
+
 * Fri Jul 31 2026 Petr Pisar <ppisar@redhat.com> - 1.69-9
 - Disable modularity on RHEL >= 11
 

diff --git a/sources b/sources
index 8dfdb92..1467c5d 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (rpkg-1.69.tar.gz) = ccd9f5fd213aca2fa289aef7c96662dbc5b05506f5e82ff18f13aa7a4989a38508575d9c7141f6d6fe35613bb78bd465109c9162e478ec7f842b437ae1f1c3bc
+SHA512 (rpkg-1.70.tar.gz) = 946ddf1f2d09dc30973885631b1481fdad4c086f66ecafe19de2e345fa08b95146cbd45fb37f47bc400b5fdae9d350f06f449b652ede972e0931e85a3b2a6a0b

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-31  2:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-31  2:55 [rpms/rpkg] f44: New release 1.70 

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox