Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package mypy for openSUSE:Factory checked in 
at 2023-07-19 19:10:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mypy (Old)
 and      /work/SRC/openSUSE:Factory/.mypy.new.5570 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mypy"

Wed Jul 19 19:10:47 2023 rev:39 rq:1099368 version:1.4.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/mypy/mypy.changes        2023-06-21 
22:40:28.794595318 +0200
+++ /work/SRC/openSUSE:Factory/.mypy.new.5570/mypy.changes      2023-07-19 
19:10:48.996630222 +0200
@@ -1,0 +2,6 @@
+Sun Jul 16 08:34:41 UTC 2023 - Sebastian Wagner <se...@sebix.at>
+
+- Update to 1.4.1
+- disable pep561 tests, as they fail on Python 3.11.4, see 
https://github.com/python/mypy/issues/15446
+
+-------------------------------------------------------------------

Old:
----
  mypy-1.4.0.tar.gz
  types-psutil-5.9.5.12.tar.gz
  types-setuptools-67.7.0.1.tar.gz
  types-typed-ast-1.5.8.6.tar.gz

New:
----
  mypy-1.4.1.tar.gz
  types-psutil-5.9.5.15.tar.gz
  types-setuptools-68.0.0.2.tar.gz
  types-typed-ast-1.5.8.7.tar.gz

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

Other differences:
------------------
++++++ mypy.spec ++++++
--- /var/tmp/diff_new_pack.Xz2igP/_old  2023-07-19 19:10:50.968641757 +0200
+++ /var/tmp/diff_new_pack.Xz2igP/_new  2023-07-19 19:10:50.976641803 +0200
@@ -19,11 +19,11 @@
 %{?sle15_python_module_pythons}
 %bcond_without test
 %define skip_python2 1
-%define typed_ast_version 1.5.8.6
-%define types_psutil_version 5.9.5.12
-%define types_setuptools_version 67.7.0.1
+%define typed_ast_version 1.5.8.7
+%define types_psutil_version 5.9.5.15
+%define types_setuptools_version 68.0.0.2
 Name:           mypy
-Version:        1.4.0
+Version:        1.4.1
 Release:        0
 Summary:        Optional static typing for Python
 License:        MIT
@@ -143,7 +143,9 @@
 donttest+=" or teststubtest"
 # gh#python/mypy#15221
 donttest+=" or testMathOps or testFloatOps"
-%pytest -n auto -k "not (testallexcept ${donttest} ${$python_donttest})"
+# fails on Python 3.11.4, see gh#python/mypy#15446. Patch 
db5b5af1201fff03465b0684d16b6489a62a3d78 does not apply clean, better wait for 
a new upstream version
+donttest+=" or PEP561Suite"
+%pytest -n auto -k "not (testallexcept ${donttest} ${$python_donttest})" -x
 %endif
 
 %post

++++++ mypy-1.4.0.tar.gz -> mypy-1.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/PKG-INFO new/mypy-1.4.1/PKG-INFO
--- old/mypy-1.4.0/PKG-INFO     2023-06-15 00:02:11.203390000 +0200
+++ new/mypy-1.4.1/PKG-INFO     2023-06-25 22:08:15.647109000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: mypy
-Version: 1.4.0
+Version: 1.4.1
 Summary: Optional static typing for Python
 Home-page: https://www.mypy-lang.org/
 Author: Jukka Lehtosalo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/docs/source/conf.py 
new/mypy-1.4.1/docs/source/conf.py
--- old/mypy-1.4.0/docs/source/conf.py  2023-06-15 00:01:39.000000000 +0200
+++ new/mypy-1.4.1/docs/source/conf.py  2023-06-25 22:07:41.000000000 +0200
@@ -35,7 +35,7 @@
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
-extensions = ["sphinx.ext.intersphinx"]
+extensions = ["sphinx.ext.intersphinx", "docs.source.html_builder"]
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ["_templates"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/docs/source/error_code_list.rst 
new/mypy-1.4.1/docs/source/error_code_list.rst
--- old/mypy-1.4.0/docs/source/error_code_list.rst      2023-06-15 
00:01:39.000000000 +0200
+++ new/mypy-1.4.1/docs/source/error_code_list.rst      2023-06-25 
22:07:41.000000000 +0200
@@ -8,6 +8,8 @@
 about error codes. :ref:`error-codes-optional` documents additional
 error codes that you can enable.
 
+.. _code-attr-defined:
+
 Check that attribute exists [attr-defined]
 ------------------------------------------
 
@@ -43,6 +45,8 @@
 above example, the type of ``non_existent`` will be ``Any``, which can
 be important if you silence the error.
 
+.. _code-union-attr:
+
 Check that attribute exists in each union item [union-attr]
 -----------------------------------------------------------
 
@@ -75,6 +79,8 @@
 or ``assert obj is not None`` to tell mypy that you know that the type is more 
specific
 than what mypy thinks.
 
+.. _code-name-defined:
+
 Check that name is defined [name-defined]
 -----------------------------------------
 
@@ -89,6 +95,7 @@
 
     x = sort([3, 2, 4])  # Error: Name "sort" is not defined  [name-defined]
 
+.. _code-used-before-def:
 
 Check that a variable is not used before it's defined [used-before-def]
 -----------------------------------------------------------------------
@@ -105,6 +112,7 @@
     print(x)  # Error: Name "x" is used before definition [used-before-def]
     x = 123
 
+.. _code-call-arg:
 
 Check arguments in calls [call-arg]
 -----------------------------------
@@ -124,6 +132,8 @@
     greet('jack')  # OK
     greet('jill', 'jack')  # Error: Too many arguments for "greet"  [call-arg]
 
+.. _code-arg-type:
+
 Check argument types [arg-type]
 -------------------------------
 
@@ -144,6 +154,8 @@
     #        expected "list[int]"  [arg-type]
     print(first(t))
 
+.. _code-call-overload:
+
 Check calls to overloaded functions [call-overload]
 ---------------------------------------------------
 
@@ -175,6 +187,8 @@
    # Error: No overload variant of "inc_maybe" matches argument type "float"  
[call-overload]
    inc_maybe(1.2)
 
+.. _code-valid-type:
+
 Check validity of types [valid-type]
 ------------------------------------
 
@@ -207,6 +221,8 @@
         for x in objs:
             f(x)
 
+.. _code-var-annotated:
+
 Require annotation if variable type is unclear [var-annotated]
 --------------------------------------------------------------
 
@@ -239,6 +255,8 @@
 
    reveal_type(Bundle().items)  # list[str]
 
+.. _code-override:
+
 Check validity of overrides [override]
 --------------------------------------
 
@@ -275,6 +293,8 @@
                   arg: bool) -> int:
            ...
 
+.. _code-return:
+
 Check that function returns a value [return]
 --------------------------------------------
 
@@ -303,6 +323,8 @@
         else:
             raise ValueError('not defined for zero')
 
+.. _code-return-value:
+
 Check that return value is compatible [return-value]
 ----------------------------------------------------
 
@@ -317,6 +339,8 @@
        # Error: Incompatible return value type (got "int", expected "str")  
[return-value]
        return x + 1
 
+.. _code-assignment:
+
 Check types in assignment statement [assignment]
 ------------------------------------------------
 
@@ -339,6 +363,8 @@
     #        variable has type "str")  [assignment]
     r.name = 5
 
+.. _code-method-assign:
+
 Check that assignment target is not a method [method-assign]
 ------------------------------------------------------------
 
@@ -368,6 +394,8 @@
 
     This error code is a subcode of the more general ``[assignment]`` code.
 
