Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-jaraco.context for 
openSUSE:Factory checked in at 2026-03-24 18:47:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jaraco.context (Old)
 and      /work/SRC/openSUSE:Factory/.python-jaraco.context.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-jaraco.context"

Tue Mar 24 18:47:58 2026 rev:12 rq:1342036 version:6.1.2

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-jaraco.context/python-jaraco.context.changes  
    2026-01-21 14:12:13.934020544 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-jaraco.context.new.8177/python-jaraco.context.changes
    2026-03-24 18:48:11.456794887 +0100
@@ -1,0 +2,6 @@
+Mon Mar 23 12:48:10 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 6.1.2:
+  * No significant changes.
+
+-------------------------------------------------------------------

Old:
----
  jaraco_context-6.1.0.tar.gz

New:
----
  jaraco_context-6.1.2.tar.gz

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

Other differences:
------------------
++++++ python-jaraco.context.spec ++++++
--- /var/tmp/diff_new_pack.wW3ZMA/_old  2026-03-24 18:48:13.748887804 +0100
+++ /var/tmp/diff_new_pack.wW3ZMA/_new  2026-03-24 18:48:13.776888939 +0100
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-jaraco.context
-Version:        6.1.0
+Version:        6.1.2
 Release:        0
 Summary:        Tools to work with functools
 License:        MIT

++++++ jaraco_context-6.1.0.tar.gz -> jaraco_context-6.1.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jaraco_context-6.1.0/.github/workflows/main.yml 
new/jaraco_context-6.1.2/.github/workflows/main.yml
--- old/jaraco_context-6.1.0/.github/workflows/main.yml 2026-01-13 
03:53:29.000000000 +0100
+++ new/jaraco_context-6.1.2/.github/workflows/main.yml 2026-03-20 
23:13:11.000000000 +0100
@@ -34,31 +34,31 @@
       # https://blog.jaraco.com/efficient-use-of-ci-resources/
       matrix:
         python:
-        - "3.9"
+        - "3.10"
         - "3.13"
         platform:
         - ubuntu-latest
         - macos-latest
         - windows-latest
         include:
-        - python: "3.10"
-          platform: ubuntu-latest
         - python: "3.11"
           platform: ubuntu-latest
         - python: "3.12"
           platform: ubuntu-latest
         - python: "3.14"
           platform: ubuntu-latest
+        - python: "3.15"
+          platform: ubuntu-latest
         - python: pypy3.10
           platform: ubuntu-latest
     runs-on: ${{ matrix.platform }}
-    continue-on-error: ${{ matrix.python == '3.14' }}
+    continue-on-error: ${{ matrix.python == '3.15' }}
     steps:
       - uses: actions/checkout@v4
       - name: Install build dependencies
         # Install dependencies for building packages on pre-release Pythons
         # jaraco/skeleton#161
-        if: matrix.python == '3.14' && matrix.platform == 'ubuntu-latest'
+        if: matrix.python == '3.15' && matrix.platform == 'ubuntu-latest'
         run: |
           sudo apt update
           sudo apt install -y libxml2-dev libxslt-dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jaraco_context-6.1.0/.pre-commit-config.yaml 
new/jaraco_context-6.1.2/.pre-commit-config.yaml
--- old/jaraco_context-6.1.0/.pre-commit-config.yaml    2026-01-13 
03:53:29.000000000 +0100
+++ new/jaraco_context-6.1.2/.pre-commit-config.yaml    2026-03-20 
23:13:11.000000000 +0100
@@ -2,6 +2,6 @@
 - repo: https://github.com/astral-sh/ruff-pre-commit
   rev: v0.12.0
   hooks:
-  - id: ruff
+  - id: ruff-check
     args: [--fix, --unsafe-fixes]
   - id: ruff-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jaraco_context-6.1.0/NEWS.rst 
