Closed
Description
i have a class to be injected
src/runner_rating/api/rating/controller.py
class Rating():
@inject
def __init__(
self,
repo: RatingRepository = Provide[Container.repo.rating]):
self.repo = repo
def get_by_id(self, id):
data = self.repo.get_by_id(id)
if not data:
raise HTTPNotFoundException(self.repo.index_name)
this is my container looks like:
src/container.py
class ESContainer(containers.DeclarativeContainer):
config = providers.Configuration()
client = providers.Singleton(
elasticsearch_client.ElasticsearchClient,
config=config.elasticsearch
)
class RepositoryContainer(containers.DeclarativeContainer):
config = providers.Configuration()
db = providers.DependenciesContainer()
rating = providers.Singleton(
RatingRepository,
db=db.client
)
class Container(containers.DeclarativeContainer):
config = providers.Configuration()
es = providers.Container(
ESContainer,
config=config
)
repo = providers.Container(
RepositoryContainer,
config=config,
db=es
)
this is when Container were called:
src/application.py
from src import runner_rating
def main():
# register dependency
di_container = Container()
di_container.config.from_dict(config.get_config())
di_container.wire(modules=[runner_rating])
when i try Rating.get_by_id it shows error that:
data = self.repo.get_by_id(id)
AttributeError: 'Provide' object has no attribute 'get_by_id'
Why? i'am using v2.5.1