+.. _code-type-var:
+
 Check type variable values [type-var]
 -------------------------------------
 
@@ -390,6 +418,8 @@
     # Error: Value of type variable "T1" of "add" cannot be "str"  [type-var]
     add('x', 'y')
 
+.. _code-operator:
+
 Check uses of various operators [operator]
 ------------------------------------------
 
@@ -404,6 +434,8 @@
    # Error: Unsupported operand types for + ("int" and "str")  [operator]
    1 + 'x'
 
+.. _code-index:
+
 Check indexing operations [index]
 ---------------------------------
 
@@ -425,6 +457,8 @@
    # Error: Invalid index type "bytes" for "dict[str, int]"; expected type 
"str"  [index]
    a[b'x'] = 4
 
+.. _code-list-item:
+
 Check list items [list-item]
 ----------------------------
 
@@ -439,6 +473,8 @@
     # Error: List item 0 has incompatible type "int"; expected "str"  
[list-item]
     a: list[str] = [0]
 
+.. _code-dict-item:
+
 Check dict items [dict-item]
 ----------------------------
 
@@ -453,6 +489,8 @@
     # Error: Dict entry 0 has incompatible type "str": "str"; expected "str": 
"int"  [dict-item]
     d: dict[str, int] = {'key': 'value'}
 
+.. _code-typeddict-item:
+
 Check TypedDict items [typeddict-item]
 --------------------------------------
 
@@ -477,6 +515,8 @@
     #        TypedDict item "x" has type "int")  [typeddict-item]
     p: Point = {'x': 1.2, 'y': 4}
 
+.. _code-typeddict-unknown-key:
+
 Check TypedDict Keys [typeddict-unknown-key]
 --------------------------------------------
 
@@ -533,6 +573,8 @@
 
     This error code is a subcode of the wider ``[typeddict-item]`` code.
 
+.. _code-has-type:
+
 Check that type of target is known [has-type]
 ---------------------------------------------
 
@@ -572,6 +614,8 @@
        def set_y(self) -> None:
            self.y: int = self.x  # Added annotation here
 
+.. _code-import:
+
 Check that import target can be found [import]
 ----------------------------------------------
 
@@ -587,6 +631,8 @@
 
 See :ref:`ignore-missing-imports` for how to work around these errors.
 
+.. _code-no-redef:
+
 Check that each name is defined once [no-redef]
 -----------------------------------------------
 
@@ -613,6 +659,8 @@
    #        (the first definition wins!)
    A('x')
 
+.. _code-func-returns-value:
+
 Check that called function returns a value [func-returns-value]
 ---------------------------------------------------------------
 
@@ -635,6 +683,8 @@
    if f():
         print("not false")
 
+.. _code-abstract:
+
 Check instantiation of abstract classes [abstract]
 --------------------------------------------------
 
@@ -666,6 +716,8 @@
     # Error: Cannot instantiate abstract class "Thing" with abstract attribute 
"save"  [abstract]
     t = Thing()
 
+.. _code-type-abstract:
+
 Safe handling of abstract type object types [type-abstract]
 -----------------------------------------------------------
 
@@ -692,6 +744,8 @@
    # Error: Only concrete class can be given where "Type[Config]" is expected 
[type-abstract]
    make_many(Config, 5)
 
+.. _code-safe-super:
+
 Check that call to an abstract method via super is valid [safe-super]
 ---------------------------------------------------------------------
 
@@ -714,6 +768,8 @@
 Mypy considers the following as trivial bodies: a ``pass`` statement, a literal
 ellipsis ``...``, a docstring, and a ``raise NotImplementedError`` statement.
 
+.. _code-valid-newtype:
+
 Check the target of NewType [valid-newtype]
 -------------------------------------------
 
@@ -738,6 +794,8 @@
 for ``acme`` or create a stub file for the module.  See 
:ref:`ignore-missing-imports`
 for more information.
 
+.. _code-exit-return:
+
 Check the return type of __exit__ [exit-return]
 -----------------------------------------------
 
@@ -794,6 +852,8 @@
        def __exit__(self, exc, value, tb) -> None:  # Also OK
            print('exit')
 
+.. _code-name-match:
+
 Check that naming is consistent [name-match]
 --------------------------------------------
 
@@ -807,6 +867,8 @@
     # Error: First argument to namedtuple() should be "Point2D", not "Point"
     Point2D = NamedTuple("Point", [("x", int), ("y", int)])
 
+.. _code-literal-required:
+
 Check that literal is used where expected [literal-required]
 ------------------------------------------------------------
 
@@ -836,6 +898,8 @@
        #   expected one of ("x", "y")  [literal-required]
        p[key]
 
+.. _code-no-overload-impl:
+
 Check that overloaded functions have an implementation [no-overload-impl]
 -------------------------------------------------------------------------
 
@@ -858,6 +922,8 @@
    def func(value):
        pass  # actual implementation
 
+.. _code-unused-coroutine:
+
 Check that coroutine return value is used [unused-coroutine]
 ------------------------------------------------------------
 
@@ -881,6 +947,8 @@
 
        _ = f()  # No error
 
+.. _code-assert-type:
+
 Check types in assert_type [assert-type]
 ----------------------------------------
 
@@ -895,6 +963,8 @@
 
    assert_type([1], list[str])  # Error
 
+.. _code-truthy-function:
+
 Check that function isn't used in boolean context [truthy-function]
 -------------------------------------------------------------------
 
@@ -908,6 +978,8 @@
     if f:  # Error: Function "Callable[[], Any]" could always be true in 
boolean context  [truthy-function]
         pass
 
+.. _code-str-bytes-safe:
+
 Check for implicit bytes coercions [str-bytes-safe]
 -------------------------------------------------------------------
 
@@ -926,6 +998,8 @@
     print(f"The alphabet starts with {b!r}")  # The alphabet starts with b'abc'
     print(f"The alphabet starts with {b.decode('utf-8')}")  # The alphabet 
starts with abc
 
+.. _code-syntax:
+
 Report syntax errors [syntax]
 -----------------------------
 
@@ -933,6 +1007,8 @@
 syntax error. Most, but not all, syntax errors are *blocking errors*:
 they can't be ignored with a ``# type: ignore`` comment.
 
+.. _code-misc:
+
 Miscellaneous checks [misc]
 ---------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/docs/source/error_code_list2.rst 
new/mypy-1.4.1/docs/source/error_code_list2.rst
--- old/mypy-1.4.0/docs/source/error_code_list2.rst     2023-06-15 
00:01:39.000000000 +0200
+++ new/mypy-1.4.1/docs/source/error_code_list2.rst     2023-06-25 
22:07:41.000000000 +0200
@@ -15,6 +15,8 @@
    options by using a :ref:`configuration file <config-file>` or
    :ref:`command-line options <command-line>`.
 
+.. _code-type-arg:
+
 Check that type arguments exist [type-arg]
 ------------------------------------------
 
@@ -34,6 +36,8 @@
     def remove_dups(items: list) -> list:
         ...
 
+.. _code-no-untyped-def:
+
 Check that every function has an annotation [no-untyped-def]
 ------------------------------------------------------------
 
@@ -62,6 +66,8 @@
          def __init__(self) -> None:
              self.value = 0
 
+.. _code-redundant-cast:
+
 Check that cast is not redundant [redundant-cast]
 -------------------------------------------------
 
@@ -82,6 +88,8 @@
         # Error: Redundant cast to "int"  [redundant-cast]
         return cast(int, x)
 
+.. _code-redundant-self:
+
 Check that methods do not have redundant Self annotations [redundant-self]
 --------------------------------------------------------------------------
 
