code: def generate_dims_coords(shape, var_name, dims=None, coords=None, default_dims=None):
      
      if default_dims is None:
          default_dims = []
      if dims is None:
          dims = []
      if len([dim for dim in dims if dim not in default_dims]) > len(shape):
          warnings.warn(
              "More dims ({dims_len}) given than exists ({shape_len}). "
              "Passed array should have shape (chains, draws, *shape)".format(
                  dims_len=len(dims), shape_len=len(shape)
              ),
              SyntaxWarning,
          )
      if coords is None:
          coords = {}
  
      coords = deepcopy(coords)
      dims = deepcopy(dims)
  
      for idx, dim_len in enumerate(shape):
          if (len(dims) < idx + 1) or (dims[idx] is None):
              dim_name = "{var_name}_dim_{idx}".format(var_name=var_name, idx=idx)
              if len(dims) < idx + 1:
                  dims.append(dim_name)
              else:
                  dims[idx] = dim_name
          dim_name = dims[idx]
          if dim_name not in coords:
              coords[dim_name] = np.arange(dim_len)
      coords = {key: coord for key, coord in coords.items() if any(key == dim for dim in dims)}
      return dims, coords
docs: Generate default dimensions and coordinates for a variable.
  
      Parameters
      ----------
      shape : tuple[int]
          Shape of the variable
      var_name : str
          Name of the variable. Used in the default name, if necessary
      dims : list
          List of dimensions for the variable
      coords : dict[str] -> list[str]
          Map of dimensions to coordinates
      default_dims : list[str]
          Dimensions that do not apply to the variable's shape
  
      Returns
      -------
      list[str]
          Default dims
      dict[str] -> list[str]
          Default coords