From 5a34440851eaa97eadd297058a671654fe04b4a9 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Tue, 18 Nov 2025 19:34:53 -0800 Subject: [PATCH] fix(pydantic): ignore extras for pydantic v1 --- src/browserbase/_models.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/browserbase/_models.py b/src/browserbase/_models.py index bec6bc4..70b2205 100644 --- a/src/browserbase/_models.py +++ b/src/browserbase/_models.py @@ -91,7 +91,7 @@ def model_fields_set(self) -> set[str]: return self.__fields_set__ # type: ignore class Config(pydantic.BaseConfig): # pyright: ignore[reportDeprecated] - extra: Any = pydantic.Extra.allow # type: ignore + extra: Any = pydantic.Extra.ignore # type: ignore else: model_config: ClassVar[ConfigDict] = ConfigDict( extra="ignore", defer_build=coerce_boolean(os.environ.get("DEFER_PYDANTIC_BUILD", "true")) @@ -209,18 +209,28 @@ def construct( # pyright: ignore[reportIncompatibleMethodOverride] else: fields_values[name] = field_get_default(field) + # Get the extra configuration to determine if we should include extra fields + config = get_model_config(__cls) + if PYDANTIC_V1: + extra_config = getattr(config, 'extra', None) + should_include_extras = extra_config != pydantic.Extra.ignore + else: + extra_config = config.get('extra') if isinstance(config, dict) else None + should_include_extras = extra_config != 'ignore' + extra_field_type = _get_extra_fields_type(__cls) _extra = {} - for key, value in values.items(): - if key not in model_fields: - parsed = construct_type(value=value, type_=extra_field_type) if extra_field_type is not None else value - - if PYDANTIC_V1: - _fields_set.add(key) - fields_values[key] = parsed - else: - _extra[key] = parsed + if should_include_extras: + for key, value in values.items(): + if key not in model_fields: + parsed = construct_type(value=value, type_=extra_field_type) if extra_field_type is not None else value + + if PYDANTIC_V1: + _fields_set.add(key) + fields_values[key] = parsed + else: + _extra[key] = parsed object.__setattr__(m, "__dict__", fields_values)