@@ -104,6 +112,8 @@
        def copy(self: Self) -> Self:
            return type(self)()
 
+.. _code-comparison-overlap:
+
 Check that comparisons are overlapping [comparison-overlap]
 -----------------------------------------------------------
 
@@ -135,6 +145,8 @@
     def is_magic(x: bytes) -> bool:
         return x == b'magic'  # OK
 
+.. _code-no-untyped-call:
+
 Check that no untyped functions are called [no-untyped-call]
 ------------------------------------------------------------
 
@@ -154,6 +166,7 @@
     def bad():
         ...
 
+.. _code-no-any-return:
 
 Check that function does not return Any value [no-any-return]
 -------------------------------------------------------------
@@ -175,6 +188,8 @@
         # Error: Returning Any from function declared to return "str"  
[no-any-return]
         return fields(x)[0]
 
+.. _code-no-any-unimported:
+
 Check that types have no Any components due to missing imports 
[no-any-unimported]
 
----------------------------------------------------------------------------------
 
@@ -195,6 +210,8 @@
     def feed(cat: Cat) -> None:
         ...
 
+.. _code-unreachable:
+
 Check that statement or expression is unreachable [unreachable]
 ---------------------------------------------------------------
 
@@ -214,6 +231,8 @@
         # Error: Statement is unreachable  [unreachable]
         print('unreachable')
 
+.. _code-redundant-expr:
+
 Check that expression is redundant [redundant-expr]
 ---------------------------------------------------
 
@@ -236,6 +255,8 @@
         [i for i in range(x) if isinstance(i, int)]
 
 
+.. _code-truthy-bool:
+
 Check that expression is not implicitly true in boolean context [truthy-bool]
 -----------------------------------------------------------------------------
 
@@ -259,6 +280,7 @@
     if foo:
          ...
 
+.. _code-truthy-iterable:
 
 Check that iterable is not implicitly true in boolean context [truthy-iterable]
 -------------------------------------------------------------------------------
@@ -286,8 +308,7 @@
 recommended to annotate ``items`` as ``Collection[int]`` instead of
 ``Iterable[int]``.
 
-
-.. _ignore-without-code:
+.. _code-ignore-without-code:
 
 Check that ``# type: ignore`` include an error code [ignore-without-code]
 -------------------------------------------------------------------------
@@ -319,6 +340,8 @@
     # Error: "Foo" has no attribute "nme"; maybe "name"?
     f.nme = 42  # type: ignore[assignment]
 
+.. _code-unused-awaitable:
+
 Check that awaitable return value is used [unused-awaitable]
 ------------------------------------------------------------
 
@@ -348,6 +371,8 @@
     async def g() -> None:
         _ = asyncio.create_task(f())  # No error
 
+.. _code-unused-ignore:
+
 Check that ``# type: ignore`` comment is used [unused-ignore]
 -------------------------------------------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/docs/source/error_codes.rst 
new/mypy-1.4.1/docs/source/error_codes.rst
--- old/mypy-1.4.0/docs/source/error_codes.rst  2023-06-15 00:01:39.000000000 
+0200
+++ new/mypy-1.4.1/docs/source/error_codes.rst  2023-06-25 22:07:41.000000000 
+0200
@@ -32,7 +32,7 @@
    prog.py:1: error: "str" has no attribute "trim"  [attr-defined]
 
 It's also possible to require error codes for ``type: ignore`` comments.
-See :ref:`ignore-without-code<ignore-without-code>` for more information.
+See :ref:`ignore-without-code<code-ignore-without-code>` for more information.
 
 
 .. _silence-error-codes:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/docs/source/html_builder.py 
new/mypy-1.4.1/docs/source/html_builder.py
--- old/mypy-1.4.0/docs/source/html_builder.py  1970-01-01 01:00:00.000000000 
+0100
+++ new/mypy-1.4.1/docs/source/html_builder.py  2023-06-25 22:07:41.000000000 
+0200
@@ -0,0 +1,74 @@
+from __future__ import annotations
+
+import json
+import os
+import textwrap
+from pathlib import Path
+from typing import Any
+
+from sphinx.addnodes import document
+from sphinx.application import Sphinx
+from sphinx.builders.html import StandaloneHTMLBuilder
+
+
+class MypyHTMLBuilder(StandaloneHTMLBuilder):
+    def __init__(self, app: Sphinx) -> None:
+        super().__init__(app)
+        self._ref_to_doc = {}
+
+    def write_doc(self, docname: str, doctree: document) -> None:
+        super().write_doc(docname, doctree)
+        self._ref_to_doc.update({_id: docname for _id in doctree.ids})
+
+    def _verify_error_codes(self) -> None:
+        from mypy.errorcodes import error_codes
+
+        known_missing = {
+            # TODO: fix these before next release
+            "annotation-unchecked",
+            "empty-body",
+            "possibly-undefined",
+            "str-format",
+            "top-level-await",
+        }
+        missing_error_codes = {
+            c
+            for c in error_codes
+            if f"code-{c}" not in self._ref_to_doc and c not in known_missing
+        }
+        if missing_error_codes:
+            raise ValueError(
+                f"Some error codes are not documented: {', 
'.join(sorted(missing_error_codes))}"
+            )
+
+    def _write_ref_redirector(self) -> None:
+        if os.getenv("VERIFY_MYPY_ERROR_CODES"):
+            self._verify_error_codes()
+        p = Path(self.outdir) / "_refs.html"
+        data = f"""
+        <html>
+        <body>
+        <script>
+        const ref_to_doc = {json.dumps(self._ref_to_doc)};
+        const hash = window.location.hash.substring(1);
+        const doc = ref_to_doc[hash];
+        if (doc) {{
+            window.location.href = doc + '.html' + '#' + hash;
+        }} else {{
+            window.document.innerText = 'Unknown reference: ' + hash;
+        }}
+        </script>
+        </body>
+        </html>
+        """
+        p.write_text(textwrap.dedent(data))
+
+    def finish(self) -> None:
+        super().finish()
+        self._write_ref_redirector()
+
+
+def setup(app: Sphinx) -> dict[str, Any]:
+    app.add_builder(MypyHTMLBuilder, override=True)
+
+    return {"version": "0.1", "parallel_read_safe": True, 
"parallel_write_safe": True}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/mypy/fastparse.py 
new/mypy-1.4.1/mypy/fastparse.py
--- old/mypy-1.4.0/mypy/fastparse.py    2023-06-15 00:01:39.000000000 +0200
+++ new/mypy-1.4.1/mypy/fastparse.py    2023-06-25 22:07:41.000000000 +0200
@@ -521,7 +521,14 @@
             return [block]
 
         stack = self.class_and_function_stack
-        if self.strip_function_bodies and len(stack) == 1 and stack[0] == "F":
+        # Fast case for stripping function bodies
+        if (
+            can_strip
+            and self.strip_function_bodies
+            and len(stack) == 1
+            and stack[0] == "F"
+            and not is_coroutine
+        ):
             return []
 
         res: list[Statement] = []
@@ -529,32 +536,33 @@
             node = self.visit(stmt)
             res.append(node)
 