new/jaraco_context-6.1.2/NEWS.rst
--- old/jaraco_context-6.1.0/NEWS.rst   2026-01-13 03:53:29.000000000 +0100
+++ new/jaraco_context-6.1.2/NEWS.rst   2026-03-20 23:13:11.000000000 +0100
@@ -1,3 +1,15 @@
+v6.1.2
+======
+
+No significant changes.
+
+
+v6.1.1
+======
+
+No significant changes.
+
+
 v6.1.0
 ======
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jaraco_context-6.1.0/PKG-INFO 
new/jaraco_context-6.1.2/PKG-INFO
--- old/jaraco_context-6.1.0/PKG-INFO   2026-01-13 03:53:49.933753500 +0100
+++ new/jaraco_context-6.1.2/PKG-INFO   2026-03-20 23:13:29.458800300 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: jaraco.context
-Version: 6.1.0
+Version: 6.1.2
 Summary: Useful decorators and context managers
 Author-email: "Jason R. Coombs" <[email protected]>
 License-Expression: MIT
@@ -9,7 +9,7 @@
 Classifier: Intended Audience :: Developers
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3 :: Only
-Requires-Python: >=3.9
+Requires-Python: >=3.10
 Description-Content-Type: text/x-rst
 License-File: LICENSE
 Requires-Dist: backports.tarfile; python_version < "3.12"
@@ -25,15 +25,14 @@
 Requires-Dist: sphinx-lint; extra == "doc"
 Requires-Dist: jaraco.tidelift>=1.4; extra == "doc"
 Provides-Extra: check
-Requires-Dist: pytest-checkdocs>=2.4; extra == "check"
+Requires-Dist: pytest-checkdocs>=2.14; extra == "check"
 Requires-Dist: pytest-ruff>=0.2.1; sys_platform != "cygwin" and extra == 
"check"
 Provides-Extra: cover
 Requires-Dist: pytest-cov; extra == "cover"
 Provides-Extra: enabler
 Requires-Dist: pytest-enabler>=3.4; extra == "enabler"
 Provides-Extra: type
-Requires-Dist: pytest-mypy>=1.0.1; extra == "type"
-Requires-Dist: mypy<1.19; platform_python_implementation == "PyPy" and extra 
== "type"
+Requires-Dist: pytest-mypy>=1.0.1; platform_python_implementation != "PyPy" 
and extra == "type"
 Dynamic: license-file
 
 .. image:: https://img.shields.io/pypi/v/jaraco.context.svg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jaraco_context-6.1.0/conftest.py 
new/jaraco_context-6.1.2/conftest.py
--- old/jaraco_context-6.1.0/conftest.py        2026-01-13 03:53:29.000000000 
+0100
+++ new/jaraco_context-6.1.2/conftest.py        2026-03-20 23:13:11.000000000 
+0100
@@ -1,20 +1,24 @@
+from __future__ import annotations
+
 import functools
 import http.server
 import io
 import tarfile
 import threading
+from collections.abc import Generator
+from pathlib import Path
 
 import portend
 import pytest
 
 
 class QuietHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
-    def log_message(self, format, *args):
+    def log_message(self, format: object, *args: object) -> None:
         pass
 
 
 @pytest.fixture
-def tarfile_served(tmp_path_factory):
+def tarfile_served(tmp_path_factory: pytest.TempPathFactory) -> Generator[str]:
     """
     Start an HTTP server serving a tarfile.
     """
@@ -29,7 +33,7 @@
         yield url + '/served.tgz'
 
 
-def start_server(path):
+def start_server(path: Path) -> tuple[http.server.HTTPServer, str]:
     _host, port = addr = ('', portend.find_available_local_port())
     Handler = functools.partial(QuietHTTPRequestHandler, directory=path)
     httpd = http.server.HTTPServer(addr, Handler)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jaraco_context-6.1.0/docs/conf.py 
