"""`AbstractFactory` providers example.""" import cache import dependency_injector.providers as providers # Define abstract cache client factory: cache_client_factory = providers.AbstractFactory(cache.AbstractCacheClient) if __name__ == '__main__': # Override abstract factory with redis client factory: cache_client_factory.override(providers.Factory(cache.RedisCacheClient, host='localhost', port=6379, db=0)) redis_cache = cache_client_factory() print(redis_cache) # # Override abstract factory with memcache client factory: cache_client_factory.override(providers.Factory(cache.MemcacheCacheClient, hosts=['10.0.1.1', '10.0.1.2', '10.0.1.3'], port=11211, prefix='my_app')) memcache_cache = cache_client_factory() print(memcache_cache) #