From 7d92dced6e7128da7bee23063befaf7cdc73c865 Mon Sep 17 00:00:00 2001 From: Michael Bianco Date: Mon, 24 Mar 2025 13:48:36 -0600 Subject: [PATCH] feat: allow cls and field to be passed to field provider --- polyfactory/factories/base.py | 9 +++++++++ 1 file changed, 9 insertions(+) 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):