docs: def rename(self, from_symbol, to_symbol, audit=None):
          """
          Rename a symbol
  
          Parameters
          ----------
          from_symbol: str
              the existing symbol that will be renamed
          to_symbol: str
              the new symbol name
          audit: dict
              audit information
          """
  
          sym = self._get_symbol_info(from_symbol)
          if not sym:
              raise NoDataFoundException('No data found for %s' % (from_symbol))
  
          if self._get_symbol_info(to_symbol) is not None:
              raise Exception('Symbol %s already exists' % (to_symbol))
  
          mongo_retry(self._collection.update_many)({SYMBOL: from_symbol},
                                                    {'$set': {SYMBOL: to_symbol}})
          mongo_retry(self._symbols.update_one)({SYMBOL: from_symbol},
                                                {'$set': {SYMBOL: to_symbol}})
          mongo_retry(self._mdata.update_many)({SYMBOL: from_symbol},
                                               {'$set': {SYMBOL: to_symbol}})
          mongo_retry(self._audit.update_many)({'symbol': from_symbol},
                                               {'$set': {'symbol': to_symbol}})
          if audit is not None:
              audit['symbol'] = to_symbol
              audit['action'] = 'symbol rename'
              audit['old_symbol'] = from_symbol
              self._audit.insert_one(audit)