Script 'mail_helper' called by obssrc
Hello community,

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

Package is "python-parso"

Tue Mar 17 19:02:11 2026 rev:24 rq:1339170 version:0.8.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-parso/python-parso.changes        
2025-09-11 14:39:18.135699504 +0200
+++ /work/SRC/openSUSE:Factory/.python-parso.new.8177/python-parso.changes      
2026-03-17 19:02:22.151386378 +0100
@@ -1,0 +2,7 @@
+Sun Mar  8 20:54:40 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.8.6:
+  * Switch the type checker to Zuban. It's faster and now also
+    checks untyped code.
+
+-------------------------------------------------------------------

Old:
----
  parso-0.8.5.tar.gz

New:
----
  parso-0.8.6.tar.gz

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

Other differences:
------------------
++++++ python-parso.spec ++++++
--- /var/tmp/diff_new_pack.OrOQ9P/_old  2026-03-17 19:02:22.827414100 +0100
+++ /var/tmp/diff_new_pack.OrOQ9P/_new  2026-03-17 19:02:22.827414100 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-parso
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-parso
-Version:        0.8.5
+Version:        0.8.6
 Release:        0
 Summary:        An autocompletion tool for Python
 License:        MIT AND Python-2.0

++++++ parso-0.8.5.tar.gz -> parso-0.8.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/CHANGELOG.rst 
new/parso-0.8.6/CHANGELOG.rst
--- old/parso-0.8.5/CHANGELOG.rst       2025-08-23 17:13:21.000000000 +0200
+++ new/parso-0.8.6/CHANGELOG.rst       2026-02-09 16:45:03.000000000 +0100
@@ -6,6 +6,12 @@
 Unreleased
 ++++++++++
 
+0.8.6 (2026-02-09)
+++++++++++++++++++
+
+- Switch the type checker to Zuban. It's faster and now also checks untyped
+  code.
+
 0.8.5 (2025-08-23)
 ++++++++++++++++++
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/PKG-INFO new/parso-0.8.6/PKG-INFO
--- old/parso-0.8.5/PKG-INFO    2025-08-23 17:14:52.367139600 +0200
+++ new/parso-0.8.6/PKG-INFO    2026-02-09 16:45:19.737467500 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: parso
-Version: 0.8.5
+Version: 0.8.6
 Summary: A Python Parser
 Home-page: https://github.com/davidhalter/parso
 Author: David Halter
@@ -37,7 +37,7 @@
 Requires-Dist: docopt; extra == "testing"
 Provides-Extra: qa
 Requires-Dist: flake8==5.0.4; extra == "qa"
-Requires-Dist: mypy==0.971; extra == "qa"
+Requires-Dist: zuban==0.5.1; extra == "qa"
 Requires-Dist: types-setuptools==67.2.0.1; extra == "qa"
 Dynamic: author
 Dynamic: author-email
@@ -160,6 +160,12 @@
 Unreleased
 ++++++++++
 
+0.8.6 (2026-02-09)
+++++++++++++++++++
+
+- Switch the type checker to Zuban. It's faster and now also checks untyped
+  code.
+
 0.8.5 (2025-08-23)
 ++++++++++++++++++
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso/__init__.py 
new/parso-0.8.6/parso/__init__.py
--- old/parso-0.8.5/parso/__init__.py   2025-08-23 17:13:21.000000000 +0200
+++ new/parso-0.8.6/parso/__init__.py   2026-02-09 16:45:03.000000000 +0100
@@ -43,7 +43,7 @@
 from parso.utils import split_lines, python_bytes_to_unicode
 
 
-__version__ = '0.8.5'
+__version__ = '0.8.6'
 
 
 def parse(code=None, **kwargs):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso/grammar.py 
new/parso-0.8.6/parso/grammar.py
--- old/parso-0.8.5/parso/grammar.py    2025-08-23 17:13:21.000000000 +0200
+++ new/parso-0.8.6/parso/grammar.py    2026-02-09 16:45:03.000000000 +0100
@@ -1,6 +1,6 @@
 import hashlib
 import os
