Releases: shreyasmene06/pyvm-updater
v2.2.0
pyvm v2.2.0 Release Notes
New Features
Virtual Environment Management
New pyvm venv command group for managing virtual environments:
pyvm venv create <name>- Create a new virtual environment with optional Python versionpyvm venv list- List all managed virtual environmentspyvm venv remove <name>- Remove a virtual environmentpyvm venv activate <name>- Show activation command
Configuration System
User preferences stored at ~/.config/pyvm/config.toml:
pyvm config- View current configurationpyvm config --init- Create default configuration filepyvm config --path- Show configuration file location
CLI Enhancements
- New
--verboseflag for detailed output - New
--quietflag to suppress non-essential output
Test Suite
- 34 comprehensive tests covering history, utils, venv, and version modules
Architecture Changes
Modular Codebase
Complete refactor into src/pyvm_updater/ package with 11 focused modules:
cli.py- CLI commands (click)config.py- Configuration managementconstants.py- Global constantshistory.py- Installation history trackinginstallers.py- Platform-specific installerslogging_config.py- Logging configurationtui.py- Terminal User Interface (textual)utils.py- Utility functionsvenv.py- Virtual environment managementversion.py- Version checking and fetching
Removed
- Deprecated root level
python_version.py - Deprecated root level
pyvm_tui.py
Installation
pip install --user pyvm-updaterv2.1.0
What's Changed
- #6 Issue: Replace simple percentage output with a proper progress bar by @advay-demo in #29
- Fix: Correct MacOS URL construction for direct downloads #17 by @pratyyyk in #28
- Feat: Add retry logic to download_file() for improved robustness by @RahilHalai7 in #26
- Fix for issue #27 by @ShaikhWarsi in #36
- Add pyproject.toml to replace setup.py #31 by @fgrabowski in #37
- pyvm rollback fixes #11 by @ShaikhWarsi in #38
- #7 Add SHA256 checksum verification for Python downloads by @advay-demo in #40
- Add pyenv integration for issue #9 by @ShaikhWarsi in #41
- feat : add type hint to check_reqiurement.py for improved type safety by @Sivanesan-R in #39
New Contributors
- @advay-demo made their first contribution in #29
- @pratyyyk made their first contribution in #28
- @RahilHalai7 made their first contribution in #26
- @ShaikhWarsi made their first contribution in #36
- @fgrabowski made their first contribution in #37
- @Sivanesan-R made their first contribution in #39
Full Changelog: 2.0.1...2.1.0
v2.0.1
pyvm v2.0.1
Hotfix
- Marked the
textualpackage as a required dependency to ensure the TUI works out of the box
v2.0.0
What’s New
New Interactive TUI (pyvm tui)
- Introduces a dedicated interactive terminal interface launched via
pyvm tui - Fully redesigned UI with a three-panel layout for installed versions, available releases, and status
- Supports full keyboard navigation with optional mouse interaction
- Includes dark and light theme support
Smart Installation System
- Automatically selects the best available installation method per platform
- Supports mise, pyenv, system package managers, and official installers
- Built-in fallback mechanism ensures reliable installation
Unified Python Version Detection
- Detects Python installations from multiple sources
- Aggregates mise, pyenv, and system-installed versions into a single unified view
New CLI Commands
pyvm listto display available Python versionspyvm install <version>to install a specific Python release
Improved Installation Feedback
- Displays real-time installation output during Python installs
- Provides clear visibility into installation progress across platforms
v1.2.3
Python Version Targeting and Platform Compatibility Improvements
Version 1.2.3 focuses on making Python updates more flexible, predictable, and compatible across platforms. This release introduces the ability to target a specific Python version during updates, adds a short version flag for quicker CLI access, and enables direct execution on Unix-like systems through proper shebang support.
Platform reliability has been improved with better Windows ARM64 handling and more robust version parsing on macOS. The release also updates the minimum supported Python requirement and modernizes internal print logic for improved readability and maintainability.
In addition, Python 3.13 and 3.14 are now officially supported, and the documentation has been refined with clearer installation steps, updated quickstart examples, and corrected PyPI workflow references. Overall, this release delivers quality of life enhancements, cleaner internals, and broader Python version support.
What's Changed
- feat: add shebang for unix-like execution by @Pikolosan in #15
- Removed typos from README by @Ved178 in #18
- feat: add Python 3.13 and 3.14 classifiers in setup.py (#2) by @guitolino in #19
- fixes_#1: add short -v flag for version command by @davideciaccio in #21
- feat: Allow specifying target Python version during update by @vishaal2002 in #14
- resolved bug: unreachable return True by @Ved178 in #20
- feat: update python_requires in setup.py by @guitolino in #22
- feat: Enhance architecture detection in update_python_windows by @vishaal2002 in #23
- Revert "feat: Enhance architecture detection in update_python_windows" by @shreyasmene06 in #24
- feat: win arm64 support by @vishaal2002 in #25
New Contributors
- @Pikolosan made their first contribution in #15
- @Ved178 made their first contribution in #18
- @guitolino made their first contribution in #19
- @davideciaccio made their first contribution in #21
- @vishaal2002 made their first contribution in #14
- @shreyasmene06 made their first contribution in #24
Full Changelog: 1.2.2...v1.2.3
v1.2.2 – Critical Security Fix (PyPI Re-release)
Overview
Version 1.2.2 is a critical security re-release on PyPI. It removes unsafe system-modifying behavior on Linux and ensures pyvm operates strictly as a non-invasive, side-by-side Python installer.
This release is functionally identical to v1.2.1. The version number has been incremented to address PyPI release requirements only.
Critical Security Fix
This update removes code paths that could modify the system default Python interpreter, which posed a risk to system stability and could interfere with package managers, terminals, and desktop environments.
Breaking Changes
- Removed the
pyvm set-defaultcommand - Removed the
--set-defaultflag - pyvm no longer modifies system Python defaults under any circumstances
Key Changes
- Eliminated all logic that modified the
python3symlink viaupdate-alternatives - Removed internal functions that could disrupt:
- Package managers
- Terminal environments
- System GUI and settings tools
- Added safe, read-only usage instructions focused on virtual environments
- Updated all documentation with explicit safety warnings and guidance
Notes
- This release is functionally identical to v1.2.1
- Version bumped to v1.2.2 for PyPI re-release purposes only
v1.2.1 – Security & Stability Update
v1.2.1 – Security and Stability Update
Release Date: 30 November 2025
Overview
Version 1.2.1 addresses unsafe behavior related to modifying system-level Python configurations on Linux. This release removes all functionality that could alter the system default Python interpreter and reinforces pyvm’s design as a safe, non-invasive Python version installer.
Breaking Changes
- Removed the
pyvm set-defaultcommand - Removed the
--set-defaultflag from thepyvm updatecommand - pyvm no longer modifies system Python defaults under any circumstances
Security and Stability Fixes
- Removed all logic that modified system Python symlinks
- Eliminated usage of
update-alternativesfor Python management - Prevented issues that could lead to:
- Terminal and shell failures
- Package manager corruption
- Desktop environment and system settings instability
Removed
_set_python_default_linux()implementationprompt_set_as_default()_show_access_instructions()pyvm set-defaultCLI command--set-defaultupdate option
Added
- Read-only Python usage guidance via
show_python_usage_instructions() - Security documentation in
CRITICAL_SECURITY_FIX_v1.2.1.md - Clear safety warnings in the README
- Recommended workflows based on virtual environments
Changed
update_python_linux()now performs installation only- CLI help text updated to reflect safe behavior
- Documentation and internal docstrings revised
- Version updated to 1.2.1
Migration Notes
Users who previously relied on setting a system default should migrate to virtual environments:
python3.12 -m venv myproject
source myproject/bin/activate
For recovery steps or additional context, refer to CRITICAL_SECURITY_FIX_v1.2.1.md.
Full Changelog: v1.2.0...1.2.1