#-----------------------------------------------------------------------------# Copyright (c) Anaconda, Inc., and Bokeh Contributors.# All rights reserved.## The full license is in the file LICENSE.txt, distributed with this software.#-----------------------------------------------------------------------------''' Utilities for function introspection.'''#-----------------------------------------------------------------------------# Boilerplate#-----------------------------------------------------------------------------from__future__importannotationsimportlogging# isort:skiplog=logging.getLogger(__name__)#-----------------------------------------------------------------------------# Imports#-----------------------------------------------------------------------------# Standard library importsfromtypingimportTYPE_CHECKING,AnyifTYPE_CHECKING:frominspectimportSignature#-----------------------------------------------------------------------------# Globals and constants#-----------------------------------------------------------------------------__all__=('get_param_info',)#-----------------------------------------------------------------------------# General API#-----------------------------------------------------------------------------#-----------------------------------------------------------------------------# Dev API#-----------------------------------------------------------------------------#-----------------------------------------------------------------------------# Private API#-----------------------------------------------------------------------------#-----------------------------------------------------------------------------# Code#-----------------------------------------------------------------------------
[docs]defget_param_info(sig:Signature)->tuple[list[str],list[Any]]:''' Find parameters with defaults and return them. Arguments: sig (Signature) : a function signature Returns: tuple(list, list) : parameters with defaults '''defaults=[]forparaminsig.parameters.values():ifparam.defaultisnotparam.empty:defaults.append(param.default)return[namefornameinsig.parameters],defaults