Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-IMAPClient for 
openSUSE:Factory checked in at 2026-03-23 17:15:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-IMAPClient (Old)
 and      /work/SRC/openSUSE:Factory/.python-IMAPClient.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-IMAPClient"

Mon Mar 23 17:15:42 2026 rev:9 rq:1342020 version:3.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-IMAPClient/python-IMAPClient.changes      
2025-04-14 12:59:39.719473497 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-IMAPClient.new.8177/python-IMAPClient.changes
    2026-03-23 17:17:47.280702685 +0100
@@ -1,0 +2,16 @@
+Mon Mar 23 10:40:28 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 3.1.0:
+  * Simplify IMAP4_TLS class and fix Python 3.14+ compatibility
+  * Fix typo in man page: certifcate -> certificate
+  * Move man page to section 7
+  * update supported python versions in doc
+  * chore: add `setuptools` to `requirements-dev.txt`
+  * Don't assume capabilities have been cached when sending
+    literals
+  * Support Python 3.8 - 3.13
+  * feat: add popular special folder for SENT provided by qq mail
+  * Remove unused import in imapclient.tls
+  * Updates for 3.1.0
+
+-------------------------------------------------------------------

Old:
----
  3.0.1.tar.gz

New:
----
  3.1.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-IMAPClient.spec ++++++
--- /var/tmp/diff_new_pack.9uoNgi/_old  2026-03-23 17:17:47.780723421 +0100
+++ /var/tmp/diff_new_pack.9uoNgi/_new  2026-03-23 17:17:47.780723421 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-IMAPClient
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 # Copyright (c) 2016-2019 LISA GmbH, Bingen, Germany.
 #
 # All modifications and additions to the file contributed by third parties
@@ -18,7 +18,7 @@
 
 
 Name:           python-IMAPClient
-Version:        3.0.1
+Version:        3.1.0
 Release:        0
 Summary:        Pythonic IMAP client library
 License:        BSD-3-Clause
@@ -26,7 +26,7 @@
 Source0:        https://github.com/mjs/imapclient/archive/%{version}.tar.gz
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module pytest}
-BuildRequires:  %{python_module setuptools >= 20.5}
+BuildRequires:  %{python_module setuptools >= 80.9.0}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros

++++++ 3.0.1.tar.gz -> 3.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/.github/workflows/main.yml 
new/imapclient-3.1.0/.github/workflows/main.yml
--- old/imapclient-3.0.1/.github/workflows/main.yml     2023-12-02 
09:20:41.000000000 +0100
+++ new/imapclient-3.1.0/.github/workflows/main.yml     2026-01-17 
19:36:47.000000000 +0100
@@ -9,17 +9,19 @@
   workflow_dispatch:
 jobs:
   test:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     timeout-minutes: 10
     strategy:
       fail-fast: false
       matrix:
         python-version:
-          - "3.7"
           - "3.8"
           - "3.9"
           - "3.10"
           - "3.11"
+          - "3.12"
+          - "3.13"
+          - "3.14"
           - "pypy-3.9"
     steps:
     - uses: actions/checkout@v3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/.gitignore 
new/imapclient-3.1.0/.gitignore
--- old/imapclient-3.0.1/.gitignore     2023-12-02 09:20:41.000000000 +0100
+++ new/imapclient-3.1.0/.gitignore     2026-01-17 19:36:47.000000000 +0100
@@ -3,6 +3,8 @@
 *~
 build/
 dist/
+.venv
+venv
 __pycache__/
 IMAPClient.egg-info
 doc/doctrees/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/AUTHORS.rst 
new/imapclient-3.1.0/AUTHORS.rst
--- old/imapclient-3.0.1/AUTHORS.rst    2023-12-02 09:20:41.000000000 +0100
+++ new/imapclient-3.1.0/AUTHORS.rst    2026-01-17 19:36:47.000000000 +0100
@@ -45,3 +45,5 @@
 - Stefan Wójcik
 - Andrzej Bartosiński
 - @axoroll7
+- Sean Whalen
+- Peter Wienemann 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/README.rst 
new/imapclient-3.1.0/README.rst
--- old/imapclient-3.0.1/README.rst     2023-12-02 09:20:41.000000000 +0100
+++ new/imapclient-3.1.0/README.rst     2026-01-17 19:36:47.000000000 +0100
@@ -5,7 +5,7 @@
 
 =========================  ========================================
 Current version            3.0.1
