diff --git a/.github/workflows/primer-test.yaml b/.github/workflows/primer-test.yaml index af54ef82f6..923bb9b699 100644 --- a/.github/workflows/primer-test.yaml +++ b/.github/workflows/primer-test.yaml @@ -30,7 +30,7 @@ jobs: timeout-minutes: 5 strategy: matrix: - python-version: [3.9, "3.10", "3.11", "3.12"] + python-version: [3.9, "3.10", "3.11", "3.12", "3.13-dev"] outputs: python-key: ${{ steps.generate-python-key.outputs.key }} steps: @@ -72,7 +72,7 @@ jobs: needs: prepare-tests-linux strategy: matrix: - python-version: [3.9, "3.10", "3.11", "3.12"] + python-version: [3.9, "3.10", "3.11", "3.12", "3.13-dev"] steps: - name: Check out code from GitHub uses: actions/checkout@v4.1.7 diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index acbf61c6c2..f11c1c1f70 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -31,7 +31,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.9, "3.10", "3.11", "3.12"] + python-version: [3.9, "3.10", "3.11", "3.12", "3.13-dev"] outputs: python-key: ${{ steps.generate-python-key.outputs.key }} steps: @@ -175,7 +175,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.9, "3.10", "3.11", "3.12"] + python-version: [3.9, "3.10", "3.11", "3.12", "3.13-dev"] steps: - name: Set temp directory run: echo "TEMP=$env:USERPROFILE\AppData\Local\Temp" >> $env:GITHUB_ENV diff --git a/.pyenchant_pylint_custom_dict.txt b/.pyenchant_pylint_custom_dict.txt index 78d861aea3..93d0793e01 100644 --- a/.pyenchant_pylint_custom_dict.txt +++ b/.pyenchant_pylint_custom_dict.txt @@ -249,6 +249,7 @@ paren parens passthru pathlib +patternerror positionals png pragma diff --git a/doc/whatsnew/fragments/9852.other b/doc/whatsnew/fragments/9852.other new file mode 100644 index 0000000000..4a715c5d2d --- /dev/null +++ b/doc/whatsnew/fragments/9852.other @@ -0,0 +1,3 @@ +Add support for Python 3.13. + +Refs #9852 diff --git a/pylint/checkers/refactoring/refactoring_checker.py b/pylint/checkers/refactoring/refactoring_checker.py index 9e4de94cdd..161cc0072e 100644 --- a/pylint/checkers/refactoring/refactoring_checker.py +++ b/pylint/checkers/refactoring/refactoring_checker.py @@ -44,6 +44,7 @@ ( "_io.open", # regular 'open()' call "pathlib.Path.open", + "pathlib._local.Path.open", # Python 3.13 "codecs.open", "urllib.request.urlopen", "tempfile.NamedTemporaryFile", @@ -1691,7 +1692,7 @@ def _check_consider_using_with(self, node: nodes.Call) -> None: return inferred = utils.safe_infer(node.func) if not inferred or not isinstance( - inferred, (nodes.FunctionDef, nodes.ClassDef, bases.UnboundMethod) + inferred, (nodes.FunctionDef, nodes.ClassDef, bases.BoundMethod) ): return could_be_used_in_with = ( diff --git a/pylint/checkers/stdlib.py b/pylint/checkers/stdlib.py index 9fab490b9c..8b37520b78 100644 --- a/pylint/checkers/stdlib.py +++ b/pylint/checkers/stdlib.py @@ -33,7 +33,8 @@ ENV_GETTERS = ("os.getenv",) SUBPROCESS_POPEN = "subprocess.Popen" SUBPROCESS_RUN = "subprocess.run" -OPEN_MODULE = {"_io", "pathlib"} +OPEN_MODULE = {"_io", "pathlib", "pathlib._local"} +PATHLIB_MODULE = {"pathlib", "pathlib._local"} DEBUG_BREAKPOINTS = ("builtins.breakpoint", "sys.breakpointhook", "pdb.set_trace") LRU_CACHE = { "functools.lru_cache", # Inferred for @lru_cache @@ -784,7 +785,7 @@ def _check_open_call( mode_arg = utils.get_argument_from_call( node, position=1, keyword="mode" ) - elif open_module == "pathlib": + elif open_module in PATHLIB_MODULE: mode_arg = utils.get_argument_from_call( node, position=0, keyword="mode" ) @@ -814,7 +815,7 @@ def _check_open_call( ): confidence = HIGH try: - if open_module == "pathlib": + if open_module in PATHLIB_MODULE: if node.func.attrname == "read_text": encoding_arg = utils.get_argument_from_call( node, position=0, keyword="encoding" diff --git a/pylint/extensions/docparams.py b/pylint/extensions/docparams.py index 5d672131a2..b19560b7fb 100644 --- a/pylint/extensions/docparams.py +++ b/pylint/extensions/docparams.py @@ -321,6 +321,9 @@ def visit_raise(self, node: nodes.Raise) -> None: for found_exc in found_excs_class_names: if found_exc == expected.name: break + if found_exc == "error" and expected.name == "PatternError": + # Python 3.13: re.error aliases re.PatternError + break if any(found_exc == ancestor.name for ancestor in expected.ancestors()): break else: @@ -653,7 +656,7 @@ def _add_raise_message( """Adds a message on :param:`node` for the missing exception type. :param missing_exceptions: A list of missing exception types. - :param node: The node show the message on. + :param node: The node to show the message on. """ if node.is_abstract(): try: diff --git a/pyproject.toml b/pyproject.toml index f6e187b51a..6323d39460 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,6 +24,7 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Debuggers", @@ -40,7 +41,7 @@ dependencies = [ # Also upgrade requirements_test_min.txt. # Pinned to dev of second minor update to allow editable installs and fix primer issues, # see https://github.com/pylint-dev/astroid/issues/1341 - "astroid>=3.3.1,<=3.4.0-dev0", + "astroid>=3.3.2,<=3.4.0-dev0", "isort>=4.2.5,<6,!=5.13.0", "mccabe>=0.6,<0.8", "tomli>=1.1.0;python_version<'3.11'", diff --git a/requirements_test_min.txt b/requirements_test_min.txt index 1269509e06..4f8d17d0d2 100644 --- a/requirements_test_min.txt +++ b/requirements_test_min.txt @@ -1,6 +1,6 @@ .[testutils,spelling] # astroid dependency is also defined in pyproject.toml -astroid==3.3.1 # Pinned to a specific version for tests +astroid==3.3.2 # Pinned to a specific version for tests typing-extensions~=4.12 py~=1.11.0 pytest~=8.3 diff --git a/tests/functional/a/access/access_attr_before_def_false_positive.rc b/tests/functional/a/access/access_attr_before_def_false_positive.rc new file mode 100644 index 0000000000..7a083bad76 --- /dev/null +++ b/tests/functional/a/access/access_attr_before_def_false_positive.rc @@ -0,0 +1,2 @@ +[testoptions] +max_pyver=3.13 diff --git a/tests/functional/ext/docparams/raise/missing_raises_doc_Google.py b/tests/functional/ext/docparams/raise/missing_raises_doc_Google.py index 22dbcadaa3..f4ccea3133 100644 --- a/tests/functional/ext/docparams/raise/missing_raises_doc_Google.py +++ b/tests/functional/ext/docparams/raise/missing_raises_doc_Google.py @@ -17,33 +17,33 @@ def test_find_google_attr_raises_exact_exc(self): """This is a google docstring. Raises: - re.error: Sometimes + calendar.IllegalMonthError: Sometimes """ - import re + import calendar - raise re.error("hi") + raise calendar.IllegalMonthError(-1) def test_find_google_attr_raises_substr_exc(self): """This is a google docstring. Raises: - re.error: Sometimes + calendar.IllegalMonthError: Sometimes """ - from re import error + from calendar import IllegalMonthError - raise error("hi") + raise IllegalMonthError(-1) def test_find_valid_missing_google_attr_raises(self): # [missing-raises-doc] """This is a google docstring. Raises: - re.anothererror: Sometimes + calendar.anothererror: Sometimes """ - from re import error + from calendar import IllegalMonthError - raise error("hi") + raise IllegalMonthError(-1) def test_find_invalid_missing_google_attr_raises(self): diff --git a/tests/functional/ext/docparams/raise/missing_raises_doc_Google.txt b/tests/functional/ext/docparams/raise/missing_raises_doc_Google.txt index f59d271769..f3bbcad7fb 100644 --- a/tests/functional/ext/docparams/raise/missing_raises_doc_Google.txt +++ b/tests/functional/ext/docparams/raise/missing_raises_doc_Google.txt @@ -1,6 +1,6 @@ missing-raises-doc:6:0:6:35:test_find_missing_google_raises:"""RuntimeError"" not documented as being raised":HIGH unreachable:13:4:13:25:test_find_missing_google_raises:Unreachable code:HIGH -missing-raises-doc:38:0:38:46:test_find_valid_missing_google_attr_raises:"""error"" not documented as being raised":HIGH +missing-raises-doc:38:0:38:46:test_find_valid_missing_google_attr_raises:"""IllegalMonthError"" not documented as being raised":HIGH unreachable:83:4:83:25:test_find_all_google_raises:Unreachable code:HIGH unreachable:94:4:94:25:test_find_multiple_google_raises:Unreachable code:HIGH unreachable:95:4:95:30:test_find_multiple_google_raises:Unreachable code:HIGH diff --git a/tests/functional/ext/docparams/raise/missing_raises_doc_Numpy.py b/tests/functional/ext/docparams/raise/missing_raises_doc_Numpy.py index 8cf8e041f1..44e047ceb3 100644 --- a/tests/functional/ext/docparams/raise/missing_raises_doc_Numpy.py +++ b/tests/functional/ext/docparams/raise/missing_raises_doc_Numpy.py @@ -87,12 +87,12 @@ def test_find_numpy_attr_raises_exact_exc(self): Raises ------ - re.error + calendar.IllegalMonthError Sometimes """ - import re + import calendar - raise re.error("hi") + raise calendar.IllegalMonthError(-1) def test_find_numpy_attr_raises_substr_exc(self): @@ -100,12 +100,12 @@ def test_find_numpy_attr_raises_substr_exc(self): Raises ------ - re.error + calendar.IllegalMonthError Sometimes """ - from re import error + from calendar import IllegalMonthError - raise error("hi") + raise IllegalMonthError(-1) def test_find_valid_missing_numpy_attr_raises(self): # [missing-raises-doc] @@ -113,12 +113,12 @@ def test_find_valid_missing_numpy_attr_raises(self): # [missing-raises-doc] Raises ------ - re.anothererror + calendar.anothererror Sometimes """ - from re import error + from calendar import IllegalMonthError - raise error("hi") + raise IllegalMonthError(-1) def test_find_invalid_missing_numpy_attr_raises(self): diff --git a/tests/functional/ext/docparams/raise/missing_raises_doc_Numpy.txt b/tests/functional/ext/docparams/raise/missing_raises_doc_Numpy.txt index 43c6ba89b9..1cfdc062a4 100644 --- a/tests/functional/ext/docparams/raise/missing_raises_doc_Numpy.txt +++ b/tests/functional/ext/docparams/raise/missing_raises_doc_Numpy.txt @@ -3,7 +3,7 @@ unreachable:20:4:20:25:test_find_missing_numpy_raises:Unreachable code:HIGH unreachable:34:4:34:25:test_find_all_numpy_raises:Unreachable code:HIGH missing-raises-doc:37:0:37:35:test_find_rethrown_numpy_raises:"""RuntimeError"" not documented as being raised":HIGH missing-raises-doc:53:0:53:44:test_find_rethrown_numpy_multiple_raises:"""RuntimeError, ValueError"" not documented as being raised":HIGH -missing-raises-doc:111:0:111:45:test_find_valid_missing_numpy_attr_raises:"""error"" not documented as being raised":HIGH +missing-raises-doc:111:0:111:45:test_find_valid_missing_numpy_attr_raises:"""IllegalMonthError"" not documented as being raised":HIGH missing-raises-doc:146:4:146:11:Foo.foo:"""AttributeError"" not documented as being raised":HIGH unreachable:158:8:158:17:Foo.foo:Unreachable code:HIGH unreachable:182:8:182:17:Foo.foo:Unreachable code:HIGH diff --git a/tests/functional/ext/docparams/raise/missing_raises_doc_Sphinx.py b/tests/functional/ext/docparams/raise/missing_raises_doc_Sphinx.py index 91a603b711..b9a301ed6f 100644 --- a/tests/functional/ext/docparams/raise/missing_raises_doc_Sphinx.py +++ b/tests/functional/ext/docparams/raise/missing_raises_doc_Sphinx.py @@ -123,21 +123,21 @@ def test_find_sphinx_attr_raises_exact_exc(self): def test_find_sphinx_attr_raises_substr_exc(self): """This is a sphinx docstring. - :raises re.error: Sometimes + :raises calendar.IllegalMonthError: Sometimes """ - from re import error + from calendar import IllegalMonthError - raise error("hi") + raise IllegalMonthError(-1) def test_find_valid_missing_sphinx_attr_raises(self): # [missing-raises-doc] """This is a sphinx docstring. - :raises re.anothererror: Sometimes + :raises calendar.anothererror: Sometimes """ - from re import error + from calendar import IllegalMonthError - raise error("hi") + raise IllegalMonthError(-1) def test_find_invalid_missing_sphinx_attr_raises(self): @@ -145,11 +145,11 @@ def test_find_invalid_missing_sphinx_attr_raises(self): pylint allows this to pass since the comparison between Raises and raise are based on the class name, not the qualified name. - :raises bogusmodule.error: Sometimes + :raises bogusmodule.IllegalMonthError: Sometimes """ - from re import error + from calendar import IllegalMonthError - raise error("hi") + raise IllegalMonthError(-1) class Foo: diff --git a/tests/functional/ext/docparams/raise/missing_raises_doc_Sphinx.txt b/tests/functional/ext/docparams/raise/missing_raises_doc_Sphinx.txt index 599c8beda3..568de3c4b3 100644 --- a/tests/functional/ext/docparams/raise/missing_raises_doc_Sphinx.txt +++ b/tests/functional/ext/docparams/raise/missing_raises_doc_Sphinx.txt @@ -10,4 +10,4 @@ missing-raises-doc:90:0:90:55:test_find_missing_sphinx_raises_infer_from_instanc unreachable:97:4:97:25:test_find_missing_sphinx_raises_infer_from_instance:Unreachable code:HIGH missing-raises-doc:100:0:100:55:test_find_missing_sphinx_raises_infer_from_function:"""RuntimeError"" not documented as being raised":HIGH unreachable:110:4:110:25:test_find_missing_sphinx_raises_infer_from_function:Unreachable code:HIGH -missing-raises-doc:133:0:133:46:test_find_valid_missing_sphinx_attr_raises:"""error"" not documented as being raised":HIGH +missing-raises-doc:133:0:133:46:test_find_valid_missing_sphinx_attr_raises:"""IllegalMonthError"" not documented as being raised":HIGH diff --git a/tests/functional/ext/typing/typing_consider_using_alias.py b/tests/functional/ext/typing/typing_consider_using_alias.py index 070451cf0a..783de1822e 100644 --- a/tests/functional/ext/typing/typing_consider_using_alias.py +++ b/tests/functional/ext/typing/typing_consider_using_alias.py @@ -28,7 +28,6 @@ var7: typing.Hashable # [consider-using-alias] var8: typing.ContextManager[str] # [consider-using-alias] var9: typing.Pattern[str] # [consider-using-alias] -var10: typing.re.Match[str] # [consider-using-alias] var11: list[int] var12: collections.abc var13: Awaitable[None] diff --git a/tests/functional/ext/typing/typing_consider_using_alias.txt b/tests/functional/ext/typing/typing_consider_using_alias.txt index 2cd299d904..2a55615978 100644 --- a/tests/functional/ext/typing/typing_consider_using_alias.txt +++ b/tests/functional/ext/typing/typing_consider_using_alias.txt @@ -6,15 +6,14 @@ consider-using-alias:27:6:27:21::'typing.Iterable' will be deprecated with PY39, consider-using-alias:28:6:28:21::'typing.Hashable' will be deprecated with PY39, consider using 'collections.abc.Hashable' instead:INFERENCE consider-using-alias:29:6:29:27::'typing.ContextManager' will be deprecated with PY39, consider using 'contextlib.AbstractContextManager' instead:INFERENCE consider-using-alias:30:6:30:20::'typing.Pattern' will be deprecated with PY39, consider using 're.Pattern' instead:INFERENCE -consider-using-alias:31:7:31:22::'typing.Match' will be deprecated with PY39, consider using 're.Match' instead:INFERENCE -consider-using-alias:40:9:40:13::'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE -consider-using-alias:42:7:42:11::'typing.Type' will be deprecated with PY39, consider using 'type' instead:INFERENCE -consider-using-alias:43:7:43:12::'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead:INFERENCE -consider-using-alias:44:7:44:15::'typing.Callable' will be deprecated with PY39, consider using 'collections.abc.Callable' instead:INFERENCE -consider-using-alias:50:74:50:78:func1:'typing.Dict' will be deprecated with PY39, consider using 'dict' instead:INFERENCE -consider-using-alias:50:16:50:20:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE -consider-using-alias:50:37:50:41:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE -consider-using-alias:50:93:50:105:func1:'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead:INFERENCE -consider-using-alias:66:12:66:16:CustomNamedTuple:'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE -consider-using-alias:71:12:71:16:CustomTypedDict2:'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE -consider-using-alias:75:12:75:16:CustomDataClass:'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE +consider-using-alias:39:9:39:13::'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE +consider-using-alias:41:7:41:11::'typing.Type' will be deprecated with PY39, consider using 'type' instead:INFERENCE +consider-using-alias:42:7:42:12::'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead:INFERENCE +consider-using-alias:43:7:43:15::'typing.Callable' will be deprecated with PY39, consider using 'collections.abc.Callable' instead:INFERENCE +consider-using-alias:49:74:49:78:func1:'typing.Dict' will be deprecated with PY39, consider using 'dict' instead:INFERENCE +consider-using-alias:49:16:49:20:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE +consider-using-alias:49:37:49:41:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE +consider-using-alias:49:93:49:105:func1:'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead:INFERENCE +consider-using-alias:65:12:65:16:CustomNamedTuple:'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE +consider-using-alias:70:12:70:16:CustomTypedDict2:'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE +consider-using-alias:74:12:74:16:CustomDataClass:'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE diff --git a/tests/functional/ext/typing/typing_consider_using_alias_without_future.py b/tests/functional/ext/typing/typing_consider_using_alias_without_future.py index b597e955eb..b382b9ac9f 100644 --- a/tests/functional/ext/typing/typing_consider_using_alias_without_future.py +++ b/tests/functional/ext/typing/typing_consider_using_alias_without_future.py @@ -26,7 +26,6 @@ var7: typing.Hashable # [consider-using-alias] var8: typing.ContextManager[str] # [consider-using-alias] var9: typing.Pattern[str] # [consider-using-alias] -var10: typing.re.Match[str] # [consider-using-alias] var11: list[int] var12: collections.abc var13: Awaitable[None] diff --git a/tests/functional/ext/typing/typing_consider_using_alias_without_future.txt b/tests/functional/ext/typing/typing_consider_using_alias_without_future.txt index 7cf15a63c8..8ae56f810a 100644 --- a/tests/functional/ext/typing/typing_consider_using_alias_without_future.txt +++ b/tests/functional/ext/typing/typing_consider_using_alias_without_future.txt @@ -6,15 +6,14 @@ consider-using-alias:25:6:25:21::'typing.Iterable' will be deprecated with PY39, consider-using-alias:26:6:26:21::'typing.Hashable' will be deprecated with PY39, consider using 'collections.abc.Hashable' instead:INFERENCE consider-using-alias:27:6:27:27::'typing.ContextManager' will be deprecated with PY39, consider using 'contextlib.AbstractContextManager' instead. Add 'from __future__ import annotations' as well:INFERENCE consider-using-alias:28:6:28:20::'typing.Pattern' will be deprecated with PY39, consider using 're.Pattern' instead. Add 'from __future__ import annotations' as well:INFERENCE -consider-using-alias:29:7:29:22::'typing.Match' will be deprecated with PY39, consider using 're.Match' instead. Add 'from __future__ import annotations' as well:INFERENCE -consider-using-alias:38:9:38:13::'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE -consider-using-alias:40:7:40:11::'typing.Type' will be deprecated with PY39, consider using 'type' instead. Add 'from __future__ import annotations' as well:INFERENCE -consider-using-alias:41:7:41:12::'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead. Add 'from __future__ import annotations' as well:INFERENCE -consider-using-alias:42:7:42:15::'typing.Callable' will be deprecated with PY39, consider using 'collections.abc.Callable' instead. Add 'from __future__ import annotations' as well:INFERENCE -consider-using-alias:48:74:48:78:func1:'typing.Dict' will be deprecated with PY39, consider using 'dict' instead. Add 'from __future__ import annotations' as well:INFERENCE -consider-using-alias:48:16:48:20:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well:INFERENCE -consider-using-alias:48:37:48:41:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well:INFERENCE -consider-using-alias:48:93:48:105:func1:'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead. Add 'from __future__ import annotations' as well:INFERENCE -consider-using-alias:64:12:64:16:CustomNamedTuple:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well:INFERENCE -consider-using-alias:69:12:69:16:CustomTypedDict2:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well:INFERENCE -consider-using-alias:73:12:73:16:CustomDataClass:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well:INFERENCE +consider-using-alias:37:9:37:13::'typing.List' will be deprecated with PY39, consider using 'list' instead:INFERENCE +consider-using-alias:39:7:39:11::'typing.Type' will be deprecated with PY39, consider using 'type' instead. Add 'from __future__ import annotations' as well:INFERENCE +consider-using-alias:40:7:40:12::'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead. Add 'from __future__ import annotations' as well:INFERENCE +consider-using-alias:41:7:41:15::'typing.Callable' will be deprecated with PY39, consider using 'collections.abc.Callable' instead. Add 'from __future__ import annotations' as well:INFERENCE +consider-using-alias:47:74:47:78:func1:'typing.Dict' will be deprecated with PY39, consider using 'dict' instead. Add 'from __future__ import annotations' as well:INFERENCE +consider-using-alias:47:16:47:20:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well:INFERENCE +consider-using-alias:47:37:47:41:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well:INFERENCE +consider-using-alias:47:93:47:105:func1:'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead. Add 'from __future__ import annotations' as well:INFERENCE +consider-using-alias:63:12:63:16:CustomNamedTuple:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well:INFERENCE +consider-using-alias:68:12:68:16:CustomTypedDict2:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well:INFERENCE +consider-using-alias:72:12:72:16:CustomDataClass:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well:INFERENCE diff --git a/tests/functional/ext/typing/typing_deprecated_alias.py b/tests/functional/ext/typing/typing_deprecated_alias.py index 80c132ebd9..a84afc47a1 100644 --- a/tests/functional/ext/typing/typing_deprecated_alias.py +++ b/tests/functional/ext/typing/typing_deprecated_alias.py @@ -19,7 +19,6 @@ var7: typing.Hashable # [deprecated-typing-alias] var8: typing.ContextManager[str] # [deprecated-typing-alias] var9: typing.Pattern[str] # [deprecated-typing-alias] -var10: typing.re.Match[str] # [deprecated-typing-alias] var11: list[int] var12: collections.abc var13: Awaitable[None] diff --git a/tests/functional/ext/typing/typing_deprecated_alias.txt b/tests/functional/ext/typing/typing_deprecated_alias.txt index 62cf9902ad..b08faa9570 100644 --- a/tests/functional/ext/typing/typing_deprecated_alias.txt +++ b/tests/functional/ext/typing/typing_deprecated_alias.txt @@ -6,23 +6,22 @@ deprecated-typing-alias:18:6:18:21::'typing.Iterable' is deprecated, use 'collec deprecated-typing-alias:19:6:19:21::'typing.Hashable' is deprecated, use 'collections.abc.Hashable' instead:INFERENCE deprecated-typing-alias:20:6:20:27::'typing.ContextManager' is deprecated, use 'contextlib.AbstractContextManager' instead:INFERENCE deprecated-typing-alias:21:6:21:20::'typing.Pattern' is deprecated, use 're.Pattern' instead:INFERENCE -deprecated-typing-alias:22:7:22:22::'typing.Match' is deprecated, use 're.Match' instead:INFERENCE -deprecated-typing-alias:28:9:28:12::'typing.Set' is deprecated, use 'set' instead:INFERENCE -deprecated-typing-alias:29:9:29:13::'typing.Dict' is deprecated, use 'dict' instead:INFERENCE -deprecated-typing-alias:29:19:29:23::'typing.List' is deprecated, use 'list' instead:INFERENCE -deprecated-typing-alias:30:20:30:31::'typing.List' is deprecated, use 'list' instead:INFERENCE -deprecated-typing-alias:31:9:31:13::'typing.List' is deprecated, use 'list' instead:INFERENCE -deprecated-typing-alias:33:7:33:11::'typing.Type' is deprecated, use 'type' instead:INFERENCE -deprecated-typing-alias:34:7:34:12::'typing.Tuple' is deprecated, use 'tuple' instead:INFERENCE -deprecated-typing-alias:35:7:35:15::'typing.Callable' is deprecated, use 'collections.abc.Callable' instead:INFERENCE -deprecated-typing-alias:41:74:41:78:func1:'typing.Dict' is deprecated, use 'dict' instead:INFERENCE -deprecated-typing-alias:41:16:41:20:func1:'typing.List' is deprecated, use 'list' instead:INFERENCE -deprecated-typing-alias:41:37:41:41:func1:'typing.List' is deprecated, use 'list' instead:INFERENCE -deprecated-typing-alias:41:93:41:105:func1:'typing.Tuple' is deprecated, use 'tuple' instead:INFERENCE -deprecated-typing-alias:48:20:48:31:CustomIntList:'typing.List' is deprecated, use 'list' instead:INFERENCE -deprecated-typing-alias:52:28:52:32::'typing.List' is deprecated, use 'list' instead:INFERENCE -deprecated-typing-alias:54:14:54:18::'typing.List' is deprecated, use 'list' instead:INFERENCE -deprecated-typing-alias:57:12:57:16:CustomNamedTuple:'typing.List' is deprecated, use 'list' instead:INFERENCE -deprecated-typing-alias:59:56:59:60::'typing.List' is deprecated, use 'list' instead:INFERENCE -deprecated-typing-alias:62:12:62:16:CustomTypedDict2:'typing.List' is deprecated, use 'list' instead:INFERENCE -deprecated-typing-alias:66:12:66:16:CustomDataClass:'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:27:9:27:12::'typing.Set' is deprecated, use 'set' instead:INFERENCE +deprecated-typing-alias:28:9:28:13::'typing.Dict' is deprecated, use 'dict' instead:INFERENCE +deprecated-typing-alias:28:19:28:23::'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:29:20:29:31::'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:30:9:30:13::'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:32:7:32:11::'typing.Type' is deprecated, use 'type' instead:INFERENCE +deprecated-typing-alias:33:7:33:12::'typing.Tuple' is deprecated, use 'tuple' instead:INFERENCE +deprecated-typing-alias:34:7:34:15::'typing.Callable' is deprecated, use 'collections.abc.Callable' instead:INFERENCE +deprecated-typing-alias:40:74:40:78:func1:'typing.Dict' is deprecated, use 'dict' instead:INFERENCE +deprecated-typing-alias:40:16:40:20:func1:'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:40:37:40:41:func1:'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:40:93:40:105:func1:'typing.Tuple' is deprecated, use 'tuple' instead:INFERENCE +deprecated-typing-alias:47:20:47:31:CustomIntList:'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:51:28:51:32::'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:53:14:53:18::'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:56:12:56:16:CustomNamedTuple:'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:58:56:58:60::'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:61:12:61:16:CustomTypedDict2:'typing.List' is deprecated, use 'list' instead:INFERENCE +deprecated-typing-alias:65:12:65:16:CustomDataClass:'typing.List' is deprecated, use 'list' instead:INFERENCE