What’s Fixed and Improved in PyCharm 2026.3 JetBrains released PyCharm 2026.3, which ships 303 fixes and improvements to everyday Python development alongside features including JetBrains Air, workspaces, Python 3.15 lazy imports, and a redesigned interpreter widget. The release improves type inference for functools.partial and generics, adds shorter codes in # type: ignore[...] comments and a new # pycharm: ignore[...] syntax for individual inspections, and resolves issues reported more than a decade ago, including PY-35363 and PY-33618. Releases https://blog.jetbrains.com/pycharm/category/releases/ What’s Fixed and Improved in PyCharm 2026.3 PyCharm 2026.3 https://www.jetbrains.com/pycharm/ is here Alongside major features like JetBrains Air, workspaces, Python 3.15 lazy imports, and the redesigned interpreter widget https://www.jetbrains.com/pycharm/whatsnew/2026-3/ , this release includes 303 fixes and improvements https://youtrack.jetbrains.com/issues?q=%23py%20type:%20bug,%20feature%20Planned%20for:%202026.3.0,%20%7B2026.3%20 %7D%20visible%20to:%20%7BAll%20Users%7D%20state:%20fixed,%20merged to everyday Python development. From smarter code completion to more reliable environments and debugging, here are some of the changes worth knowing about—including fixes for issues reported more than a decade ago. Smarter code insight and type inference Better support for functools.partial functools.partial lets you create a new callable by supplying some of a function’s arguments in advance. Previously, PyCharm could struggle to infer the resulting signature, leading to missing parameter information and incorrect warnings. PyCharm now understands the remaining parameters, checks their types, and recognizes partial objects as valid Callable instances. In the example below, PyCharm correctly identifies the remaining parameter and flags an incompatible argument. PyCharm understands the remaining parameters of a functools.partial object. This resolves several long-standing issues with completion, parameter information, and type checking PY-35363 https://youtrack.jetbrains.com/issue/PY-35363 , PY-33618 https://youtrack.jetbrains.com/issue/PY-33618 , PY-25698 https://youtrack.jetbrains.com/issue/PY-25698 , PY-36385 https://youtrack.jetbrains.com/issue/PY-36385 . Fewer false positives for generics and collections PyCharm now provides more accurate type inference for generic classes, bounded and constrained type variables, overloaded constructors, and generic getattr methods. For example, calling a method on a bounded type variable now preserves its return type instead of falling back to Any PY-89863 https://youtrack.jetbrains.com/issue/PY-89863 . Collection inference has improved, too. Nested lists, optional values, dictionary literals, and tuple unpacking produce fewer false warnings PY-89564 https://youtrack.jetbrains.com/issue/PY-89564 , PY-91999 https://youtrack.jetbrains.com/issue/PY-91999 . There are also improvements to Literal , Enum , and TypedDict , along with support for PEP 747’s TypeForm T and intersection types through ty extensions.Intersection PY-90287 https://youtrack.jetbrains.com/issue/PY-90287 , PY-62524 https://youtrack.jetbrains.com/issue/PY-62524 , PY-89043 https://youtrack.jetbrains.com/issue/PY-89043 , PY-87024 https://youtrack.jetbrains.com/issue/PY-87024 . Clearer type warnings and suppression comments When PyCharm finds a type mismatch, its tooltips now provide clearer explanations, improved formatting, and links to the relevant types. Call and control-flow analysis also handles more cases involving optional callables, bound methods, and paths that never return, reducing false warnings PY-90555 https://youtrack.jetbrains.com/issue/PY-90555 , PY-83644 https://youtrack.jetbrains.com/issue/PY-83644 . When a warning is intentional, you have more control over suppressing it. PyCharm now supports shorter codes in type: ignore ... comments and introduces pycharm: ignore ... for individual PyCharm inspections. There’s also a Suppress with ‘type: ignore’ comment action, and unknown suppression codes are flagged to catch typos PY-90787 https://youtrack.jetbrains.com/issue/PY-90787 , PY-92114 https://youtrack.jetbrains.com/issue/PY-92114 . PyCharm 2026.3 introduces a new action to suppress individual type warnings using type: ignore ... comments. Testing and developer tools Better completion for pytest and mocks Mocks and fixtures can be tricky for an IDE to understand. PyCharm now provides completion for the pytest-mock mocker fixture, navigation for mocker.patch targets, and completion based on classes passed to Mock spec=... or Mock spec set=... . php from unittest.mock import Mock class Client: def fetch self, url: str - str: return "OK" client = Mock spec=Client client.fetch "https://example.com" PyCharm 2026.3 provides completion for methods defined in classes passed to Mock spec=... . PyCharm also flags invalid unittest.mock.patch targets and improves completion and documentation for pytest fixtures PY-36260 https://youtrack.jetbrains.com/issue/PY-36260 , PY-32282 https://youtrack.jetbrains.com/issue/PY-32282 . For projects with custom test infrastructure, you can configure a unittest runner script, such as Django’s tests/runtests.py https://github.com/django/django/blob/main/tests/runtests.py . If it uses unittest.TextTestRunner , test results appear in PyCharm’s test tree PY-26068 https://youtrack.jetbrains.com/issue/PY-26068 . More capable type-checker and Ruff integrations Zuban, a mypy-compatible type checker and language server, joins ty, Pyrefly, and basedpyright as a supported external tool. Its integration provides diagnostics, completion, hover information, inlay hints, and quick fixes. Pyrefly also receives fixes for custom import roots and missing-package installation PY-85009 https://youtrack.jetbrains.com/issue/PY-85009 , PY-89805 https://youtrack.jetbrains.com/issue/PY-89805 . With Ruff, Optimize Imports now removes unused imports and organizes them. Ruff fixes can run automatically on save or before a commit, and the new Apply Ruff Fixes action works across a selected scope, including an entire project. Configuration discovery is also more reliable in multi-root, network, and WSL projects PY-85534 https://youtrack.jetbrains.com/issue/PY-85534 , PY-86352 https://youtrack.jetbrains.com/issue/PY-86352 . Apply Ruff fixes to an individual file, custom scope, or entire project directly from PyCharm. Django, FastAPI, and SQLAlchemy Django: You can create run configurations for Django 6.0 tasks, and TextChoices members defined with value-and-label tuples no longer trigger false type errors PY-86368 https://youtrack.jetbrains.com/issue/PY-86368 , PY-92177 https://youtrack.jetbrains.com/issue/PY-92177 . In Django REST framework, rest framework.reverse.reverse now offers URL-name completion and navigation, just like Django’s built-in reverse PY-78900 https://youtrack.jetbrains.com/issue/PY-78900 . PyCharm 2026.3 provides URL-name completion for Django REST framework’s reverse function. FastAPI: Alongside the new interactive dependency graphs https://www.jetbrains.com/pycharm/whatsnew/2026-3/ , path parameters supplied through dependencies no longer cause incorrect warnings about missing endpoint parameters PY-88935 https://youtrack.jetbrains.com/issue/PY-88935 . SQLAlchemy: Expanded ORM support improves completion, navigation, and type inference for declarative models. Fixes also cover attributes added through relationship and columns that use SQLAlchemy’s ENUM type PY-79736 https://youtrack.jetbrains.com/issue/PY-79736 , PY-29212 https://youtrack.jetbrains.com/issue/PY-29212 . Editing and refactoring Several small fixes make editing more predictable. Pressing Enter after a comment introducing a block now inserts the correct indentation, while moving lines in tab-indented files no longer causes false Unexpected indent warnings PY-15693 https://youtrack.jetbrains.com/issue/PY-15693 , PY-78251 https://youtrack.jetbrains.com/issue/PY-78251 . A new Align consecutive assignments formatter option lines up assignment operators. You can enable it under Settings | Editor | Code Style | Python | Wrapping and Braces . The formatter also does a better job preserving configured blank lines PY-34006 https://youtrack.jetbrains.com/issue/PY-34006 . Refactoring is safer, too. Inline Function preserves fallback behavior for omitted optional arguments, while Implement abstract methods generates valid implementations of asynchronous abstract methods PY-81983 https://youtrack.jetbrains.com/issue/PY-81983 , PY-53074 https://youtrack.jetbrains.com/issue/PY-53074 . More reliable environments and faster startup conda: Environment variables configured using conda env config vars set or activate.d scripts are now available when you run scripts, tests, and the Python console from PyCharm. Previously, variables could work in a terminal but be missing inside the IDE—particularly frustrating for projects using GDAL, QGIS, PyMC, or compiler toolchains PY-55405 https://youtrack.jetbrains.com/issue/PY-55405 , PY-38751 https://youtrack.jetbrains.com/issue/PY-38751 . uv: Workspaces using a shared root .venv retain their interpreter after upgrading from PyCharm 2026.1. Projects that use uv pip without a pyproject.toml now use the correct installation command, creating a uv environment no longer requires uv init , and new environments can optionally access system site-packages PY-91108 https://youtrack.jetbrains.com/issue/PY-91108 , PY-85589 https://youtrack.jetbrains.com/issue/PY-85589 . Performance: Python scripts start faster thanks to reduced helper overhead. In particular, simply having matplotlib installed no longer adds approximately 100 milliseconds to the startup of an otherwise empty script PY-92211 https://youtrack.jetbrains.com/issue/PY-92211 . Debugging improvements The debugpy debugger mode now supports Set Value and Jump to Cursor . Other improvements include sorting variables by type, displaying plots in the Plots tool window, accepting interactive input with terminal emulation, and using Drop into debugger for failed tests. In the example below, we’ve paused execution and changed discount from 0.10 to 0.25 , allowing us to test a different result without restarting the program. Changing a variable’s value while debugging in debugpy mode. Debugging also works more reliably for tests in WSL, applications launched with fastapi dev , and long-running IDE sessions on macOS PY-90157 https://youtrack.jetbrains.com/issue/PY-90157 , PY-90281 https://youtrack.jetbrains.com/issue/PY-90281 , PY-90588 https://youtrack.jetbrains.com/issue/PY-90588 . Elsewhere in the debugger, dictionary keys appear in insertion order, Python 3.15’s frozendict can be expanded, and the debug console supports a configurable starting script PY-75697 https://youtrack.jetbrains.com/issue/PY-75697 , PY-21419 https://youtrack.jetbrains.com/issue/PY-21419 . Easier Jupyter notebook workflows Find now searches cell outputs as well as source code, so you can locate a result without scrolling through the notebook. You can also move several selected cells together or use Extract to Python File to copy them into a regular Python file. A bug that caused scripts embedded in HTML outputs to execute twice has been fixed, too PY-84634 https://youtrack.jetbrains.com/issue/PY-84634 , PY-89385 https://youtrack.jetbrains.com/issue/PY-89385 . Thank you for your feedback Not every meaningful improvement is a headline feature. Sometimes it’s a false warning disappearing, completion working where it didn’t before, or a debugger behaving as expected. Some fixes in this release trace back to issues reported more than a decade ago. Download PyCharm 2026.3 https://www.jetbrains.com/pycharm/download/ and try these improvements in your projects. And if PyCharm gets something wrong, report it in YouTrack https://youtrack.jetbrains.com/issues/PY . Your reports and votes help us decide what to improve next. Thanks for using PyCharm, and happy coding Subscribe to PyCharm Blog updates