"""`Singleton` provider resetting context manager example."""

from dependency_injector import containers, providers


class UserService:
    ...


class Container(containers.DeclarativeContainer):

    user_service = providers.Singleton(UserService)


if __name__ == '__main__':
    container = Container()

    user_service1 = container.user_service()

    with container.user_service.reset():
        user_service2 = container.user_service()

    user_service3 = container.user_service()

    assert user_service1 is not user_service2
    assert user_service2 is not user_service3
    assert user_service3 is not user_service1
