Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-apiron for openSUSE:Factory checked in at 2022-12-20 20:21:08 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-apiron (Old) and /work/SRC/openSUSE:Factory/.python-apiron.new.1835 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-apiron" Tue Dec 20 20:21:08 2022 rev:5 rq:1043910 version:7.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-apiron/python-apiron.changes 2022-01-03 10:50:45.543611227 +0100 +++ /work/SRC/openSUSE:Factory/.python-apiron.new.1835/python-apiron.changes 2022-12-20 20:21:50.530323821 +0100 @@ -1,0 +2,9 @@ +Mon Dec 19 21:25:05 UTC 2022 - Axel Braun <axel.br...@gmx.de> + +- version 7.0.0 + * Fixed: Ensure py.typed files end up in binary wheel distribution, which may break type checking for consumers + * Added: + Run tests against Python 3.11 + Stop ignoring imports during type checking + +------------------------------------------------------------------- Old: ---- apiron-6.1.0.tar.gz New: ---- apiron-7.0.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-apiron.spec ++++++ --- /var/tmp/diff_new_pack.FNvyJZ/_old 2022-12-20 20:21:51.014326473 +0100 +++ /var/tmp/diff_new_pack.FNvyJZ/_new 2022-12-20 20:21:51.018326495 +0100 @@ -22,18 +22,18 @@ %define skip_python36 1 %define modname apiron Name: python-%{modname} -Version: 6.1.0 +Version: 7.0.0 Release: 0 Summary: Apiron helps you cook a tasty client for RESTful APIs License: MIT URL: https://github.com/ithaka/apiron Source: https://files.pythonhosted.org/packages/source/a/apiron/%{modname}-%{version}.tar.gz -BuildRequires: python-rpm-macros BuildRequires: %{python_module pytest-cov} BuildRequires: %{python_module pytest} BuildRequires: %{python_module requests >= 2.11.1} BuildRequires: %{python_module setuptools} BuildRequires: fdupes +BuildRequires: python-rpm-macros Requires: python-requests >= 2.11.1 BuildArch: noarch %python_subpackages ++++++ apiron-6.1.0.tar.gz -> apiron-7.0.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apiron-6.1.0/LICENSE new/apiron-7.0.0/LICENSE --- old/apiron-6.1.0/LICENSE 2021-12-22 18:00:44.000000000 +0100 +++ new/apiron-7.0.0/LICENSE 2022-12-08 00:32:05.000000000 +0100 @@ -1,4 +1,4 @@ -Copyright 2018-2021 Ithaka Harbors, Inc. +Copyright 2018-2022 Ithaka Harbors, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apiron-6.1.0/PKG-INFO new/apiron-7.0.0/PKG-INFO --- old/apiron-6.1.0/PKG-INFO 2021-12-22 18:00:57.761685100 +0100 +++ new/apiron-7.0.0/PKG-INFO 2022-12-08 00:32:14.067115500 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: apiron -Version: 6.1.0 +Version: 7.0.0 Summary: apiron helps you cook a tasty client for RESTful APIs. Just don't wash it with SOAP. Home-page: https://github.com/ithaka/apiron Author: Ithaka Harbors, Inc. @@ -9,7 +9,6 @@ Project-URL: Documentation, https://apiron.readthedocs.io Project-URL: Source, https://github.com/ithaka/apiron Project-URL: Tracker, https://github.com/ithaka/apiron/issues -Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Topic :: Internet :: WWW/HTTP @@ -19,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only Classifier: License :: OSI Approved :: MIT License @@ -91,6 +91,4 @@ This package is available under the MIT license. For more information, [view the full license and copyright notice](./LICENSE). -Copyright 2018-2021 Ithaka Harbors, Inc. - - +Copyright 2018-2022 Ithaka Harbors, Inc. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apiron-6.1.0/README.md new/apiron-7.0.0/README.md --- old/apiron-6.1.0/README.md 2021-12-22 18:00:44.000000000 +0100 +++ new/apiron-7.0.0/README.md 2022-12-08 00:32:05.000000000 +0100 @@ -63,4 +63,4 @@ This package is available under the MIT license. For more information, [view the full license and copyright notice](./LICENSE). -Copyright 2018-2021 Ithaka Harbors, Inc. +Copyright 2018-2022 Ithaka Harbors, Inc. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apiron-6.1.0/pyproject.toml new/apiron-7.0.0/pyproject.toml --- old/apiron-6.1.0/pyproject.toml 2021-12-22 18:00:44.000000000 +0100 +++ new/apiron-7.0.0/pyproject.toml 2022-12-08 00:32:05.000000000 +0100 @@ -4,4 +4,4 @@ [tool.black] line-length = 120 -target-version = ['py37', 'py38'] +target-version = ['py37', 'py38', 'py39', 'py310', 'py311'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apiron-6.1.0/setup.cfg new/apiron-7.0.0/setup.cfg --- old/apiron-6.1.0/setup.cfg 2021-12-22 18:00:57.761685100 +0100 +++ new/apiron-7.0.0/setup.cfg 2022-12-08 00:32:14.067115500 +0100 @@ -1,12 +1,12 @@ [metadata] name = apiron -version = 6.1.0 +version = 7.0.0 description = apiron helps you cook a tasty client for RESTful APIs. Just don't wash it with SOAP. author = Ithaka Harbors, Inc. author_email = opensou...@ithaka.org url = https://github.com/ithaka/apiron license = MIT -license_file = LICENSE +license_files = LICENSE long_description = file: README.md long_description_content_type = text/markdown project_urls = @@ -23,6 +23,7 @@ Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 + Programming Language :: Python :: 3.11 Programming Language :: Python :: 3 Programming Language :: Python :: 3 :: Only License :: OSI Approved :: MIT License @@ -30,8 +31,10 @@ [options] package_dir = =src packages = find: +include_package_data = True install_requires = requests>=2.11.1,<3 + urllib3>=1.26.13,<2 [options.packages.find] where = src @@ -45,6 +48,14 @@ sphinx-autodoc-typehints>=1.12.0,<2 sphinx-autobuild>=2021.3.14 +[mypy] +python_version = 3.7 +warn_unused_configs = True +show_error_context = True +pretty = True +namespace_packages = True +check_untyped_defs = True + [coverage:run] branch = True source = apiron @@ -57,13 +68,18 @@ show_missing = True skip_covered = True +[coverage:paths] +source = + src + .tox/*/site-packages + [tool:pytest] testpaths = tests addopts = -ra --strict-markers --cov xfail_strict = True [tox:tox] -envlist = py37,py38,py39,py310 +envlist = py37,py38,py39,py310,py311 isolated_build = True [testenv] @@ -91,10 +107,14 @@ [testenv:typecheck] deps = + {[testenv]deps} mypy + typing_extensions types-requests commands = - mypy --ignore-missing-imports {posargs:src tests} + mypy {posargs:src tests} +passenv = + TERM [egg_info] tag_build = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apiron-6.1.0/src/apiron/client.py new/apiron-7.0.0/src/apiron/client.py --- old/apiron-6.1.0/src/apiron/client.py 2021-12-22 18:00:44.000000000 +0100 +++ new/apiron-7.0.0/src/apiron/client.py 2022-12-08 00:32:05.000000000 +0100 @@ -7,7 +7,7 @@ import requests from requests import adapters -from requests.packages.urllib3.util import retry +from urllib3.util import retry if TYPE_CHECKING: import apiron # pragma: no cover diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apiron-6.1.0/src/apiron/endpoint/endpoint.py new/apiron-7.0.0/src/apiron/endpoint/endpoint.py --- old/apiron-6.1.0/src/apiron/endpoint/endpoint.py 2021-12-22 18:00:44.000000000 +0100 +++ new/apiron-7.0.0/src/apiron/endpoint/endpoint.py 2022-12-08 00:32:05.000000000 +0100 @@ -1,8 +1,22 @@ +from __future__ import annotations + import logging import string +import sys import warnings from functools import partial, update_wrapper -from typing import Any, Dict, Iterable, List, Union +from typing import Optional, Any, Callable, Dict, Iterable, List, TypeVar, Union, TYPE_CHECKING + +if TYPE_CHECKING: + if sys.version_info >= (3, 10): + from typing import Concatenate, ParamSpec + else: + from typing_extensions import Concatenate, ParamSpec + + from apiron.service import Service + + P = ParamSpec("P") + R = TypeVar("R") import requests @@ -13,13 +27,21 @@ LOGGER = logging.getLogger(__name__) +def _create_caller( + call_fn: Callable["Concatenate[Service, Endpoint, P]", "R"], + instance: Any, + owner: Any, +) -> Callable["P", "R"]: + return partial(call_fn, instance, owner) + + class Endpoint: """ A basic service endpoint that responds with the default ``Content-Type`` for that endpoint """ def __get__(self, instance, owner): - caller = partial(client.call, owner, self) + caller = _create_caller(client.call, owner, self) update_wrapper(caller, client.call) return caller @@ -30,8 +52,8 @@ self, path: str = "/", default_method: str = "GET", - default_params: Dict[str, Any] = None, - required_params: Iterable[str] = None, + default_params: Optional[Dict[str, Any]] = None, + required_params: Optional[Iterable[str]] = None, return_raw_response_object: bool = False, ): """ @@ -149,7 +171,7 @@ self._check_for_empty_params(params) self._check_for_unfulfilled_params(params) - def get_merged_params(self, supplied_params: Dict[str, Any] = None) -> Dict[str, Any]: + def get_merged_params(self, supplied_params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]: """ Merge this endpoint's default parameters with the supplied parameters diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apiron-6.1.0/src/apiron/endpoint/stub.py new/apiron-7.0.0/src/apiron/endpoint/stub.py --- old/apiron-6.1.0/src/apiron/endpoint/stub.py 2021-12-22 18:00:44.000000000 +0100 +++ new/apiron-7.0.0/src/apiron/endpoint/stub.py 2022-12-08 00:32:05.000000000 +0100 @@ -1,4 +1,4 @@ -from typing import Any +from typing import Optional, Any from apiron.endpoint import Endpoint @@ -14,7 +14,7 @@ def __get__(self, instance, owner): return self.stub_response - def __init__(self, stub_response: Any = None, **kwargs): + def __init__(self, stub_response: Optional[Any] = None, **kwargs): """ :param stub_response: A pre-baked response or response-determining function. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apiron-6.1.0/src/apiron.egg-info/PKG-INFO new/apiron-7.0.0/src/apiron.egg-info/PKG-INFO --- old/apiron-6.1.0/src/apiron.egg-info/PKG-INFO 2021-12-22 18:00:57.000000000 +0100 +++ new/apiron-7.0.0/src/apiron.egg-info/PKG-INFO 2022-12-08 00:32:14.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: apiron -Version: 6.1.0 +Version: 7.0.0 Summary: apiron helps you cook a tasty client for RESTful APIs. Just don't wash it with SOAP. Home-page: https://github.com/ithaka/apiron Author: Ithaka Harbors, Inc. @@ -9,7 +9,6 @@ Project-URL: Documentation, https://apiron.readthedocs.io Project-URL: Source, https://github.com/ithaka/apiron Project-URL: Tracker, https://github.com/ithaka/apiron/issues -Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Topic :: Internet :: WWW/HTTP @@ -19,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only Classifier: License :: OSI Approved :: MIT License @@ -91,6 +91,4 @@ This package is available under the MIT license. For more information, [view the full license and copyright notice](./LICENSE). -Copyright 2018-2021 Ithaka Harbors, Inc. - - +Copyright 2018-2022 Ithaka Harbors, Inc. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apiron-6.1.0/src/apiron.egg-info/requires.txt new/apiron-7.0.0/src/apiron.egg-info/requires.txt --- old/apiron-6.1.0/src/apiron.egg-info/requires.txt 2021-12-22 18:00:57.000000000 +0100 +++ new/apiron-7.0.0/src/apiron.egg-info/requires.txt 2022-12-08 00:32:14.000000000 +0100 @@ -1,4 +1,5 @@ requests<3,>=2.11.1 +urllib3<2,>=1.26.13 [docs] importlib-metadata<5,>=4.5.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apiron-6.1.0/tests/test_client.py new/apiron-7.0.0/tests/test_client.py --- old/apiron-6.1.0/tests/test_client.py 2021-12-22 18:00:44.000000000 +0100 +++ new/apiron-7.0.0/tests/test_client.py 2022-12-08 00:32:05.000000000 +0100 @@ -1,4 +1,3 @@ -import io from unittest import mock import pytest @@ -62,8 +61,8 @@ params = {"baz": "qux"} mock_endpoint.get_merged_params.return_value = params - data = "I am a data" - files = {"file_name": io.BytesIO(b"this is a test")} + data = {"data": "I am a data"} + files = {"file_name": "this is a test"} json = {"raw": "data"} headers = {"Accept": "stuff"} cookies = {"chocolate-chip": "yes"} @@ -240,7 +239,7 @@ service.get_hosts.return_value = [] with pytest.raises(NoHostsAvailableException): - client._build_request_object(None, service, None) + client._build_request_object(mock.Mock(), service, mock.Mock()) def test_choose_host_returns_one_of_the_available_hosts():