docstr: Calculate number of characters a header's underlining should span
  
  Returns
  -------
  line_len: Int
      The number of characters the line should span
docstr_tok: ["Calculate","number","of","characters","a","header","'s","underlining","should","span","Returns","--","--","--","-","line_len",":","Int","The","number","of","characters","the","line","should","span"]
code: def _line_len(self):
      """Calculate number of characters a header's underlining should span
  
      Returns
      -------
      line_len: Int
          The number of characters the line should span"""
      line_len = 24
      # 24 is from "  #|   Time|      Score|", which are the required heading columns, except
      #   for "ID", whose (optional) length is calculated below
      # Can also be expressed as the sum of following four numbers:
      #   5  == ``len(self.end) * 3 - 1`` (subtract 1 to drop extra space at right-side table end)
      #   3  == size of "#" column
      #   6  == size of "Time" column
      #   10 == size of "Score" column
  
      line_len += sum([_ + 4 for _ in self.sizes])
      line_len += (
          self.show_experiment_id + len(self.end)
          if self.show_experiment_id
          else 0
      )
      return line_len
  
imports: from hyperparameter_hunter.i_o import exceptions
  from hyperparameter_hunter.space.dimensions import Categorical
  from hyperparameter_hunter.settings import G
  from hyperparameter_hunter.utils.general_utils import now_time, expand_mins_secs
  from contextlib import suppress
  from datetime import datetime
  import inspect
  import logging
  import os.path
  import sys
  from typing import List
label_desc: Use image node_id 4 for calling the OptimizationReporter obj's underlying member method code with example usage: obj._line_len() and returns: line_len