def clone(cls, item): out = [] for value in item: if isinstance(value, dict): from pyaid.dict.DictUtils import DictUtils out.append(DictUtils.clone(value)) elif isinstance(value, list) or isinstance(value, tuple): out.append(ListUtils.clone(value)) else: out.append(value) if isinstance(item, tuple): return tuple(out) return out
def _runImpl(self): """Doc...""" data = self._flexData self._log.write( '<div style="font-size:24px">Beginning distribution file upload(s)</div><hr>') for platformID, platformIsActive in data.platformSelection.iteritems(): if not platformIsActive or not data.hasPlatform(platformID): continue data.setPlatform(platformID) if data.isPlatformUploaded: url = data.platformUploads[platformID] else: uploader = BuildPackageUploader(data, self._bucket) self._log.write( 'Uploading %s distribution file to: %s' % (platformID, uploader.uploadFolder)) url = uploader.upload(platformID) if url is None: continue data.platformUploads[platformID] = url self._log.write( '<div style="font-size:18px">Deployed URL:</div><br />' + '<a style="font-size:8px" href="%s">%s</a>' % ((url, url))) if self._releaseNotes: self._log.write('Generating release notes...') notes = self._createReleaseNotes() else: notes = u'' if self._doSendEmails: self._log.write('Sending notification emails...') self._sendEmailNotifications(data.platformUploads, notes) self._log.write('<br /><div style="font-size:24px">Deployment Complete!</div>') self._output['urls'] = DictUtils.clone(data.platformUploads) return 0
def getMerged(self, key, defaultValue =None, localOnly =False): items = [] sources = self.localDataSources if localOnly else self.dataSources for source in sources: if source is None: continue res = source.get(key, self.DATA_GET_NULL) if res != self.DATA_GET_NULL: items.append(res) if len(items) == 0: return defaultValue if len(items) == 1: return DictUtils.clone(items[0]) out = items.pop() while len(items): out = DictUtils.merge(out, items.pop()) return out