Skip to content

Dependency overrides don't work with post clean up. #162

@mr-mapache

Description

@mr-mapache

Hi! I need to inject resources with post-cleanup. I have this example working:

from fast_depends import Depends
from fast_depends import inject
from fast_depends import Provider

provider = Provider()

def callback():
    try:
        yield lambda count: print(count)
    finally:
        print('done')


@inject(dependency_overrides_provider=provider)
def handle_for_loop(callback = Depends(callback)):
    for i in range(10):
        callback(i)
        
handle_for_loop()

But when trying to make it work with dependency_overrides it fails.

from fast_depends import Depends
from fast_depends import inject
from fast_depends import Provider

provider = Provider()

def callback():...

@inject(dependency_overrides_provider=provider)
def handle_for_loop(callback = Depends(callback)):
    for i in range(10):
        callback(i)

def override_callback():
    try:
        yield lambda count: print(count)
    finally:
        print('done')


provider.dependency_overrides[callback] = override_callback

handle_for_loop()

It gives the error:

raceback (most recent call last):
  File "main.py", line 46, in <module>
    handle_for_loop()
  File "fast_depends/use.py", line 169, in injected_wrapper
    r = real_model.solve(
        ^^^^^^^^^^^^^^^^^
  File "fast_depends/core/model.py", line 416, in solve
    response = call(*final_args, **final_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "main.py", line 35, in handle_for_loop
    callback(i)
TypeError: 'generator' object is not callable

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions