Skip to content

Settings Reference

All BetterPy features can be toggled in Settings → Tools → BetterPy. This page lists every feature organized by settings group.

Typing & Type Hints

Feature Maturity Description
Copy method annotations from parent Incubating Copies type annotations from a parent method to its overrides
Missing |None annotation inspection Incubating Adds a quickfix for PyCharm's missing | None annotation inspection
NewType/TypeVar/ParamSpec reference & rename Stable Adds references for NewType/TypeVar/ParamSpec name literals, keeps the name string in sync on rename, and repairs manual NewType drift
Overridden method missing type annotations inspection Incubating Reports overrides missing type annotations present in parent methods
Strip signature type annotations Stable Removes type annotations from a function signature

Refactoring & Code Transformations

Feature Maturity Description
Change visibility Stable Toggles a Python symbol between public and private naming
Dict access conversion Incubating Converts between dict bracket access and .get() method calls
Inline bare tuple return Incubating Inline a function with one bare tuple return while preserving grouping and avoiding a synthetic result variable
Make parameter mandatory Incubating Converts an optional parameter to a required one by removing the default value
Make parameter optional Incubating Converts a required parameter to an optional one with a default value
Parameter object MCP tool Stable Enables MCP (Model Context Protocol) tools for parameter object refactoring
Parameter object refactoring Incubating Enables introduce/inline parameter object refactoring actions
Toggle enum member value Stable Toggles enum member references with their literal values
Top-level extract function Incubating Extracts top-level Python statements into a function with parameters and explicit return values instead of globals

Testing (Pytest)

Feature Maturity Description
@pytest.mark.usefixtures on fixture is a no-op inspection Incubating Reports @pytest.mark.usefixtures decorators on fixture functions, where they have no effect — pytest only honours usefixtures on test functions
Convert pytest.param Incubating Converts between different pytest parameter formats
Copy pytest node ID from editor Incubating Copies the pytest node ID for the test at the caret position
Copy pytest node IDs Incubating Copies pytest node IDs for selected tests to the clipboard
Create pytest fixtures from parameters Incubating Offers a quick fix to generate pytest fixtures for unresolved fixture parameters
Fixture Editor Integration Incubating Enables fixture navigation, completion, definition searches, find usages, rename, and override support in the editor
Fixture Injection Intentions Incubating Intentions for converting between fixture parameters and @pytest.mark.usefixtures
Fixture annotation mismatch inspection Incubating Reports test or fixture parameters whose explicit type annotation is incompatible with the value type provided by the resolved fixture
Jump to pytest node in test tree Incubating Navigates to the corresponding node in the test tree view
Missing pytest test directory Incubating Highlights configured pytest testpaths that do not exist and offers to create them
Mock assertion methods Stable Resolves unittest.mock assertion methods without enabling broader mock type inference
Mock patch object attribute completion Stable Completes attributes for mock.patch.object targets
Mock patch reference Stable Provides reference resolution for mock.patch target strings
Mock type provider Stable Provides type information for unittest.mock objects
Mock unresolved reference inspection Stable Reports unresolved references in mock usage
New pytest members Incubating Adds Generate menu actions for new pytest tests and fixtures
Parametrize pytest test Incubating Adds, removes, completes, and maintains pytest.mark.parametrize parameters
Pull Up pytest fixture Incubating Move a pytest fixture one level higher in the conftest hierarchy to widen its availability
Push Down pytest fixture Incubating Move or copy a pytest fixture into narrower test modules, classes, or child conftest scopes
Pytest collection-pattern IDE integration Stable Keeps editor run actions aligned with pytest collection patterns
Pytest failed line inspection Incubating Marks the line where a pytest test failed
Pytest fixture direct import inspection Incubating Reports pytest fixture functions imported directly into conftest.py — prefer pytest_plugins for explicit scoping
Pytest fixture documentation Stable Enhances Quick Documentation and member type inference for pytest fixtures across files
Pytest fixture engine Incubating Enables shared pytest fixture resolution, references, type inference, and fixture-aware infrastructure
Pytest fixture override contract inspection Incubating Reports fixture overrides whose produced value type is incompatible with the parent fixture
Pytest fixture redundant parameter inspection Incubating Reports fixture parameters that are already injected automatically via autouse, usefixtures on the enclosing class, or module-level pytestmark, and are not referenced in the function body.
Pytest fixture scope inspection Incubating Reports fixtures that narrow the scope compared to parent fixtures
Pytest fixture to usefixtures inspection Incubating Reports unused setup-only fixture parameters in test functions and offers conversion to @pytest.mark.usefixtures()
Pytest fixture uninjected reference inspection Incubating Reports fixture references inside tests/fixtures that are not declared as parameters
Pytest hooks Incubating Generates pytest hook stubs where pytest discovers them and adds navigation and F1 documentation
Pytest identifier in Search Everywhere Incubating Includes pytest identifiers in Search Everywhere results
Pytest mark completion Incubating Completes @pytest.mark. decorators with built-in, config, and plugin markers
Pytest missing assert inspection Incubating Reports pytest tests that have no Python assert statement or explicitly return a value, including asserts reached through project helper calls
Pytest parametrize count mismatch inspection Incubating Reports when the number of values in a pytest.mark.parametrize value set does not match the number of parameter names
Pytest parametrize ids count inspection Incubating Reports when the number of ids in a pytest.mark.parametrize call does not match the number of parameter sets
Pytest parametrize unexpected keyword inspection Incubating Reports unsupported keyword arguments passed to pytest.mark.parametrize
Pytest parametrize unused argname inspection Incubating Reports pytest.parametrize argnames that are never used inside the test function body
Pytest parametrized case run gutter icon Incubating Shows run gutter icons for individual pytest parametrized cases when each case is on its own line
Pytest plugin references Incubating Provides navigation, rename, and unresolved-reference inspection support for pytest_plugins module strings
Pytest redundant fixture import inspection Incubating Reports explicitly imported pytest fixtures that are already auto-discoverable via conftest or plugins.
Run pytest with debug logging Incubating Duplicates the selected pytest run configuration with debug logging flags for the chosen test tree node
Surround with pytest.raises() Incubating Wraps a statement with pytest.raises() in test contexts
Toggle pytest skip Incubating Adds or removes @pytest.mark.skip decorator from a test
Toggle pytest skip from test tree Incubating Adds or removes @pytest.mark.skip from the test tree context menu
Unknown dynamic pytest fixture inspection Incubating Reports string-based fixture requests (usefixtures, getfixturevalue, indirect parametrize) that do not resolve to any visible fixture
Unused pytest fixture inspection Incubating Reports pytest fixture functions that are never used as a parameter in any test or other fixture in the project, and offers a safe-delete quick fix
Use actual test outcome Incubating Replaces assertion expected values with the actual value from the last failed test run
pytest_plugins in non-root conftest inspection Incubating Reports pytest_plugins assignments that appear in a non-root conftest.py file, where they have no effect
request.param without params inspection Incubating Reports pytest fixtures that read request.param but declare no params= and are not the target of any indirect parametrization

