code: def dopreinit(cls, _obj, *args, **kwargs):
      _obj, args, kwargs = super(MetaLineIterator, cls).dopreinit(
          _obj, *args, **kwargs
      )
  
      # if no datas were found use, use the _owner (to have a clock)
      _obj.datas = _obj.datas or [_obj._owner]
  
      # 1st data source is our ticking clock
      _obj._clock = _obj.datas[0]
  
      # To automatically set the period Start by scanning the found datas
      # No calculation can take place until all datas have yielded "data"
      # A data could be an indicator and it could take x bars until
      # something is produced
      _obj._minperiod = max(
          [x._minperiod for x in _obj.datas] or [_obj._minperiod]
      )
  
      # The lines carry at least the same minperiod as
      # that provided by the datas
      for line in _obj.lines:
          line.addminperiod(_obj._minperiod)
  
      return _obj, args, kwargs
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import collections
  import operator
  import sys
  from .utils.py3 import map, range, zip, with_metaclass, string_types
  from .utils import DotDict
  from .lineroot import LineRoot, LineSingle
  from .linebuffer import LineActions, LineNum
  from .lineseries import LineSeries, LineSeriesMaker
  from .dataseries import DataSeries
  from .None import metabase
label_desc: Use image node_id 2 for calling the MetaLineIterator obj's underlying member method code with example usage: obj.dopreinit(cls, _obj) and returns: _obj,  args,  kwargs