def _createCellWidget(self, package): Any.requireMsg( Any.isInstance( package, BSTPackage.BSTPackage ) or \ Any.isInstance( package, DebianPackage ), 'unexpected datatype: %s' % type(package) ) Any.requireIsTextNonEmpty(package.url) cell = QTreeWidgetItem([package.url]) inSystem = self._model.isInstalled_locally inProxy = self._model.isInstalled_proxySIT inGlobal = self._model.isInstalled_globalSIT ProjectProperties.requireIsCanonicalPath(SIT.strip(package.url)) if package.url.startswith('sit://'): if self._hasProxy: self._setCellColorCode(cell, 1, inProxy(package.url)) else: self._setCellColorCode(cell, 1, None) self._setCellColorCode(cell, 2, inGlobal(package.url)) self._setCellColorCode(cell, 3, None) else: self._setCellColorCode(cell, 1, None) self._setCellColorCode(cell, 2, None) self._setCellColorCode(cell, 3, inSystem(package.url)) return cell
def _createTreeWidgetFromList(self, package, reverseMode): Any.requireMsg( Any.isInstance( package, BSTPackage.BSTPackage ) or \ Any.isInstance( package, DebianPackage ), 'unexpected datatype: %s' % type(package) ) Any.requireIsBool(reverseMode) Any.requireIsTextNonEmpty(package.url) result = self._createCellWidget(package) treeData = package.revDepTree if reverseMode else package.depTree if treeData: Any.requireIsList(treeData) for dep in treeData: child = self._createTreeWidgetFromList(dep, reverseMode) result.addChild(child) return result
def _createTreeWidgetFromSet(self, package, reverseMode): Any.requireMsg( Any.isInstance( package, BSTPackage.BSTPackage ) or \ Any.isInstance( package, DebianPackage ), 'unexpected datatype: %s' % type(package) ) Any.requireIsBool(reverseMode) treeData = list(package.revDepSet) if reverseMode else list( package.depSet) Any.requireIsList(treeData) treeData.sort() Any.requireIsTextNonEmpty(package.url) result = self._createCellWidget(package) factory = PackageFactory() for packageURL in treeData: dep = factory.create(packageURL) child = self._createCellWidget(dep) result.addChild(child) return result
def _onDepDetectorFinished(self): logging.debug( 'dependency detection in progress (helper-process finished)') self._depDetectorData.flush() base64payload = self._depDetectorData.getvalue() base64payloadSize = len(base64payload) base64payloadType = type(base64payload) logging.debug('base64payload type: %s', base64payloadType) logging.debug('base64payload size: %d', base64payloadSize) if base64payloadSize == 0: logging.debug('no dependency data received') return if six.PY2: if not Any.isInstance(base64payload, unicode): logging.debug('received dependency data of unexpected type') logging.debug( '(this could come from a ~/.bashrc which prints text)') return else: if not Any.isInstance(base64payload, bytes): logging.debug('received dependency data of unexpected type') logging.debug( '(this could come from a ~/.bashrc which prints text)') return dillPayload = base64.b64decode(base64payload) dillPayloadSize = len(dillPayload) dillPayloadType = type(dillPayload) logging.debug('dillPayload type: %s', dillPayloadType) logging.debug('dillPayload size: %d', dillPayloadSize) data = dill.loads(dillPayload) Any.requireIsDictNonEmpty(data) Any.requireIsInstance(data['bstpkg_src'], BSTPackage.BSTSourcePackage) Any.requireIsInstance(data['bstpkg_global'], BSTPackage.BSTGloballyInstalledPackage) Any.requireIsDict(data['installStatus']) Any.requireIsDict(data['installStatusLocal']) Any.requireIsDict(data['installStatusProxy']) Any.requireIsDict(data['installStatusGlobal']) self._bstpkg_src.depSet = data['bstpkg_src'].depSet self._bstpkg_src.depTree = data['bstpkg_src'].depTree self._bstpkg_global = data['bstpkg_global'] try: self._bstpkg_global.open(self.getCanonicalPath()) except AssertionError as details: logging.debug(details) self._installStatus = data['installStatus'] self._installStatusLocal = data['installStatusLocal'] self._installStatusProxy = data['installStatusProxy'] self._installStatusGlobal = data['installStatusGlobal'] logging.debug('depSet: %s', self._bstpkg_src.depSet) logging.debug('depTree: %s', self._bstpkg_src.depTree) logging.debug('revDepSet: %s', self._bstpkg_global.revDepSet) logging.debug('revDepTree: %s', self._bstpkg_global.revDepTree) self.depsDetected.emit(True) # retrieving direct dependencies should work, consider an error if not try: Any.requireIsSet(self._bstpkg_src.depSet) Any.requireIsList(self._bstpkg_src.depTree) except AssertionError: self.depsDetected.emit(False) logging.error('unable to retrieve dependencies') # while for reverse dependencies it is significant if the package is # installed, yet if self._bstpkg_global.isInstalled(): try: Any.requireIsSet(self._bstpkg_global.revDepSet) Any.requireIsList(self._bstpkg_global.revDepTree) except AssertionError: logging.error('unable to retrieve reverse dependencies') else: logging.debug('not globally installed --> no reverse dependencies') logging.debug('dependency detection finished')