Sun, 29 Dec 2024 14:56:04 +0100
Prepared a new release.
# -*- coding: utf-8 -*- # Copyright (c) 2024 - 2025 Detlev Offenbach <detlev@die-offenbachs.de> # """ Module implementing a dialog to show the available standalone Python interpreters. """ from PyQt6.QtCore import pyqtSlot from PyQt6.QtWidgets import QDialog, QTreeWidgetItem from eric7.EricGui import EricPixmapCache from .Ui_PipxInterpretersDialog import Ui_PipxInterpretersDialog class PipxInterpretersDialog(QDialog, Ui_PipxInterpretersDialog): """ Class implementing a dialog to show the available standalone Python interpreters. """ def __init__(self, pipx, parent=None): """ Constructor @param pipx reference to the pipx interface @type Pipx @param parent reference to the parent widget (defaults to None) @type QWidget (optional) """ super().__init__(parent) self.setupUi(self) self.refreshButton.setIcon(EricPixmapCache.getIcon("reload")) self.upgradeButton.setIcon(EricPixmapCache.getIcon("upgrade")) self.pruneButton.setIcon(EricPixmapCache.getIcon("clear")) self.__pipx = pipx self.refreshButton.clicked.connect(self.__populateInterpretersList) self.__populateInterpretersList() @pyqtSlot() def __populateInterpretersList(self): """ Private slot to populate the list of standalone Python interpreters. """ self.interpretersList.clear() interpreters = self.__pipx.getPipxInterpretersList()["interpreters"] for interpreter in interpreters: pyItem = QTreeWidgetItem( self.interpretersList, [ self.tr("Python {0}{1}").format( interpreter, ( "" if interpreters[interpreter]["used"] else self.tr(" (unused)") ), ) ], ) for package, packageVersion in interpreters[interpreter]["used_by"]: QTreeWidgetItem( pyItem, [ self.tr("{0} {1}", "package, version").format( package, packageVersion ) ], ) pyItem.setExpanded(True) @pyqtSlot() def on_upgradeButton_clicked(self): """ Private slot to upgrade all pipx managed interpreters to the latest available micro/patch version. """ self.__pipx.upgradeInterpreters(dialogParent=self) self.__populateInterpretersList() @pyqtSlot() def on_pruneButton_clicked(self): """ Private slot to prune unused interpreters. """ self.__pipx.pruneInterpreters(dialogParent=self) self.__populateInterpretersList()