code: def _init_tsv(
      self,
      field_names,
      delimiter,
      train_file,
      test_file,
      eval_file,
      quoted,
      drop_incomplete_rows,
  ):
      def make_tsv(file, rank=0, world_size=1):
          return BlockShardedTSV(
              file,
              field_names=field_names,
              delimiter=delimiter,
              block_id=rank,
              num_blocks=world_size,
              quoted=quoted,
              drop_incomplete_rows=drop_incomplete_rows,
          )
  
      self._train_tsv = (
          make_tsv(train_file, self.rank, self.world_size)
          if train_file
          else []
      )
      self._test_tsv = make_tsv(test_file) if test_file else []
      self._eval_tsv = make_tsv(eval_file) if eval_file else []
      self._train_unsharded = (
          TSV(
              train_file,
              field_names=field_names,
              delimiter=delimiter,
              quoted=quoted,
          )
          if train_file
          else []
      )
  
imports: import csv
  import logging
  import sys
  import threading
  from typing import Dict, List, Optional, Type
  from pytext.utils.path import get_absolute_path
  from .data_source import generator_property, RootDataSource, SafeFileWrapper, ShardedDataSource
  from .session import SessionDataSource
label_desc: Use image node_id 2 for calling the BlockShardedTSVDataSource obj's underlying member method code with example usage: obj._init_tsv(field_names, delimiter, train_file, test_file, eval_file, quoted, drop_incomplete_rows) and returns: BlockShardedTSV