-from typing import Generic, TypeVar, Union, Dict, Optional, Any
+from typing import Generic, TypeVar, Union, Dict, Optional, Any, Iterator
 from pathlib import Path
 
 from parso._compatibility import is_pypy
@@ -8,7 +8,7 @@
 from parso.utils import split_lines, python_bytes_to_unicode, \
     PythonVersionInfo, parse_version_string
 from parso.python.diff import DiffParser
-from parso.python.tokenize import tokenize_lines, tokenize
+from parso.python.tokenize import tokenize_lines, tokenize, PythonToken
 from parso.python.token import PythonTokenTypes
 from parso.cache import parser_cache, load_module, try_to_save_module
 from parso.parser import BaseParser
@@ -223,7 +223,7 @@
         )
         self.version_info = version_info
 
-    def _tokenize_lines(self, lines, **kwargs):
+    def _tokenize_lines(self, lines, **kwargs) -> Iterator[PythonToken]:
         return tokenize_lines(lines, version_info=self.version_info, **kwargs)
 
     def _tokenize(self, code):
@@ -255,7 +255,6 @@
         'grammar%s%s.txt' % (version_info.major, version_info.minor)
     )
 
-    global _loaded_grammars
     path = os.path.join(os.path.dirname(__file__), file)
     try:
         return _loaded_grammars[path]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso/normalizer.py 
new/parso-0.8.6/parso/normalizer.py
--- old/parso-0.8.5/parso/normalizer.py 2025-08-23 17:13:21.000000000 +0200
+++ new/parso-0.8.6/parso/normalizer.py 2026-02-09 16:45:03.000000000 +0100
@@ -1,8 +1,11 @@
 from contextlib import contextmanager
-from typing import Dict, List
+from typing import Dict, List, Any
 
 
 class _NormalizerMeta(type):
+    rule_value_classes: Any
+    rule_type_classes: Any
+
     def __new__(cls, name, bases, dct):
         new_cls = type.__new__(cls, name, bases, dct)
         new_cls.rule_value_classes = {}
@@ -109,9 +112,6 @@
     normalizer_class = Normalizer
 
     def create_normalizer(self, grammar):
-        if self.normalizer_class is None:
-            return None
-
         return self.normalizer_class(grammar, self)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso/pgen2/generator.py 
new/parso-0.8.6/parso/pgen2/generator.py
--- old/parso-0.8.5/parso/pgen2/generator.py    2025-08-23 17:13:21.000000000 
+0200
+++ new/parso-0.8.6/parso/pgen2/generator.py    2026-02-09 16:45:03.000000000 
+0100
@@ -83,14 +83,14 @@
         self.from_rule = from_rule
         self.nfa_set = nfa_set
         # map from terminals/nonterminals to DFAState
-        self.arcs: Mapping[str, DFAState] = {}
+        self.arcs: dict[str, DFAState] = {}
         # In an intermediary step we set these nonterminal arcs (which has the
         # same structure as arcs). These don't contain terminals anymore.
-        self.nonterminal_arcs: Mapping[str, DFAState] = {}
+        self.nonterminal_arcs: dict[str, DFAState] = {}
 
         # Transitions are basically the only thing that  the parser is using
         # with is_final. Everyting else is purely here to create a parser.
-        self.transitions: Mapping[Union[_TokenTypeT, ReservedString], DFAPlan] 
= {}
+        self.transitions: dict[Union[_TokenTypeT, ReservedString], DFAPlan] = 
{}
         self.is_final = final in nfa_set
 
     def add_arc(self, next_, label):
@@ -261,7 +261,7 @@
         if start_nonterminal is None:
             start_nonterminal = nfa_a.from_rule
 
-    reserved_strings: Mapping[str, ReservedString] = {}
+    reserved_strings: dict[str, ReservedString] = {}
     for nonterminal, dfas in rule_to_dfas.items():
         for dfa_state in dfas:
             for terminal_or_nonterminal, next_dfa in dfa_state.arcs.items():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso/python/diff.py 
