def columnInfo(self):
code = "<STR_LIT>" + self.libref + '<STR_LIT:.>' + self.table + '<STR_LIT:U+0020>' + self._dsopts() + "<STR_LIT>"<EOL>if self.sas.nosub:<EOL><INDENT>print(code)<EOL>return<EOL><DEDENT>if self.results.upper() == '<STR_LIT>':<EOL><INDENT>code = "<STR_LIT>" % (self.libref, self.table, self._dsopts())<EOL>pd = self._returnPD(code, '<STR_LIT>')<EOL>pd['<STR_LIT>'] = pd['<STR_LIT>'].str.rstrip()<EOL>return pd<EOL><DEDENT>else:<EOL><INDENT>ll = self._is_valid()<EOL>if self.HTML:<EOL><INDENT>if not ll:<EOL><INDENT>ll = self.sas._io.submit(code)<EOL><DEDENT>if not self.sas.batch:<EOL><INDENT>self.sas.DISPLAY(self.sas.HTML(ll['<STR_LIT>']))<EOL><DEDENT>else:<EOL><INDENT>return ll<EOL><DEDENT><DEDENT>else:<EOL><INDENT>if not ll:<EOL><INDENT>ll = self.sas._io.submit(code, "<STR_LIT:text>")<EOL><DEDENT>if not self.sas.batch:<EOL><INDENT>print(ll['<STR_LIT>'])<EOL><DEDENT>else:<EOL><INDENT>return ll<EOL><DEDENT><DEDENT><DEDENT>
display metadata about the table, size, number of rows, columns and their data type