예제 #1
0
파일: etl.py 프로젝트: Veterun/etlpy
def convert_dict(obj,defaultdict):
    if not isinstance(obj, (str, int, float, list, dict, tuple, extends.EObject)):
        return None
#    if isinstance(obj,)
    if isinstance(obj, extends.EObject):
        d={}
        typename = extends.get_type_name(obj);

        for key, value in obj.__dict__.items():
            if typename in defaultdict:
                default = defaultdict[typename];
                if value== default.get(key,None):
                    continue;
            if key.startswith('__'):
                continue;

            p =convert_dict(value,defaultdict)
            if p is not None:
                d[key]=p
        if isinstance(obj,ETLTool):
            d['Type']= typename;
        return d;

    elif isinstance(obj, list):
       return [convert_dict(r,defaultdict) for r in obj];
    elif isinstance(obj,dict):
        return {key: convert_dict(value,defaultdict) for key,value in obj.items()}
    return obj;




    return d
예제 #2
0
파일: etl.py 프로젝트: sunxy1988/etlpy
def convert_dict(obj,defaultdict):
    if not isinstance(obj, (str, int, float, list, dict, tuple, extends.EObject)):
        return None
#    if isinstance(obj,)
    if isinstance(obj, extends.EObject):
        d={}
        typename = extends.get_type_name(obj);

        for key, value in obj.__dict__.items():
            if typename in defaultdict:
                default = defaultdict[typename];
                if value== default.get(key,None):
                    continue;
            if key.startswith('__'):
                continue;

            p =convert_dict(value,defaultdict)
            if p is not None:
                d[key]=p
        if isinstance(obj,ETLTool):
            d['Type']= typename;
        return d;

    elif isinstance(obj, list):
       return [convert_dict(r,defaultdict) for r in obj];
    elif isinstance(obj,dict):
        return {key: convert_dict(value,defaultdict) for key,value in obj.items()}
    return obj;




    return d
예제 #3
0
파일: etl.py 프로젝트: Veterun/etlpy
def etl_factory(item,proj):
    if isinstance(item,str):
        item=eval('%s()'%item);
    else:
        item=item;
    import copy
    name = extends.get_type_name(item)
    if name not in proj.__defaultdict__:
        proj.__defaultdict__[name]=copy.deepcopy(  item.__dict__);
    return item;
예제 #4
0
파일: etl.py 프로젝트: sunxy1988/etlpy
def etl_factory(item,proj):
    if isinstance(item,str):
        item=eval('%s()'%item);
    else:
        item=item;
    import copy
    name = extends.get_type_name(item)
    if name not in proj.__defaultdict__:
        proj.__defaultdict__[name]=copy.deepcopy(  item.__dict__);
    return item;
예제 #5
0
파일: etl.py 프로젝트: Veterun/etlpy
def task_DumpLinq(tools):
    array=[];
    for t in tools:
        typename= extends.get_type_name(t);
        newcolumn=getattr(t,'NewColumn','');
        s='%s,%s'%(typename,t.Column);
        s+='=>%s,'%newcolumn if newcolumn!='' else ',';
        attrs=[];
        defaultdict= t.__proj__.__defaultdict__[typename];
        for att in t.__dict__:
            value=t.__dict__[att];
            if att in ['NewColumn','Column','IsMultiYield']:
                continue
            if not isinstance(value,(str,int,bool,float)):
                continue;
            if value is None  or att not in defaultdict or  defaultdict[att]==value:
                continue;
            attrs.append('%s=%s'%(att,value));
        s+=','.join(attrs)
        array.append(s)
    return '\n'.join(array);
예제 #6
0
파일: etl.py 프로젝트: sunxy1988/etlpy
def task_DumpLinq(tools):
    array=[];
    for t in tools:
        typename= extends.get_type_name(t);
        newcolumn=getattr(t,'NewColumn','');
        s='%s,%s'%(typename,t.Column);
        s+='=>%s,'%newcolumn if newcolumn!='' else ',';
        attrs=[];
        defaultdict= t.__proj__.__defaultdict__[typename];
        for att in t.__dict__:
            value=t.__dict__[att];
            if att in ['NewColumn','Column','IsMultiYield']:
                continue
            if not isinstance(value,(str,int,bool,float)):
                continue;
            if value is None  or att not in defaultdict or  defaultdict[att]==value:
                continue;
            attrs.append('%s=%s'%(att,value));
        s+=','.join(attrs)
        array.append(s)
    return '\n'.join(array);