Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-pook for openSUSE:Factory checked in at 2021-09-25 00:35:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pook (Old) and /work/SRC/openSUSE:Factory/.python-pook.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pook" Sat Sep 25 00:35:17 2021 rev:5 rq:920219 version:1.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pook/python-pook.changes 2020-05-06 11:04:50.263336150 +0200 +++ /work/SRC/openSUSE:Factory/.python-pook.new.1899/python-pook.changes 2021-09-25 00:35:57.719164929 +0200 @@ -1,0 +2,13 @@ +Mon Sep 20 02:54:50 UTC 2021 - Steve Kowalik <steven.kowa...@suse.com> + +- Update to 1.0.2: + * fix(urllib3): interceptor is never really disabled (#68) + * Closes #75 Re consider @fluent decorator (#76) + * fix(#69): use match keyword in pytest.raises + * fix(History): invalid rst syntax + * fix(aiohttp): compatible with non aiohttp projects (#67) + * feat(History): add release changes +- Drop pytest5.patch, no longer required. +- Drop nose BuildRequires, and its suite, the remainder covers it. + +------------------------------------------------------------------- Old: ---- pook-1.0.0.tar.gz pytest5.patch New: ---- pook-1.0.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pook.spec ++++++ --- /var/tmp/diff_new_pack.ouFqV9/_old 2021-09-25 00:35:58.115165343 +0200 +++ /var/tmp/diff_new_pack.ouFqV9/_new 2021-09-25 00:35:58.119165347 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-pook # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,13 +20,12 @@ # requires python-aiohttp %define skip_python2 1 Name: python-pook -Version: 1.0.0 +Version: 1.0.2 Release: 0 Summary: HTTP traffic mocking and expectations License: MIT URL: https://github.com/h2non/pook Source: https://files.pythonhosted.org/packages/source/p/pook/pook-%{version}.tar.gz -Patch0: pytest5.patch BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -42,7 +41,6 @@ BuildRequires: %{python_module jsonschema >= 2.5.1} BuildRequires: %{python_module mocket >= 1.6.0} BuildRequires: %{python_module mock} -BuildRequires: %{python_module nose >= 1.3.7} BuildRequires: %{python_module pytest} BuildRequires: %{python_module requests >= 2.20.0} BuildRequires: %{python_module urllib3 >= 1.19.1} @@ -55,7 +53,6 @@ %prep %setup -q -n pook-%{version} -%patch0 -p1 rm -f setup.cfg pytest.ini tox.ini # Assist unittest on Python 2 @@ -75,7 +72,6 @@ export PYTHONPATH=%{buildroot}%{$python_sitelib} $python -m pytest -v tests/unit $python -m pytest -v tests/integration/engines/pytest_suite.py -$python -m nose tests/integration/engines/nose_suite.py export PYTHONPATH=%{buildroot}%{$python_sitelib}:. $python -m unittest tests.integration.engines.unittest_suite } ++++++ pook-1.0.0.tar.gz -> pook-1.0.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/History.rst new/pook-1.0.2/History.rst --- old/pook-1.0.0/History.rst 2019-10-31 10:52:23.000000000 +0100 +++ new/pook-1.0.2/History.rst 2021-09-10 16:36:40.000000000 +0200 @@ -1,6 +1,22 @@ -History -======= +v1.0.2 / 2021-09-10 +=================== + + * fix(urllib3): interceptor is never really disabled (#68) + * Closes #75 Re consider @fluent decorator (#76) + * fix(#69): use match keyword in pytest.raises + * fix(History): invalid rst syntax + +v1.0.1 / 2020-03-24 +------------------- + + * fix(aiohttp): compatible with non aiohttp projects (#67) + * feat(History): add release changes + +v1.0.0 / 2020-03-18 +------------------- + + * fix(aiohttp): use latest version, allow Python 3.5+ for async http client v0.2.8 / 2019-10-31 ------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/PKG-INFO new/pook-1.0.2/PKG-INFO --- old/pook-1.0.0/PKG-INFO 2020-03-19 00:15:30.000000000 +0100 +++ new/pook-1.0.2/PKG-INFO 2021-09-10 16:38:20.000000000 +0200 @@ -1,6 +1,6 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.1 Name: pook -Version: 1.0.0 +Version: 1.0.2 Summary: HTTP traffic mocking and expectations made easy Home-page: https://github.com/h2non/pook Author: Tomas Aparicio @@ -335,8 +335,24 @@ - History - ======= + v1.0.2 / 2021-09-10 + =================== + + * fix(urllib3): interceptor is never really disabled (#68) + * Closes #75 Re consider @fluent decorator (#76) + * fix(#69): use match keyword in pytest.raises + * fix(History): invalid rst syntax + + v1.0.1 / 2020-03-24 + ------------------- + + * fix(aiohttp): compatible with non aiohttp projects (#67) + * feat(History): add release changes + + v1.0.0 / 2020-03-18 + ------------------- + + * fix(aiohttp): use latest version, allow Python 3.5+ for async http client v0.2.8 / 2019-10-31 ------------------- @@ -518,3 +534,4 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy +Description-Content-Type: text/x-rst diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/pook/__init__.py new/pook-1.0.2/pook/__init__.py --- old/pook-1.0.0/pook/__init__.py 2020-03-19 00:12:59.000000000 +0100 +++ new/pook-1.0.2/pook/__init__.py 2021-09-10 16:36:03.000000000 +0200 @@ -9,4 +9,4 @@ __license__ = 'MIT' # Current version -__version__ = '1.0.0' +__version__ = '1.0.2' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/pook/decorators.py new/pook-1.0.2/pook/decorators.py --- old/pook-1.0.0/pook/decorators.py 2019-10-22 21:14:17.000000000 +0200 +++ new/pook-1.0.2/pook/decorators.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,17 +0,0 @@ -import functools - - -def fluent(fn): - """ - Simple function decorator allowing easy method chaining. - - Arguments: - fn (function): target function to decorate. - """ - @functools.wraps(fn) - def wrapper(self, *args, **kw): - # Trigger method proxy - result = fn(self, *args, **kw) - # Return self instance or method result - return self if result is None else result - return wrapper diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/pook/interceptors/__init__.py new/pook-1.0.2/pook/interceptors/__init__.py --- old/pook-1.0.0/pook/interceptors/__init__.py 2020-03-19 00:12:59.000000000 +0100 +++ new/pook-1.0.2/pook/interceptors/__init__.py 2020-03-24 14:22:40.000000000 +0100 @@ -20,8 +20,12 @@ # Import aiohttp in modern Python runtimes if sys.version_info >= (3, 5, 0): - from .aiohttp import AIOHTTPInterceptor - interceptors.append(AIOHTTPInterceptor) + try: + import aiohttp # noqa + from .aiohttp import AIOHTTPInterceptor + interceptors.append(AIOHTTPInterceptor) + except ImportError: + pass def add(*custom_interceptors): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/pook/interceptors/urllib3.py new/pook-1.0.2/pook/interceptors/urllib3.py --- old/pook-1.0.0/pook/interceptors/urllib3.py 2020-03-19 00:12:59.000000000 +0100 +++ new/pook-1.0.2/pook/interceptors/urllib3.py 2021-09-10 16:31:11.000000000 +0200 @@ -223,4 +223,5 @@ Disables the traffic interceptor. This method must be implemented by any interceptor. """ - [patch.stop() for patch in self.patchers] + patchers_reversed = self.patchers[::-1] + [patch.stop() for patch in patchers_reversed] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/pook/mock.py new/pook-1.0.2/pook/mock.py --- old/pook-1.0.0/pook/mock.py 2019-10-22 21:14:17.000000000 +0200 +++ new/pook-1.0.2/pook/mock.py 2021-09-10 16:31:11.000000000 +0200 @@ -3,7 +3,6 @@ from furl import furl from inspect import isfunction, ismethod -from .decorators import fluent from .response import Response from .constants import TYPES from .request import Request @@ -134,7 +133,6 @@ if request: _trigger_request(self, request) - @fluent def url(self, url): """ Defines the mock URL to match. @@ -150,8 +148,8 @@ """ self._request.url = url self.add_matcher(matcher('URLMatcher', url)) + return self - @fluent def method(self, method): """ Defines the HTTP method to match. @@ -165,8 +163,8 @@ """ self._request.method = method self.add_matcher(matcher('MethodMatcher', method)) + return self - @fluent def path(self, path): """ Defines a URL path to match. @@ -183,8 +181,8 @@ url.path = path self._request.url = url.url self.add_matcher(matcher('PathMatcher', path)) + return self - @fluent def header(self, name, value): """ Defines a URL path to match. @@ -200,8 +198,8 @@ headers = {name: value} self._request.headers = headers self.add_matcher(matcher('HeadersMatcher', headers)) + return self - @fluent def headers(self, headers=None, **kw): """ Defines a dictionary of arguments. @@ -218,8 +216,8 @@ headers = kw if kw else headers self._request.headers = headers self.add_matcher(matcher('HeadersMatcher', headers)) + return self - @fluent def header_present(self, *names): """ Defines a new header matcher expectation that must be present in the @@ -242,8 +240,8 @@ for name in names: headers = {name: re.compile('(.*)')} self.add_matcher(matcher('HeadersMatcher', headers)) + return self - @fluent def headers_present(self, headers): """ Defines a list of headers that must be present in the @@ -265,8 +263,8 @@ """ headers = {name: re.compile('(.*)') for name in headers} self.add_matcher(matcher('HeadersMatcher', headers)) + return self - @fluent def type(self, value): """ Defines the request ``Content-Type`` header to match. @@ -289,8 +287,8 @@ self: current Mock instance. """ self.content(value) + return self - @fluent def content(self, value): """ Defines the ``Content-Type`` outgoing header value to match. @@ -315,8 +313,8 @@ header = {'Content-Type': TYPES.get(value, value)} self._request.headers = header self.add_matcher(matcher('HeadersMatcher', header)) + return self - @fluent def param(self, name, value): """ Defines an URL param key and value to match. @@ -329,8 +327,8 @@ self: current Mock instance. """ self.params({name: value}) + return self - @fluent def param_exists(self, name): """ Checks if a given URL param name is present in the URL. @@ -342,8 +340,8 @@ self: current Mock instance. """ self.params({name: re.compile('(.*)')}) + return self - @fluent def params(self, params): """ Defines a set of URL query params to match. @@ -358,8 +356,8 @@ url = url.add(params) self._request.url = url.url self.add_matcher(matcher('QueryMatcher', params)) + return self - @fluent def body(self, body): """ Defines the body data to match. @@ -374,8 +372,8 @@ """ self._request.body = body self.add_matcher(matcher('BodyMatcher', body)) + return self - @fluent def json(self, json): """ Defines the JSON body to match. @@ -392,8 +390,8 @@ """ self._request.json = json self.add_matcher(matcher('JSONMatcher', json)) + return self - @fluent def jsonschema(self, schema): """ Defines a JSONSchema representation to be used for body matching. @@ -405,8 +403,8 @@ self: current Mock instance. """ self.add_matcher(matcher('JSONSchemaMatcher', schema)) + return self - @fluent def xml(self, xml): """ Defines a XML body value to match. @@ -419,8 +417,8 @@ """ self._request.xml = xml self.add_matcher(matcher('XMLMatcher', xml)) + return self - @fluent def file(self, path): """ Reads the body to match from a disk file. @@ -433,8 +431,8 @@ """ with open(path, 'r') as f: self.body(str(f.read())) + return self - @fluent def add_matcher(self, matcher): """ Adds one or multiple custom matchers instances. @@ -454,8 +452,8 @@ self: current Mock instance. """ self.matchers.add(matcher) + return self - @fluent def use(self, *matchers): """ Adds one or multiple custom matchers instances. @@ -475,8 +473,8 @@ self: current Mock instance. """ [self.add_matcher(matcher) for matcher in matchers] + return self - @fluent def times(self, times=1): """ Defines the TTL limit for the current mock. @@ -491,8 +489,8 @@ self: current Mock instance. """ self._times = times + return self - @fluent def persist(self, status=None): """ Enables persistent mode for the current mock. @@ -501,8 +499,8 @@ self: current Mock instance. """ self._persist = status if type(status) is bool else True + return self - @fluent def filter(self, *filters): """ Registers one o multiple request filters used during the matching @@ -515,8 +513,8 @@ self: current Mock instance. """ _append_funcs(self.filters, filters) + return self - @fluent def map(self, *mappers): """ Registers one o multiple request mappers used during the mapping @@ -529,8 +527,8 @@ self: current Mock instance. """ _append_funcs(self.mappers, mappers) + return self - @fluent def callback(self, *callbacks): """ Registers one or multiple callback that will be called every time the @@ -543,8 +541,8 @@ self: current Mock instance. """ _append_funcs(self.callbacks, callbacks) + return self - @fluent def delay(self, delay=1000): """ Delay network response with certain milliseconds. @@ -557,8 +555,8 @@ self: current Mock instance. """ self._delay = int(delay) + return self - @fluent def error(self, error): """ Defines a simulated exception error that will be raised. @@ -570,6 +568,7 @@ self: current Mock instance. """ self._error = RuntimeError(error) if isinstance(error, str) else error + return self def reply(self, status=200, new_response=False, **kw): """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/pook/response.py new/pook-1.0.2/pook/response.py --- old/pook-1.0.0/pook/response.py 2020-03-19 00:12:59.000000000 +0100 +++ new/pook-1.0.2/pook/response.py 2021-09-10 16:31:11.000000000 +0200 @@ -1,5 +1,4 @@ import json -from .decorators import fluent from .headers import HTTPHeaderDict from .helpers import trigger_methods from .constants import TYPES @@ -33,7 +32,6 @@ # Trigger response method based on input arguments trigger_methods(self, kw) - @fluent def status(self, code=200): """ Defines the response status code. @@ -45,8 +43,8 @@ self: ``pook.Response`` current instance. """ self._status = int(code) + return self - @fluent def header(self, key, value): """ Defines a new response header. @@ -64,8 +62,8 @@ headers = {key: value} self._headers.extend(headers) + return self - @fluent def headers(self, headers): """ Defines a new response header. @@ -79,8 +77,8 @@ self: ``pook.Response`` current instance. """ self._headers.extend(headers) + return self - @fluent def set(self, header, value): """ Defines a new response header. @@ -94,8 +92,8 @@ self: ``pook.Response`` current instance. """ self._headers[header] = value + return self - @fluent def type(self, name): """ Defines the response ``Content-Type`` header. @@ -119,8 +117,8 @@ self: ``pook.Response`` current instance. """ self.content(name) + return self - @fluent def content(self, name): """ Defines the response ``Content-Type`` header. @@ -143,8 +141,8 @@ self: ``pook.Response`` current instance. """ self._headers['Content-Type'] = TYPES.get(name, name) + return self - @fluent def body(self, body, chunked=False): """ Defines response body data. @@ -163,8 +161,8 @@ if chunked: self.header('Transfer-Encoding', 'chunked') + return self - @fluent def json(self, data): """ Defines the mock response JSON body. @@ -179,8 +177,8 @@ if not isinstance(data, str): data = json.dumps(data, indent=4) self._body = data + return self - @fluent def xml(self, xml): """ Defines the mock response XML body. @@ -194,8 +192,8 @@ self: ``pook.Response`` current instance. """ self.body(xml) + return self - @fluent def file(self, path): """ Defines the response body from file contents. @@ -207,7 +205,8 @@ self: ``pook.Response`` current instance. """ with open(path, 'r') as f: - self.body = str(f.read()) + self._body = str(f.read()) + return self @property def mock(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/pook.egg-info/PKG-INFO new/pook-1.0.2/pook.egg-info/PKG-INFO --- old/pook-1.0.0/pook.egg-info/PKG-INFO 2020-03-19 00:15:29.000000000 +0100 +++ new/pook-1.0.2/pook.egg-info/PKG-INFO 2021-09-10 16:38:20.000000000 +0200 @@ -1,6 +1,6 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.1 Name: pook -Version: 1.0.0 +Version: 1.0.2 Summary: HTTP traffic mocking and expectations made easy Home-page: https://github.com/h2non/pook Author: Tomas Aparicio @@ -335,8 +335,24 @@ - History - ======= + v1.0.2 / 2021-09-10 + =================== + + * fix(urllib3): interceptor is never really disabled (#68) + * Closes #75 Re consider @fluent decorator (#76) + * fix(#69): use match keyword in pytest.raises + * fix(History): invalid rst syntax + + v1.0.1 / 2020-03-24 + ------------------- + + * fix(aiohttp): compatible with non aiohttp projects (#67) + * feat(History): add release changes + + v1.0.0 / 2020-03-18 + ------------------- + + * fix(aiohttp): use latest version, allow Python 3.5+ for async http client v0.2.8 / 2019-10-31 ------------------- @@ -518,3 +534,4 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy +Description-Content-Type: text/x-rst diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/pook.egg-info/SOURCES.txt new/pook-1.0.2/pook.egg-info/SOURCES.txt --- old/pook-1.0.0/pook.egg-info/SOURCES.txt 2020-03-19 00:15:29.000000000 +0100 +++ new/pook-1.0.2/pook.egg-info/SOURCES.txt 2021-09-10 16:38:20.000000000 +0200 @@ -11,7 +11,6 @@ pook/assertion.py pook/compare.py pook/constants.py -pook/decorators.py pook/engine.py pook/exceptions.py pook/headers.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/setup.py new/pook-1.0.2/setup.py --- old/pook-1.0.0/setup.py 2020-03-19 00:13:14.000000000 +0100 +++ new/pook-1.0.2/setup.py 2020-03-24 14:34:46.000000000 +0100 @@ -72,6 +72,7 @@ url='https://github.com/h2non/pook', license='MIT', long_description=readme + '\n\n' + history, + long_description_content_type='text/x-rst', py_modules=['pook'], zip_safe=False, install_requires=install_requires, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/tests/unit/interceptors/urllib3_test.py new/pook-1.0.2/tests/unit/interceptors/urllib3_test.py --- old/pook-1.0.0/tests/unit/interceptors/urllib3_test.py 2020-03-19 00:12:59.000000000 +0100 +++ new/pook-1.0.2/tests/unit/interceptors/urllib3_test.py 2021-09-10 16:31:11.000000000 +0200 @@ -39,3 +39,13 @@ def test_chunked_response_contains_newline(): assert_chunked_response('newline\r\n', ['newline\r\n']) + + +def test_activate_disable(): + original = urllib3.connectionpool.HTTPConnectionPool.urlopen + + interceptor = pook.interceptors.Urllib3Interceptor(pook.MockEngine) + interceptor.activate() + interceptor.disable() + + assert urllib3.connectionpool.HTTPConnectionPool.urlopen == original diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pook-1.0.0/tests/unit/matchers/base_test.py new/pook-1.0.2/tests/unit/matchers/base_test.py --- old/pook-1.0.0/tests/unit/matchers/base_test.py 2019-10-22 21:14:17.000000000 +0200 +++ new/pook-1.0.2/tests/unit/matchers/base_test.py 2021-09-10 16:31:11.000000000 +0200 @@ -33,7 +33,7 @@ assert _BaseMatcher('foo').match(None) is None with pytest.raises(ValueError, - message='expectation argument cannot be empty'): + match='expectation argument cannot be empty'): _BaseMatcher(None)