new/jaraco_context-6.1.2/docs/conf.py
--- old/jaraco_context-6.1.0/docs/conf.py       2026-01-13 03:53:29.000000000 
+0100
+++ new/jaraco_context-6.1.2/docs/conf.py       2026-03-20 23:13:11.000000000 
+0100
@@ -34,10 +34,6 @@
 nitpicky = True
 nitpick_ignore: list[tuple[str, str]] = []
 
-nitpick_ignore = [
-    ('py:class', 'contextlib.suppress'),
-    ('py:class', 'jaraco.context.T'),
-]
 
 # Include Python intersphinx mapping to prevent failures
 # jaraco/skeleton#51
@@ -62,3 +58,19 @@
 # local
 
 extensions += ['jaraco.tidelift']
+
+nitpick_ignore = [
+    ('py:class', 'OptExcInfo'),
+    ('py:class', 'StrPath'),
+    ('py:class', '_FileDescriptorOrPathT'),
+    ('py:class', '_P'),
+    ('py:class', '_P.args'),
+    ('py:class', '_P.kwargs'),
+    ('py:class', '_R'),
+    ('py:class', '_T2_co'),
+    ('py:class', 'contextlib.suppress'),
+    ('py:class', 'functools._Wrapped'),
+    ('py:class', 'jaraco.context.T'),
+    ('py:class', 'jaraco.context._T2_co'),
+    ('py:class', 'shutil._RmtreeType'),
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jaraco_context-6.1.0/jaraco/context/__init__.py 
new/jaraco_context-6.1.2/jaraco/context/__init__.py
--- old/jaraco_context-6.1.0/jaraco/context/__init__.py 2026-01-13 
03:53:29.000000000 +0100
+++ new/jaraco_context-6.1.2/jaraco/context/__init__.py 2026-03-20 
23:13:11.000000000 +0100
@@ -1,5 +1,6 @@
 from __future__ import annotations
 
+import builtins
 import contextlib
 import errno
 import functools
@@ -12,16 +13,44 @@
 import sys
 import tempfile
 import urllib.request
-from collections.abc import Iterator
-
-if sys.version_info < (3, 12):
-    from backports import tarfile
+from collections.abc import Callable, Generator, Iterator
+from types import TracebackType
+from typing import (
+    TYPE_CHECKING,
+    Literal,
+    TypeVar,
+    cast,
+)
+
+# jaraco/backports.tarfile#1
+if TYPE_CHECKING or sys.version_info >= (3, 12):
+    import tarfile  # pragma: no cover
 else:
-    import tarfile
+    from backports import tarfile  # pragma: no cover
+
+if TYPE_CHECKING:
+    from typing import TypeAlias
+
+    from _typeshed import FileDescriptorOrPath, OptExcInfo, StrPath
+    from typing_extensions import ParamSpec, Self, Unpack
+
+    _FileDescriptorOrPathT = TypeVar(
+        "_FileDescriptorOrPathT", bound=FileDescriptorOrPath
+    )
+    _P = ParamSpec("_P")
+
+_UnpackableOptExcInfo: TypeAlias = tuple[
+    type[BaseException] | None,
+    BaseException | None,
+    TracebackType | None,
+]
+_R = TypeVar("_R")
+_T1_co = TypeVar("_T1_co", covariant=True)
+_T2_co = TypeVar("_T2_co", covariant=True)
 
 
 @contextlib.contextmanager
-def pushd(dir: str | os.PathLike) -> Iterator[str | os.PathLike]:
+def pushd(dir: StrPath) -> Iterator[StrPath]:
     """
     >>> tmp_path = getfixture('tmp_path')
     >>> with pushd(tmp_path):
@@ -38,9 +67,7 @@
 
 
 @contextlib.contextmanager
-def tarball(
-    url, target_dir: str | os.PathLike | None = None
-) -> Iterator[str | os.PathLike]:
+def tarball(url: str, target_dir: StrPath | None = None) -> Iterator[StrPath]:
     """
     Get a URL to a tarball, download, extract, yield, then clean up.
 
@@ -83,8 +110,8 @@
         shutil.rmtree(target_dir)
 
 
-def _compose_tarfile_filters(*filters):
-    def compose_two(f1, f2):
+def _compose_tarfile_filters(*filters):  # type: ignore[no-untyped-def]
+    def compose_two(f1, f2):  # type: ignore[no-untyped-def]
         return lambda member, path: f1(f2(member, path), path)
 
     return functools.reduce(compose_two, filters, lambda member, path: member)
@@ -92,16 +119,24 @@
 
 def strip_first_component(
     member: tarfile.TarInfo,
-    path,
+    path: object,
 ) -> tarfile.TarInfo:
     _, member.name = member.name.split('/', 1)
     return member
 
 
-_default_filter = _compose_tarfile_filters(tarfile.data_filter, 
strip_first_component)
+_default_filter = _compose_tarfile_filters(tarfile.data_filter, 
strip_first_component)  # type: ignore[no-untyped-call]
 
 
-def _compose(*cmgrs):
+def _compose(
+    *cmgrs: Unpack[
+        tuple[
+            # Flipped from compose_two because of reverse
+            Callable[[_T1_co], contextlib.AbstractContextManager[_T2_co]],
+            Callable[_P, contextlib.AbstractContextManager[_T1_co]],
+        ]
+    ],
+) -> Callable[_P, contextlib._GeneratorContextManager[_T2_co]]:
     """
     Compose any number of dependent context managers into a single one.
 
@@ -121,14 +156,21 @@
     ...     assert os.path.samefile(os.getcwd(), dir)
     """
 
-    def compose_two(inner, outer):
-        def composed(*args, **kwargs):
+    def compose_two(
+        inner: Callable[_P, contextlib.AbstractContextManager[_T1_co]],
+        outer: Callable[[_T1_co], contextlib.AbstractContextManager[_T2_co]],
+    ) -> Callable[_P, contextlib._GeneratorContextManager[_T2_co]]:
+        def composed(*args: _P.args, **kwargs: _P.kwargs) -> Generator[_T2_co]:
             with inner(*args, **kwargs) as saved, outer(saved) as res:
                 yield res
 
         return contextlib.contextmanager(composed)
 
-    return functools.reduce(compose_two, reversed(cmgrs))
+    # reversed makes cmgrs no longer variadic, breaking type validation
+    # Mypy infers compose_two as Callable[[function, function], function]. See:
+    # - https://github.com/python/typeshed/issues/7580
+    # - https://github.com/python/mypy/issues/8240
+    return functools.reduce(compose_two, reversed(cmgrs))  # type: 
ignore[return-value, arg-type]
 
 
 tarball_cwd = _compose(pushd, tarball)
@@ -137,7 +179,11 @@
 """
 
 
-def remove_readonly(func, path, exc_info):
+def remove_readonly(
+    func: Callable[[_FileDescriptorOrPathT], object],
+    path: _FileDescriptorOrPathT,
+    exc_info: tuple[object, OSError, object],
+) -> None:
     """
     Add support for removing read-only files on Windows.
     """
@@ -151,16 +197,20 @@
         raise
 
 
-def robust_remover():
+def robust_remover() -> Callable[..., None]:
     return (
-        functools.partial(shutil.rmtree, onerror=remove_readonly)
+        functools.partial(
+            # cast for python/mypy#18637 / python/mypy#17585
+            cast("Callable[..., None]", shutil.rmtree),
+            onerror=remove_readonly,
+        )
         if platform.system() == 'Windows'
         else shutil.rmtree
     )
 
 
 @contextlib.contextmanager
-def temp_dir(remover=shutil.rmtree):
+def temp_dir(remover: Callable[[str], object] = shutil.rmtree) -> 
Generator[str]:
     """
     Create a temporary directory context. Pass a custom remover
     to override the removal behavior.
@@ -182,8 +232,11 @@
 
 @contextlib.contextmanager
 def repo_context(
-    url, branch: str | None = None, quiet: bool = True, 
dest_ctx=robust_temp_dir
-):
+    url: str,
+    branch: str | None = None,
+    quiet: bool = True,
+    dest_ctx: Callable[[], contextlib.AbstractContextManager[str]] = 
robust_temp_dir,
+) -> Generator[str]:
     """
     Check out the repo indicated by url.
 
@@ -201,7 +254,7 @@
     exe = 'git' if 'git' in url else 'hg'
     with dest_ctx() as repo_dir:
         cmd = [exe, 'clone', url, repo_dir]
-        cmd.extend(['--branch', branch] * bool(branch))
+        cmd.extend(['--branch', branch] * bool(branch))  # type: 
ignore[list-item]
         stream = subprocess.DEVNULL if quiet else None
         subprocess.check_call(cmd, stdout=stream, stderr=stream)
         yield repo_dir
@@ -241,49 +294,49 @@
     False
     """
 
