Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>🐍 Python Hover - Enhanced DocumentationNew to Visual Studio Code? Get it now.
🐍 Python Hover - Enhanced Documentation

🐍 Python Hover - Enhanced Documentation

KiidxAtlas

|
9,279 installs
| (4) | Free
Instant Python documentation on hover. Covers 300+ constructs, all keywords/operators with correct anchors, NumPy, Pandas, FastAPI, Django, PyTorch, Flask, Pydantic, SQLAlchemy, Requests and more. Scoped DevDocs links, smart context detection, zero config.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

🐍 Python Hover

Stop alt-tabbing. Instant Python documentation on hover β€” docstrings, signatures, type hints, and examples, never leaving VS Code.

Visual Studio Marketplace Version Downloads Rating


Buy Me a Coffee GitHub Sponsors


⬇️ Install Free  Β·  ⭐ Rate It  Β·  🐛 Report Bug  Β·  💡 Request Feature


Python Hover Demo

🔥 The Problem Every Python Developer Has

You're in the zone. Deep in a pandas pipeline, a NumPy reshape, an asyncio task. You forget one parameter. You have two choices:

Option A: Break your flow. Open a browser. Search. Scroll. Find it. Come back. Lose your train of thought. Repeat 20Γ— a day.

Option B: Just hover.

df.groupby('category').agg(???)          # hover β†’ full signature + examples
np.einsum('ij,jk->ik', A, B)            # hover β†’ subscript syntax explained
async with asyncio.timeout(???)          # hover β†’ parameters, raises, version added
response = requests.get(url, headers=?)  # hover β†’ complete parameter table

Python Hover is Option B. Zero configuration. Instant. Accurate.


✨ What Makes It Different

Most hover extensions show you a one-liner from PyPI. Python Hover fetches from the actual Sphinx documentation β€” the same source as the official docs site β€” and combines it with live runtime introspection (docstrings, __init__ signatures, @dataclass fields, asyncio coroutine parameters) for true Python IntelliSense on hover.

Generic hover Python Hover
np.array "Create an array" Full signature, dtype param, order, subok, copy β€” with types
df.merge "DataFrame.merge" All 10+ params, how/on/left_on/right_on explained
typing.Union "Support for type hints" βœ— "Union type; Union[X, Y] is equivalent to X \| Y" βœ“
for keyword Nothing or wrong page Exact anchor on the language reference
Any keyword Nothing BNF syntax, description, PEP links
Private library Nothing Works if the package has Sphinx docs

🆕 New in 0.7.4

  • Contextual parameter lens shows the active argument slot inside hovers, then promotes the callable’s docs when the symbol under your cursor is just an argument value.
  • PyHover Activity Bar adds Inspector, Saved Docs, History, and Recent Packages views so you can keep working from inside VS Code instead of reopening docs from scratch.
  • PyHover Studio now exposes hover presets, docs-routing controls, integrated-browser behavior, and module-browser defaults from one place.
  • Integrated docs workflows now support saved docs, recent-session recovery, module browsing, and a command-center status bar without leaving the editor.

🚀 Zero to Hover in 10 Seconds

1. Install from the VS Code Marketplace
2. Open any .py file
3. Hover over any symbol

No API keys. No Python packages to install. No configuration. Just works.


📖 Everything You Can Hover

🔑 All 37+ Keywords & Operators β€” with exact doc anchors

No more landing on the wrong page. Every keyword links to its precise section:

Keyword Correct anchor
if / elif / else compound_stmts.html#the-if-statement
for / while compound_stmts.html#the-for-statement
try / except / finally compound_stmts.html#the-try-statement
with compound_stmts.html#the-with-statement
match / case compound_stmts.html#the-match-statement
async / await compound_stmts.html#coroutine-function-definition
yield simple_stmts.html#the-yield-statement
lambda expressions.html#lambda
not / and / or expressions.html#boolean-operations
in / not in expressions.html#membership-test-operations
is / is not expressions.html#identity-comparisons

⚑ All 70+ Built-in Functions

print(), len(), zip(), enumerate(), sorted(), map(), filter(), isinstance(), getattr(), open(), range(), type(), vars(), dir(), repr(), next(), iter(), and every other built-in β€” all with complete parameter docs.

🔤 Built-in Constants

None, True, False, Ellipsis, ..., __debug__, __name__ β€” each linked to its anchor on library/constants.html.

🏷️ Typing Module β€” the right description, not the backport summary

Optional, Union, Literal, TypeVar, Protocol, overload, Final, TypedDict, ParamSpec, Concatenate, Never, Annotated, Generic β€” all with the actual Python runtime docstring, not PyPI's generic "Support for type hints" blurb.

📦 Third-Party Libraries β€” auto-discovered

Works out of the box with popular libraries, and auto-discovers thousands more:

Data Science Web Frameworks HTTP & Network Data & Typing
NumPy Β· Pandas
Matplotlib Β· SciPy
PyTorch Β· scikit-learn
Django Β· Flask
FastAPI Β· Starlette
Litestar
Requests Β· HTTPX
aiohttp Β· httpcore
SQLAlchemy Β· Pydantic
attrs Β· Redis
lxml Β· BeautifulSoup

Using something not on this list? If the package publishes Sphinx docs, Python Hover discovers it automatically via PyPI β€” no configuration needed.


🧠 How It Works (The Smart Part)

Python Hover uses a 6-layer resolution pipeline so you always get the best answer:

