def _read_all(self, **keys):
dtype, offsets, isvar = self.get_rec_dtype(**keys)<EOL>w, = numpy.where(isvar == True)  <EOL>has_tbit = self._check_tbit()<EOL>if w.size > <NUM_LIT:0>:<EOL><INDENT>vstorage = keys.get('<STR_LIT>', self._vstorage)<EOL>colnums = self._extract_colnums()<EOL>rows = None<EOL>array = self._read_rec_with_var(colnums, rows, dtype,<EOL>offsets, isvar, vstorage)<EOL><DEDENT>elif has_tbit:<EOL><INDENT>colnums = self._extract_colnums()<EOL>array = self.read_columns(colnums, **keys)<EOL><DEDENT>else:<EOL><INDENT>firstrow = <NUM_LIT:1>  <EOL>nrows = self._info['<STR_LIT>']<EOL>array = numpy.zeros(nrows, dtype=dtype)<EOL>self._FITS.read_as_rec(self._ext+<NUM_LIT:1>, <NUM_LIT:1>, nrows, array)<EOL>array = self._maybe_decode_fits_ascii_strings_to_unicode_py3(array)<EOL>for colnum, name in enumerate(array.dtype.names):<EOL><INDENT>self._rescale_and_convert_field_inplace(<EOL>array,<EOL>name,<EOL>self._info['<STR_LIT>'][colnum]['<STR_LIT>'],<EOL>self._info['<STR_LIT>'][colnum]['<STR_LIT>'])<EOL><DEDENT><DEDENT>lower = keys.get('<STR_LIT>', False)<EOL>upper = keys.get('<STR_LIT>', False)<EOL>if self.lower or lower:<EOL><INDENT>_names_to_lower_if_recarray(array)<EOL><DEDENT>elif self.upper or upper:<EOL><INDENT>_names_to_upper_if_recarray(array)<EOL><DEDENT>self._maybe_trim_strings(array, **keys)<EOL>return array<EOL>
Read all data in the HDU.

parameters
----------
vstorage: string, optional
    Over-ride the default method to store variable length columns.  Can
    be 'fixed' or 'object'.  See docs on fitsio.FITS for details.
lower: bool, optional
    If True, force all columns names to lower case in output. Will over
    ride the lower= keyword from construction.
upper: bool, optional
    If True, force all columns names to upper case in output. Will over
    ride the lower= keyword from construction.