docs: def get_config_parameter(config: ConfigParser,
                           section: str,
                           param: str,
                           fn: Callable[[Any], Any],
                           default: Any) -> Any:
      """
      Fetch parameter from ``configparser`` ``.INI`` file.
  
      Args:
          config: :class:`ConfigParser` object
          section: section name within config file
          param: name of parameter within section
          fn: function to apply to string parameter (e.g. ``int``)
          default: default value
  
      Returns:
          parameter value, or ``None`` if ``default is None``, or ``fn(default)``
      """
      try:
          value = fn(config.get(section, param))
      except (TypeError, ValueError, NoOptionError):
          log.warning(
              "Configuration variable {} not found or improper in section [{}]; "
              "using default of {!r}", param, section, default)
          if default is None:
              value = default
          else:
              value = fn(default)
      return value