Hover triggered
      β”‚
      β–Ό
  Static MAP ──────── <1ms Β· offline Β· keywords, operators, constants, typing
      β”‚ miss
      β–Ό
  LSP (Pylance) ────── qualified name, kind, signature, source path
      β”‚
      β–Ό
  AST identifier ───── literal type detection even in unsaved files
      β”‚
      β–Ό
  Python runtime ────── subprocess introspection: docstring, module, isStdlib
      β”‚
      β–Ό
  Sphinx inventory ──── objects.inv lookup β†’ exact versioned docs URL
      β”‚ miss
      β–Ό
  DevDocs (scoped) ──── #q=docset search, never cross-language

Context-aware alias resolution: writes import numpy as np and hovers np.array? Python Hover resolves it to numpy.array automatically before looking anything up.

Concurrent deduplication: if you move the cursor quickly over multiple symbols, Python Hover deduplicates all in-flight requests so the Python subprocess never gets overwhelmed.

Multi-tier caching: Sphinx inventories cached to disk (7 days). Hover results cached per session. Position results cached per document version. Cold start after the first hover is instant.


βš™οΈ Configuration

Works with zero config. Everything below is optional:

Setting Default Description
python-hover.enable true Enable or disable the extension
python-hover.runtimeHelper true Use the persistent Python helper for runtime introspection and better symbol identity
python-hover.onlineDiscovery true Fetch Sphinx inventories and docs from the web
python-hover.docScraping false Fetch richer third-party documentation prose, examples, and see-also sections
python-hover.docsVersion "auto" Python docs version ("auto", "3.11", "3.12", ...)
python-hover.ui.showStatusBar true Show the PyHover status bar entry for quick actions and cache size
python-hover.ui.showSignatures true Show function signatures in hover
python-hover.ui.showParameters true Show the parameters table in hover
python-hover.ui.maxParameters 6 Maximum number of parameters shown before truncating the table
python-hover.showPracticalExamples true Show code examples in hover
python-hover.ui.showSeeAlso true Show related links and see-also references
python-hover.requestTimeout 10000 Network timeout in milliseconds
python-hover.cacheTTL.inventoryDays 7 Retention hint for inventory downloads; cached inventories persist until you clear the cache
python-hover.hoverActivationDelay 75 Extra delay before resolution starts on slower machines
python-hover.ui.maxContentLength 800 Max characters before "Read more…" truncation
🏢 Custom / Private Libraries

Point Python Hover at any internal package with a Sphinx inventory:

{
  "python-hover.customLibraries": [
    {
      "name": "my-internal-lib",
      "inventoryUrl": "https://docs.internal.company.com/objects.inv",
      "baseUrl": "https://docs.internal.company.com"
    }
  ]
}

inventoryUrl is optional when the inventory lives at baseUrl/objects.inv.

Works with ReadTheDocs, GitHub Pages, self-hosted docs β€” anywhere that serves a standard objects.inv file.

✈️ Offline / Air-Gapped Mode
{
  "python-hover.onlineDiscovery": false
}

In offline mode you still get:

  • All Python keywords, operators, and control flow (instant, static, zero network)
  • All built-in constants (None, True, False, Ellipsis, …)
  • All typing module constructs
  • All previously cached library documentation

🔧 Troubleshooting

Hover not appearing?
  1. Make sure the Python extension (ms-python.python) is installed and active
  2. Check the python-hover.enable setting is still true
  3. Reload VS Code: Ctrl+Shift+P β†’ "Reload Window"
  4. Run PyHover: Show Actions and choose Show PyHover Logs
Library documentation not found?
  1. Make sure the library is imported in the file you are hovering
  2. Check the library has Sphinx docs (most popular packages do)
  3. Confirm python-hover.onlineDiscovery is enabled
  4. Run PyHover: Show Actions and choose Clear Documentation Cache (Keep Python Corpus) if you want to force a fresh fetch
  5. For private packages, use the customLibraries setting
Hover shows the wrong type or method?

Python Hover uses Pylance + AST + runtime introspection in layers. For best accuracy:

  1. Ensure Pylance is installed and type-checking is enabled
  2. Add type annotations so Pylance can infer the correct type
  3. File a bug with the symbol and a minimal snippet: GitHub Issues

📊 By the Numbers

Area Snapshot
Coverage 37+ Python keywords and operators with exact doc anchors
Built-ins 70+ built-in functions with complete parameter docs
Popular libraries 20+ third-party libraries pre-configured
Auto-discovery Thousands of libraries discoverable via Sphinx
Static speed < 1 ms for keywords and operators
Cached speed < 5 ms for cached library lookups
Package size 153 KB total installed size
Setup cost 0 configuration required to get started

💬 What Developers Say

"Finally I don't have to leave VS Code to check pandas documentation." "The context-awareness is incredible. It knows exactly which method I'm looking at." "Hover over elif and get the right docs page. Details matter." "Saved me hours of alt-tabbing. Worth every star."


🤝 Contributing & Support

Love Python Hover? Here is how to help:

  • ⭐ Star the repo β€” helps other Python developers find it
  • 📝 Leave a review β€” on the VS Code Marketplace
  • 🐛 Report a bug β€” open an issue
  • 💡 Suggest a feature β€” start a discussion

View Contributing Guide β†’


β˜• Keep the Coffee Coming

Python Hover is free and open source. If it saves you time every day, a coffee keeps the bugs squashed and the features shipping:

Buy Me a Coffee GitHub Sponsors


Made with ❀️ by KiidxAtlas

MIT License Β· Changelog Β· Contributing


⬆️ Back to Top

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
Β© 2026 Microsoft