def parents_without_nodes(self): d_nodes = {} for node in self.root.preOrder(): n = self.root.findForwards(parentId=node.procId) if (n is None) and (node.procId > -1) and (node.parentId > -1): d_nodes[node.parentId] = node return misc.sort(d_nodes.keys())
def __callback__(self, data): if (self.__isDebugging__): print '<<%s>>' % (data) lines = data.split(os.linesep) if (self.__isDebugging__): print 'lines=%d\n%s' % (len(lines), '\n'.join(lines)) for aLine in lines: toks = aLine.split() if (not self.has_header) and (toks == __header__): self.has_header = True continue if (self.has_header): if (self.header is None): if (_utils.isUsingWindows): patterns = [ 'Local'.lower(), 'Foreign'.lower(), 'State'.lower() ] else: patterns = [ 'Local'.lower(), 'Foreign'.lower(), 'PID/Program'.lower() ] for i in xrange(0, len(toks)): if (i < len(toks)) and (str(toks[i]).lower() in patterns): toks[i] = ' '.join(toks[i:i + 2]) del toks[i + 1] self.header = toks else: d = {} for i in xrange(0, len(toks)): d[self.header[i]] = toks[i] if (d.has_key(__LocalAddress__)): d[__port__] = int(d[__LocalAddress__].split(':')[-1]) self.__ports__.append(d[__port__]) self.__ports__ = list(set(self.__ports__)) misc.sort(self.__ports__) self.__lines__.append(d) if (d.has_key(__State__)) and (d[__State__] == __LISTEN__): self.__listeners__.append(d) pass pass
def prune(self, pattern, _max): logging.info('Prune Log for "%s".' % (self.logFileName)) files = misc.sort(glob.glob(pattern)) numToDelete = len(files) - _max if (numToDelete > 0): for f in files[0:numToDelete]: try: os.remove(f) logging.info('(%s) :: Removed "%s".' % (misc.funcName(), f)) except Exception as details: info_string = _utils.formattedException(details=details) logging.warning(info_string)
def reorder(self): _root = ProcessNode(["root",-1,-1]) d = lists.HashedLists2() for node in self.root.preOrder(): d[node.parentId] = node l = misc.sort(d.keys()) for i in l: if (i > -1): _root._addChild(ProcessNode([d[i].procName,d[i].procId,d[i].parentId])) for node in self.root.preOrder(): if (node.procId not in l): _root._addChild(node) self.root = _root return self.root
def get_package_details2(browser, _url, url, logging=None): import urllib2 from vyperlogix.misc import ObjectTypeName from vyperlogix import misc req = urllib2.Request(url) req.add_header("Referer", url.split('?')[0]) browser.open(req) d = lists.HashedLists2() _forms = [] for form in browser.forms(): elements = form.controls _forms.append(tuple([len(elements), elements])) d_forms = dict(_forms) keys = misc.sort(d_forms.keys()) elements = d_forms[keys[-1]] if (len(elements) > 0): inputs = [ c for c in [(ele, ObjectTypeName.typeClassName(ele)) for ele in elements] if (c[-1].find('ClientForm.') > -1) and ( c[-1] not in ['ClientForm.SubmitControl']) ] for item in inputs: ele, cname = item d_attrs = ele.attrs if (cname == 'ClientForm.SelectControl'): choice = [ choice for choice in ele.get_items() if (choice._selected) ] d[d_attrs['name']] = ','.join([ a['label'] for a in [ choice.attrs for choice in ele.get_items() if (choice._selected) ] ]) elif (cname == 'ClientForm.TextareaControl'): for p in ele.pairs(): d[p[0]] = p[-1] else: try: d[d_attrs['name']] = d_attrs['value'] except Exception as e: info_string = _utils.formattedException(details=e) pass return d, form.attrs return d, []
def getSolutionsViewsFrequencies(self, num_days=30): from vyperlogix.sf.magma.solution_views import SalesForceMoltenSolutionViews sf_solution_views = SalesForceMoltenSolutionViews(self.sfQuery) num_days = int(num_days) if (str(num_days).isdigit()) else num_days d = lists.HashedLists() views = sf_solution_views.getSolutionsViews(num_days=num_days) try: for view in views: if (view.has_key('Solution__c')): d[view['Solution__c']] = view except: pass d_freqs = lists.HashedLists() for k, v in d.iteritems(): d_freqs[len(v)] = k l_freqs = misc.sort(d_freqs.keys()) return (l_freqs, d_freqs, d)
def __init__(_root_, isAdjustingPath=False): '''Initialize the sys.path for django under win32.''' import os, sys if (sys.platform == 'win32'): if (isAdjustingPath): pass from vyperlogix import misc from vyperlogix.django import django_utils from vyperlogix.lists.ListWrapper import ListWrapper fp = os.path.dirname(os.path.abspath(_root_)) while (fp.split(os.sep)[-1].find('django') > -1): fp = os.path.dirname(fp) s = ListWrapper(sys.path) l = ListWrapper(list(set(s.findAllContaining(fp)))) t = os.path.join(fp, 'django') if (os.path.exists(t)): l.append(t) i = l.findFirstMatching(fp) if (i > -1): del l[i] l = misc.sort(l) for item in l: i = s.findFirstMatching(item) while (i > -1): del s[i] i = s.findFirstMatching(item) sys.path = s.copy() for item in misc.reverse(l): sys.path.insert(0, item) return 'settings' else: fpath = os.path.dirname(os.path.abspath(_root_)) if (fpath not in sys.path): sys.path.insert(0, fpath) return '%s.settings' % (fpath.split(os.sep)[-1])
def sortedKeys(self): return misc.sort(self.keys())
def prettyPrint(item, prefix='', title='', tab_width=4, delay_end=False, asCSV=False, isHorizontal=False, csv_callback=None, fOut=sys.stdout): import types from vyperlogix.misc import ReportTheList _type_name = ObjectTypeName._typeName(item.__class__) ret = [] try: if (isDict(item)): tab_width = 4 if (not str(tab_width).isdigit()) else tab_width if (asCSV): if (isHorizontal): fOut.write('%s\n' % (misc.asCSV(item.keys()))) fOut.write('%s\n' % (misc.asCSV(item.values()))) fOut.write('\n') else: isCallback = ((csv_callback) and (callable(csv_callback))) i = 1 for kk, vv in item.iteritems(): l = [i, kk, vv] if (isCallback): try: l = csv_callback(l) except: pass fOut.write('%s\n' % (misc.asCSV(l))) i += 1 else: l_keys = [len(kk) for kk, vv in item.iteritems()] if (len(l_keys) > 0): max_len = misc.sort(l_keys)[-1] fOut.write('%sBEGIN: %s (%d items)\n' % (prefix, title, len(item))) i = 1 for kk, vv in item.iteritems(): i_s_len = int(len(kk) / tab_width) i_s_len = 1 if (i_s_len == 0) else i_s_len i_spaces = (int(max_len / tab_width) - i_s_len) - 1 if (isinstance(vv, tuple)): vv = list(vv) if (isinstance(vv, list)): fOut.write('(%s' % ('-' * 40)) ReportTheList.reportTheList(vv, title='%d :: (%s) %s' % (i, kk, title), fOut=fOut) fOut.write(')%s' % ('-' * 40)) fOut.write('\n') elif (isDict(vv)): fOut.write('{%s' % ('-' * 40)) prettyPrint(vv, '\t\t', title='%d :: (%s) %s' % (i, kk, title), fOut=fOut) fOut.write('}%s' % ('-' * 40)) fOut.write('\n') else: try: fOut.write( '%s\t\t%d :: %s%s-->%s' % (prefix, i, kk, '\t' * i_spaces, vv)) except: pass i += 1 _end_msg = '%sEND! %s from %s' % (prefix, title, _type_name) if (not delay_end): fOut.write(_end_msg) fOut.write('\n') else: ret.append(_end_msg) ret.append('') else: logging.warning( '(%s) :: Unable to process the object passed to this function due to lack of data.' % (misc.funcName())) else: logging.warning( '(%s) :: Unable to process the object passed to this function because it is of type "%s" and a dictionary object was expected.' % (misc.funcName(), _type_name)) except Exception as details: info_string = misc.formattedException(details=details) sys.stderr.write(info_string) return ret
def sort(self): self.data = misc.sort(self.data) return self