

def _set_projection(self, projection):
    by_prefix = {
        
    }
    for propname in projection:
        if ('.' in propname):
            (head, tail) = propname.split('.', 1)
            if (head in by_prefix):
                by_prefix[head].append(tail)
            else:
                by_prefix[head] = [tail]
    self._projection = tuple(projection)
    for (propname, proj) in by_prefix.iteritems():
        prop = self._properties.get(propname)
        subval = prop._get_base_value_unwrapped_as_list(self)
        for item in subval:
            assert (item is not None)
            item._set_projection(proj)

dataset/ETHPy150Open GoogleCloudPlatform/datastore-ndb-python/ndb/model.py Model._set_projection/original