def objGetChildren(self, obj):
        # print 'objGetChildren ', obj
        otype = type(obj)
        d = {}
        if (obj is None or obj is False or obj is True):
            return d
        self.ntop = 0
        if isinstance(obj, SymbolTable) or isinstance(obj, Group):
            d = obj._members()
        if isinstance(obj, COMMONTYPES):
            d = obj
        elif isinstance(obj, h5py.Group):
            try:
                for key, val in obj.items():
                    d[key] = val
            except AttributeError:
                pass
        elif isinstance(obj, h5py.Dataset):
            d = obj
        elif isinstance(obj, (list, tuple)):
            for n in range(len(obj)):
                key = '[' + str(n) + ']'
                d[key] = obj[n]
        elif (not isinstance(obj, wx.Object)
              and not hasattr(obj, '__call__')):
            d = self.GetAttr(obj)
        return d
Reduces a sequence of (Key, Value) using func on each sequence of values.
dataset/ETHPy150Open xraypy/xraylarch/lib/wxlib/larchfilling.py/FillingTree.objGetChildren--crossover with--dataset/ETHPy150Open EntilZha/PyFunctional/functional/pipeline.py/Sequence.reduce_by_key