code: def load_data(
      input_files: List[str], shard_size: Optional[int] = None
  ) -> Iterator[Any]:
      """Loads data from files.
  
      Parameters
      ----------
      input_files: List[str]
          List of filenames.
      shard_size: int, default None
          Size of shard to yield
  
      Returns
      -------
      Iterator[Any]
          Iterator which iterates over provided files.
  
      Notes
      -----
      The supported file types are SDF, CSV and Pickle.
      """
      if len(input_files) == 0:
          raise ValueError(
              "The length of `filenames` must be more than 1."
          )
  
      file_type = _get_file_type(input_files[0])
      if file_type == "sdf":
          if shard_size is not None:
              logger.info("Ignoring shard_size for sdf input.")
          for value in load_sdf_files(input_files):
              yield value
      elif file_type == "csv":
          for value in load_csv_files(input_files, shard_size):
              yield value
      elif file_type == "pickle":
          if shard_size is not None:
              logger.info("Ignoring shard_size for pickle input.")
          for value in load_pickle_files(input_files):
              yield value
  
imports: import joblib
  import gzip
  import pickle
  import os
  import tempfile
  import tarfile
  import zipfile
  import logging
  from urllib.request import urlretrieve
  from typing import Any, Iterator, List, Optional, Tuple, Union, cast, IO
  import pandas
  import numpy
  import deepchem
label_desc: Use image node_id 12 for calling a global function with example usage: load_data(input_files, shard_size) without return types