def Field( # noqa: N802
default: Any = ...,
*,
description: Optional[str] = None,
tooltip_message: Optional[str] = None,
immutable_after_creation: bool = False,
**kwargs: Any,
) -> Any:
metadata: dict[str, Union[str, bool]] = {}
if tooltip_message is not None:
metadata["tooltip_message"] = tooltip_message
if immutable_after_creation:
metadata["immutable_after_creation"] = immutable_after_creation
# Create json_schema_extra only if we have metadata
if metadata:
kwargs["json_schema_extra"] = {"metadata": metadata}
return PydanticField( # type: ignore[pydantic-field]
default, description=description, **kwargs
)