Imports & Module Boundaries

Feature Maturity Description
Export symbol to target Stable Exports a symbol to a specified target module's all
Feature Maturity Description
Class implementations code vision Incubating Shows an inline code vision hint above each Python class with the number of implementations (subclasses) and lets you navigate to them
Module assignment usages code vision Incubating Shows an inline code vision hint above each module-level assignment with the number of project-scope usages and lets you navigate to them
Property usages code vision Incubating Shows an inline code vision hint above each Python property with the number of project-scope usages and lets you navigate to them
Return path highlighting Incubating Highlights explicit return statements when the caret is on a function return annotation

Code Quality & Safety

Feature Maturity Description
Constant should be Final inspection Stable Reports module-level constants that should be annotated with Final
Private module import inspection Stable Reports private-module imports that should use public package exports
Shadowing stdlib module inspection Stable Reports project modules that shadow Python standard library modules
Suppress missing docstrings on overloads Incubating Suppresses PyCharm's missing docstring inspection for typing overload signatures.
Unnecessary inspection suppressions Stable Detects redundant inspection IDs in Python noinspection comments and removes them safely.
Usage filtering Stable Adds Find Usages filters for type annotations and test-source references

Productivity Actions

Feature Maturity Description
Copy with imports Incubating Copies selected Python code together with the import statements referenced by that selection
Docstring Example Rendering Incubating Renders doctests and fenced Python examples in Quick Documentation docstrings.
Generate class actions Stable Adds Generate menu actions for test classes, dataclasses, frozen dataclasses, and pydantic models
Inherited Attribute Documentation Incubating Shows an ancestor attribute's docstring when an overriding class attribute has no local documentation.
UV script runner & debugger Stable Runs and debugs uv project script entry points from pyproject.toml

IDE Customization

Feature Maturity Description
Enhance Structure View Stable Master switch for BetterPy structure-view filters, overload hiding, and pytest-specific icons.
Enhanced Go to Implementation presentation Stable Prepends class name to method name in Go to Implementation popup when names are identical
Filter private members Stable Adds a filter to hide private members in the structure view
Hide overloads Stable Hides typing overload signatures from the structure view while keeping the implementation visible.
Icons for pytest tests and fixtures Stable Renders tests, fixtures, and normal functions with distinct icons in the structure view. Filters to show/hide tests and fixtures are added when viewing a test file.
Message console filter Stable Filters and formats Python messages in the console
Python navigation bar Stable Enables enhanced Python navigation bar with module path display
Structural Search Profile (Python) Incubating Adds a Python Structural Search profile integration for pattern matching and constraints
Test/Production editor tabs Incubating Keeps test and production files in separate editor splits with configurable alignment