class_docstr: This is the plan used for retrieving the frames from the storage and
  and returning to the higher levels.
  
  Arguments:
      table (TableCatalogEntry): table for fetching data
      batch_mem_size (int): memory size of the batch read from disk
      skip_frames (int): skip frequency
      offset (int): storage offset for retrieving data
      limit (int): limit on data records to be retrieved
      total_shards (int): number of shards of data (if sharded)
      curr_shard (int): current curr_shard if data is sharded
      sampling_rate (int): uniform sampling rate
      sampling_type (str): special sampling type like IFRAMES
class_docstr_tok: ["This","is","the","plan","used","for","retrieving","the","frames","from","the","storage","and","and","returning","to","the","higher","levels",".","Arguments",":","table","(","TableCatalogEntry",")",":","table","for","fetching","data","batch_mem_size","(","int",")",":","memory","size","of","the","batch","read","from","disk","skip_frames","(","int",")",":","skip","frequency","offset","(","int",")",":","storage","offset","for","retrieving","data","limit","(","int",")",":","limit","on","data","records","to","be","retrieved","total_shards","(","int",")",":","number","of","shards","of","data","(","if","sharded",")","curr_shard","(","int",")",":","current","curr_shard","if","data","is","sharded","sampling_rate","(","int",")",":","uniform","sampling","rate","sampling_type","(","str",")",":","special","sampling","type","like","IFRAMES"]
code: def total_shards(self):
      return self._total_shards
  
imports: from evadb.catalog.models.table_catalog import TableCatalogEntry
  from evadb.expression.abstract_expression import AbstractExpression
  from evadb.parser.table_ref import TableRef
  from evadb.plan_nodes.abstract_plan import AbstractPlan
  from evadb.plan_nodes.types import PlanOprType
label_desc: Use image node_id 8 for calling the StoragePlan obj's underlying member method code with example usage: obj.total_shards() and returns: self