Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-osc-tiny for openSUSE:Factory
checked in at 2022-05-18 13:13:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-osc-tiny (Old)
and /work/SRC/openSUSE:Factory/.python-osc-tiny.new.1538 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-osc-tiny"
Wed May 18 13:13:22 2022 rev:12 rq:977829 version:0.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-osc-tiny/python-osc-tiny.changes
2022-01-21 01:26:15.858239976 +0100
+++
/work/SRC/openSUSE:Factory/.python-osc-tiny.new.1538/python-osc-tiny.changes
2022-05-18 13:13:29.506678560 +0200
@@ -1,0 +2,9 @@
+Tue May 17 13:03:24 UTC 2022 - Andreas Hasenkopf <[email protected]>
+
+- Release 0.5.0
+ * Added capability to log API requests (without headers!) and responses
+ * Make it possible to add a comment when pushing files
+ * Added method to get build history
+
+
+-------------------------------------------------------------------
Old:
----
osc-tiny-0.4.2.tar.gz
New:
----
osc-tiny-0.5.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-osc-tiny.spec ++++++
--- /var/tmp/diff_new_pack.W0j2vY/_old 2022-05-18 13:13:30.070679057 +0200
+++ /var/tmp/diff_new_pack.W0j2vY/_new 2022-05-18 13:13:30.078679064 +0200
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-osc-tiny
-Version: 0.4.2
+Version: 0.5.0
Release: 0
Summary: Client API for openSUSE BuildService
License: MIT
++++++ osc-tiny-0.4.2.tar.gz -> osc-tiny-0.5.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osc-tiny-0.4.2/PKG-INFO new/osc-tiny-0.5.0/PKG-INFO
--- old/osc-tiny-0.4.2/PKG-INFO 2022-01-20 11:42:50.830566000 +0100
+++ new/osc-tiny-0.5.0/PKG-INFO 2022-05-17 14:54:34.581646200 +0200
@@ -1,13 +1,12 @@
Metadata-Version: 2.1
Name: osc-tiny
-Version: 0.4.2
+Version: 0.5.0
Summary: Client API for openSUSE BuildService
Home-page: http://github.com/crazyscientist/osc-tiny
+Download-URL: http://github.com/crazyscientist/osc-tiny/tarball/master
Author: Andreas Hasenkopf
Author-email: [email protected]
License: MIT
-Download-URL: http://github.com/crazyscientist/osc-tiny/tarball/master
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
@@ -65,5 +64,3 @@
* https://osc-tiny.readthedocs.io/en/latest/
* https://openbuildservice.org/
* https://build.opensuse.org/apidocs/index
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osc-tiny-0.4.2/osc_tiny.egg-info/PKG-INFO
new/osc-tiny-0.5.0/osc_tiny.egg-info/PKG-INFO
--- old/osc-tiny-0.4.2/osc_tiny.egg-info/PKG-INFO 2022-01-20
11:42:50.000000000 +0100
+++ new/osc-tiny-0.5.0/osc_tiny.egg-info/PKG-INFO 2022-05-17
14:54:33.000000000 +0200
@@ -1,13 +1,12 @@
Metadata-Version: 2.1
Name: osc-tiny
-Version: 0.4.2
+Version: 0.5.0
Summary: Client API for openSUSE BuildService
Home-page: http://github.com/crazyscientist/osc-tiny
+Download-URL: http://github.com/crazyscientist/osc-tiny/tarball/master
Author: Andreas Hasenkopf
Author-email: [email protected]
License: MIT
-Download-URL: http://github.com/crazyscientist/osc-tiny/tarball/master
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
@@ -65,5 +64,3 @@
* https://osc-tiny.readthedocs.io/en/latest/
* https://openbuildservice.org/
* https://build.opensuse.org/apidocs/index
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osc-tiny-0.4.2/osctiny/__init__.py
new/osc-tiny-0.5.0/osctiny/__init__.py
--- old/osc-tiny-0.4.2/osctiny/__init__.py 2022-01-20 11:42:40.000000000
+0100
+++ new/osc-tiny-0.5.0/osctiny/__init__.py 2022-05-17 14:54:21.000000000
+0200
@@ -6,4 +6,4 @@
__all__ = ['Osc', 'bs_requests', 'buildresults', 'comments', 'packages',
'projects', 'search', 'users']
-__version__ = "0.4.2"
+__version__ = "0.5.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osc-tiny-0.4.2/osctiny/extensions/buildresults.py
new/osc-tiny-0.5.0/osctiny/extensions/buildresults.py
--- old/osc-tiny-0.4.2/osctiny/extensions/buildresults.py 2022-01-20
11:42:40.000000000 +0100
+++ new/osc-tiny-0.5.0/osctiny/extensions/buildresults.py 2022-05-17
14:54:21.000000000 +0200
@@ -45,6 +45,30 @@
return self.osc.get_objectified_xml(response)
+ def get_history(self, project, package, repo, arch="x86_64", **params):
+ """
+ Get build history
+
+ :param project: Project name
+ :param package: Package name
+ :param repo: Repository name
+ :param arch: Architecture name
+ :param params: Additional parameters
+ :return: Objectified XML element
+ :rtype: lxml.objectify.ObjectifiedElement
+
+ .. versionadded:: 0.5.0
+ """
+
+ response = self.osc.request(
+ method="GET",
+ url=urljoin(self.osc.url,
"{}/{}/{}/{}/{}/_history".format(self.base_path,
+
project,repo,arch,package)),
+ params=params
+ )
+
+ return self.osc.get_objectified_xml(response)
+
def get_package_list(self, project, repo, arch):
"""
Get a list of packages for which build results exist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osc-tiny-0.4.2/osctiny/extensions/packages.py
new/osc-tiny-0.5.0/osctiny/extensions/packages.py
--- old/osc-tiny-0.4.2/osctiny/extensions/packages.py 2022-01-20
11:42:40.000000000 +0100
+++ new/osc-tiny-0.5.0/osctiny/extensions/packages.py 2022-05-17
14:54:21.000000000 +0200
@@ -228,7 +228,7 @@
return abspath_filename
- def push_file(self, project, package, filename, data):
+ def push_file(self, project, package, filename, data, comment=None):
"""
Upload a file to package
@@ -237,13 +237,20 @@
:param filename: Name of file
:param data: content of file
:type data: str or open file handle
+ :param comment: Optional comment to use as commit message
+
+ .. versionchanged:: 0.5.0
+
+ Added an optional ``comment`` argument to be used as the commit
message when writing the
+ file.
"""
path = [self.base_path, project, package, filename]
self.osc.request(
url=urljoin(self.osc.url, "/".join(path)),
method="PUT",
- data=data
+ data=data,
+ params={"comment": comment}
)
def get_attribute(self, project, package, attribute=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osc-tiny-0.4.2/osctiny/osc.py
new/osc-tiny-0.5.0/osctiny/osc.py
--- old/osc-tiny-0.4.2/osctiny/osc.py 2022-01-20 11:42:40.000000000 +0100
+++ new/osc-tiny-0.5.0/osctiny/osc.py 2022-05-17 14:54:21.000000000 +0200
@@ -5,6 +5,7 @@
from __future__ import unicode_literals
from io import BufferedReader, BytesIO, StringIO
import gc
+import logging
import re
from ssl import get_default_verify_paths
import time
@@ -188,8 +189,10 @@
Retry sending the request, if the remote host disconnects
.. versionadded:: 0.1.7
+ Added parameter `params`
- * Added parameter `params`
+ .. versionchanged:: {{ NEXT_RELEASE }}
+ Added logging of request/response
:param url: Full URL
:param method: HTTP method
@@ -234,15 +237,30 @@
if timeout:
settings["timeout"] = timeout
+ logger = logging.getLogger("osctiny.request")
+
for i in range(self.default_connection_retries, -1, -1):
+ logger.info("Requested URL: %s", prepped_req.url)
+ logger.debug("Sent data:\n%s\n---",
+ "\n".join(f"{k}: {v}" for k, v in req.data.items())
+ if isinstance(req.data, dict) else req.data)
+ logger.debug("Sent parameters:\n%s\n---",
+ "\n".join(f"{k}: {v}" for k, v in req.params.items()))
try:
response = session.send(prepped_req, **settings)
except _ConnectionError as error:
warnings.warn("Problem connecting to server: {}".format(error))
+ log_method = logger.error if i < 1 else logger.warning
+ log_method("Request failed: %s", error)
if i < 1:
raise
+ logger.debug("Retrying request in %d seconds",
self.default_retry_timeout)
time.sleep(self.default_retry_timeout)
else:
+ logger.info("Server replied with status %d",
response.status_code)
+ logger.debug("Response headers:\n%s\n---",
+ "\n".join(f"{k}: {v}" for k, v in
response.headers.items()))
+ logger.debug("Response content:\n%s\n---", response.text)
if raise_for_status:
response.raise_for_status()
return response
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osc-tiny-0.4.2/osctiny/tests/test_packages.py
new/osc-tiny-0.5.0/osctiny/tests/test_packages.py
--- old/osc-tiny-0.4.2/osctiny/tests/test_packages.py 2022-01-20
11:42:40.000000000 +0100
+++ new/osc-tiny-0.5.0/osctiny/tests/test_packages.py 2022-05-17
14:54:21.000000000 +0200
@@ -347,6 +347,7 @@
???(?????????)??? ???(?????????)???
"""
bodies = []
+ received_params = []
def callback(headers, params, request):
if isinstance(request.body, IOBase):
@@ -355,6 +356,7 @@
else:
bodies.append(request.body)
status, body = 200, ""
+ received_params.append(params)
return status, headers, body
@@ -386,6 +388,13 @@
BytesIO(content.encode('utf-8')))
self.assertEqual(bodies[-1], content.encode('utf-8'))
+ with self.subTest("with comment"):
+ the_comment = "This is a comment"
+ self.osc.packages.push_file("prj", "pkg", "readme.txt", content,
+ comment=the_comment)
+ self.assertEqual(received_params[-1]["comment"], [the_comment])
+
+
@responses.activate
def test_aggregate(self):
put_called = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osc-tiny-0.4.2/setup.py new/osc-tiny-0.5.0/setup.py
--- old/osc-tiny-0.4.2/setup.py 2022-01-20 11:42:40.000000000 +0100
+++ new/osc-tiny-0.5.0/setup.py 2022-05-17 14:54:21.000000000 +0200
@@ -19,7 +19,7 @@
setup(
name='osc-tiny',
- version='0.4.2',
+ version='0.5.0',
description='Client API for openSUSE BuildService',
long_description=long_description,
long_description_content_type="text/markdown",