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!
