from __future__ import annotations import warnings from gradio import utils class GradioDeprecationWarning(UserWarning): # This does not subclass DeprecationWarning # because we want to show the warning by default. pass class GradioUnusedKwargWarning(UserWarning): pass def simple_deprecated_notice(term: str) -> str: return f"`{term}` parameter is deprecated, and it has no effect" def use_in_launch(term: str) -> str: return f"`{term}` is deprecated in `Interface()`, please use it within `launch()` instead." DEPRECATION_MESSAGE = { "optional": simple_deprecated_notice("optional"), "keep_filename": simple_deprecated_notice("keep_filename"), "numeric": simple_deprecated_notice("numeric"), "verbose": simple_deprecated_notice("verbose"), "allow_screenshot": simple_deprecated_notice("allow_screenshot"), "layout": simple_deprecated_notice("layout"), "show_input": simple_deprecated_notice("show_input"), "show_output": simple_deprecated_notice("show_output"), "capture_session": simple_deprecated_notice("capture_session"), "api_mode": simple_deprecated_notice("api_mode"), "show_tips": use_in_launch("show_tips"), "encrypt": simple_deprecated_notice("encrypt"), "enable_queue": use_in_launch("enable_queue"), "server_name": use_in_launch("server_name"), "server_port": use_in_launch("server_port"), "width": use_in_launch("width"), "height": use_in_launch("height"), "plot": "The 'plot' parameter has been deprecated. Use the new Plot component instead", } def check_deprecated_parameters( cls: str, *, stacklevel: int | None = None, kwargs ) -> None: if stacklevel is None: stacklevel = utils.find_user_stack_level() for key, value in DEPRECATION_MESSAGE.items(): if key in kwargs: if key == "plot" and cls != "Image": continue kwargs.pop(key) warnings.warn(value, GradioDeprecationWarning, stacklevel=stacklevel) if kwargs: warnings.warn( f"You have unused kwarg parameters in {cls}, please remove them: {kwargs}", GradioUnusedKwargWarning, stacklevel=stacklevel, ) def warn_deprecation(text: str) -> None: warnings.warn( text, GradioDeprecationWarning, stacklevel=utils.find_user_stack_level(), ) def warn_style_method_deprecation() -> None: warn_deprecation( "The `style` method is deprecated. Please set these arguments in the constructor instead." )