-        if (
-            self.strip_function_bodies
-            and can_strip
-            and stack[-2:] == ["C", "F"]
-            and not is_possible_trivial_body(res)
-        ):
-            # We only strip method bodies if they don't assign to an 
attribute, as
-            # this may define an attribute which has an externally visible 
effect.
-            visitor = FindAttributeAssign()
-            for s in res:
-                s.accept(visitor)
-                if visitor.found:
-                    break
-            else:
-                if is_coroutine:
-                    # Yields inside an async function affect the return type 
and should not
-                    # be stripped.
-                    yield_visitor = FindYield()
+        # Slow case for stripping function bodies
+        if can_strip and self.strip_function_bodies:
+            if stack[-2:] == ["C", "F"]:
+                if is_possible_trivial_body(res):
+                    can_strip = False
+                else:
+                    # We only strip method bodies if they don't assign to an 
attribute, as
+                    # this may define an attribute which has an externally 
visible effect.
+                    visitor = FindAttributeAssign()
                     for s in res:
-                        s.accept(yield_visitor)
-                        if yield_visitor.found:
+                        s.accept(visitor)
+                        if visitor.found:
+                            can_strip = False
                             break
-                    else:
-                        return []
-                else:
-                    return []
+
+            if can_strip and stack[-1] == "F" and is_coroutine:
+                # Yields inside an async function affect the return type and 
should not
+                # be stripped.
+                yield_visitor = FindYield()
+                for s in res:
+                    s.accept(yield_visitor)
+                    if yield_visitor.found:
+                        can_strip = False
+                        break
+
+            if can_strip:
+                return []
         return res
 
     def translate_type_comment(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/mypy/semanal_main.py 
new/mypy-1.4.1/mypy/semanal_main.py
--- old/mypy-1.4.0/mypy/semanal_main.py 2023-06-15 00:01:39.000000000 +0200
+++ new/mypy-1.4.1/mypy/semanal_main.py 2023-06-25 22:07:41.000000000 +0200
@@ -75,7 +75,6 @@
     "abc",
     "collections",
     "collections.abc",
-    "typing_extensions",
 ]
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/mypy/test/testpep561.py 
new/mypy-1.4.1/mypy/test/testpep561.py
--- old/mypy-1.4.0/mypy/test/testpep561.py      2023-06-15 00:01:39.000000000 
+0200
+++ new/mypy-1.4.1/mypy/test/testpep561.py      2023-06-25 22:07:41.000000000 
+0200
@@ -46,23 +46,39 @@
             yield venv_dir, os.path.abspath(os.path.join(venv_dir, "bin", 
"python"))
 
 
+def upgrade_pip(python_executable: str) -> None:
+    """Install pip>=21.3.1. Required for editable installs with PEP 660."""
+    if (
+        sys.version_info >= (3, 11)
+        or (3, 10, 3) <= sys.version_info < (3, 11)
+        or (3, 9, 11) <= sys.version_info < (3, 10)
+        or (3, 8, 13) <= sys.version_info < (3, 9)
+    ):
+        # Skip for more recent Python releases which come with pip>=21.3.1
+        # out of the box - for performance reasons.
+        return
+
+    install_cmd = [python_executable, "-m", "pip", "install", "pip>=21.3.1"]
+    try:
+        with filelock.FileLock(pip_lock, timeout=pip_timeout):
+            proc = subprocess.run(install_cmd, capture_output=True, 
env=os.environ)
+    except filelock.Timeout as err:
+        raise Exception(f"Failed to acquire {pip_lock}") from err
+    if proc.returncode != 0:
+        raise Exception(proc.stdout.decode("utf-8") + 
proc.stderr.decode("utf-8"))
+
+
 def install_package(
-    pkg: str, python_executable: str = sys.executable, use_pip: bool = True, 
editable: bool = False
+    pkg: str, python_executable: str = sys.executable, editable: bool = False
 ) -> None:
     """Install a package from test-data/packages/pkg/"""
     working_dir = os.path.join(package_path, pkg)
     with tempfile.TemporaryDirectory() as dir:
-        if use_pip:
-            install_cmd = [python_executable, "-m", "pip", "install"]
-            if editable:
-                install_cmd.append("-e")
-            install_cmd.append(".")
-        else:
-            install_cmd = [python_executable, "setup.py"]
-            if editable:
-                install_cmd.append("develop")
-            else:
-                install_cmd.append("install")
+        install_cmd = [python_executable, "-m", "pip", "install"]
+        if editable:
+            install_cmd.append("-e")
+        install_cmd.append(".")
+
         # Note that newer versions of pip (21.3+) don't
         # follow this env variable, but this is for compatibility
         env = {"PIP_BUILD": dir}
@@ -82,21 +98,28 @@
     assert testcase.old_cwd is not None, "test was not properly set up"
     python = sys.executable
 
+    if sys.version_info < (3, 8) and testcase.location[-1] == 
"testTypedPkgSimpleEditable":
+        # Python 3.7 doesn't ship with new enough pip to support PEP 660
+        # This is a quick hack to skip the test; we'll drop Python 3.7 support 
soon enough
+        return
+
     assert python is not None, "Should be impossible"
     pkgs, pip_args = parse_pkgs(testcase.input[0])
     mypy_args = parse_mypy_args(testcase.input[1])
-    use_pip = True
     editable = False
     for arg in pip_args:
-        if arg == "no-pip":
-            use_pip = False
-        elif arg == "editable":
+        if arg == "editable":
             editable = True
+        else:
+            raise ValueError(f"Unknown pip argument: {arg}")
     assert pkgs, "No packages to install for PEP 561 test?"
     with virtualenv(python) as venv:
         venv_dir, python_executable = venv
+        if editable:
+            # Editable installs with PEP 660 require pip>=21.3
+            upgrade_pip(python_executable)
         for pkg in pkgs:
-            install_package(pkg, python_executable, use_pip, editable)
+            install_package(pkg, python_executable, editable)
 
         cmd_line = list(mypy_args)
         has_program = not ("-p" in cmd_line or "--package" in cmd_line)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/mypy/version.py 
new/mypy-1.4.1/mypy/version.py
--- old/mypy-1.4.0/mypy/version.py      2023-06-15 00:01:39.000000000 +0200
+++ new/mypy-1.4.1/mypy/version.py      2023-06-25 22:07:41.000000000 +0200
@@ -8,7 +8,7 @@
 # - Release versions have the form "1.2.3".
 # - Dev versions have the form "1.2.3+dev" (PLUS sign to conform to PEP 440).
 # - Before 1.0 we had the form "0.NNN".
-__version__ = "1.4.0"
+__version__ = "1.4.1"
 base_version = __version__
 
 mypy_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/mypy-requirements.txt 
new/mypy-1.4.1/mypy-requirements.txt
--- old/mypy-1.4.0/mypy-requirements.txt        2023-06-15 00:01:39.000000000 
+0200
+++ new/mypy-1.4.1/mypy-requirements.txt        2023-06-25 22:07:41.000000000 
+0200
@@ -1,5 +1,5 @@
 # NOTE: this needs to be kept in sync with the "requires" list in 
pyproject.toml
-typing_extensions>=3.10
+typing_extensions>=4.1.0
 mypy_extensions>=1.0.0
 typed_ast>=1.4.0,<2; python_version<'3.8'
 tomli>=1.1.0; python_version<'3.11'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/mypy.egg-info/PKG-INFO 
new/mypy-1.4.1/mypy.egg-info/PKG-INFO
--- old/mypy-1.4.0/mypy.egg-info/PKG-INFO       2023-06-15 00:02:10.000000000 
+0200
+++ new/mypy-1.4.1/mypy.egg-info/PKG-INFO       2023-06-25 22:08:15.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: mypy
-Version: 1.4.0
+Version: 1.4.1
 Summary: Optional static typing for Python
 Home-page: https://www.mypy-lang.org/
 Author: Jukka Lehtosalo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/mypy.egg-info/SOURCES.txt 