-    exc_info = None, None, None
+    exc_info: OptExcInfo = None, None, None
 
-    def __init__(self, exceptions=(Exception,)):
+    def __init__(self, exceptions: tuple[type[BaseException], ...] = 
(Exception,)):
         self.exceptions = exceptions
 
-    def __enter__(self):
+    def __enter__(self) -> Self:
         return self
 
     @property
-    def type(self):
+    def type(self) -> type[BaseException] | None:
         return self.exc_info[0]
 
     @property
-    def value(self):
+    def value(self) -> BaseException | None:
         return self.exc_info[1]
 
     @property
-    def tb(self):
+    def tb(self) -> TracebackType | None:
         return self.exc_info[2]
 
-    def __exit__(self, *exc_info):
-        type = exc_info[0]
-        matches = type and issubclass(type, self.exceptions)
+    def __exit__(
+        self,
+        *exc_info: Unpack[_UnpackableOptExcInfo],  # noqa: PYI036 # We can do 
better than object
+    ) -> builtins.type[BaseException] | None | bool:
+        exc_type = exc_info[0]
+        matches = exc_type and issubclass(exc_type, self.exceptions)
         if matches:
-            self.exc_info = exc_info
+            self.exc_info = exc_info  # type: ignore[assignment]
         return matches
 