new/parso-0.8.6/parso/python/diff.py
--- old/parso-0.8.5/parso/python/diff.py        2025-08-23 17:13:21.000000000 
+0200
+++ new/parso-0.8.6/parso/python/diff.py        2026-02-09 16:45:03.000000000 
+0100
@@ -881,6 +881,6 @@
             end_pos[0] += len(lines) - 1
             end_pos[1] = len(lines[-1])
 
-        endmarker = EndMarker('', tuple(end_pos), self.prefix + 
self._prefix_remainder)
+        endmarker = EndMarker('', (end_pos[0], end_pos[1]), self.prefix + 
self._prefix_remainder)
         endmarker.parent = self._module
         self._module.children.append(endmarker)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso/python/pep8.py 
new/parso-0.8.6/parso/python/pep8.py
--- old/parso-0.8.5/parso/python/pep8.py        2025-08-23 17:13:21.000000000 
+0200
+++ new/parso-0.8.6/parso/python/pep8.py        2026-02-09 16:45:03.000000000 
+0100
@@ -676,7 +676,7 @@
                 elif leaf.parent.type == 'function' and leaf.parent.name == 
leaf:
                     self.add_issue(leaf, 743, message % 'function')
                 else:
-                    self.add_issuadd_issue(741, message % 'variables', leaf)
+                    self.add_issue(741, message % 'variables', leaf)
         elif leaf.value == ':':
             if isinstance(leaf.parent, (Flow, Scope)) and leaf.parent.type != 
'lambdef':
                 next_leaf = leaf.get_next_leaf()
@@ -764,4 +764,4 @@
     message = 'Blank line at end of file'
 
     def is_issue(self, leaf):
-        return self._newline_count >= 2
+        return False  # TODO return self._newline_count >= 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso/python/tokenize.py 
new/parso-0.8.6/parso/python/tokenize.py
--- old/parso-0.8.5/parso/python/tokenize.py    2025-08-23 17:13:21.000000000 
+0200
+++ new/parso-0.8.6/parso/python/tokenize.py    2026-02-09 16:45:03.000000000 
+0100
@@ -16,7 +16,7 @@
 import itertools as _itertools
 from codecs import BOM_UTF8
 from typing import NamedTuple, Tuple, Iterator, Iterable, List, Dict, \
-    Pattern, Set
+    Pattern, Set, Any
 
 from parso.python.token import PythonTokenTypes
 from parso.utils import split_lines, PythonVersionInfo, parse_version_string
@@ -47,12 +47,12 @@
     endpats: Dict[str, Pattern]
     whitespace: Pattern
     fstring_pattern_map: Dict[str, str]
-    always_break_tokens: Tuple[str]
+    always_break_tokens: Set[str]
 
 
 BOM_UTF8_STRING = BOM_UTF8.decode('utf-8')
 
-_token_collection_cache: Dict[PythonVersionInfo, TokenCollection] = {}
+_token_collection_cache: Dict[Tuple[int, int], TokenCollection] = {}
 
 
 def group(*choices, capture=False, **kwargs):
@@ -249,7 +249,7 @@
 class PythonToken(Token):
     def __repr__(self):
         return ('TokenInfo(type=%s, string=%r, start_pos=%r, prefix=%r)' %
-                self._replace(type=self.type.name))
+                self._replace(type=self.type.name))  # type: ignore[arg-type]
 
 
 class FStringNode:
@@ -257,7 +257,7 @@
         self.quote = quote
         self.parentheses_count = 0
         self.previous_lines = ''
-        self.last_string_start_pos = None
+        self.last_string_start_pos: Any = None
         # In the syntax there can be multiple format_spec's nested:
         # {x:{y:3}}
         self.format_spec_count = 0
@@ -340,7 +340,7 @@
 
 
 def tokenize(
-    code: str, *, version_info: PythonVersionInfo, start_pos: Tuple[int, int] 
= (1, 0)
+    code: str, *, version_info: Tuple[int, int], start_pos: Tuple[int, int] = 
(1, 0)
 ) -> Iterator[PythonToken]:
     """Generate tokens from a the source code (string)."""
     lines = split_lines(code, keepends=True)