-Supported Python versions  3.7 - 3.11
+Supported Python versions  3.8 - 3.14
 License                    New BSD
 Project home               https://github.com/mjs/imapclient/
 PyPI                       https://pypi.python.org/pypi/IMAPClient
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/doc/src/advanced.rst 
new/imapclient-3.1.0/doc/src/advanced.rst
--- old/imapclient-3.0.1/doc/src/advanced.rst   2023-12-02 09:20:41.000000000 
+0100
+++ new/imapclient-3.1.0/doc/src/advanced.rst   2026-01-17 19:36:47.000000000 
+0100
@@ -135,7 +135,7 @@
 ssl                  bool    Use SSL/TLS to connect.
 starttls             bool    Use STARTTLS to connect.
 ssl_check_hostname   bool    If true and SSL is in use, check that certificate 
matches the hostname (defaults to true)
-ssl_verify_cert      bool    If true and SSL is in use, check that the 
certifcate is valid (defaults to true).
+ssl_verify_cert      bool    If true and SSL is in use, check that the 
certificate is valid (defaults to true).
 ssl_ca_file          string  If SSL is true, use this to specify certificate 
authority certs to validate with.
 timeout              int     Time out I/O operations after this many seconds.
 oauth2               bool    If true, use OAUTH2 to authenticate (``username`` 
and ``password`` are ignored).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/doc/src/conf.py 
new/imapclient-3.1.0/doc/src/conf.py
--- old/imapclient-3.0.1/doc/src/conf.py        2023-12-02 09:20:41.000000000 
+0100
+++ new/imapclient-3.1.0/doc/src/conf.py        2026-01-17 19:36:47.000000000 
+0100
@@ -210,4 +210,4 @@
 
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
-man_pages = [("index", "imapclient", "IMAPClient Documentation", ["Menno 
Smits"], 1)]
+man_pages = [("index", "imapclient", "IMAPClient Documentation", ["Menno 
Smits"], 7)]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/doc/src/contributing.rst 
new/imapclient-3.1.0/doc/src/contributing.rst
--- old/imapclient-3.0.1/doc/src/contributing.rst       2023-12-02 
09:20:41.000000000 +0100
+++ new/imapclient-3.1.0/doc/src/contributing.rst       2026-01-17 
19:36:47.000000000 +0100
@@ -70,9 +70,9 @@
     ./tox-all
 
 The script passes any arguments on to tox. For example to run just the tests
-just against Python 3.7 do::
+just against Python 3.10 do::
 
-    ./tox-all -e py37
+    ./tox-all -e py310
 
 Writing Unit Tests
 ------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/doc/src/index.rst 
new/imapclient-3.1.0/doc/src/index.rst
--- old/imapclient-3.0.1/doc/src/index.rst      2023-12-02 09:20:41.000000000 
+0100
+++ new/imapclient-3.1.0/doc/src/index.rst      2026-01-17 19:36:47.000000000 
+0100
@@ -30,7 +30,7 @@
 to the base protocol. These are referred to in the documentation below
 where relevant.
 
-Python versions 3.4 through 3.9 are officially supported.
+Python versions 3.8 through 3.14 are officially supported.
 
 Getting Started
 ---------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/imapclient/imapclient.py 
new/imapclient-3.1.0/imapclient/imapclient.py
--- old/imapclient-3.0.1/imapclient/imapclient.py       2023-12-02 
09:20:41.000000000 +0100
+++ new/imapclient-3.1.0/imapclient/imapclient.py       2026-01-17 
19:36:47.000000000 +0100
@@ -99,7 +99,7 @@
 
 # Names of special folders that are common among providers
 _POPULAR_SPECIAL_FOLDERS = {
-    SENT: ("Sent", "Sent Items", "Sent items"),
+    SENT: ("Sent", "Sent Items", "Sent items", "Sent Messages"),
     DRAFTS: ("Drafts",),
     ARCHIVE: ("Archive",),
     TRASH: ("Trash", "Deleted Items", "Deleted Messages", "Deleted"),
@@ -1157,9 +1157,11 @@
                     "about search criteria syntax..\n"
                     
"https://imapclient.readthedocs.io/en/master/#imapclient.IMAPClient.search".format(
                         original_msg=m.group(1),
-                        criteria='"%s"' % criteria
-                        if not isinstance(criteria, list)
-                        else criteria,
+                        criteria=(
+                            '"%s"' % criteria
+                            if not isinstance(criteria, list)
+                            else criteria
+                        ),
                     )
                 )
 
@@ -1675,6 +1677,10 @@
         """
         command = command.upper()
 
+        # Check for LITERAL+ now because if capabilities haven't been cached
+        # yet, we can't call CAPABILITY while sending another command.
+        has_literal_plus = self.has_capability("LITERAL+")
+
         if isinstance(args, tuple):
             args = list(args)
         if not isinstance(args, list):
@@ -1702,7 +1708,7 @@
                 # Now send the (unquoted) literal
                 if isinstance(item, _quoted):
                     item = item.original
-                self._send_literal(tag, item)
+                self._send_literal(tag, item, has_literal_plus)
                 if not is_last:
                     self._imap.send(b" ")
             else:
@@ -1717,9 +1723,9 @@
 
         return self._imap._command_complete(to_unicode(command), tag)
 
-    def _send_literal(self, tag, item):
+    def _send_literal(self, tag, item, has_literal_plus):
         """Send a single literal for the command with *tag*."""
-        if b"LITERAL+" in self._cached_capabilities:
+        if has_literal_plus:
             out = b" {" + str(len(item)).encode("ascii") + b"+}\r\n" + item
             logger.debug("> %s", debug_trunc(out, 64))
             self._imap.send(out)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/imapclient/response_types.py 
new/imapclient-3.1.0/imapclient/response_types.py
--- old/imapclient-3.0.1/imapclient/response_types.py   2023-12-02 
09:20:41.000000000 +0100
+++ new/imapclient-3.1.0/imapclient/response_types.py   2026-01-17 
19:36:47.000000000 +0100
@@ -53,6 +53,7 @@
     See :rfc:`3501#section-7.4.2` and :rfc:`2822` for further details.
 
     """
+
     date: Optional[datetime.datetime]
     subject: bytes
     from_: Optional[Tuple["Address", ...]]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/imapclient/testable_imapclient.py 
new/imapclient-3.1.0/imapclient/testable_imapclient.py
--- old/imapclient-3.0.1/imapclient/testable_imapclient.py      2023-12-02 
09:20:41.000000000 +0100
+++ new/imapclient-3.1.0/imapclient/testable_imapclient.py      2026-01-17 
19:36:47.000000000 +0100
@@ -2,7 +2,7 @@
 # Released subject to the New BSD License
 # Please see http://en.wikipedia.org/wiki/BSD_licenses
 
-from typing import Any, Dict
+from typing import Any, Dict, List
 from unittest.mock import Mock
 
 from .imapclient import IMAPClient
@@ -30,6 +30,8 @@
         self.use_uid = True
         self.sent = b""  # Accumulates what was given to send()
         self.tagged_commands: Dict[Any, Any] = {}
+        self.untagged_responses: Dict[Any, Any] = {}
+        self.capabilities: List[str] = []
         self._starttls_done = False
 
     def send(self, data: bytes) -> None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/imapclient/tls.py 
new/imapclient-3.1.0/imapclient/tls.py
--- old/imapclient-3.0.1/imapclient/tls.py      2023-12-02 09:20:41.000000000 
+0100
+++ new/imapclient-3.1.0/imapclient/tls.py      2026-01-17 19:36:47.000000000 
+0100
@@ -8,13 +8,9 @@
 """
 
 import imaplib
-import io
 import socket
 import ssl
-from typing import Optional, TYPE_CHECKING
-
-if TYPE_CHECKING:
-    from typing_extensions import Buffer
+from typing import Optional
 
 
 def wrap_socket(
@@ -35,34 +31,15 @@
     def __init__(
         self,
         host: str,
-        port: int,
-        ssl_context: Optional[ssl.SSLContext],
+        port: int = 993,
+        ssl_context: Optional[ssl.SSLContext] = None,
         timeout: Optional[float] = None,
     ):
         self.ssl_context = ssl_context
         self._timeout = timeout
-        imaplib.IMAP4.__init__(self, host, port)
-        self.file: io.BufferedReader
-
-    def open(
-        self, host: str = "", port: int = 993, timeout: Optional[float] = None
-    ) -> None:
-        self.host = host
-        self.port = port
-        sock = socket.create_connection(
-            (host, port), timeout if timeout is not None else self._timeout
-        )
-        self.sock = wrap_socket(sock, self.ssl_context, host)
-        self.file = self.sock.makefile("rb")
-
-    def read(self, size: int) -> bytes:
-        return self.file.read(size)
-
-    def readline(self) -> bytes:
-        return self.file.readline()
+        super().__init__(host, port)
 
-    def send(self, data: "Buffer") -> None:
-        self.sock.sendall(data)
+    def _create_socket(self, timeout: Optional[float]) -> socket.socket:
+        sock = socket.create_connection((self.host, self.port), 
timeout=timeout)
 
-    def shutdown(self) -> None:
-        imaplib.IMAP4.shutdown(self)
+        return wrap_socket(sock, self.ssl_context, self.host)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/imapclient/version.py 
new/imapclient-3.1.0/imapclient/version.py
--- old/imapclient-3.0.1/imapclient/version.py  2023-12-02 09:20:41.000000000 
+0100
+++ new/imapclient-3.1.0/imapclient/version.py  2026-01-17 19:36:47.000000000 
+0100
@@ -4,7 +4,7 @@
 
 from typing import Tuple
 
-version_info = (3, 0, 1, "final")
+version_info = (3, 1, 0, "final")
 
 
 def _imapclient_version_string(vinfo: Tuple[int, int, int, str]) -> str:
@@ -21,4 +21,4 @@
 maintainer_email = "[email protected]"
 
 author = "Menno Finlay-Smits"
-author_email = "[email protected]"
+author_email = "[email protected]"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/requirements-dev.txt 
new/imapclient-3.1.0/requirements-dev.txt
--- old/imapclient-3.0.1/requirements-dev.txt   2023-12-02 09:20:41.000000000 
+0100
+++ new/imapclient-3.1.0/requirements-dev.txt   2026-01-17 19:36:47.000000000 
+0100
@@ -1,6 +1,7 @@
-sphinx==6.2.1
-black==23.11.0
-flake8==6.1.0
+sphinx==8.0.0
+black==25.11.0
+flake8==7.3.0
 isort==5.12.0
-mypy==1.6.1
-pylint==3.0.2
+mypy==1.8.0
+pylint==3.2.6
+setuptools==80.9.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/setup.py 
new/imapclient-3.1.0/setup.py
--- old/imapclient-3.0.1/setup.py       2023-12-02 09:20:41.000000000 +0100
+++ new/imapclient-3.1.0/setup.py       2026-01-17 19:36:47.000000000 +0100
@@ -27,7 +27,7 @@
     * Convenience methods are provided for commonly used functionality.
     * Exceptions are raised when errors occur.
 
-Python versions 3.7 through 3.11 are officially supported.
+Python versions 3.8 through 3.13 are officially supported.
 
 IMAPClient includes comprehensive units tests and automated
 functional tests that can be run against a live IMAP server.
@@ -50,7 +50,7 @@
     package_data=dict(imapclient=["examples/*.py"]),
     extras_require={"doc": doc_deps},
     long_description=desc,
-    python_requires=">=3.7.0",
+    python_requires=">=3.8.0",
     classifiers=[
         "Development Status :: 5 - Production/Stable",
         "Intended Audience :: Developers",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/imapclient-3.0.1/tox.ini new/imapclient-3.1.0/tox.ini
--- old/imapclient-3.0.1/tox.ini        2023-12-02 09:20:41.000000000 +0100
+++ new/imapclient-3.1.0/tox.ini        2026-01-17 19:36:47.000000000 +0100
@@ -1,7 +1,7 @@
 [tox]
 skipsdist = True
 minversion = 3.0
-envlist=py37,py38,py39,py310,py311,black,isort,flake8,mypy,pylint
+envlist=py38,py39,py310,py311,py312,py313,black,isort,flake8,mypy,pylint
 
 [testenv]
 commands=python -m unittest 

Reply via email to