-    def __bool__(self):
+    def __bool__(self) -> bool:
         return bool(self.type)
 
-    def raises(self, func, *, _test=bool):
+    def raises(
+        self, func: Callable[_P, _R], *, _test: Callable[[ExceptionTrap], 
bool] = bool
+    ) -> functools._Wrapped[_P, _R, _P, bool]:
         """
         Wrap func and replace the result with the truth
         value of the trap (True if an exception occurred).
 
-        First, give the decorator an alias to support Python 3.8
-        Syntax.
-
-        >>> raises = ExceptionTrap(ValueError).raises
-
-        Now decorate a function that always fails.
+        Decorate a function that always fails.
 
-        >>> @raises
+        >>> @ExceptionTrap(ValueError).raises
         ... def fail():
         ...     raise ValueError('failed')
         >>> fail()
@@ -291,26 +344,21 @@
         """
 
         @functools.wraps(func)
-        def wrapper(*args, **kwargs):
+        def wrapper(*args: _P.args, **kwargs: _P.kwargs) -> bool:
             with ExceptionTrap(self.exceptions) as trap:
                 func(*args, **kwargs)
             return _test(trap)
 
         return wrapper
 
-    def passes(self, func):
+    def passes(self, func: Callable[_P, _R]) -> functools._Wrapped[_P, _R, _P, 
bool]:
         """
         Wrap func and replace the result with the truth
         value of the trap (True if no exception).
 
-        First, give the decorator an alias to support Python 3.8
-        Syntax.
-
-        >>> passes = ExceptionTrap(ValueError).passes
-
-        Now decorate a function that always fails.
+        Decorate a function that always fails.
 
-        >>> @passes
+        >>> @ExceptionTrap(ValueError).passes
         ... def fail():
         ...     raise ValueError('failed')
 
@@ -352,16 +400,23 @@
     ...     on_interrupt('ignore')(do_interrupt)()
     """
 