@@ -363,7 +363,7 @@
 def tokenize_lines(
     lines: Iterable[str],
     *,
-    version_info: PythonVersionInfo,
+    version_info: Tuple[int, int],
     indents: List[int] = None,
     start_pos: Tuple[int, int] = (1, 0),
     is_first_token=True,
@@ -444,7 +444,7 @@
                     if string:
                         yield PythonToken(
                             FSTRING_STRING, string,
-                            tos.last_string_start_pos,
+                            tos.last_string_start_pos,  # type: 
ignore[arg-type]
                             # Never has a prefix because it can start anywhere 
and
                             # include whitespace.
                             prefix=''
@@ -496,8 +496,8 @@
                 initial = token[0]
             else:
                 match = whitespace.match(line, pos)
-                initial = line[match.end()]
-                start = match.end()
+                initial = line[match.end()]  # type: ignore[union-attr]
+                start = match.end()  # type: ignore[union-attr]
                 spos = (lnum, start)
 
             if new_line and initial not in '\r\n#' and (initial != '\\' or 
pseudomatch is None):
@@ -512,12 +512,12 @@
             if not pseudomatch:  # scan for tokens
                 match = whitespace.match(line, pos)
                 if new_line and paren_level == 0 and not fstring_stack:
-                    yield from dedent_if_necessary(match.end())
-                pos = match.end()
+                    yield from dedent_if_necessary(match.end())  # type: 
ignore[union-attr]
+                pos = match.end()  # type: ignore[union-attr]
                 new_line = False
                 yield PythonToken(
                     ERRORTOKEN, line[pos], (lnum, pos),
-                    additional_prefix + match.group(0)
+                    additional_prefix + match.group(0)  # type: 
ignore[union-attr]
                 )
                 additional_prefix = ''
                 pos += 1
@@ -586,7 +586,7 @@
                     # backslash and is continued.
                     contstr_start = lnum, start
                     endprog = (endpats.get(initial) or endpats.get(token[1])
-                               or endpats.get(token[2]))
+                               or endpats.get(token[2]))  # type: 
ignore[assignment]
                     contstr = line[start:]
                     contline = line
                     break
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso/python/tree.py 
new/parso-0.8.6/parso/python/tree.py
--- old/parso-0.8.5/parso/python/tree.py        2025-08-23 17:13:21.000000000 
+0200
+++ new/parso-0.8.6/parso/python/tree.py        2026-02-09 16:45:03.000000000 
+0100
@@ -43,11 +43,8 @@
 """
 
 import re
-try:
-    from collections.abc import Mapping
-except ImportError:
-    from collections import Mapping
-from typing import Tuple
+from collections.abc import Mapping
+from typing import Tuple, Any
 
 from parso.tree import Node, BaseNode, Leaf, ErrorNode, ErrorLeaf, 
search_ancestor  # noqa
 from parso.python.prefix import split_prefix
@@ -70,6 +67,9 @@
 
 class DocstringMixin:
     __slots__ = ()
+    type: str
+    children: "list[Any]"
+    parent: Any
 
     def get_doc_node(self):
         """
@@ -101,6 +101,7 @@
     Some Python specific utilities.
     """
     __slots__ = ()
+    children: "list[Any]"
 
     def get_name_of_position(self, position):
         """
@@ -219,7 +220,7 @@
         type_ = node.type
 
         if type_ in ('funcdef', 'classdef'):
-            if self == node.name:
+            if self == node.name:  # type: ignore[union-attr]
                 return node
             return None
 
@@ -232,7 +233,7 @@
             if node.type == 'suite':
                 return None
             if node.type in _GET_DEFINITION_TYPES:
-                if self in node.get_defined_names(include_setitem):
+                if self in node.get_defined_names(include_setitem):  # type: 
ignore[attr-defined]
                     return node
                 if import_name_always and node.type in _IMPORTS:
                     return node
@@ -296,6 +297,7 @@
 
 class _StringComparisonMixin:
     __slots__ = ()
+    value: Any
 
     def __eq__(self, other):
         """
@@ -368,7 +370,7 @@
 
     def __repr__(self):
         try:
-            name = self.name.value
+            name = self.name.value  # type: ignore[attr-defined]
         except AttributeError:
             name = ''
 
@@ -794,6 +796,8 @@
 
 class Import(PythonBaseNode):
     __slots__ = ()
+    get_paths: Any
+    _aliases: Any
 
     def get_path_for_name(self, name):
         """
@@ -818,6 +822,9 @@
     def is_star_import(self):
         return self.children[-1] == '*'
 
+    def get_defined_names(self):
+        raise NotImplementedError("Use ImportFrom or ImportName")
+
 
 class ImportFrom(Import):
     type = 'import_from'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso/tree.py 
new/parso-0.8.6/parso/tree.py
--- old/parso-0.8.5/parso/tree.py       2025-08-23 17:13:21.000000000 +0200
+++ new/parso-0.8.6/parso/tree.py       2026-02-09 16:45:03.000000000 +0100
@@ -14,12 +14,7 @@
     :param node: The ancestors of this node will be checked.
     :param node_types: type names that are searched for.
     """
-    n = node.parent
-    while n is not None:
-        if n.type in node_types:
-            return n
-        n = n.parent
-    return None
+    return node.search_ancestor(*node_types)
 
 
 class NodeOrLeaf:
@@ -371,7 +366,7 @@
     """
     __slots__ = ('children',)
 
-    def __init__(self, children: List[NodeOrLeaf]) -> None:
+    def __init__(self, children) -> None:
         self.children = children
         """
         A list of :class:`NodeOrLeaf` child nodes.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso/utils.py 
new/parso-0.8.6/parso/utils.py
--- old/parso-0.8.5/parso/utils.py      2025-08-23 17:13:21.000000000 +0200
+++ new/parso-0.8.6/parso/utils.py      2026-02-09 16:45:03.000000000 +0100
@@ -2,7 +2,7 @@
 import sys
 from ast import literal_eval
 from functools import total_ordering
-from typing import NamedTuple, Sequence, Union
+from typing import NamedTuple, Union
 
 # The following is a list in Python that are line breaks in str.splitlines, but
 # not in Python. In Python only \r (Carriage Return, 0xD) and \n (Line Feed,
@@ -26,7 +26,7 @@
     micro: int
 
 
-def split_lines(string: str, keepends: bool = False) -> Sequence[str]:
+def split_lines(string: str, keepends: bool = False) -> "list[str]":
     r"""
     Intended for Python code. In contrast to Python's 
:py:meth:`str.splitlines`,
     looks at form feeds and other special characters as normal text. Just
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso.egg-info/PKG-INFO 
new/parso-0.8.6/parso.egg-info/PKG-INFO
--- old/parso-0.8.5/parso.egg-info/PKG-INFO     2025-08-23 17:14:52.000000000 
+0200
+++ new/parso-0.8.6/parso.egg-info/PKG-INFO     2026-02-09 16:45:19.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: parso
-Version: 0.8.5
+Version: 0.8.6
 Summary: A Python Parser
 Home-page: https://github.com/davidhalter/parso
 Author: David Halter
@@ -37,7 +37,7 @@
 Requires-Dist: docopt; extra == "testing"
 Provides-Extra: qa
 Requires-Dist: flake8==5.0.4; extra == "qa"
-Requires-Dist: mypy==0.971; extra == "qa"
+Requires-Dist: zuban==0.5.1; extra == "qa"
 Requires-Dist: types-setuptools==67.2.0.1; extra == "qa"
 Dynamic: author
 Dynamic: author-email
@@ -160,6 +160,12 @@
 Unreleased
 ++++++++++
 
+0.8.6 (2026-02-09)
+++++++++++++++++++
+
+- Switch the type checker to Zuban. It's faster and now also checks untyped
+  code.
+
 0.8.5 (2025-08-23)
 ++++++++++++++++++
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso.egg-info/SOURCES.txt 
new/parso-0.8.6/parso.egg-info/SOURCES.txt
--- old/parso-0.8.5/parso.egg-info/SOURCES.txt  2025-08-23 17:14:52.000000000 
+0200
+++ new/parso-0.8.6/parso.egg-info/SOURCES.txt  2026-02-09 16:45:19.000000000 
+0100
@@ -5,6 +5,7 @@
 MANIFEST.in
 README.rst
 conftest.py
+pyproject.toml
 pytest.ini
 setup.cfg
 setup.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/parso.egg-info/requires.txt 
new/parso-0.8.6/parso.egg-info/requires.txt
--- old/parso-0.8.5/parso.egg-info/requires.txt 2025-08-23 17:14:52.000000000 
+0200
+++ new/parso-0.8.6/parso.egg-info/requires.txt 2026-02-09 16:45:19.000000000 
+0100
@@ -1,7 +1,7 @@
 
 [qa]
 flake8==5.0.4
-mypy==0.971
+zuban==0.5.1
 types-setuptools==67.2.0.1
 
 [testing]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/pyproject.toml 
new/parso-0.8.6/pyproject.toml
--- old/parso-0.8.5/pyproject.toml      1970-01-01 01:00:00.000000000 +0100
+++ new/parso-0.8.6/pyproject.toml      2026-02-09 16:45:03.000000000 +0100
@@ -0,0 +1,14 @@
+[tool.zuban]
+enable_error_code = ["ignore-without-code"]
+
+disallow_subclassing_any = true
+
+# Avoid creating future gotchas emerging from bad typing
+warn_redundant_casts = true
+warn_unused_ignores = true
+warn_unused_configs = true
+warn_unreachable = true
+
+strict_equality = true
+implicit_optional = true
+exclude = "^test/normalizer_issue_files"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/setup.cfg new/parso-0.8.6/setup.cfg
--- old/parso-0.8.5/setup.cfg   2025-08-23 17:14:52.367882300 +0200
+++ new/parso-0.8.6/setup.cfg   2026-02-09 16:45:19.737933400 +0100
@@ -8,18 +8,6 @@
        E226,
        W503,
 
-[mypy]
-show_error_codes = true
-enable_error_code = ignore-without-code
-disallow_subclassing_any = True
-warn_redundant_casts = True
-warn_unused_ignores = True
-warn_return_any = True
-warn_unused_configs = True
-warn_unreachable = True
-strict_equality = True
-no_implicit_optional = False
-
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/setup.py new/parso-0.8.6/setup.py
--- old/parso-0.8.5/setup.py    2025-08-23 17:13:21.000000000 +0200
+++ new/parso-0.8.6/setup.py    2026-02-09 16:45:03.000000000 +0100
@@ -58,9 +58,8 @@
         'qa': [
             # Latest version which supports Python 3.6
             'flake8==5.0.4',
-            # Latest version which supports Python 3.6
-            'mypy==0.971',
             # Arbitrary pins, latest at the time of pinning
+            'zuban==0.5.1',
             'types-setuptools==67.2.0.1',
         ],
     },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/test/test_load_grammar.py 
new/parso-0.8.6/test/test_load_grammar.py
--- old/parso-0.8.5/test/test_load_grammar.py   2025-08-23 17:13:21.000000000 
+0200
+++ new/parso-0.8.6/test/test_load_grammar.py   2026-02-09 16:45:03.000000000 
+0100
@@ -33,4 +33,4 @@
 
 def test_grammar_int_version():
     with pytest.raises(TypeError):
-        load_grammar(version=3.8)
+        load_grammar(version=3.8)  # type: ignore
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parso-0.8.5/test/test_parser.py 
new/parso-0.8.6/test/test_parser.py
--- old/parso-0.8.5/test/test_parser.py 2025-08-23 17:13:21.000000000 +0200
+++ new/parso-0.8.6/test/test_parser.py 2026-02-09 16:45:03.000000000 +0100
@@ -117,7 +117,7 @@
 
 
 def test_unicode_string():
-    s = tree.String(None, 'bö', (0, 0))
+    s = tree.String('bö', (0, 0))
     assert repr(s)  # Should not raise an Error!
 
 

Reply via email to