#python imports from typing import Optional #dependency imports from entities.user import User from use_cases.user_repository import IUserRepository class ICreateUserInputPort: def execute(self, user_name:str, user_email:str, user_password:str): """ Abstract method to execute use case. """ raise NotImplementedError("execute must be implemented by a subclass") class ICreateUserOutputPort: def present(self, user:User): """ Abstract method to execute use case. """ raise NotImplementedError("execute must be implemented by a subclass") class CreateUser(ICreateUserInputPort): def __init__(self, user_repository: IUserRepository, output_port: ICreateUserOutputPort): self.user_repository = user_repository self.output_port = output_port def execute(self, user_name:str, user_email:str, user_password:str): """ Creates a User. """ user = self.user_repository.create_user(user_name, user_email, user_password) return self.output_port.present(user)