def _calculate_inter_tree_move_values(self, node, target, position):
        left = getattr(node, self.left_attr)
        level = getattr(node, self.level_attr)
        target_left = getattr(target, self.left_attr)
        target_right = getattr(target, self.right_attr)
        target_level = getattr(target, self.level_attr)

        if position == 'last-child' or position == 'first-child':
            if position == 'last-child':
                space_target = target_right - 1
            else:
                space_target = target_left
            level_change = level - target_level - 1
            parent = target
        elif position == 'left' or position == 'right':
            if position == 'left':
                space_target = target_left - 1
            else:
                space_target = target_right
            level_change = level - target_level
            parent = getattr(target, self.parent_attr)
        else:
            raise ValueError(_('An invalid position was given: %s.') % position)

        left_right_change = left - space_target - 1
        return space_target, level_change, left_right_change, parent
Get a list of namespaces
dataset/ETHPy150Open agiliq/django-socialnews/socialnews/mptt/managers.py/TreeManager._calculate_inter_tree_move_values--crossover with--dataset/ETHPy150Open chriso/gauged/gauged/drivers/mysql.py/MySQLDriver.get_namespaces