Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-aiosmtplib for openSUSE:Factory checked in at 2023-06-21 22:39:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-aiosmtplib (Old) and /work/SRC/openSUSE:Factory/.python-aiosmtplib.new.15902 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-aiosmtplib" Wed Jun 21 22:39:00 2023 rev:10 rq:1094128 version:2.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-aiosmtplib/python-aiosmtplib.changes 2023-02-10 14:36:17.250267284 +0100 +++ /work/SRC/openSUSE:Factory/.python-aiosmtplib.new.15902/python-aiosmtplib.changes 2023-06-21 22:39:48.086350327 +0200 @@ -1,0 +2,8 @@ +Tue Jun 20 16:49:38 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 2.0.2: + * Bugfix: don't send extra EHLO/HELO before QUIT + * Change: added SMTPConnectionResponseError for invalid + response on connect only + +------------------------------------------------------------------- Old: ---- aiosmtplib-2.0.1.tar.gz New: ---- aiosmtplib-2.0.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-aiosmtplib.spec ++++++ --- /var/tmp/diff_new_pack.fWh9fO/_old 2023-06-21 22:39:48.594353383 +0200 +++ /var/tmp/diff_new_pack.fWh9fO/_new 2023-06-21 22:39:48.598353406 +0200 @@ -20,7 +20,7 @@ %define skip_python2 1 %define skip_python36 1 Name: python-aiosmtplib -Version: 2.0.1 +Version: 2.0.2 Release: 0 Summary: Python asyncio SMTP client License: MIT ++++++ aiosmtplib-2.0.1.tar.gz -> aiosmtplib-2.0.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiosmtplib-2.0.1/CHANGELOG.rst new/aiosmtplib-2.0.2/CHANGELOG.rst --- old/aiosmtplib-2.0.1/CHANGELOG.rst 2023-01-07 19:55:21.944431000 +0100 +++ new/aiosmtplib-2.0.2/CHANGELOG.rst 2023-06-03 21:44:59.071944200 +0200 @@ -1,6 +1,13 @@ Changelog ========= +2.0.2 +----- + +- Bugfix: don't send extra EHLO/HELO before QUIT (credit @ikrivosheev) +- Change: added SMTPConnectionResponseError for invalid response on + connect only (credit @ikrivosheev) + 2.0.1 ----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiosmtplib-2.0.1/PKG-INFO new/aiosmtplib-2.0.2/PKG-INFO --- old/aiosmtplib-2.0.1/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 +++ new/aiosmtplib-2.0.2/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: aiosmtplib -Version: 2.0.1 +Version: 2.0.2 Summary: asyncio SMTP client Home-page: https://github.com/cole/aiosmtplib License: MIT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiosmtplib-2.0.1/aiosmtplib/__init__.py new/aiosmtplib-2.0.2/aiosmtplib/__init__.py --- old/aiosmtplib-2.0.1/aiosmtplib/__init__.py 2023-01-07 19:55:21.944431000 +0100 +++ new/aiosmtplib-2.0.2/aiosmtplib/__init__.py 2023-06-03 21:44:59.071944200 +0200 @@ -25,6 +25,7 @@ SMTPSenderRefused, SMTPServerDisconnected, SMTPTimeoutError, + SMTPConnectResponseError, ) from .response import SMTPResponse from .smtp import SMTP @@ -32,7 +33,7 @@ __title__ = "aiosmtplib" -__version__ = "2.0.1" +__version__ = "2.0.2" __author__ = "Cole Maclean" __license__ = "MIT" __copyright__ = "Copyright 2022 Cole Maclean" @@ -55,4 +56,5 @@ "SMTPTimeoutError", "SMTPConnectTimeoutError", "SMTPReadTimeoutError", + "SMTPConnectResponseError", ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiosmtplib-2.0.1/aiosmtplib/errors.py new/aiosmtplib-2.0.2/aiosmtplib/errors.py --- old/aiosmtplib-2.0.1/aiosmtplib/errors.py 2023-01-07 19:55:21.944431000 +0100 +++ new/aiosmtplib-2.0.2/aiosmtplib/errors.py 2023-06-03 21:44:59.071944200 +0200 @@ -17,6 +17,7 @@ "SMTPTimeoutError", "SMTPConnectTimeoutError", "SMTPReadTimeoutError", + "SMTPConnectResponseError", ) @@ -78,6 +79,12 @@ self.args = (code, message) +class SMTPConnectResponseError(SMTPResponseException, SMTPConnectError): + """ + The SMTP server returned an invalid response code after connecting. + """ + + class SMTPHeloError(SMTPResponseException): """ Server refused HELO or EHLO. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiosmtplib-2.0.1/aiosmtplib/smtp.py new/aiosmtplib-2.0.2/aiosmtplib/smtp.py --- old/aiosmtplib-2.0.1/aiosmtplib/smtp.py 2023-01-07 19:55:21.944431000 +0100 +++ new/aiosmtplib-2.0.2/aiosmtplib/smtp.py 2023-06-03 21:44:59.071944200 +0200 @@ -31,6 +31,7 @@ SMTPSenderRefused, SMTPServerDisconnected, SMTPTimeoutError, + SMTPConnectResponseError, ) from .esmtp import parse_esmtp_extensions from .protocol import SMTPProtocol @@ -521,7 +522,7 @@ ) from exc if response.code != SMTPStatus.ready: - raise SMTPConnectError(str(response)) + raise SMTPConnectResponseError(response.code, response.message) return response @@ -793,9 +794,6 @@ :raises SMTPResponseException: on unexpected server response code """ - # Can't quit without HELO/EHLO - await self._ehlo_or_helo_if_needed() - response = await self.execute_command(b"QUIT", timeout=timeout) if response.code != SMTPStatus.closing: raise SMTPResponseException(response.code, response.message) @@ -1055,8 +1053,10 @@ method_name = f'auth_{auth_name.replace("-", "")}' try: auth_method = getattr(self, method_name) - except AttributeError: - raise RuntimeError(f"Missing handler for auth method {auth_name}") + except AttributeError as err: + raise RuntimeError( + f"Missing handler for auth method {auth_name}" + ) from err try: response = await auth_method(username, password, timeout=timeout) except SMTPAuthenticationError as exc: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiosmtplib-2.0.1/pyproject.toml new/aiosmtplib-2.0.2/pyproject.toml --- old/aiosmtplib-2.0.1/pyproject.toml 2023-01-07 19:55:21.944431000 +0100 +++ new/aiosmtplib-2.0.2/pyproject.toml 2023-06-03 21:44:59.071944200 +0200 @@ -4,7 +4,7 @@ [tool.poetry] name = "aiosmtplib" -version = "2.0.1" +version = "2.0.2" description = "asyncio SMTP client" authors = ["Cole Maclean <h...@colemaclean.dev>"] license = "MIT" @@ -78,6 +78,12 @@ bandit = "^1.7.4" safety = "^2.3.1" +[tool.poetry.group.lint] +optional = true + +[tool.poetry.group.lint.dependencies] +ruff = "^0.0.244" + [tool.pytest.ini_options] asyncio_mode = "strict" minversion = "6.0" @@ -87,11 +93,15 @@ "tests" ] -[tool.isort] -profile = "black" -lines_after_imports = 2 -default_section = "THIRDPARTY" -known_first_party = [ "aiosmtplib" ] +[tool.ruff] +# Enable flake8-bugbear (`B`) rules. +select = ["E", "F", "B"] +# Never enforce `E501` (line length violations). +ignore = ["E501"] +# Avoid trying to fix flake8-bugbear (`B`) violations. +unfixable = ["B"] +line-length = 88 +target-version = "py37" [tool.coverage] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiosmtplib-2.0.1/setup.py new/aiosmtplib-2.0.2/setup.py --- old/aiosmtplib-2.0.1/setup.py 1970-01-01 01:00:00.000000000 +0100 +++ new/aiosmtplib-2.0.2/setup.py 1970-01-01 01:00:00.000000000 +0100 @@ -21,7 +21,7 @@ setup_kwargs = { 'name': 'aiosmtplib', - 'version': '2.0.1', + 'version': '2.0.2', 'description': 'asyncio SMTP client', 'long_description': 'aiosmtplib\n==========\n\n|circleci| |precommit.ci| |codecov| |pypi-version| |pypi-status| |downloads| |pypi-python-versions|\n|pypi-license|\n\n------------\n\naiosmtplib is an asynchronous SMTP client for use with asyncio.\n\nFor documentation, see `Read The Docs`_.\n\nQuickstart\n----------\n\n.. code-block:: python\n\n import asyncio\n from email.message import EmailMessage\n\n import aiosmtplib\n\n message = EmailMessage()\n message["From"] = "root@localhost"\n message["To"] = "someb...@example.com"\n message["Subject"] = "Hello World!"\n message.set_content("Sent via aiosmtplib")\n\n asyncio.run(aiosmtplib.send(message, hostname="127.0.0.1", port=25))\n\n\nRequirements\n------------\nPython 3.7+, compiled with SSL support, is required.\n\n\nBug Reporting\n-------------\nBug reports (and feature requests) are welcome via `Github issues`_.\n\n\n\n.. |circleci| image:: https://circleci.com/gh/cole/aiosmtplib/tree/main.svg?style= shield\n :target: https://circleci.com/gh/cole/aiosmtplib/tree/main\n :alt: "aiosmtplib CircleCI build status"\n.. |pypi-version| image:: https://img.shields.io/pypi/v/aiosmtplib.svg\n :target: https://pypi.python.org/pypi/aiosmtplib\n :alt: "aiosmtplib on the Python Package Index"\n.. |pypi-python-versions| image:: https://img.shields.io/pypi/pyversions/aiosmtplib.svg\n.. |pypi-status| image:: https://img.shields.io/pypi/status/aiosmtplib.svg\n.. |pypi-license| image:: https://img.shields.io/pypi/l/aiosmtplib.svg\n.. |codecov| image:: https://codecov.io/gh/cole/aiosmtplib/branch/main/graph/badge.svg\n :target: https://codecov.io/gh/cole/aiosmtplib\n.. |downloads| image:: https://pepy.tech/badge/aiosmtplib\n :target: https://pepy.tech/project/aiosmtplib\n :alt: "aiosmtplib on pypy.tech"\n.. |precommit.ci| image:: https://results.pre-commit.ci/badge/github/cole/aiosmtplib/main.svg\n :target: https://results.pre-commit.ci/latest/github/cole/aiosmtplib/main\n :alt: "pre-commit.ci status"\n.. _Read The Docs: https://aiosmtplib.readthedocs.io/en/stable/overview.html\n.. _Github issues: https://github.com/cole/aiosmtplib/issues\n', 'author': 'Cole Maclean', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiosmtplib-2.0.1/tests/auth.py new/aiosmtplib-2.0.2/tests/auth.py --- old/aiosmtplib-2.0.1/tests/auth.py 2023-01-07 19:55:21.944431000 +0100 +++ new/aiosmtplib-2.0.2/tests/auth.py 2023-06-03 21:44:59.071944200 +0200 @@ -6,7 +6,6 @@ class DummySMTPAuth(SMTP): - transport = None def __init__(self, *args: Any, **kwargs: Any): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiosmtplib-2.0.1/tests/conftest.py new/aiosmtplib-2.0.2/tests/conftest.py --- old/aiosmtplib-2.0.1/tests/conftest.py 2023-01-07 19:55:21.944431000 +0100 +++ new/aiosmtplib-2.0.2/tests/conftest.py 2023-06-03 21:44:59.071944200 +0200 @@ -399,9 +399,9 @@ @pytest.fixture(scope="session") -def smtpd_mock_response_done_then_close() -> Callable[ - [SMTPD], Coroutine[Any, Any, None] -]: +def smtpd_mock_response_done_then_close() -> ( + Callable[[SMTPD], Coroutine[Any, Any, None]] +): async def mock_response_done_then_close( smtpd: SMTPD, *args: Any, **kwargs: Any ) -> None: @@ -423,9 +423,9 @@ @pytest.fixture(scope="session") -def smtpd_mock_response_error_disconnect() -> Callable[ - [SMTPD], Coroutine[Any, Any, None] -]: +def smtpd_mock_response_error_disconnect() -> ( + Callable[[SMTPD], Coroutine[Any, Any, None]] +): async def mock_response_error_disconnect( smtpd: SMTPD, *args: Any, **kwargs: Any ) -> None: @@ -515,9 +515,9 @@ @pytest.fixture(scope="session") -def smtpd_mock_response_tls_not_available() -> Callable[ - [SMTPD], Coroutine[Any, Any, None] -]: +def smtpd_mock_response_tls_not_available() -> ( + Callable[[SMTPD], Coroutine[Any, Any, None]] +): async def mock_tls_not_available(smtpd: SMTPD, *args: Any, **kwargs: Any) -> None: await smtpd.push("454 please login") @@ -525,9 +525,9 @@ @pytest.fixture(scope="session") -def smtpd_mock_response_tls_ready_disconnect() -> Callable[ - [SMTPD], Coroutine[Any, Any, None] -]: +def smtpd_mock_response_tls_ready_disconnect() -> ( + Callable[[SMTPD], Coroutine[Any, Any, None]] +): async def mock_response_tls_ready_disconnect( smtpd: SMTPD, *args: Any, **kwargs: Any ) -> None: @@ -554,9 +554,9 @@ @pytest.fixture(scope="session") -def smtpd_mock_response_error_with_code_factory() -> Callable[ - [str], Callable[[SMTPD], Coroutine[Any, Any, None]] -]: +def smtpd_mock_response_error_with_code_factory() -> ( + Callable[[str], Callable[[SMTPD], Coroutine[Any, Any, None]]] +): def factory(error_code: str) -> Callable[[SMTPD], Coroutine[Any, Any, None]]: async def mock_error_response(smtpd: SMTPD, *args: Any, **kwargs: Any) -> None: await smtpd.push(f"{error_code} error") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiosmtplib-2.0.1/tests/test_commands.py new/aiosmtplib-2.0.2/tests/test_commands.py --- old/aiosmtplib-2.0.1/tests/test_commands.py 2023-01-07 19:55:21.948431000 +0100 +++ new/aiosmtplib-2.0.2/tests/test_commands.py 2023-06-03 21:44:59.071944200 +0200 @@ -198,7 +198,6 @@ smtpd_mock_response_unavailable: Callable, monkeypatch: pytest.MonkeyPatch, ) -> None: - monkeypatch.setattr(smtpd_class, "smtp_EHLO", smtpd_mock_response_unavailable) async with smtp_client: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiosmtplib-2.0.1/tests/test_connect.py new/aiosmtplib-2.0.2/tests/test_connect.py --- old/aiosmtplib-2.0.1/tests/test_connect.py 2023-01-07 19:55:21.948431000 +0100 +++ new/aiosmtplib-2.0.2/tests/test_connect.py 2023-06-03 21:44:59.071944200 +0200 @@ -279,7 +279,7 @@ ) -> None: with pytest.raises(ZeroDivisionError): async with smtp_client: - 1 / 0 + 1 / 0 # noqa assert received_commands[-1][0] == "QUIT"