code: def get_draws_stan3(fit, model=None, variables=None, ignore=None):
      
      if ignore is None:
          ignore = []
  
      dtypes = {}
      if model is not None:
          dtypes = infer_dtypes(fit, model)
  
      if variables is None:
          variables = fit.param_names
      elif isinstance(variables, str):
          variables = [variables]
      variables = list(variables)
  
      data = OrderedDict()
  
      for var in variables:
          if var in data:
              continue
          dtype = dtypes.get(var)
  
          # in future fix the correct number of draws if fit.save_warmup is True
          new_shape = (*fit.dims[fit.param_names.index(var)], -1, fit.num_chains)
          values = fit._draws[fit._parameter_indexes(var), :]  # pylint: disable=protected-access
          values = values.reshape(new_shape, order="F")
          values = np.moveaxis(values, [-2, -1], [1, 0])
          values = values.astype(dtype)
          data[var] = values
  
      return data
docs: Extract draws from PyStan3 fit.