class_docstr: A decorator to take a function's docstring and perform string
  substitution on it.
  
  This decorator should be robust even if func.__doc__ is None
  (for example, if -OO was passed to the interpreter)
  
  Usage: construct a docstring.Substitution with a sequence or
  dictionary suitable for performing substitution; then
  decorate a suitable function with the constructed object. e.g.
  
  sub_author_name = Substitution(author='Jason')
  
  @sub_author_name
  def some_function(x):
      "%(author)s wrote this function"
  
  # note that some_function.__doc__ is now "Jason wrote this function"
  
  One can also use positional arguments.
  
  sub_first_last_names = Substitution('Edgar Allen', 'Poe')
  
  @sub_first_last_names
  def some_function(x):
      "%s %s wrote the Raven"
docstr: Update self.params with supplied args.
docstr_tok: ["Update","self.params","with","supplied","args","."]
code: def update(self, *args, **kwargs) -> None:
      """
      Update self.params with supplied args.
      """
      if isinstance(self.params, dict):
          self.params.update(*args, **kwargs)
  
imports: from __future__ import annotations
  from functools import wraps
  import inspect
  from textwrap import dedent
  from typing import Any, Callable, Mapping, cast
  import warnings
  from pandas._libs.properties import cache_readonly
  from pandas._typing import F, T
  from pandas.util._exceptions import find_stack_level
label_desc: Use image node_id 3 for calling the Substitution obj's underlying member method code with example usage: obj.update() without return types