def _read_var_data(self):
var_bundles = OrderedDict()<EOL>var_attrs = OrderedDict()<EOL>n_vars = <NUM_LIT:0><EOL>while self.fp.tell() < self.fsize:<EOL><INDENT>var_attr = OrderedDict()<EOL>line = self.fp.readline('<STR_LIT>')<EOL>modelname, res0, res1, halfpolar, center180 = line<EOL>line = self.fp.readline('<STR_LIT>')<EOL>category_name, number, unit, tau0, tau1, reserved = line[:<NUM_LIT:6>]<EOL>dim0, dim1, dim2, dim3, dim4, dim5, skip = line[<NUM_LIT:6>:]<EOL>var_attr['<STR_LIT>'] = number<EOL>category_name = str(category_name, '<STR_LIT:utf-8>')<EOL>var_attr['<STR_LIT>'] = category_name.strip()<EOL>unit = str(unit, '<STR_LIT:utf-8>')<EOL>try:<EOL><INDENT>cat_df = self.diaginfo_df[<EOL>self.diaginfo_df.name == category_name.strip()<EOL>]<EOL>cat = cat_df.T.squeeze()<EOL>tracer_num = int(cat.offset) + int(number)<EOL>diag_df = self.tracerinfo_df[<EOL>self.tracerinfo_df.tracer == tracer_num<EOL>]<EOL>diag = diag_df.T.squeeze()<EOL>diag_attr = diag.to_dict()<EOL>if not unit.strip():  <EOL><INDENT>unit = diag_attr['<STR_LIT>']  <EOL><DEDENT>var_attr.update(diag_attr)<EOL><DEDENT>except:<EOL><INDENT>diag = {'<STR_LIT:name>': '<STR_LIT>', '<STR_LIT>': <NUM_LIT:1>}<EOL>var_attr.update(diag)<EOL><DEDENT>var_attr['<STR_LIT>'] = unit<EOL>vname = diag['<STR_LIT:name>']<EOL>fullname = category_name.strip() + "<STR_LIT:_>" + vname<EOL>if dim2 == <NUM_LIT:1>:<EOL><INDENT>data_shape = (dim0, dim1)         <EOL><DEDENT>else:<EOL><INDENT>data_shape = (dim0, dim1, dim2)<EOL><DEDENT>var_attr['<STR_LIT>'] = data_shape<EOL>data_shape = tuple([<NUM_LIT:1>, ] + list(data_shape))<EOL>origin = (dim3, dim4, dim5)<EOL>var_attr['<STR_LIT>'] = origin<EOL>timelo, timehi = cf.tau2time(tau0), cf.tau2time(tau1)<EOL>pos = self.fp.tell()<EOL>var_bundle = BPCHDataBundle(<EOL>data_shape, self.endian, self.filename, pos, [timelo, timehi],<EOL>metadata=var_attr,<EOL>use_mmap=self.use_mmap, dask_delayed=self.dask_delayed<EOL>)<EOL>self.fp.skipline()<EOL>if fullname in var_bundles:<EOL><INDENT>var_bundles[fullname].append(var_bundle)<EOL><DEDENT>else:<EOL><INDENT>var_bundles[fullname] = [var_bundle, ]<EOL>var_attrs[fullname] = var_attr<EOL>n_vars += <NUM_LIT:1><EOL><DEDENT><DEDENT>self.var_data = var_bundles<EOL>self.var_attrs = var_attrs<EOL>
Iterate over the block of this bpch file and return handlers
        in the form of `BPCHDataBundle`s for access to the data contained
        therein.