new/mypy-1.4.1/mypy.egg-info/SOURCES.txt
--- old/mypy-1.4.0/mypy.egg-info/SOURCES.txt    2023-06-15 00:02:11.000000000 
+0200
+++ new/mypy-1.4.1/mypy.egg-info/SOURCES.txt    2023-06-25 22:08:15.000000000 
+0200
@@ -35,6 +35,7 @@
 docs/source/final_attrs.rst
 docs/source/generics.rst
 docs/source/getting_started.rst
+docs/source/html_builder.py
 docs/source/index.rst
 docs/source/inline_config.rst
 docs/source/installed_packages.rst
@@ -1099,8 +1100,8 @@
 test-data/packages/modulefinder/pkg1/a
 test-data/packages/modulefinder/pkg1/a.py
 test-data/packages/modulefinder/pkg2/b/__init__.py
-test-data/packages/typedpkg/setup.py
-test-data/packages/typedpkg-stubs/setup.py
+test-data/packages/typedpkg/pyproject.toml
+test-data/packages/typedpkg-stubs/pyproject.toml
 test-data/packages/typedpkg-stubs/typedpkg-stubs/__init__.pyi
 test-data/packages/typedpkg-stubs/typedpkg-stubs/py.typed
 test-data/packages/typedpkg-stubs/typedpkg-stubs/sample.pyi
@@ -1111,13 +1112,13 @@
 test-data/packages/typedpkg/typedpkg/pkg/__init__.py
 test-data/packages/typedpkg/typedpkg/pkg/aaa.py
 test-data/packages/typedpkg/typedpkg/pkg/py.typed
-test-data/packages/typedpkg_ns_a/setup.py
+test-data/packages/typedpkg_ns_a/pyproject.toml
 test-data/packages/typedpkg_ns_a/typedpkg_ns/__init__.py
 test-data/packages/typedpkg_ns_a/typedpkg_ns/a/__init__.py
 test-data/packages/typedpkg_ns_a/typedpkg_ns/a/bbb.py
 test-data/packages/typedpkg_ns_a/typedpkg_ns/a/py.typed
-test-data/packages/typedpkg_ns_b/setup.py
-test-data/packages/typedpkg_ns_b-stubs/setup.py
+test-data/packages/typedpkg_ns_b/pyproject.toml
+test-data/packages/typedpkg_ns_b-stubs/pyproject.toml
 test-data/packages/typedpkg_ns_b-stubs/typedpkg_ns-stubs/b/__init__.pyi
 test-data/packages/typedpkg_ns_b-stubs/typedpkg_ns-stubs/b/bbb.pyi
 test-data/packages/typedpkg_ns_b/typedpkg_ns/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/mypy.egg-info/requires.txt 
