docstr: Pad the factors of a Tensor-Train so as to increase its rank without
  changing its reconstruction.
  
  The tensor-train (ring) will be padded with 0s to increase its rank only but
  not the underlying tensor it represents.
  
  Parameters
  ----------
  factor_list
      tensor list
  n_padding
      how much to increase the rank (bond dimension) by
  pad_boundaries
      if True, also pad the boundaries (useful for a tensor-ring)
      should be False for a tensor-train to keep the boundary rank to be 1
  
  Returns
  -------
  padded_factor_list
docstr_tok: ["Pad","the","factors","of","a","Tensor-Train","so","as","to","increase","its","rank","without","changing","its","reconstruction",".","The","tensor-train","(","ring",")","will","be","padded","with","0s","to","increase","its","rank","only","but","not","the","underlying","tensor","it","represents",".","Parameters","--","--","--","--","--","factor_list","tensor","list","n_padding","how","much","to","increase","the","rank","(","bond","dimension",")","by","pad_boundaries","if","True",",","also","pad","the","boundaries","(","useful","for","a","tensor-ring",")","should","be","False","for","a","tensor-train","to","keep","the","boundary","rank","to","be","1","Returns","--","--","--","-","padded_factor_list"]
code: def pad_tt_rank(factor_list, n_padding=1, pad_boundaries=False):
      """Pad the factors of a Tensor-Train so as to increase its rank without
      changing its reconstruction.
  
      The tensor-train (ring) will be padded with 0s to increase its rank only but
      not the underlying tensor it represents.
  
      Parameters
      ----------
      factor_list
          tensor list
      n_padding
          how much to increase the rank (bond dimension) by
      pad_boundaries
          if True, also pad the boundaries (useful for a tensor-ring)
          should be False for a tensor-train to keep the boundary rank to be 1
  
      Returns
      -------
      padded_factor_list
      """
      new_factors = []
      n_factors = len(factor_list)
  
      for i, factor in enumerate(factor_list):
          n_padding_left = n_padding_right = n_padding
          if (i == 0) and not pad_boundaries:
              n_padding_left = 0
          elif (i == n_factors - 1) and not pad_boundaries:
              n_padding_right = 0
  
          r1, *s, r2 = ivy.shape(factor)
          new_factor = ivy.zeros(
              (r1 + n_padding_left, *s, r2 + n_padding_right)
          )
          new_factors.append(
              ivy.TTTensor.index_update(
                  new_factor,
                  (slice(None, r1, None), ..., slice(None, r2, None)),
                  factor,
              )
          )
  
      return new_factors
  
imports: from .base import FactorizedTensor
  import ivy
  import warnings
label_desc: Use image node_id 17 for calling the TTTensor obj's underlying member method code with example usage: obj.pad_tt_rank(factor_list, n_padding, pad_boundaries) and returns: new_factors