def find_match_shape(placeholder_shape, shapes, soft=False):
    """
    find match shape using left,top,with, height
    :param placeholder_shape:
    :param shapes:
    :param soft: if true only check shape_type,left,top
    :return:
    """
    for shape in shapes:
        if soft and all([
            placeholder_shape.left == shape.left,
            placeholder_shape.top == shape.top,
            placeholder_shape.shape_type == shape.shape_type,
        ]):
            return shape

        elif all([
            placeholder_shape.left == shape.left,
            placeholder_shape.top == shape.top,
            placeholder_shape.shape_type == shape.shape_type,
            placeholder_shape.width == shape.width,
            placeholder_shape.height == shape.height,
        ]):
            return shape