__init__.py

Go to the documentation of this file.
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...