-    def __init__(self, action='error', /, code=1):
+    def __init__(
+        self, action: Literal['ignore', 'suppress', 'error'] = 'error', /, 
code: int = 1
+    ):
         self.action = action
         self.code = code
 
-    def __enter__(self):
+    def __enter__(self) -> Self:
         return self
 
-    def __exit__(self, exctype, excinst, exctb):
+    def __exit__(
+        self,
+        exctype: type[BaseException] | None,
+        excinst: BaseException | None,
+        exctb: TracebackType | None,
+    ) -> None | bool:
         if exctype is not KeyboardInterrupt or self.action == 'ignore':
-            return
+            return None
         elif self.action == 'error':
             raise SystemExit(self.code) from excinst
         return self.action == 'suppress'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jaraco_context-6.1.0/jaraco.context.egg-info/PKG-INFO 
new/jaraco_context-6.1.2/jaraco.context.egg-info/PKG-INFO
--- old/jaraco_context-6.1.0/jaraco.context.egg-info/PKG-INFO   2026-01-13 
03:53:49.000000000 +0100
+++ new/jaraco_context-6.1.2/jaraco.context.egg-info/PKG-INFO   2026-03-20 
23:13:29.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: jaraco.context
-Version: 6.1.0
+Version: 6.1.2
 Summary: Useful decorators and context managers
 Author-email: "Jason R. Coombs" <[email protected]>
 License-Expression: MIT
@@ -9,7 +9,7 @@
 Classifier: Intended Audience :: Developers
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3 :: Only
-Requires-Python: >=3.9
+Requires-Python: >=3.10
 Description-Content-Type: text/x-rst
 License-File: LICENSE
 Requires-Dist: backports.tarfile; python_version < "3.12"
@@ -25,15 +25,14 @@
 Requires-Dist: sphinx-lint; extra == "doc"
 Requires-Dist: jaraco.tidelift>=1.4; extra == "doc"
 Provides-Extra: check
-Requires-Dist: pytest-checkdocs>=2.4; extra == "check"
+Requires-Dist: pytest-checkdocs>=2.14; extra == "check"
 Requires-Dist: pytest-ruff>=0.2.1; sys_platform != "cygwin" and extra == 
"check"
 Provides-Extra: cover
 Requires-Dist: pytest-cov; extra == "cover"
 Provides-Extra: enabler
 Requires-Dist: pytest-enabler>=3.4; extra == "enabler"
 Provides-Extra: type
-Requires-Dist: pytest-mypy>=1.0.1; extra == "type"
-Requires-Dist: mypy<1.19; platform_python_implementation == "PyPy" and extra 
== "type"
+Requires-Dist: pytest-mypy>=1.0.1; platform_python_implementation != "PyPy" 
and extra == "type"
 Dynamic: license-file
 
 .. image:: https://img.shields.io/pypi/v/jaraco.context.svg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jaraco_context-6.1.0/jaraco.context.egg-info/requires.txt 
new/jaraco_context-6.1.2/jaraco.context.egg-info/requires.txt
--- old/jaraco_context-6.1.0/jaraco.context.egg-info/requires.txt       
2026-01-13 03:53:49.000000000 +0100
+++ new/jaraco_context-6.1.2/jaraco.context.egg-info/requires.txt       
2026-03-20 23:13:29.000000000 +0100
@@ -3,7 +3,7 @@
 backports.tarfile
 
 [check]
-pytest-checkdocs>=2.4
+pytest-checkdocs>=2.14
 
 [check:sys_platform != "cygwin"]
 pytest-ruff>=0.2.1
@@ -28,7 +28,6 @@
 portend
 
 [type]
-pytest-mypy>=1.0.1
 
