async def METHOD_NAME(
    aiopg_engine: aiopg.sa.engine.Engine, faker: Faker
) -> AsyncIterator[Callable[..., Awaitable[ProjectAtDB]]]:
    created_project_ids: list[str] = []
    async def creator(
        user: dict[str, Any],
        *,
        project_nodes_overrides: dict[str, Any] | None = None,
        **project_overrides,
    ) -> ProjectAtDB:
        project_uuid = uuid4()
        print(f"Created new project with uuid={project_uuid}")
        project_config = {
            "uuid": f"{project_uuid}",
            "name": faker.name(),
            "type": ProjectType.STANDARD.name,
            "description": faker.text(),
            "prj_owner": user["id"],
            "access_rights": {"1": {"read": True, "write": True, "delete": True}},
            "thumbnail": "",
            "workbench": {},
        }
        project_config.update(**project_overrides)
        async with aiopg_engine.acquire() as con, con.begin():
            result = await con.execute(
                projects.insert()
                .values(**project_config)
                .returning(sa.literal_column("*"))
            )
            inserted_project = ProjectAtDB.from_orm(await result.first())
            project_nodes_repo = ProjectNodesRepo(project_uuid=project_uuid)
            # NOTE: currently no resources is passed until it becomes necessary
            default_node_config = {"required_resources": {}}
            if project_nodes_overrides:
                default_node_config.update(project_nodes_overrides)
            await project_nodes_repo.add(
                con,
                nodes=[
                    ProjectNodeCreate(node_id=NodeID(node_id), **default_node_config)
                    for node_id in inserted_project.workbench
                ],
            )
        print(f"--> created {inserted_project=}")
        created_project_ids.append(f"{inserted_project.uuid}")
        return inserted_project
    yield creator
    # cleanup
    async with aiopg_engine.acquire() as con:
        await con.execute(
            projects.delete().where(projects.c.uuid.in_(created_project_ids))
        )
    print(f"<-- delete projects {created_project_ids=}")