from __future__ import annotations from typing import Protocol, runtime_checkable from app.application.users.ports.user_repository import UserRepository @runtime_checkable class UnitOfWork(Protocol): users: UserRepository async def __aenter__(self) -> "UnitOfWork": ... async def __aexit__(self, exc_type, exc, tb) -> None: ... async def commit(self) -> None: ... async def rollback(self) -> None: ...