src/eric7/PipInterface/PipPackagesWidget.py

branch
eric7
changeset 10481
9aea3575bd16
parent 10475
ee41fab001f2
child 10534
783d835d7fe4
child 10620
699b5ceb39aa
equal deleted inserted replaced
10480:a19abaeeaf0f 10481:9aea3575bd16
6 """ 6 """
7 Module implementing the pip packages management widget. 7 Module implementing the pip packages management widget.
8 """ 8 """
9 9
10 import contextlib 10 import contextlib
11 import enum
11 import html.parser 12 import html.parser
12 import os 13 import os
13 import textwrap 14 import textwrap
14 15
15 from packaging.specifiers import InvalidSpecifier, SpecifierSet 16 from packaging.specifiers import InvalidSpecifier, SpecifierSet
147 @rtype list of dict 148 @rtype list of dict
148 """ 149 """
149 return self.__results 150 return self.__results
150 151
151 152
153 class PipPackageInformationMode(enum.Enum):
154 """
155 Class defining the show information process modes.
156 """
157
158 General = 0
159 Classifiers = 1
160 EntryPoints = 2
161 FilesList = 3
162 UrlsList = 4
163
164
152 class PipPackagesWidget(QWidget, Ui_PipPackagesWidget): 165 class PipPackagesWidget(QWidget, Ui_PipPackagesWidget):
153 """ 166 """
154 Class implementing the pip packages management widget. 167 Class implementing the pip packages management widget.
155 """ 168 """
156
157 # TODO: change this to an enum
158 ShowProcessGeneralMode = 0
159 ShowProcessClassifiersMode = 1
160 ShowProcessEntryPointsMode = 2
161 ShowProcessFilesListMode = 3
162 ShowProcessUrlsListMode = 4
163 169
164 SearchVersionRole = Qt.ItemDataRole.UserRole + 1 170 SearchVersionRole = Qt.ItemDataRole.UserRole + 1
165 VulnerabilityRole = Qt.ItemDataRole.UserRole + 2 171 VulnerabilityRole = Qt.ItemDataRole.UserRole + 2
166 172
167 PackageColumn = 0 173 PackageColumn = 0
584 590
585 with EricOverrideCursor(): 591 with EricOverrideCursor():
586 success, output = self.__pip.runProcess(args, interpreter) 592 success, output = self.__pip.runProcess(args, interpreter)
587 593
588 if success and output: 594 if success and output:
589 mode = self.ShowProcessGeneralMode 595 mode = PipPackageInformationMode.General
590 for line in output.splitlines(): 596 for line in output.splitlines():
591 line = line.rstrip() 597 line = line.rstrip()
592 if line and line != "---": 598 if line and line != "---":
593 if mode != self.ShowProcessGeneralMode: 599 if mode != PipPackageInformationMode.General:
594 if line[0] == " ": 600 if line[0] == " ":
595 QTreeWidgetItem(infoWidget, [" ", line.strip()]) 601 QTreeWidgetItem(infoWidget, [" ", line.strip()])
596 else: 602 else:
597 mode = self.ShowProcessGeneralMode 603 mode = PipPackageInformationMode.General
598 if mode == self.ShowProcessGeneralMode: 604 if mode == PipPackageInformationMode.General:
599 try: 605 try:
600 label, info = line.split(": ", 1) 606 label, info = line.split(": ", 1)
601 except ValueError: 607 except ValueError:
602 label = line[:-1] 608 label = line[:-1]
603 info = "" 609 info = ""
605 if label in self.__infoLabels: 611 if label in self.__infoLabels:
606 QTreeWidgetItem( 612 QTreeWidgetItem(
607 infoWidget, [self.__infoLabels[label], info] 613 infoWidget, [self.__infoLabels[label], info]
608 ) 614 )
609 if label == "files": 615 if label == "files":
610 mode = self.ShowProcessFilesListMode 616 mode = PipPackageInformationMode.FilesList
611 elif label == "classifiers": 617 elif label == "classifiers":
612 mode = self.ShowProcessClassifiersMode 618 mode = PipPackageInformationMode.Classifiers
613 elif label == "entry-points": 619 elif label == "entry-points":
614 mode = self.ShowProcessEntryPointsMode 620 mode = PipPackageInformationMode.EntryPoints
615 elif label == "project-urls": 621 elif label == "project-urls":
616 mode = self.ShowProcessUrlsListMode 622 mode = PipPackageInformationMode.UrlsList
617 infoWidget.scrollToTop() 623 infoWidget.scrollToTop()
618 624
619 header = infoWidget.header() 625 header = infoWidget.header()
620 header.setStretchLastSection(False) 626 header.setStretchLastSection(False)
621 header.resizeSections(QHeaderView.ResizeMode.ResizeToContents) 627 header.resizeSections(QHeaderView.ResizeMode.ResizeToContents)

eric ide

mercurial