Skip to content

Conversation

@gaborbernat
Copy link
Member

@gaborbernat gaborbernat commented Jan 3, 2026

This PR significantly enhances the project view decoration feature and adds comprehensive test coverage.

Enhanced Project View Decorations

The project view now shows richer information about virtual environments beyond just the Python version:

  • Python version: e.g., 3.14.2
  • Implementation: Shows CPython, PyPy, or other Python implementations
  • System site-packages: Displays a "SYSTEM" indicator when include-system-site-packages is enabled
  • Creator tool: Shows the tool that created the venv (e.g., uv@0.9.21)

Example: .venv [3.14.2 - CPython - uv@0.9.21]

Customizable Settings

A new settings page (Settings → PyVenv Manage) allows full customization:

  • Prefix/Suffix: Characters surrounding the decoration (default: [ and ])
  • Separator: Text between fields (default: -)
  • Fields: Enable, disable, and reorder which information to display via a checkbox list with up/down arrows
  • Live preview: Updates in real-time as you modify settings

Empty fields are automatically omitted from the decoration.

Test Coverage

Comprehensive unit tests achieving 100% line coverage with CI enforcement via Kover's koverVerify task.

UI Test Fixes

Updated UI tests for compatibility with PyCharm 2025.1 and RemoteRobot.

CI Improvements

Simplified verification to only run against Python-bundled IDEs (PyCharm Community and Professional). This plugin requires com.intellij.modules.python as a mandatory dependency, and Plugin Verifier checks against clean IDE distributions where IDEA doesn't bundle Python. Previously verification against IntelliJ IDEA, GoLand, CLion, and RustRover would fail because these IDEs require the Python plugin to be installed separately.

Other Changes

  • Added require-restart="false" to plugin.xml for dynamic loading support
  • Added searchable options XML for settings search functionality
  • Updated README with new settings documentation

@gaborbernat gaborbernat force-pushed the feature/coverage-threshold branch 15 times, most recently from 3c1aa71 to a7d53f4 Compare January 3, 2026 16:13
@gaborbernat gaborbernat marked this pull request as draft January 3, 2026 16:27
@gaborbernat gaborbernat force-pushed the feature/coverage-threshold branch 11 times, most recently from 119988d to b4201b6 Compare January 3, 2026 21:52
@gaborbernat gaborbernat changed the title Add coverage enforcement threshold Add coverage enforcement and simplify CI verification Jan 4, 2026
@gaborbernat gaborbernat marked this pull request as ready for review January 4, 2026 04:47
@gaborbernat gaborbernat changed the title Add coverage enforcement and simplify CI verification Add settings page, cache invalidation, notifications, and 100% test coverage Jan 4, 2026
@gaborbernat gaborbernat force-pushed the feature/coverage-threshold branch from d85c4cd to 5bf5eea Compare January 4, 2026 04:51
@gaborbernat gaborbernat changed the title Add settings page, cache invalidation, notifications, and 100% test coverage Add 100% test coverage enforcement and fix UI tests Jan 4, 2026
@gaborbernat gaborbernat force-pushed the feature/coverage-threshold branch from 5bf5eea to 27d62d5 Compare January 4, 2026 04:54
@gaborbernat gaborbernat changed the title Add 100% test coverage enforcement and fix UI tests ✅ Add 100% test coverage enforcement and 📚 comprehensive documentation Jan 4, 2026
@gaborbernat gaborbernat changed the title ✅ Add 100% test coverage enforcement and 📚 comprehensive documentation ✅ Add 100% test coverage and 📚 CONTRIBUTING.md Jan 4, 2026
@gaborbernat gaborbernat changed the title ✅ Add 100% test coverage and 📚 CONTRIBUTING.md Add 100% test coverage and CONTRIBUTING.md Jan 4, 2026
@gaborbernat gaborbernat changed the title Add 100% test coverage and CONTRIBUTING.md Enhance project view decorations and add 100% test coverage Jan 4, 2026
@gaborbernat gaborbernat force-pushed the feature/coverage-threshold branch 7 times, most recently from 515c71c to 6b2fca9 Compare January 4, 2026 05:38
The project view now shows richer venv metadata: Python implementation
(CPython, PyPy), system site-packages indicator, and creator tool with version
(uv, virtualenv). A new VenvInfo data class captures all this information, and
the cache stores full venv info instead of just version strings. The settings
page uses a single decoration format field with placeholders: $version,
$implementation, $system, $creator.

Added comprehensive unit tests achieving 100% line coverage with CI enforcement
via Kover's koverVerify task. Tests cover utility functions, version cache,
action classes, and settings persistence. Updated UI tests for PyCharm 2025.1
and RemoteRobot compatibility.

Simplified CI verification to only Python-bundled IDEs (PyCharm Community and
Professional) since this plugin requires com.intellij.modules.python as a
mandatory dependency. Added CONTRIBUTING.md covering development, testing, and
the release process. Added require-restart="false" to plugin.xml for dynamic
loading and searchable options XML for settings search.

Signed-off-by: Bernát Gábor <bgabor8@bloomberg.net>
@gaborbernat gaborbernat force-pushed the feature/coverage-threshold branch from fbd745c to b0b820a Compare January 4, 2026 05:43
@gaborbernat gaborbernat enabled auto-merge (squash) January 4, 2026 05:44
- Change plugin verifier cache path from transforms to ~/.pluginVerifier/ides
- Add step to clean corrupted transform directories missing metadata.bin
@gaborbernat gaborbernat merged commit 694edc0 into tox-dev:main Jan 4, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant