00001 __copyright__ = """\ 00002 (c). Copyright 1990-2008, Vyper Logix Corp., All Rights Reserved. 00003 00004 Published under Creative Commons License 00005 (http://creativecommons.org/licenses/by-nc/3.0/) 00006 restricted to non-commercial educational use only., 00007 00008 See also: http://www.VyperLogix.com and http://www.pypi.info for details. 00009 00010 THE AUTHOR VYPER LOGIX CORP DISCLAIMS ALL WARRANTIES WITH REGARD TO 00011 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 00012 FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, 00013 INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 00014 FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 00015 NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 00016 WITH THE USE OR PERFORMANCE OF THIS SOFTWARE ! 00017 00018 USE AT YOUR OWN RISK. 00019 """ 00020 00021 from vyperlogix.misc import ObjectTypeName 00022 00023 _unpack_ = lambda s:s[0] if (isList(s) and len(s) == 1) else s 00024 __unpack__ = lambda s:s[0] if (isList(s) and len(s) > 0) else s 00025 00026 def asCSV(item,allowEmptyCells=True): 00027 return ','.join(['"%s"'%(t) for t in item if (allowEmptyCells) or (len(str(t)) > 0)]) if (isinstance(item,tuple)) or (isinstance(item,list)) else item 00028 00029 def isString(s): 00030 return (isinstance(s,str)) or (isinstance(s,unicode)) 00031 00032 def isList(obj): 00033 try: 00034 return callable(obj.append) 00035 except: 00036 pass 00037 return False 00038 00039 def isIterable(obj): 00040 try: 00041 return hasattr(obj,'__iter__') 00042 except TypeError: 00043 return False 00044 00045 def clone(l): 00046 return copy(l) 00047 00048 def append(l,item): 00049 l.append(item) 00050 return l 00051 00052 def copy(l): 00053 return [item for item in l] 00054 00055 def findAllContaining(lst,s_search,callback=None,returnIndexes=False,returnOne=False): 00056 def doCallback(_item,_callback): 00057 try: 00058 return _callback(_item,s_search) 00059 except: 00060 pass 00061 return False 00062 i = 0 00063 l = [] 00064 if (isString(s_search)) or (ObjectTypeName.typeClassName(s_search) == '_sre.SRE_Pattern'): 00065 compare_func_string = lambda item,search:item.find(search) > -1 00066 compare_func_re = lambda item,search:search.search(item) 00067 compare_func = compare_func_string 00068 if (ObjectTypeName.typeClassName(s_search) == '_sre.SRE_Pattern'): 00069 compare_func = compare_func_re 00070 for item in lst: 00071 if ((compare_func(item,s_search)) if (not callable(callback)) else doCallback(item,callback)): 00072 l.append(item if (not returnIndexes) else i) 00073 if (returnOne): 00074 break 00075 i += 1 00076 return l 00077 00078 def findFirstContaining(lst,s_search,callback=None,returnIndexes=True): 00079 r = findAllContaining(lst,s_search,callback=callback,returnIndexes=returnIndexes,returnOne=True) 00080 return -1 if (len(r) == 0) else r[0] 00081 00082 def findAllMatching(lst,s_search,callback=None,returnIndexes=False,returnOne=False): 00083 def doCallback(_item,_callback): 00084 try: 00085 return _callback(_item,s_search) 00086 except: 00087 pass 00088 return False 00089 i = 0 00090 l = [] 00091 if (isString(s_search)) or (ObjectTypeName.typeClassName(s_search) == '_sre.SRE_Pattern'): 00092 compare_func_string = lambda item,search:item == search 00093 compare_func_re = lambda item,search:search.search(item) 00094 compare_func = compare_func_string 00095 if (ObjectTypeName.typeClassName(s_search) == '_sre.SRE_Pattern'): 00096 compare_func = compare_func_re 00097 for item in lst: 00098 if (compare_func(item,s_search) if (not callable(callback)) else doCallback(item,callback)): 00099 l.append(item if (not returnIndexes) else i) 00100 if (returnOne): 00101 break 00102 i += 1 00103 elif (isList(s_search)): 00104 for i in xrange(0,len(lst)-len(s_search)): 00105 if (lst[i:i+len(s_search)] == s_search): 00106 l.append(s_search if (not returnIndexes) else i) 00107 if (returnOne): 00108 break 00109 return l 00110 00111 def findFirstMatching(lst,s_search,callback=None,returnIndexes=True): 00112 r = findAllMatching(lst,s_search,callback=callback,returnIndexes=returnIndexes,returnOne=True) 00113 return -1 if (len(r) == 0) else r[0] 00114 00115 def insert(lst,index,value): 00116 try: 00117 lst.insert(index,value) 00118 return lst 00119 except: 00120 pass 00121 return lst 00122 00123 def insertCopy(lst,index,value): 00124 try: 00125 _lst = [i for i in lst] 00126 return insert(_lst,index,value) 00127 except: 00128 pass 00129 return lst 00130 00131 def reverse(l): 00132 try: 00133 ll = copy(l) 00134 ll.reverse() 00135 return ll 00136 except: 00137 pass 00138 return l 00139 00140 def reverseCopy(l): 00141 try: 00142 _l = [i for i in l] 00143 return reverse(_l) 00144 except: 00145 pass 00146 return l 00147 00148 def reverseDigitsList(foo): 00149 try: 00150 return ''.join([t.strip() for t in str(reverse(eval(foo) if (isString(foo)) else foo)).split()]) 00151 except: 00152 return None 00153 00154 def sort(l): 00155 try: 00156 l.sort() 00157 return l 00158 except: 00159 pass 00160 return l 00161 00162 def sortCopy(l): 00163 try: 00164 _l = [i for i in l] 00165 return sort(_l) 00166 except: 00167 pass 00168 return l 00169 00170 ## 00171 # get name of function 00172 def funcName(): 00173 import sys 00174 return sys._getframe(1).f_code.co_name 00175 00176 ## 00177 # get name of caller of a function 00178 def callersName(): 00179 import sys 00180 return sys._getframe(2).f_code.co_name 00181 00182 def findInListSafely(l,item): 00183 try: 00184 return l.index(item) 00185 except: 00186 pass 00187 return -1 00188 00189 def formattedException(details='',_callersName=None): 00190 _callersName = _callersName if (_callersName is not None) else callersName() 00191 import os, sys, traceback 00192 try: 00193 from cStringIO import StringIO as StringIO 00194 except: 00195 from StringIO import StringIO as StringIO 00196 fOut = StringIO() 00197 exc_info = sys.exc_info() 00198 info_string = '\n'.join(traceback.format_exception(*exc_info)) 00199 print >>fOut, '(%s) :: "%s". %s' % (_callersName,str(details),info_string) 00200 return fOut.getvalue() 00201 00202 if (__name__ == '__main__'): 00203 import sys 00204 print >>sys.stdout, __copyright__ 00205 print >>sys.stderr, __copyright__ 00206 00207 #from vyperlogix.lists import ListWrapper 00208 #a = ListWrapper.ListWrapper([1,2,3,4,5]) 00209 #i = a.findFirstMatching([2,3]) 00210 #print i 00211 00212
© Copyright 2008-2009 Vyper Logix Corp., All Right Reserved; If you reference this document or any part of this document you must use the citation verbatim (including the link) "© Copyright 2008-2009 Vyper Logix Corp., All Right Reserved."
Notice: This source code contained in this document is NOT open source and is NOT being distributed as open source.
122,241 lines of code and growing...