class_docstr: Class used to write data to an assets db.
  
  Parameters
  ----------
  engine : Engine or str
      An SQLAlchemy engine or path to a SQL database.
class_docstr_tok: ["Class","used","to","write","data","to","an","assets","db",".","Parameters","--","--","--","--","--","engine",":","Engine","or","str","An","SQLAlchemy","engine","or","path","to","a","SQL","database","."]
code: def _normalize_equities(self, equities, exchanges):
      # HACK: If 'company_name' is provided, map it to asset_name
      if (
          "company_name" in equities.columns
          and "asset_name" not in equities.columns
      ):
          equities["asset_name"] = equities["company_name"]
  
      # remap 'file_name' to 'symbol' if provided
      if "file_name" in equities.columns:
          equities["symbol"] = equities["file_name"]
  
      equities_output = _generate_output_dataframe(
          data_subset=equities,
          defaults=_equities_defaults,
      )
  
      # Split symbols to company_symbols and share_class_symbols
      tuple_series = equities_output["symbol"].apply(
          split_delimited_symbol
      )
      split_symbols = pd.DataFrame(
          tuple_series.tolist(),
          columns=["company_symbol", "share_class_symbol"],
          index=tuple_series.index,
      )
      equities_output = pd.concat(
          (equities_output, split_symbols), axis=1
      )
  
      # Upper-case all symbol data
      for col in symbol_columns:
          equities_output[col] = equities_output[col].str.upper()
  
      # Convert date columns to UNIX Epoch integers (nanoseconds)
      for col in (
          "start_date",
          "end_date",
          "first_traded",
          "auto_close_date",
      ):
          equities_output[col] = _dt_to_epoch_ns(equities_output[col])
  
      return _split_symbol_mappings(equities_output, exchanges)
  
imports: from collections import namedtuple
  import re
  import numpy
  import pandas
  import sqlalchemy
  from toolz import first
  from zipline.errors import AssetDBVersionError
  from zipline.assets.asset_db_schema import ASSET_DB_VERSION, asset_db_table_names, asset_router, equities, equity_symbol_mappings, equity_supplementary_mappings, futures_contracts, exchanges, futures_root_symbols, metadata, version_info
  from zipline.utils.compat import ExitStack
  from zipline.utils.preprocess import preprocess
  from zipline.utils.range import from_tuple, intersecting_ranges
  from zipline.utils.sqlite_utils import coerce_string_to_eng
label_desc: Use image node_id 9 for calling the AssetDBWriter obj's underlying member method code with example usage: obj._normalize_equities(equities, exchanges) and returns: _split_symbol_mappings