class_docstr: Parses pre-downloaded Yahoo CSV Data Feeds (or locally generated if they
  comply to the Yahoo format)
  
  Specific parameters:
  
    - ``dataname``: The filename to parse or a file-like object
  
    - ``reverse`` (default: ``False``)
  
      It is assumed that locally stored files have already been reversed
      during the download process
  
    - ``adjclose`` (default: ``True``)
  
      Whether to use the dividend/split adjusted close and adjust all
      values according to it.
  
    - ``adjvolume`` (default: ``True``)
  
      Do also adjust ``volume`` if ``adjclose`` is also ``True``
  
    - ``round`` (default: ``True``)
  
      Whether to round the values to a specific number of decimals after
      having adjusted the close
  
    - ``roundvolume`` (default: ``0``)
  
      Round the resulting volume to the given number of decimals after having
      adjusted it
  
    - ``decimals`` (default: ``2``)
  
      Number of decimals to round to
  
    - ``swapcloses`` (default: ``False``)
  
      [2018-11-16] It would seem that the order of *close* and *adjusted
      close* is now fixed. The parameter is retained, in case the need to
      swap the columns again arose.
code: def _loadline(self, linetokens):
      while True:
          nullseen = False
          for tok in linetokens[1:]:
              if tok == "null":
                  nullseen = True
                  linetokens = self._getnextline()  # refetch tokens
                  if not linetokens:
                      return False  # cannot fetch, go away
  
                  # out of for to carry on wiwth while True logic
                  break
  
          if not nullseen:
              break  # can proceed
  
      i = itertools.count(0)
  
      dttxt = linetokens[next(i)]
      dt = date(int(dttxt[0:4]), int(dttxt[5:7]), int(dttxt[8:10]))
      dtnum = date2num(datetime.combine(dt, self.p.sessionend))
  
      self.lines.datetime[0] = dtnum
      o = float(linetokens[next(i)])
      h = float(linetokens[next(i)])
      l = float(linetokens[next(i)])
      c = float(linetokens[next(i)])
      self.lines.openinterest[0] = 0.0
  
      # 2018-11-16 ... Adjusted Close seems to always be delivered after
      # the close and before the volume columns
      adjustedclose = float(linetokens[next(i)])
      try:
          v = float(linetokens[next(i)])
      except:  # cover the case in which volume is "null"
          v = 0.0
  
      if self.p.swapcloses:  # swap closing prices if requested
          c, adjustedclose = adjustedclose, c
  
      adjfactor = c / adjustedclose
  
      # in v7 "adjusted prices" seem to be given, scale back for non adj
      if self.params.adjclose:
          o /= adjfactor
          h /= adjfactor
          l /= adjfactor
          c = adjustedclose
          # If the price goes down, volume must go up and viceversa
          if self.p.adjvolume:
              v *= adjfactor
  
      if self.p.round:
          decimals = self.p.decimals
          o = round(o, decimals)
          h = round(h, decimals)
          l = round(l, decimals)
          c = round(c, decimals)
  
      v = round(v, self.p.roundvolume)
  
      self.lines.open[0] = o
      self.lines.high[0] = h
      self.lines.low[0] = l
      self.lines.close[0] = c
      self.lines.volume[0] = v
      self.lines.adjclose[0] = adjustedclose
  
      return True
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import collections
  from datetime import date, datetime
  import io
  import itertools
  from ..utils.py3 import urlopen, urlquote, ProxyHandler, build_opener, install_opener
  import backtrader
  from ..None import feed
  from ..utils import date2num
label_desc: Use image node_id 2 for calling the YahooFinanceCSVData obj's underlying member method code with example usage: obj._loadline(linetokens) and returns: True, False