diff --git a/polyfactory/factories/base.py b/polyfactory/factories/base.py index aef5cb8d..8320e6b9 100644 --- a/polyfactory/factories/base.py +++ b/polyfactory/factories/base.py @@ -836,6 +836,15 @@ def get_field_value( # noqa: C901, PLR0911, PLR0912 ) if provider := cls.get_provider_map().get(unwrapped_annotation): + provider_signature = inspect.signature(provider) + + def has_provider_args(method: Callable): + params = inspect.signature(method).parameters + return len(params) == 2 and "cls" in params and "field_meta" in params + + if has_provider_args(provider): + return provider(cls, field_meta) + return provider() if isinstance(unwrapped_annotation, TypeVar):