def columnInfo(self):
    '\n        display metadata about the table, size, number of rows, columns and their data type\n        '
    code = (((((('proc contents data=' + self.libref) + '.') + self.table) + ' ') + self._dsopts()) + ';ods select Variables;run;')
    if self.sas.nosub:
        print(code)
        return
    if (self.results.upper() == 'PANDAS'):
        code = ('proc contents data=%s.%s %s ;ods output Variables=work._variables ;run;' % (self.libref, self.table, self._dsopts()))
        df = self._returnPD(code, '_variables')
        df['Type'] = df['Type'].str.rstrip()
        return df
    else:
        ll = self._is_valid()
        if self.HTML:
            if (not ll):
                ll = self.sas._io.submit(code)
            if (not self.sas.batch):
                self.sas.DISPLAY(self.sas.HTML(ll['LST']))
            else:
                return ll
        else:
            if (not ll):
                ll = self.sas._io.submit(code, 'text')
            if (not self.sas.batch):
                print(ll['LST'])
            else:
                return ll
display metadata about the table, size, number of rows, columns and their data type
def columnInfo(self):
    '\n        \n        '
    code = (((((('proc contents data=' + self.libref) + '.') + self.table) + ' ') + self._dsopts()) + ';ods select Variables;run;')
    if self.sas.nosub:
        print(code)
        return
    if (self.results.upper() == 'PANDAS'):
        code = ('proc contents data=%s.%s %s ;ods output Variables=work._variables ;run;' % (self.libref, self.table, self._dsopts()))
        df = self._returnPD(code, '_variables')
        df['Type'] = df['Type'].str.rstrip()
        return df
    else:
        ll = self._is_valid()
        if self.HTML:
            if (not ll):
                ll = self.sas._io.submit(code)
            if (not self.sas.batch):
                self.sas.DISPLAY(self.sas.HTML(ll['LST']))
            else:
                return ll
        else:
            if (not ll):
                ll = self.sas._io.submit(code, 'text')
            if (not self.sas.batch):
                print(ll['LST'])
            else:
                return ll