def METHOD_NAME(
    repos, out_dir, gpg_signing_key, gpg_key_path, gpg_key_allowlist_dir
) -> None:
    "Generates temporary RPM repo snapshots for tests to use as inputs."
    snapshot_dir = out_dir / "temp_snapshot_dir"
    os.mkdir(snapshot_dir)
    with temp_repos_steps(
        repo_change_steps=[repos], gpg_signing_key=gpg_signing_key
    ) as repos_root:
        snapshot_repos(
            dest=snapshot_dir,
            # `SnapshotReposTestCase` covers multi-universe handling
            repo_to_universe=lambda _repo: "mammal",
            # Snapshot the 0th step only, since only that is defined
            yum_conf_content=_make_test_yum_dnf_conf(
                "yum", repos_root / "0", gpg_key_path
            ),
            dnf_conf_content=_make_test_yum_dnf_conf(
                "dnf", repos_root / "0", gpg_key_path
            ),
            db_cfg={"kind": "sqlite", "db_path": out_dir / "db.sqlite3"},
            storage_cfg={
                "key": "test",
                "kind": "filesystem",
                "base_dir": out_dir / "storage",
            },
            rpm_shard=RpmShard(shard=0, modulo=1),
            gpg_key_allowlist_dir=gpg_key_allowlist_dir,
            exclude_repos=frozenset(),
            exclude_rpms=frozenset(),
            threads=4,
        )
    # Merge the repo snapshot with the storage & RPM DB -- this makes our
    # test snapshot build target look very much like prod snapshots.
    for f in snapshot_dir.listdir():
        assert not os.path.exists(out_dir / f), f"Must not overwrite {f}"
        os.rename(snapshot_dir / f, out_dir / f)
    os.rmdir(snapshot_dir)