docs: def _make_variogram_parameter_list(variogram_model, variogram_model_parameters):
      """Converts the user input for the variogram model parameters into the
      format expected in the rest of the code.
  
      Makes a list of variogram model parameters in the expected order if the
      user has provided the model parameters. If not, returns None, which
      will ensure that the automatic variogram estimation routine is
      triggered.
  
      Parameters
      ----------
      variogram_model : str
          specifies the variogram model type
      variogram_model_parameters : list, dict, or None
          parameters provided by the user, can also be None if the user
          did not specify the variogram model parameters; if None,
          this function returns None, that way the automatic variogram
          estimation routine will kick in down the road...
  
      Returns
      -------
      parameter_list : list
          variogram model parameters stored in a list in the expected order;
          if variogram_model is 'custom', model parameters should already
          be encapsulated in a list, so the list is returned unaltered;
          if variogram_model_parameters was not specified by the user,
          None is returned; order for internal variogram models is as follows...
  
          linear - [slope, nugget]
          power - [scale, exponent, nugget]
          gaussian - [psill, range, nugget]
          spherical - [psill, range, nugget]
          exponential - [psill, range, nugget]
          hole-effect - [psill, range, nugget]
  
      """
  
      if variogram_model_parameters is None:
  
          parameter_list = None
  
      elif type(variogram_model_parameters) is dict:
  
          if variogram_model in ['linear']:
  
              if 'slope' not in variogram_model_parameters.keys() \
                      or 'nugget' not in variogram_model_parameters.keys():
  
                  raise KeyError("'linear' variogram model requires 'slope' "
                                 "and 'nugget' specified in variogram model "
                                 "parameter dictionary.")
  
              else:
  
                  parameter_list = [variogram_model_parameters['slope'],
                                    variogram_model_parameters['nugget']]
  
          elif variogram_model in ['power']:
  
              if 'scale' not in variogram_model_parameters.keys() \
                      or 'exponent' not in variogram_model_parameters.keys() \
                      or 'nugget' not in variogram_model_parameters.keys():
  
                  raise KeyError("'power' variogram model requires 'scale', "
                                 "'exponent', and 'nugget' specified in "
                                 "variogram model parameter dictionary.")
  
              else:
  
                  parameter_list = [variogram_model_parameters['scale'],
                                    variogram_model_parameters['exponent'],
                                    variogram_model_parameters['nugget']]
  
          elif variogram_model in ['gaussian', 'spherical', 'exponential',
                                   'hole-effect']:
  
              if 'range' not in variogram_model_parameters.keys() \
                      or 'nugget' not in variogram_model_parameters.keys():
  
                  raise KeyError("'%s' variogram model requires 'range', "
                                 "'nugget', and either 'sill' or 'psill' "
                                 "specified in variogram model parameter "
                                 "dictionary." % variogram_model)
  
              else:
  
                  if 'sill' in variogram_model_parameters.keys():
  
                      parameter_list = [variogram_model_parameters['sill'] -
                                        variogram_model_parameters['nugget'],
                                        variogram_model_parameters['range'],
                                        variogram_model_parameters['nugget']]
  
                  elif 'psill' in variogram_model_parameters.keys():
  
                      parameter_list = [variogram_model_parameters['psill'],
                                        variogram_model_parameters['range'],
                                        variogram_model_parameters['nugget']]
  
                  else:
  
                      raise KeyError("'%s' variogram model requires either "
                                     "'sill' or 'psill' specified in "
                                     "variogram model parameter "
                                     "dictionary." % variogram_model)
  
          elif variogram_model in ['custom']:
  
              raise TypeError("For user-specified custom variogram model, "
                              "parameters must be specified in a list, "
                              "not a dict.")
  
          else:
  
              raise ValueError("Specified variogram model must be one of the "
                               "following: 'linear', 'power', 'gaussian', "
                               "'spherical', 'exponential', 'hole-effect', "
                               "'custom'.")
  
      elif type(variogram_model_parameters) is list:
  
          if variogram_model in ['linear']:
  
              if len(variogram_model_parameters) != 2:
  
                  raise ValueError("Variogram model parameter list must have "
                                   "exactly two entries when variogram model "
                                   "set to 'linear'.")
  
              parameter_list = variogram_model_parameters
  
          elif variogram_model in ['power']:
  
              if len(variogram_model_parameters) != 3:
  
                  raise ValueError("Variogram model parameter list must have "
                                   "exactly three entries when variogram model "
                                   "set to 'power'.")
  
              parameter_list = variogram_model_parameters
  
          elif variogram_model in ['gaussian', 'spherical', 'exponential',
                                   'hole-effect']:
  
              if len(variogram_model_parameters) != 3:
  
                  raise ValueError("Variogram model parameter list must have "
                                   "exactly three entries when variogram model "
                                   "set to '%s'." % variogram_model)
  
              parameter_list = [variogram_model_parameters[0] -
                                variogram_model_parameters[2],
                                variogram_model_parameters[1],
                                variogram_model_parameters[2]]
  
          elif variogram_model in ['custom']:
  
              parameter_list = variogram_model_parameters
  
          else:
  
              raise ValueError("Specified variogram model must be one of the "
                               "following: 'linear', 'power', 'gaussian', "
                               "'spherical', 'exponential', 'hole-effect', "
                               "'custom'.")
  
      else:
  
          raise TypeError("Variogram model parameters must be provided in either "
                          "a list or a dict when they are explicitly specified.")
  
      return parameter_list