{"id":39103226,"url":"https://github.com/shreyasmene06/pyvm-updater","last_synced_at":"2026-01-17T19:16:54.391Z","repository":{"id":323202757,"uuid":"1092473620","full_name":"shreyasmene06/pyvm-updater","owner":"shreyasmene06","description":"Cross-platform Python version checker and updater CLI tool","archived":false,"fork":false,"pushed_at":"2026-01-10T16:18:21.000Z","size":127,"stargazers_count":16,"open_issues_count":8,"forks_count":8,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-11T04:23:38.250Z","etag":null,"topics":["bash","package","python","python-script","shell","shell-script","version-control"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/pyvm-updater/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shreyasmene06.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-08T17:34:24.000Z","updated_at":"2026-01-11T03:54:43.000Z","dependencies_parsed_at":"2025-12-01T22:03:37.509Z","dependency_job_id":null,"html_url":"https://github.com/shreyasmene06/pyvm-updater","commit_stats":null,"previous_names":["shreyasmene06/pyvm-updater"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/shreyasmene06/pyvm-updater","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shreyasmene06%2Fpyvm-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shreyasmene06%2Fpyvm-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shreyasmene06%2Fpyvm-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shreyasmene06%2Fpyvm-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shreyasmene06","download_url":"https://codeload.github.com/shreyasmene06/pyvm-updater/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shreyasmene06%2Fpyvm-updater/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28516673,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T18:55:29.170Z","status":"ssl_error","status_checked_at":"2026-01-17T18:55:03.375Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","package","python","python-script","shell","shell-script","version-control"],"created_at":"2026-01-17T19:16:54.225Z","updated_at":"2026-01-17T19:16:54.346Z","avatar_url":"https://github.com/shreyasmene06.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python Version Manager (pyvm)\n\nA cross-platform CLI tool with an interactive TUI to check and install Python versions side-by-side with your existing installation.\n\n## Overview\n\npyvm provides a safe and convenient way to manage multiple Python versions on your system. It installs new versions alongside your existing Python without modifying system defaults, ensuring your system tools remain functional.\n\n**Documentation**: [Installation Guide](docs/INSTALL.md) | [Quick Start](docs/QUICKSTART.md) | [Quick Reference](docs/QUICK_REFERENCE.md)\n\n## Features\n\n### Interactive TUI\n\n- Terminal interface with keyboard and mouse support\n- Three-panel layout showing installed versions, available releases, and status\n- Keyboard navigation with Tab, arrows, and shortcuts\n- Live installation progress updates\n- Theme switching between dark and light modes\n\n### CLI Features\n\n- Check current Python version against latest stable release\n- Install the latest Python or specific versions side-by-side\n- List all available Python versions with support status\n- Cross-platform support for Windows, Linux, and macOS\n- Virtual environment management\n- Configuration system for user preferences\n\n### Safety\n\n- Never modifies system Python defaults\n- SHA256 checksum verification for all downloads\n- Smart installation using mise, pyenv, or system package managers\n- Rollback support to undo installations\n- Multiple Python versions coexist without conflicts\n\n## Installation\n\n### From PyPI (Recommended)\n\n```bash\npip install --user pyvm-updater\n```\n\n### From GitHub\n\n```bash\ngit clone https://github.com/shreyasmene06/pyvm-updater.git\ncd pyvm-updater\npip install --user .\n```\n\n### Using pipx\n\n```bash\npipx install pyvm-updater\n```\n\n**Note**: On newer Linux systems (Ubuntu 23.04+, Debian 12+), use the `--user` flag or pipx to avoid \"externally-managed-environment\" errors.\n\n### Verify Installation\n\n```bash\npyvm --version\npyvm check\n```\n\n## Quick Start\n\n```bash\n# Check your Python version\npyvm check\n\n# Update to latest Python\npyvm update\n\n# Launch interactive TUI\npyvm tui\n\n# List available versions\npyvm list\n\n# Install a specific version\npyvm install 3.12.8\n```\n\n## Usage\n\n## Shell Completion\n\nEnable tab completion for your shell:\n\n**Bash** (add to `~/.bashrc`):\n```bash\neval \"$(_PYVM_COMPLETE=bash_source pyvm)\"\n\n**Zsh** (add to `~/.zshrc`):\n```bash\neval \"$(_PYVM_COMPLETE=zsh_source pyvm)\"\n**Fish** (add to `~/.config/fish/config.fish`):\n```fish\n_PYVM_COMPLETE=fish_source pyvm | source\n\n### Interactive TUI Mode\n\n```bash\npyvm tui\n```\n\nKeyboard Shortcuts:\n\n| Key | Action |\n|-----|--------|\n| Tab / Shift+Tab | Switch between panels |\n| Arrow Keys | Navigate within panel |\n| Enter | Install selected version |\n| U | Update to latest Python |\n| B | Rollback last installation |\n| X | Remove selected version |\n| R | Refresh data |\n| T | Toggle theme |\n| Q | Quit |\n\n### CLI Commands\n\n| Command | Description |\n|---------|-------------|\n| `pyvm check` | Check Python version against latest |\n| `pyvm list` | List available Python versions |\n| `pyvm list --all` | Show all versions including patches |\n| `pyvm install \u003cversion\u003e` | Install specific Python version |\n| `pyvm update` | Update to latest Python version |\n| `pyvm update --version 3.12.0` | Update to specific version |\n| `pyvm remove \u003cversion\u003e` | Remove an installed version |\n| `pyvm rollback` | Undo last installation |\n| `pyvm venv create \u003cname\u003e` | Create virtual environment |\n| `pyvm venv list` | List virtual environments |\n| `pyvm config` | View configuration |\n| `pyvm info` | Show system information |\n\n### Virtual Environment Management\n\n```bash\n# Create a new virtual environment\npyvm venv create myproject\n\n# Create with specific Python version\npyvm venv create myproject --python 3.12\n\n# List all managed environments\npyvm venv list\n\n# Show activation command\npyvm venv activate myproject\n\n# Remove an environment\npyvm venv remove myproject\n```\n\n### Using Installed Python Versions\n\nAfter installation, the new Python is available alongside your existing version:\n\nLinux/macOS:\n```bash\n# Use the new version\npython3.12 your_script.py\n\n# Create a virtual environment\npython3.12 -m venv myproject\nsource myproject/bin/activate\n```\n\nWindows:\n```bash\n# Use Python Launcher\npy -3.12 your_script.py\n\n# List installed versions\npy --list\n```\n\n## How It Works\n\npyvm uses an intelligent fallback chain for installation:\n\nLinux:\n1. mise (if available)\n2. pyenv (if available)\n3. apt with deadsnakes PPA (Ubuntu/Debian)\n4. dnf/yum (Fedora/RHEL)\n\nmacOS:\n1. mise (if available)\n2. pyenv (if available)\n3. Homebrew\n\nWindows:\n- Downloads official installer from python.org\n\n## Configuration\n\nConfiguration is stored at `~/.config/pyvm/config.toml`:\n\n```toml\n[general]\nauto_confirm = false\nverbose = false\npreferred_installer = \"auto\"\n\n[download]\nverify_checksum = true\nmax_retries = 3\ntimeout = 120\n\n[tui]\ntheme = \"dark\"\n```\n\nManage configuration:\n```bash\npyvm config           # View current settings\npyvm config --init    # Create default config\npyvm config --path    # Show config file location\n```\n\n## Requirements\n\n- Python 3.9 or higher\n- Internet connection\n- Admin/sudo privileges for some package manager operations\n\n## Dependencies\n\nAutomatically installed:\n- requests\n- beautifulsoup4\n- packaging\n- click\n- textual\n\n## Troubleshooting\n\n### \"externally-managed-environment\" Error\n\nUse one of these solutions:\n\n```bash\n# Option 1: User install\npip install --user pyvm-updater\n\n# Option 2: Use pipx\npipx install pyvm-updater\n\n# Option 3: Use virtual environment\npython3 -m venv venv \u0026\u0026 source venv/bin/activate\npip install pyvm-updater\n```\n\n### \"pyvm: command not found\"\n\nAdd the installation directory to your PATH:\n\n```bash\n# For pip install --user\nexport PATH=\"$HOME/.local/bin:$PATH\"\n\n# For pipx\npipx ensurepath\n```\n\n### \"Already installed but shows old version\"\n\nThe new Python is installed alongside your existing version. Use the specific version command:\n\n```bash\npython3.12 --version    # Linux/macOS\npy -3.12 --version      # Windows\n```\n\n## Development\n\n```bash\n# Clone and install in development mode\ngit clone https://github.com/shreyasmene06/pyvm-updater.git\ncd pyvm-updater\npip install -e \".[dev]\"\n\n# Run tests\npytest tests/ -v\n\n# Run linters\nruff check .\nblack --check .\nmypy src/pyvm_updater\n```\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | Success or up-to-date |\n| 1 | Update available or error |\n| 130 | Operation cancelled by user |\n\n## Contributing\n\nContributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n\n## Author\n\nShreyas Mene\n\n## Disclaimer\n\nThis tool downloads and installs software from python.org. Always verify the authenticity of downloaded files. The authors are not responsible for any issues arising from Python installations.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshreyasmene06%2Fpyvm-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshreyasmene06%2Fpyvm-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshreyasmene06%2Fpyvm-updater/lists"}