from typing import Any, Tuple


def 按固定大小分组(元组数据: Tuple[Any, ...], 每组数量: int):
    """按固定大小将元组分组。

    说明:
        最后一组在不足整组时会保留剩余成员。

    Args:
        元组数据: 待分组的元组。
        每组数量: 每组包含的成员数量，必须大于 ``0``。

    Returns:
        成功时返回分组后的二维元组；失败时返回空元组 ``()``。
    """
    try:
        if not isinstance(元组数据, tuple) or not isinstance(每组数量, int) or 每组数量 <= 0:
            return ()
        return tuple(元组数据[索引:索引 + 每组数量] for 索引 in range(0, len(元组数据), 每组数量))
    except Exception:
        return ()


if __name__ == "__main__":
    print("===== 示例1：按2个一组 =====")
    数据 = (1, 2, 3, 4, 5, 6)
    print("结果:", 按固定大小分组(数据, 2))

    print("\n===== 示例2：最后一组不足整组 =====")
    数据 = (1, 2, 3, 4, 5)
    print("结果:", 按固定大小分组(数据, 2))

    print("\n===== 示例3：每组数量为1 =====")
    数据 = ("a", "b", "c")
    print("结果:", 按固定大小分组(数据, 1))

    print("\n===== 示例4：每组数量非法 =====")
    数据 = (1, 2, 3)
    print("结果:", 按固定大小分组(数据, 0))

    print("\n===== 示例5：空元组 =====")
    数据 = ()
    print("结果:", 按固定大小分组(数据, 3))

    print("\n===== 示例6：应用场景-把批量任务拆成每批3条 =====")
    任务列表 = ("任务1", "任务2", "任务3", "任务4", "任务5", "任务6", "任务7")
    print("结果:", 按固定大小分组(任务列表, 3))
