text: """Simple providers overriding example."""
  
  import dataclasses
  import unittest.mock
  
  from dependency_injector import containers, providers
  
  
  class ApiClient:
      ...
  
  
  class ApiClientStub(ApiClient):
      ...
  
  
  @dataclasses.dataclass
  class Service:
      api_client: ApiClient
  
  
  class Container(containers.DeclarativeContainer):
  
      api_client_factory = providers.Factory(ApiClient)
  
      service_factory = providers.Factory(
          Service,
          api_client=api_client_factory,
      )
  
  
  if __name__ == '__main__':
      container = Container()
  
      # 1. Use .override() to replace the API client with stub
      container.api_client_factory.override(providers.Factory(ApiClientStub))
      service1 = container.service_factory()
      assert isinstance(service1.api_client, ApiClientStub)
  
      # 2. Use .override() as a context manager to mock the API client in testing
      with container.api_client_factory.override(unittest.mock.Mock(ApiClient)):
          service2 = container.service_factory()
          assert isinstance(service2.api_client, unittest.mock.Mock)
  
      # 3. Use .reset_override() to get back to normal
      container.api_client_factory.reset_override()
      service3 = container.service_factory()
      assert isinstance(service3.api_client, ApiClient)
  