mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-12-01 14:04:01 +03:00
41 lines
940 B
Python
41 lines
940 B
Python
"""Pythonic way for Dependency Injection."""
|
|
|
|
from dependency_injector import providers
|
|
from dependency_injector import injections
|
|
|
|
|
|
@providers.DelegatedCallable
|
|
def get_user_info(user_id):
|
|
"""Return user info."""
|
|
raise NotImplementedError()
|
|
|
|
|
|
@providers.Factory
|
|
@injections.inject(get_user_info=get_user_info)
|
|
class AuthComponent(object):
|
|
"""Some authentication component."""
|
|
|
|
def __init__(self, get_user_info):
|
|
"""Initializer."""
|
|
self.get_user_info = get_user_info
|
|
|
|
def authenticate_user(self, token):
|
|
"""Authenticate user by token."""
|
|
user_info = self.get_user_info(user_id=token + '1')
|
|
return user_info
|
|
|
|
|
|
print AuthComponent
|
|
print get_user_info
|
|
|
|
|
|
@providers.override(get_user_info)
|
|
@providers.DelegatedCallable
|
|
def get_user_info(user_id):
|
|
"""Return user info."""
|
|
return {'user_id': user_id}
|
|
|
|
|
|
print AuthComponent().authenticate_user(token='abc')
|
|
# {'user_id': 'abc1'}
|