# Generic builtins ## Variadic keyword arguments with a custom `dict` When we define `dict` in a custom typeshed, we must take care to define it as a generic class in the same way as in the real typeshed. ```toml [environment] typeshed = "/typeshed" ``` `/typeshed/stdlib/builtins.pyi`: ```pyi class object: ... class int: ... class dict[K, V, Extra]: ... ``` `/typeshed/stdlib/typing_extensions.pyi`: ```pyi def reveal_type(obj, /): ... ``` If we don't, then we may get "surprising" results when inferring the types of variadic keyword arguments. ```py def f(**kwargs): reveal_type(kwargs) # revealed: dict[Unknown, Unknown, Unknown] def g(**kwargs: int): reveal_type(kwargs) # revealed: dict[Unknown, Unknown, Unknown] ```