-[type:platform_python_implementation == "PyPy"]
-mypy<1.19
+[type:platform_python_implementation != "PyPy"]
+pytest-mypy>=1.0.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jaraco_context-6.1.0/mypy.ini 
new/jaraco_context-6.1.2/mypy.ini
--- old/jaraco_context-6.1.0/mypy.ini   2026-01-13 03:53:29.000000000 +0100
+++ new/jaraco_context-6.1.2/mypy.ini   2026-03-20 23:13:11.000000000 +0100
@@ -1,6 +1,6 @@
 [mypy]
 # Is the project well-typed?
-strict = False
+strict = True
 
 # Early opt-in even when strict = False
 warn_unused_ignores = True
@@ -14,6 +14,10 @@
        # Disable due to many false positives
        overload-overlap,
 
+# jaraco/backports.tarfile#1
+[mypy-backports.*]
+follow_untyped_imports = True
+
 # jaraco/portend#17
 [mypy-portend.*]
 ignore_missing_imports = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jaraco_context-6.1.0/pyproject.toml 
new/jaraco_context-6.1.2/pyproject.toml
--- old/jaraco_context-6.1.0/pyproject.toml     2026-01-13 03:53:29.000000000 
+0100
+++ new/jaraco_context-6.1.2/pyproject.toml     2026-03-20 23:13:11.000000000 
+0100
@@ -20,7 +20,7 @@
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3 :: Only",
 ]
-requires-python = ">=3.9"
+requires-python = ">=3.10"
 license = "MIT"
 dependencies = [
        'backports.tarfile; python_version < "3.12"',
@@ -55,7 +55,7 @@
 ]
 
 check = [
-       "pytest-checkdocs >= 2.4",
+       "pytest-checkdocs >= 2.14",
        "pytest-ruff >= 0.2.1; sys_platform != 'cygwin'",
 ]
 
@@ -69,17 +69,11 @@
 
 type = [
        # upstream
-       "pytest-mypy >= 1.0.1",
-
-       ## workaround for python/mypy#20454
-       "mypy < 1.19; python_implementation == 'PyPy'",
+       
+    # Exclude PyPy from type checks (python/mypy#20454 jaraco/skeleton#187)
+       "pytest-mypy >= 1.0.1; platform_python_implementation != 'PyPy'",
 
        # local
 ]
 
-
 [tool.setuptools_scm]
-
-
-[tool.pytest-enabler.mypy]
-# Disabled due to jaraco/skeleton#143
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jaraco_context-6.1.0/tests/test_safety.py 
new/jaraco_context-6.1.2/tests/test_safety.py
--- old/jaraco_context-6.1.0/tests/test_safety.py       2026-01-13 
03:53:29.000000000 +0100
+++ new/jaraco_context-6.1.2/tests/test_safety.py       2026-03-20 
23:13:11.000000000 +0100
@@ -1,3 +1,5 @@
+# type: ignore
+
 import io
 import sys
 import types
@@ -33,7 +35,7 @@
             expect=does_not_raise(),
         ),
         marks=pytest.mark.skipif(
-            (3, 11) < sys.version_info < (3, 13),
+            (3, 12) <= sys.version_info < (3, 13),
             reason='Fails with FileExistsError on Python 3.12',
         ),
     ),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jaraco_context-6.1.0/tox.ini 
new/jaraco_context-6.1.2/tox.ini
--- old/jaraco_context-6.1.0/tox.ini    2026-01-13 03:53:29.000000000 +0100
+++ new/jaraco_context-6.1.2/tox.ini    2026-03-20 23:13:11.000000000 +0100
@@ -20,7 +20,7 @@
        diff-cover
 commands =
        pytest {posargs} --cov-report xml
-       diff-cover coverage.xml --compare-branch=origin/main --html-report 
diffcov.html
+       diff-cover coverage.xml --compare-branch=origin/main --format 
html:diffcov.html
        diff-cover coverage.xml --compare-branch=origin/main --fail-under=100
 
 [testenv:docs]

Reply via email to