code: def __get_eval_info(self):
          
          if self.__need_reload_eval_info:
              self.__need_reload_eval_info = False
              out_num_eval = ctypes.c_int(0)
              # Get num of inner evals
              _safe_call(_LIB.LGBM_BoosterGetEvalCounts(
                  self.handle,
                  ctypes.byref(out_num_eval)))
              self.__num_inner_eval = out_num_eval.value
              if self.__num_inner_eval > 0:
                  # Get name of evals
                  tmp_out_len = ctypes.c_int(0)
                  string_buffers = [ctypes.create_string_buffer(255) for i in range_(self.__num_inner_eval)]
                  ptr_string_buffers = (ctypes.c_char_p * self.__num_inner_eval)(*map(ctypes.addressof, string_buffers))
                  _safe_call(_LIB.LGBM_BoosterGetEvalNames(
                      self.handle,
                      ctypes.byref(tmp_out_len),
                      ptr_string_buffers))
                  if self.__num_inner_eval != tmp_out_len.value:
                      raise ValueError("Length of eval names doesn't equal with num_evals")
                  self.__name_inner_eval = \
                      [string_buffers[i].value.decode() for i in range_(self.__num_inner_eval)]
                  self.__higher_better_inner_eval = \
                      [name.startswith(('auc', 'ndcg@', 'map@')) for name in self.__name_inner_eval]
docs: Get inner evaluation count and names.