Skip to content

Navigation & Discovery

BetterPy enhances PyCharm's navigation with protocol-aware search and run-target gutter markers.


Class Implementations Code Vision

Class implementations code vision

Since 2026.05.2 · Maturity Incubating · Issues PY-56627

Shows an inline code vision hint above each Python class with the number of implementations (transitive subclasses) found in the project. When a class has at least one implementation, the hint reads 1 implementation or N implementations.

Nested classes can also show a usage hint for project references that are not already represented by implementation hints. Class-attribute aliases are followed, so assigning Outer.Builder to A.builder counts downstream calls such as A.builder().

How to invoke: The hint appears automatically above class declarations. Click it to jump to the implementing class, or pick one from the popup when there are several.


Module Assignment Usages Code Vision

Module assignment usages code vision

Since 2026.05.2 · Maturity Incubating

Shows an inline code vision hint above module-level assignments such as constants and aliases when they are used elsewhere in the project. The hint reads 1 usage or N usages and opens the matching usage locations when clicked.

How to invoke: The hint appears automatically above module-level assignments in Python files.

Property usages code vision

Since 2026.06.0 · Maturity Incubating

Shows an inline usage hint above Python properties and opens the matching project usages when the hint is clicked.

class User:
    @property
    def name(self) -> str:
        return "Ada"

user = User()
label = user.name
1 usage

Notes

  • Getter, setter, and deleter accessors are grouped under the property getter.
  • The hint is shown only when at least one project usage is found.
  • The feature is gated by the Property usages code vision setting under Settings | BetterPy | Navigation & Discovery | Navigation.

Return path highlighting

Since 2026.06.1 · Maturity Incubating

Return path highlighting marks explicit return statements in a Python function when the caret is on that function's return annotation.

How to use it

Place the caret inside the return annotation expression of an annotated Python function.

def build_user() -> User:
    if cached:
        return cached_user
    return User()

With the caret on User, BetterPy highlights the return statements in build_user.

Notes

  • The feature highlights explicit return statements only.
  • Returns inside nested functions or classes are treated as separate scopes.
  • The feature is gated by the Return path highlighting setting under Settings | BetterPy | Navigation discovery | Navigation.