modular_api/services/service_provider.py (36 lines of code) (raw):
import os
from functools import cached_property
from typing import TYPE_CHECKING
from modular_api.helpers.utilities import SingletonMeta
if TYPE_CHECKING:
from modular_api.services.audit_service import AuditService
from modular_api.services.environment_service import EnvironmentService
from modular_api.services.group_service import GroupService
from modular_api.services.policy_service import PolicyService
from modular_api.services.usage_service import UsageService
from modular_api.services.user_service import UserService
class ServiceProvider(metaclass=SingletonMeta):
@cached_property
def user_service(self) -> 'UserService':
from modular_api.services.user_service import UserService
return UserService()
@cached_property
def group_service(self) -> 'GroupService':
from modular_api.services.group_service import GroupService
return GroupService()
@cached_property
def policy_service(self) -> 'PolicyService':
from modular_api.services.policy_service import PolicyService
return PolicyService()
@cached_property
def audit_service(self) -> 'AuditService':
from modular_api.services.audit_service import AuditService
return AuditService()
@cached_property
def usage_service(self) -> 'UsageService':
from modular_api.services.usage_service import UsageService
return UsageService()
@cached_property
def env(self) -> 'EnvironmentService':
from modular_api.services.environment_service import EnvironmentService
return EnvironmentService(source=os.environ)