Skip to content

Override CustomField dependency #176

@chrisgoddard

Description

@chrisgoddard

Hi there - how are you supposed to override a custom field dependency?

In the canonical example:

from fast_depends import inject
from fast_depends.library import CustomField

class Header(CustomField):
    def use(self, /, **kwargs: AnyDict) -> AnyDict:
        kwargs = super().use(**kwargs)
        kwargs[self.param_name] = kwargs["headers"][self.param_name]
        return kwargs

@inject
def my_func(header_field: int = Header()):
    return header_field

assert my_func(
    headers={ "header_field": "1" }
) == 1

If we wanted to override the Header() dependency using dependency_provider - how would we do that? I'm not sure how to access the call property of the CustomField instance.

e.g.

from fast_depends import dependency_provider

def mock_provider() -> MockHeader:
    pass

@inject
def my_func(header_field: int = Header()):
    return header_field


dependency_provider.dependency_overrides[WHAT_GOES_HERE] = mock_provider

assert my_func(
    headers={ "header_field": "1" }
) == 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions