Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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