class_docstr: Stores information about the conditional (covariates) passed into the
  'conditional' argument for 'comparisons' and 'slopes' effects.
  
  'ConditionalInfo' is used to create 'slopes' and 'comparisons' data as well
  as computing the estimates for the 'slopes' and 'comparisons' effects.
  
  Parameters
  ----------
  model : bambi.Model
      The bambi model object.
  conditional : str, dict, or list
      The covariate(s) specified by the user to condition on.
docstr: Maps covariates to 'main', 'group', and 'panel' in the order they are passed
  to the 'conditional' argument.
  
  By default, the first three elements (covariates) are mapped to 'main', 'group',
  and 'panel'. If the user passes more than three covariates, the remaining
  are mapped to 'covariate_4', 'covariate_5', etc. to ensure they are
  not dropped due to non-unique keys.
docstr_tok: ["Maps","covariates","to","'main","'",",","'group","'",",","and","'panel","'","in","the","order","they","are","passed","to","the","'conditional","'","argument",".","By","default",",","the","first","three","elements","(","covariates",")","are","mapped","to","'main","'",",","'group","'",",","and","'panel","'",".","If","the","user","passes","more","than","three","covariates",",","the","remaining","are","mapped","to","'covariate_4","'",",","'covariate_5","'",",","etc",".","to","ensure","they","are","not","dropped","due","to","non-unique","keys","."]
code: def __post_init__(self):
      """
      Maps covariates to 'main', 'group', and 'panel' in the order they are passed
      to the 'conditional' argument.
  
      By default, the first three elements (covariates) are mapped to 'main', 'group',
      and 'panel'. If the user passes more than three covariates, the remaining
      are mapped to 'covariate_4', 'covariate_5', etc. to ensure they are
      not dropped due to non-unique keys.
      """
      covariate_kinds = ("main", "group", "panel")
  
      if not isinstance(self.conditional, dict):
          self.conditional = listify(self.conditional)
          covariate_names = self.conditional
          self.user_passed = False
      elif isinstance(self.conditional, dict):
          covariate_names = list(self.conditional.keys())
          for key, value in self.conditional.items():
              if not isinstance(value, (list, np.ndarray)):
                  self.conditional[key] = listify(value)
  
          # sort values b/c of matplotlib plotting behavior when calling `plot_categorical`
          self.conditional = {
              key: sorted(value)
              for key, value in self.conditional.items()
          }
          self.user_passed = True
  
      self.covariates = dict(zip(covariate_kinds, self.conditional))
  
      # adds unique keys to the covariates dict if the user passed more than three covariates
      extra_covariates = covariate_names[len(covariate_kinds) :]
      if extra_covariates:
          for index, extra in enumerate(extra_covariates, start=1):
              self.covariates[f"covariate_{index}"] = extra
  
imports: from dataclasses import dataclass, field
  from typing import Union
  import numpy
  from formulae.terms.call import Call
  import pandas
  import xarray
  from bambi import Model
  from bambi.utils import listify
  from bambi.interpret.logs import log_interpret_defaults
label_desc: Use image node_id 1 for calling the ConditionalInfo obj's underlying member method code with example usage: obj.__post_init__() without return types