new/mypy-1.4.1/mypy.egg-info/requires.txt
--- old/mypy-1.4.0/mypy.egg-info/requires.txt   2023-06-15 00:02:10.000000000 
+0200
+++ new/mypy-1.4.1/mypy.egg-info/requires.txt   2023-06-25 22:08:15.000000000 
+0200
@@ -1,4 +1,4 @@
-typing_extensions>=3.10
+typing_extensions>=4.1.0
 mypy_extensions>=1.0.0
 
 [:python_version < "3.11"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/pyproject.toml 
new/mypy-1.4.1/pyproject.toml
--- old/mypy-1.4.0/pyproject.toml       2023-06-15 00:01:39.000000000 +0200
+++ new/mypy-1.4.1/pyproject.toml       2023-06-25 22:07:41.000000000 +0200
@@ -6,7 +6,7 @@
     "setuptools >= 40.6.2",
     "wheel >= 0.30.0",
     # the following is from mypy-requirements.txt
-    "typing_extensions>=3.10",
+    "typing_extensions>=4.1.0",
     "mypy_extensions>=1.0.0",
     "typed_ast>=1.4.0,<2; python_version<'3.8'",
     "tomli>=1.1.0; python_version<'3.11'",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/setup.py new/mypy-1.4.1/setup.py
--- old/mypy-1.4.0/setup.py     2023-06-15 00:01:39.000000000 +0200
+++ new/mypy-1.4.1/setup.py     2023-06-25 22:07:41.000000000 +0200
@@ -222,7 +222,7 @@
     # When changing this, also update mypy-requirements.txt.
     install_requires=[
         "typed_ast >= 1.4.0, < 2; python_version<'3.8'",
-        "typing_extensions>=3.10",
+        "typing_extensions>=4.1.0",
         "mypy_extensions >= 1.0.0",
         "tomli>=1.1.0; python_version<'3.11'",
     ],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mypy-1.4.0/test-data/packages/typedpkg/pyproject.toml 
new/mypy-1.4.1/test-data/packages/typedpkg/pyproject.toml
--- old/mypy-1.4.0/test-data/packages/typedpkg/pyproject.toml   1970-01-01 
01:00:00.000000000 +0100
+++ new/mypy-1.4.1/test-data/packages/typedpkg/pyproject.toml   2023-06-25 
22:07:41.000000000 +0200
@@ -0,0 +1,8 @@
+[project]
+name = 'typedpkg'
+version = '0.1'
+description = 'test'
+
+[build-system]
+requires = ["hatchling"]
+build-backend = "hatchling.build"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/test-data/packages/typedpkg/setup.py 
new/mypy-1.4.1/test-data/packages/typedpkg/setup.py
--- old/mypy-1.4.0/test-data/packages/typedpkg/setup.py 2023-06-15 
00:01:39.000000000 +0200
+++ new/mypy-1.4.1/test-data/packages/typedpkg/setup.py 1970-01-01 
01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-"""
-This setup file installs packages to test mypy's PEP 561 implementation
-"""
-
-from setuptools import setup
-
-setup(
-    name='typedpkg',
-    author="The mypy team",
-    version='0.1',
-    package_data={'typedpkg': ['py.typed']},
-    packages=['typedpkg', 'typedpkg.pkg'],
-    include_package_data=True,
-    zip_safe=False,
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mypy-1.4.0/test-data/packages/typedpkg-stubs/pyproject.toml 
new/mypy-1.4.1/test-data/packages/typedpkg-stubs/pyproject.toml
--- old/mypy-1.4.0/test-data/packages/typedpkg-stubs/pyproject.toml     
1970-01-01 01:00:00.000000000 +0100
+++ new/mypy-1.4.1/test-data/packages/typedpkg-stubs/pyproject.toml     
2023-06-25 22:07:41.000000000 +0200
@@ -0,0 +1,11 @@
+[project]
+name = 'typedpkg-stubs'
+version = '0.1'
+description = 'test'
+
+[tool.hatch.build]
+include = ["**/*.pyi"]
+
+[build-system]
+requires = ["hatchling"]
+build-backend = "hatchling.build"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mypy-1.4.0/test-data/packages/typedpkg-stubs/setup.py 
new/mypy-1.4.1/test-data/packages/typedpkg-stubs/setup.py
--- old/mypy-1.4.0/test-data/packages/typedpkg-stubs/setup.py   2023-06-15 
00:01:39.000000000 +0200
+++ new/mypy-1.4.1/test-data/packages/typedpkg-stubs/setup.py   1970-01-01 
01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-"""
-This setup file installs packages to test mypy's PEP 561 implementation
-"""
-
-from setuptools import setup
-
-setup(
-    name='typedpkg-stubs',
-    author="The mypy team",
-    version='0.1',
-    package_data={'typedpkg-stubs': ['sample.pyi', '__init__.pyi', 
'py.typed']},
-    packages=['typedpkg-stubs'],
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mypy-1.4.0/test-data/packages/typedpkg_ns_a/pyproject.toml 
new/mypy-1.4.1/test-data/packages/typedpkg_ns_a/pyproject.toml
--- old/mypy-1.4.0/test-data/packages/typedpkg_ns_a/pyproject.toml      
1970-01-01 01:00:00.000000000 +0100
+++ new/mypy-1.4.1/test-data/packages/typedpkg_ns_a/pyproject.toml      
2023-06-25 22:07:41.000000000 +0200
@@ -0,0 +1,11 @@
+[project]
+name = 'typedpkg_namespace.alpha'
+version = '0.1'
+description = 'test'
+
+[tool.hatch.build]
+include = ["**/*.py", "**/*.pyi", "**/py.typed"]
+
+[build-system]
+requires = ["hatchling"]
+build-backend = "hatchling.build"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/test-data/packages/typedpkg_ns_a/setup.py 
new/mypy-1.4.1/test-data/packages/typedpkg_ns_a/setup.py
--- old/mypy-1.4.0/test-data/packages/typedpkg_ns_a/setup.py    2023-06-15 
00:01:39.000000000 +0200
+++ new/mypy-1.4.1/test-data/packages/typedpkg_ns_a/setup.py    1970-01-01 
01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-from setuptools import setup
-
-setup(
-    name='typedpkg_namespace.alpha',
-    version='1.0.0',
-    namespace_packages=['typedpkg_ns'],
-    zip_safe=False,
-    package_data={'typedpkg_ns.a': ['py.typed']},
-    packages=['typedpkg_ns.a'],
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mypy-1.4.0/test-data/packages/typedpkg_ns_b/pyproject.toml 
new/mypy-1.4.1/test-data/packages/typedpkg_ns_b/pyproject.toml
--- old/mypy-1.4.0/test-data/packages/typedpkg_ns_b/pyproject.toml      
1970-01-01 01:00:00.000000000 +0100
+++ new/mypy-1.4.1/test-data/packages/typedpkg_ns_b/pyproject.toml      
2023-06-25 22:07:41.000000000 +0200
@@ -0,0 +1,8 @@
+[project]
+name = 'typedpkg_namespace.beta'
+version = '0.1'
+description = 'test'
+
+[build-system]
+requires = ["hatchling"]
+build-backend = "hatchling.build"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/test-data/packages/typedpkg_ns_b/setup.py 
new/mypy-1.4.1/test-data/packages/typedpkg_ns_b/setup.py
--- old/mypy-1.4.0/test-data/packages/typedpkg_ns_b/setup.py    2023-06-15 
00:01:39.000000000 +0200
+++ new/mypy-1.4.1/test-data/packages/typedpkg_ns_b/setup.py    1970-01-01 
01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-from setuptools import setup
-
-setup(
-    name='typedpkg_namespace.beta',
-    version='1.0.0',
-    namespace_packages=['typedpkg_ns'],
-    zip_safe=False,
-    package_data={'typedpkg_ns.b': []},
-    packages=['typedpkg_ns.b'],
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mypy-1.4.0/test-data/packages/typedpkg_ns_b-stubs/pyproject.toml 
new/mypy-1.4.1/test-data/packages/typedpkg_ns_b-stubs/pyproject.toml
--- old/mypy-1.4.0/test-data/packages/typedpkg_ns_b-stubs/pyproject.toml        
1970-01-01 01:00:00.000000000 +0100
+++ new/mypy-1.4.1/test-data/packages/typedpkg_ns_b-stubs/pyproject.toml        
2023-06-25 22:07:41.000000000 +0200
@@ -0,0 +1,11 @@
+[project]
+name = 'typedpkg_ns-stubs'
+version = '0.1'
+description = 'test'
+
+[tool.hatch.build]
+include = ["**/*.pyi"]
+
+[build-system]
+requires = ["hatchling"]
+build-backend = "hatchling.build"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mypy-1.4.0/test-data/packages/typedpkg_ns_b-stubs/setup.py 
new/mypy-1.4.1/test-data/packages/typedpkg_ns_b-stubs/setup.py
--- old/mypy-1.4.0/test-data/packages/typedpkg_ns_b-stubs/setup.py      
2023-06-15 00:01:39.000000000 +0200
+++ new/mypy-1.4.1/test-data/packages/typedpkg_ns_b-stubs/setup.py      
1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-"""
-This setup file installs packages to test mypy's PEP 561 implementation
-"""
-
-from distutils.core import setup
-
-setup(
-    name='typedpkg_ns_b-stubs',
-    author="The mypy team",
-    version='0.1',
-    namespace_packages=['typedpkg_ns-stubs'],
-    package_data={'typedpkg_ns-stubs.b': ['__init__.pyi', 'bbb.pyi']},
-    packages=['typedpkg_ns-stubs.b'],
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/test-data/unit/check-async-await.test 
new/mypy-1.4.1/test-data/unit/check-async-await.test
--- old/mypy-1.4.0/test-data/unit/check-async-await.test        2023-06-15 
00:01:39.000000000 +0200
+++ new/mypy-1.4.1/test-data/unit/check-async-await.test        2023-06-25 
22:07:41.000000000 +0200
@@ -945,17 +945,21 @@
 [typing fixtures/typing-async.pyi]
 
 [case testAsyncIteratorWithIgnoredErrors]
-from m import L
+import m
 
-async def func(l: L) -> None:
+async def func(l: m.L) -> None:
     reveal_type(l.get_iterator)  # N: Revealed type is "def () -> 
typing.AsyncIterator[builtins.str]"
     reveal_type(l.get_iterator2)  # N: Revealed type is "def () -> 
typing.AsyncIterator[builtins.str]"
     async for i in l.get_iterator():
         reveal_type(i)  # N: Revealed type is "builtins.str"
 
+    reveal_type(m.get_generator)  # N: Revealed type is "def () -> 
typing.AsyncGenerator[builtins.int, None]"
+    async for i2 in m.get_generator():
+        reveal_type(i2)  # N: Revealed type is "builtins.int"
+
 [file m.py]
 # mypy: ignore-errors=True
-from typing import AsyncIterator
+from typing import AsyncIterator, AsyncGenerator
 
 class L:
     async def some_func(self, i: int) -> str:
@@ -968,6 +972,9 @@
         if self:
             a = (yield 'x')
 
+async def get_generator() -> AsyncGenerator[int, None]:
+    yield 1
+
 [builtins fixtures/async_await.pyi]
 [typing fixtures/typing-async.pyi]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/test-data/unit/pep561.test 
new/mypy-1.4.1/test-data/unit/pep561.test
--- old/mypy-1.4.0/test-data/unit/pep561.test   2023-06-15 00:01:39.000000000 
+0200
+++ new/mypy-1.4.1/test-data/unit/pep561.test   2023-06-25 22:07:41.000000000 
+0200
@@ -72,15 +72,6 @@
 [out]
 testStubPrecedence.py:5: note: Revealed type is "builtins.list[builtins.str]"
 
-[case testTypedPkgSimpleEgg]
-# pkgs: typedpkg; no-pip
-from typedpkg.sample import ex
-from typedpkg import dne
-a = ex([''])
-reveal_type(a)
-[out]
-testTypedPkgSimpleEgg.py:5: note: Revealed type is 
"builtins.tuple[builtins.str, ...]"
-
 [case testTypedPkgSimpleEditable]
 # pkgs: typedpkg; editable
 from typedpkg.sample import ex
@@ -90,15 +81,6 @@
 [out]
 testTypedPkgSimpleEditable.py:5: note: Revealed type is 
"builtins.tuple[builtins.str, ...]"
 
-[case testTypedPkgSimpleEditableEgg]
-# pkgs: typedpkg; editable; no-pip
-from typedpkg.sample import ex
-from typedpkg import dne
-a = ex([''])
-reveal_type(a)
-[out]
-testTypedPkgSimpleEditableEgg.py:5: note: Revealed type is 
"builtins.tuple[builtins.str, ...]"
-
 [case testTypedPkgNamespaceImportFrom]
 # pkgs: typedpkg, typedpkg_ns_a
 from typedpkg.pkg.aaa import af
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mypy-1.4.0/test-requirements.txt 
new/mypy-1.4.1/test-requirements.txt
--- old/mypy-1.4.0/test-requirements.txt        2023-06-15 00:01:39.000000000 
+0200
+++ new/mypy-1.4.1/test-requirements.txt        2023-06-25 22:07:41.000000000 
+0200
@@ -12,7 +12,8 @@
 pre-commit-hooks==4.4.0
 psutil>=4.0
 # pytest 6.2.3 does not support Python 3.10
-pytest>=6.2.4
+# TODO: fix use of removed private APIs so we can use the latest pytest
+pytest>=6.2.4,<7.4.0
 pytest-xdist>=1.34.0
 pytest-forked>=1.3.0,<2.0.0
 pytest-cov>=2.10.0

++++++ types-psutil-5.9.5.12.tar.gz -> types-psutil-5.9.5.15.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/types-psutil-5.9.5.12/CHANGELOG.md 
new/types-psutil-5.9.5.15/CHANGELOG.md
--- old/types-psutil-5.9.5.12/CHANGELOG.md      2023-04-20 05:15:56.000000000 
+0200
+++ new/types-psutil-5.9.5.15/CHANGELOG.md      2023-06-12 14:28:49.000000000 
+0200
@@ -1,3 +1,15 @@
+## 5.9.5.15 (2023-06-12)
+
+psutil: import platform-specific 'pio' definitions (#10305)
+
+## 5.9.5.14 (2023-06-12)
+
+psutil: declare return type of io_counters() (#10303)
+
+## 5.9.5.13 (2023-06-01)
+
+[psutil] Fix cpu_percent return type when percpu is True (#10238)
+
 ## 5.9.5.12 (2023-04-20)
 
 psutil: fix stubtest (#10065)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/types-psutil-5.9.5.12/PKG-INFO 
new/types-psutil-5.9.5.15/PKG-INFO
--- old/types-psutil-5.9.5.12/PKG-INFO  2023-04-20 05:15:57.977673300 +0200
+++ new/types-psutil-5.9.5.15/PKG-INFO  2023-06-12 14:28:51.626813400 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: types-psutil
-Version: 5.9.5.12
+Version: 5.9.5.15
 Summary: Typing stubs for psutil
 Home-page: https://github.com/python/typeshed
 License: Apache-2.0 license
@@ -26,4 +26,4 @@
 types and metadata should be contributed there.
 
 See https://github.com/python/typeshed/blob/main/README.md for more details.
-This package was generated from typeshed commit 
`143b9612f1217e72c60df732b8b66a64d8ecc304`.
+This package was generated from typeshed commit 
`fce4fe7b881be596fc8315c5ed6bdea0e45912c5`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/types-psutil-5.9.5.12/psutil-stubs/__init__.pyi 
new/types-psutil-5.9.5.15/psutil-stubs/__init__.pyi
--- old/types-psutil-5.9.5.12/psutil-stubs/__init__.pyi 2023-04-20 
05:15:40.000000000 +0200
+++ new/types-psutil-5.9.5.15/psutil-stubs/__init__.pyi 2023-06-12 
14:28:37.000000000 +0200
@@ -133,6 +133,13 @@
 
     def sensors_battery(): ...
 
+if sys.platform == "linux":
+    from ._pslinux import pio
+elif sys.platform == "win32":
+    from ._pswindows import pio
+else:
+    from ._common import pio
+
 AF_LINK: int
 version_info: tuple[int, int, int]
 __version__: str
@@ -184,7 +191,7 @@
         def terminal(self) -> str: ...
         def num_fds(self) -> int: ...
     if sys.platform != "darwin":
-        def io_counters(self): ...
+        def io_counters(self) -> pio: ...
         def ionice(self, ioclass: int | None = None, value: int | None = None) 
-> pionice: ...
         def cpu_affinity(self, cpus: list[int] | None = None) -> list[int] | 
None: ...
         def memory_maps(self, grouped: bool = True): ...
@@ -231,7 +238,12 @@
 ) -> tuple[list[Process], list[Process]]: ...
 def cpu_count(logical: bool = True) -> int: ...
 def cpu_times(percpu: bool = False): ...
-def cpu_percent(interval: float | None = None, percpu: bool = False) -> float: 
...
+@overload
+def cpu_percent(interval: float | None = None, percpu: Literal[False] = False) 
-> float: ...
+@overload
+def cpu_percent(interval: float | None, percpu: Literal[True]) -> list[float]: 
...
+@overload
+def cpu_percent(*, percpu: Literal[True]) -> list[float]: ...
 def cpu_times_percent(interval: float | None = None, percpu: bool = False): ...
 def cpu_stats() -> scpustats: ...
 def cpu_freq(percpu: bool = False) -> scpufreq: ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/types-psutil-5.9.5.12/psutil-stubs/_psbsd.pyi 
new/types-psutil-5.9.5.15/psutil-stubs/_psbsd.pyi
--- old/types-psutil-5.9.5.12/psutil-stubs/_psbsd.pyi   2023-04-20 
05:15:40.000000000 +0200
+++ new/types-psutil-5.9.5.15/psutil-stubs/_psbsd.pyi   2023-06-12 
14:28:37.000000000 +0200
@@ -12,6 +12,7 @@
     conn_tmap as conn_tmap,
     conn_to_ntuple as conn_to_ntuple,
     memoize as memoize,
+    pio,
     usage_percent as usage_percent,
 )
 
@@ -140,7 +141,7 @@
     def nice_get(self): ...
     def nice_set(self, value): ...
     def status(self): ...
-    def io_counters(self): ...
+    def io_counters(self) -> pio: ...
     def cwd(self): ...
 
     class nt_mmap_grouped(NamedTuple):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/types-psutil-5.9.5.12/psutil-stubs/_pslinux.pyi 
new/types-psutil-5.9.5.15/psutil-stubs/_pslinux.pyi
--- old/types-psutil-5.9.5.12/psutil-stubs/_pslinux.pyi 2023-04-20 
05:15:40.000000000 +0200
+++ new/types-psutil-5.9.5.15/psutil-stubs/_pslinux.pyi 2023-06-12 
14:28:37.000000000 +0200
@@ -199,7 +199,7 @@
     def cmdline(self): ...
     def environ(self): ...
     def terminal(self): ...
-    def io_counters(self): ...
+    def io_counters(self) -> pio: ...
     def cpu_times(self): ...
     def cpu_num(self): ...
     def wait(self, timeout: Incomplete | None = ...): ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/types-psutil-5.9.5.12/psutil-stubs/_pswindows.pyi 
new/types-psutil-5.9.5.15/psutil-stubs/_pswindows.pyi
--- old/types-psutil-5.9.5.12/psutil-stubs/_pswindows.pyi       2023-04-20 
05:15:40.000000000 +0200
+++ new/types-psutil-5.9.5.15/psutil-stubs/_pswindows.pyi       2023-06-12 
14:28:37.000000000 +0200
@@ -193,7 +193,7 @@
     def nice_set(self, value): ...
     def ionice_get(self): ...
     def ionice_set(self, ioclass, value) -> None: ...
-    def io_counters(self): ...
+    def io_counters(self) -> pio: ...
     def status(self): ...
     def cpu_affinity_get(self): ...
     def cpu_affinity_set(self, value): ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/types-psutil-5.9.5.12/setup.py 
new/types-psutil-5.9.5.15/setup.py
--- old/types-psutil-5.9.5.12/setup.py  2023-04-20 05:15:56.000000000 +0200
+++ new/types-psutil-5.9.5.15/setup.py  2023-06-12 14:28:49.000000000 +0200
@@ -16,11 +16,11 @@
 types and metadata should be contributed there.
 
 See https://github.com/python/typeshed/blob/main/README.md for more details.
-This package was generated from typeshed commit 
`143b9612f1217e72c60df732b8b66a64d8ecc304`.
+This package was generated from typeshed commit 
`fce4fe7b881be596fc8315c5ed6bdea0e45912c5`.
 '''.lstrip()
 
 setup(name=name,
-      version="5.9.5.12",
+      version="5.9.5.15",
       description=description,
       long_description=long_description,
       long_description_content_type="text/markdown",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/types-psutil-5.9.5.12/types_psutil.egg-info/PKG-INFO 
new/types-psutil-5.9.5.15/types_psutil.egg-info/PKG-INFO
--- old/types-psutil-5.9.5.12/types_psutil.egg-info/PKG-INFO    2023-04-20 
05:15:57.000000000 +0200
+++ new/types-psutil-5.9.5.15/types_psutil.egg-info/PKG-INFO    2023-06-12 
14:28:51.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: types-psutil
-Version: 5.9.5.12
+Version: 5.9.5.15
 Summary: Typing stubs for psutil
 Home-page: https://github.com/python/typeshed
 License: Apache-2.0 license
@@ -26,4 +26,4 @@
 types and metadata should be contributed there.
 
 See https://github.com/python/typeshed/blob/main/README.md for more details.
-This package was generated from typeshed commit 
`143b9612f1217e72c60df732b8b66a64d8ecc304`.
+This package was generated from typeshed commit 
`fce4fe7b881be596fc8315c5ed6bdea0e45912c5`.

++++++ types-setuptools-67.7.0.1.tar.gz -> types-setuptools-68.0.0.2.tar.gz 
++++++
++++ 2125 lines of diff (skipped)

++++++ types-typed-ast-1.5.8.6.tar.gz -> types-typed-ast-1.5.8.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/types-typed-ast-1.5.8.6/CHANGELOG.md 
new/types-typed-ast-1.5.8.7/CHANGELOG.md
--- old/types-typed-ast-1.5.8.6/CHANGELOG.md    2023-03-28 14:33:13.000000000 
+0200
+++ new/types-typed-ast-1.5.8.7/CHANGELOG.md    2023-07-05 20:21:28.000000000 
+0200
@@ -1,3 +1,7 @@
+## 1.5.8.7 (2023-07-05)
+
+Mark `types-typed-ast` as no longer updated (#10410)
+
 ## 1.5.8.6 (2023-03-28)
 
 Add defaults for third-party stubs Q-T (#9959)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/types-typed-ast-1.5.8.6/PKG-INFO 
new/types-typed-ast-1.5.8.7/PKG-INFO
--- old/types-typed-ast-1.5.8.6/PKG-INFO        2023-03-28 14:33:13.861138300 
+0200
+++ new/types-typed-ast-1.5.8.7/PKG-INFO        2023-07-05 20:21:31.136128700 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: types-typed-ast
-Version: 1.5.8.6
+Version: 1.5.8.7
 Summary: Typing stubs for typed-ast
 Home-page: https://github.com/python/typeshed
 License: Apache-2.0 license
@@ -25,5 +25,10 @@
 https://github.com/python/typeshed/tree/main/stubs/typed-ast. All fixes for
 types and metadata should be contributed there.
 
+*Note:* `types-typed-ast` is unmaintained and won't be updated.
+
+
 See https://github.com/python/typeshed/blob/main/README.md for more details.
-This package was generated from typeshed commit 
`6b485a882325829dcbb6dd1d59c5e54b0bcfece1`.
+This package was generated from typeshed commit 
`597810e46e823732a87dd7c0c6632e2c63a40016` and was tested
+with mypy 1.4.1, pyright 1.1.316, and
+pytype 2023.6.16.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/types-typed-ast-1.5.8.6/setup.py 
new/types-typed-ast-1.5.8.7/setup.py
--- old/types-typed-ast-1.5.8.6/setup.py        2023-03-28 14:33:13.000000000 
+0200
+++ new/types-typed-ast-1.5.8.7/setup.py        2023-07-05 20:21:28.000000000 
+0200
@@ -15,12 +15,17 @@
 https://github.com/python/typeshed/tree/main/stubs/typed-ast. All fixes for
 types and metadata should be contributed there.
 
+*Note:* `types-typed-ast` is unmaintained and won't be updated.
+
+
 See https://github.com/python/typeshed/blob/main/README.md for more details.
-This package was generated from typeshed commit 
`6b485a882325829dcbb6dd1d59c5e54b0bcfece1`.
+This package was generated from typeshed commit 
`597810e46e823732a87dd7c0c6632e2c63a40016` and was tested
+with mypy 1.4.1, pyright 1.1.316, and
+pytype 2023.6.16.
 '''.lstrip()
 
 setup(name=name,
-      version="1.5.8.6",
+      version="1.5.8.7",
       description=description,
       long_description=long_description,
       long_description_content_type="text/markdown",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/types-typed-ast-1.5.8.6/typed_ast-stubs/METADATA.toml 
new/types-typed-ast-1.5.8.7/typed_ast-stubs/METADATA.toml
--- old/types-typed-ast-1.5.8.6/typed_ast-stubs/METADATA.toml   2023-03-28 
14:33:13.000000000 +0200
+++ new/types-typed-ast-1.5.8.7/typed_ast-stubs/METADATA.toml   2023-07-05 
20:21:28.000000000 +0200
@@ -1 +1,2 @@
 version = "1.5.*"
+no_longer_updated = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/types-typed-ast-1.5.8.6/types_typed_ast.egg-info/PKG-INFO 
new/types-typed-ast-1.5.8.7/types_typed_ast.egg-info/PKG-INFO
--- old/types-typed-ast-1.5.8.6/types_typed_ast.egg-info/PKG-INFO       
2023-03-28 14:33:13.000000000 +0200
+++ new/types-typed-ast-1.5.8.7/types_typed_ast.egg-info/PKG-INFO       
2023-07-05 20:21:31.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: types-typed-ast
-Version: 1.5.8.6
+Version: 1.5.8.7
 Summary: Typing stubs for typed-ast
 Home-page: https://github.com/python/typeshed
 License: Apache-2.0 license
@@ -25,5 +25,10 @@
 https://github.com/python/typeshed/tree/main/stubs/typed-ast. All fixes for
 types and metadata should be contributed there.
 
+*Note:* `types-typed-ast` is unmaintained and won't be updated.
+
+
 See https://github.com/python/typeshed/blob/main/README.md for more details.
-This package was generated from typeshed commit 
`6b485a882325829dcbb6dd1d59c5e54b0bcfece1`.
+This package was generated from typeshed commit 
`597810e46e823732a87dd7c0c6632e2c63a40016` and was tested
+with mypy 1.4.1, pyright 1.1.316, and
+pytype 2023.6.16.

Reply via email to