eric7/PipInterface/PipPackagesWidget.py

branch
eric7-maintenance
changeset 9192
a763d57e23bc
parent 9111
4ac66b6c33a4
parent 9121
6ac528d4f318
equal deleted inserted replaced
9137:bd90cbe0b7d2 9192:a763d57e23bc
1198 # updateVulnerabilityDbAct 1198 # updateVulnerabilityDbAct
1199 self.__pipMenu.addAction( 1199 self.__pipMenu.addAction(
1200 self.tr("Update Vulnerability Database"), 1200 self.tr("Update Vulnerability Database"),
1201 self.__updateVulnerabilityDbCache) 1201 self.__updateVulnerabilityDbCache)
1202 self.__pipMenu.addSeparator() 1202 self.__pipMenu.addSeparator()
1203 self.__cyclonedxAct = self.__pipMenu.addAction(
1204 self.tr("Create SBOM file"),
1205 self.__createSBOMFile)
1206 self.__pipMenu.addSeparator()
1203 self.__cacheInfoAct = self.__pipMenu.addAction( 1207 self.__cacheInfoAct = self.__pipMenu.addAction(
1204 self.tr("Show Cache Info..."), 1208 self.tr("Show Cache Info..."),
1205 self.__showCacheInfo) 1209 self.__showCacheInfo)
1206 self.__cacheShowListAct = self.__pipMenu.addAction( 1210 self.__cacheShowListAct = self.__pipMenu.addAction(
1207 self.tr("Show Cached Files..."), 1211 self.tr("Show Cached Files..."),
1258 self.__editVirtualenvConfigAct.setEnabled(enable) 1262 self.__editVirtualenvConfigAct.setEnabled(enable)
1259 1263
1260 self.__checkVulnerabilityAct.setEnabled( 1264 self.__checkVulnerabilityAct.setEnabled(
1261 enable & self.vulnerabilityCheckBox.isEnabled()) 1265 enable & self.vulnerabilityCheckBox.isEnabled())
1262 1266
1267 self.__cyclonedxAct.setEnabled(enable)
1268
1263 self.__showLicensesDialogAct.setEnabled(enable) 1269 self.__showLicensesDialogAct.setEnabled(enable)
1264 1270
1265 @pyqtSlot() 1271 @pyqtSlot()
1266 def __installPip(self): 1272 def __installPip(self):
1267 """ 1273 """
1486 @param checked flag indicating the state of the check box 1492 @param checked flag indicating the state of the check box
1487 @type bool 1493 @type bool
1488 """ 1494 """
1489 if checked: 1495 if checked:
1490 self.__updateVulnerabilityData(clearFirst=True) 1496 self.__updateVulnerabilityData(clearFirst=True)
1497
1498 self.packagesList.header().setSectionHidden(
1499 PipPackagesWidget.VulnerabilityColumn, not checked)
1491 1500
1492 @pyqtSlot() 1501 @pyqtSlot()
1493 def __clearVulnerabilityInfo(self): 1502 def __clearVulnerabilityInfo(self):
1494 """ 1503 """
1495 Private slot to clear the vulnerability info. 1504 Private slot to clear the vulnerability info.
1668 venvName = self.environmentsComboBox.currentText() 1677 venvName = self.environmentsComboBox.currentText()
1669 if venvName: 1678 if venvName:
1670 interpreter = self.__pip.getVirtualenvInterpreter(venvName) 1679 interpreter = self.__pip.getVirtualenvInterpreter(venvName)
1671 if interpreter: 1680 if interpreter:
1672 with EricOverrideCursor(): 1681 with EricOverrideCursor():
1673 dependencies = self.__pip.getDependecyTree( 1682 dependencies = self.__pip.getDependencyTree(
1674 venvName, 1683 venvName,
1675 localPackages=self.localDepCheckBox.isChecked(), 1684 localPackages=self.localDepCheckBox.isChecked(),
1676 usersite=self.userDepCheckBox.isChecked(), 1685 usersite=self.userDepCheckBox.isChecked(),
1677 reverse=self.requiredByButton.isChecked(), 1686 reverse=self.requiredByButton.isChecked(),
1678 ) 1687 )
1704 dependency["installed_version"], 1713 dependency["installed_version"],
1705 dependency["required_version"], 1714 dependency["required_version"],
1706 ]) 1715 ])
1707 itm.setExpanded(True) 1716 itm.setExpanded(True)
1708 1717
1709 if dependency["required_version"].lower() != "any": 1718 if dependency["installed_version"] == "?":
1719 itm.setText(PipPackagesWidget.DepInstalledVersionColumn,
1720 self.tr("unknown"))
1721
1722 if dependency["required_version"].lower() not in ("any", "?"):
1710 spec = ( 1723 spec = (
1711 "=={0}".format(dependency["required_version"]) 1724 "=={0}".format(dependency["required_version"])
1712 if dependency["required_version"][0] in "0123456789" else 1725 if dependency["required_version"][0] in "0123456789" else
1713 dependency["required_version"] 1726 dependency["required_version"]
1714 ) 1727 )
1715 specifierSet = SpecifierSet(specifiers=spec) 1728 specifierSet = SpecifierSet(specifiers=spec)
1716 if not specifierSet.contains(dependency["installed_version"]): 1729 if not specifierSet.contains(dependency["installed_version"]):
1717 itm.setIcon(PipPackagesWidget.DepRequiredVersionColumn, 1730 itm.setIcon(PipPackagesWidget.DepRequiredVersionColumn,
1718 UI.PixmapCache.getIcon("warning")) 1731 UI.PixmapCache.getIcon("warning"))
1719 1732
1720 if dependency["required_version"].lower() == "any": 1733 elif dependency["required_version"].lower() == "any":
1721 itm.setText(PipPackagesWidget.DepRequiredVersionColumn, 1734 itm.setText(PipPackagesWidget.DepRequiredVersionColumn,
1722 self.tr("any")) 1735 self.tr("any"))
1736
1737 elif dependency["required_version"] == "?":
1738 itm.setText(PipPackagesWidget.DepRequiredVersionColumn,
1739 self.tr("unknown"))
1723 1740
1724 # recursively add sub-dependencies 1741 # recursively add sub-dependencies
1725 for dep in dependency["dependencies"]: 1742 for dep in dependency["dependencies"]:
1726 self.__addDependency(dep, itm) 1743 self.__addDependency(dep, itm)
1727 1744
1845 localPackages=localPackages, 1862 localPackages=localPackages,
1846 usersite=usersite, 1863 usersite=usersite,
1847 parent=self 1864 parent=self
1848 ) 1865 )
1849 dlg.exec() 1866 dlg.exec()
1867
1868 ##################################################################
1869 ## Interface to create a SBOM file using CycloneDX
1870 ##################################################################
1871
1872 @pyqtSlot()
1873 def __createSBOMFile(self):
1874 """
1875 Private slot to create a "Software Bill Of Material" file.
1876 """
1877 import CycloneDXInterface
1878
1879 venvName = self.environmentsComboBox.currentText()
1880 if venvName == self.__pip.getProjectEnvironmentString():
1881 venvName = "<project>"
1882 CycloneDXInterface.createCycloneDXFile(venvName)

eric ide

mercurial