#NEWLINE# def kwargs_warn_until( kwargs , version , category = DeprecationWarning , stacklevel = None , _version_info_ = None , _dont_call_warnings = False ) : #NEWLINE# #INDENT# "\n    Helper function to raise a warning (by default, a ``DeprecationWarning``)\n    when unhandled keyword arguments are passed to function, until the\n    provided ``version_info``, after which, a ``RuntimeError`` will be raised\n    to remind the developers to remove the ``**kwargs`` because the target\n    version has been reached.\n    This function is used to help deprecate unused legacy ``**kwargs`` that\n    were added to function parameters lists to preserve backwards compatibility\n    when removing a parameter. See\n    :doc:`the deprecation development docs </topics/development/deprecations>`\n    for the modern strategy for deprecating a function parameter.\n\n    :param kwargs: The caller's ``**kwargs`` argument value (a ``dict``).\n    :param version: The version info or name after which the warning becomes a\n                    ``RuntimeError``. For example ``(0, 17)`` or ``Hydrogen``\n                    or an instance of :class:`salt.version.SaltStackVersion`.\n    :param category: The warning class to be thrown, by default\n                     ``DeprecationWarning``\n    :param stacklevel: There should be no need to set the value of\n                       ``stacklevel``. Salt should be able to do the right thing.\n    :param _version_info_: In order to reuse this function for other SaltStack\n                           projects, they need to be able to provide the\n                           version info to compare to.\n    :param _dont_call_warnings: This parameter is used just to get the\n                                functionality until the actual error is to be\n                                issued. When we're only after the salt version\n                                checks to raise a ``RuntimeError``.\n    " #NEWLINE# if ( not isinstance ( version , ( tuple , six . string_types , salt . version . SaltStackVersion ) ) ) : #NEWLINE# #INDENT# raise RuntimeError ( "The 'version' argument should be passed as a tuple, string or an instance of 'salt.version.SaltStackVersion'." ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if isinstance ( version , tuple ) : #NEWLINE# #INDENT# version = salt . version . SaltStackVersion ( * version ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if isinstance ( version , six . string_types ) : #NEWLINE# #INDENT# version = salt . version . SaltStackVersion . from_name ( version ) #NEWLINE# #UNINDENT# #UNINDENT# #UNINDENT# if ( stacklevel is None ) : #NEWLINE# #INDENT# stacklevel = 3 #NEWLINE# #UNINDENT# if ( _version_info_ is None ) : #NEWLINE# #INDENT# _version_info_ = salt . version . __version_info__ #NEWLINE# #UNINDENT# _version_ = salt . version . SaltStackVersion ( * _version_info_ ) #NEWLINE# if ( kwargs or ( _version_ . info >= version . info ) ) : #NEWLINE# #INDENT# arg_names = ', ' . join ( ( "'{0}'" . format ( key ) for key in kwargs ) ) #NEWLINE# warn_until ( version , message = "The following parameter(s) have been deprecated and will be removed in '{0}': {1}." . format ( version . string , arg_names ) , category = category , stacklevel = stacklevel , _version_info_ = _version_ . info , _dont_call_warnings = _dont_call_warnings )