class_docstr: Exception indicating that an invalid argument set was passed to
  ``clean``.
  
  Parameters
  ----------
  before, after, keep_last : any
      The bad arguments to ``clean``.
  
  See Also
  --------
  clean
class_docstr_tok: ["Exception","indicating","that","an","invalid","argument","set","was","passed","to","``","clean","``",".","Parameters","--","--","--","--","--","before",",","after",",","keep_last",":","any","The","bad","arguments","to","``","clean","``",".","See","Also","--","--","--","--","clean"]
code: def __init__(self, before, after, keep_last):
      super(BadClean, self).__init__(
          "Cannot pass a combination of `before` and `after` with "
          "`keep_last`. Must pass one. "
          "Got: before=%r, after=%r, keep_last=%r\n"
          % (
              before,
              after,
              keep_last,
          ),
      )
  
imports: from collections import namedtuple
  import errno
  import os
  import shutil
  import warnings
  import click
  from logbook import Logger
  import pandas
  from trading_calendars import get_calendar
  from toolz import curry, complement, take
  from ..adjustments import SQLiteAdjustmentReader, SQLiteAdjustmentWriter
  from ..bcolz_daily_bars import BcolzDailyBarReader, BcolzDailyBarWriter
  from ..minute_bars import BcolzMinuteBarReader, BcolzMinuteBarWriter
  from zipline.assets import AssetDBWriter, AssetFinder, ASSET_DB_VERSION
  from zipline.assets.asset_db_migrations import downgrade
  from zipline.utils.cache import dataframe_cache, working_dir, working_file
  from zipline.utils.compat import ExitStack, mappingproxy
  from zipline.utils.input_validation import ensure_timestamp, optionally
  import zipline.utils.paths
  from zipline.utils.preprocess import preprocess
label_desc: Use image node_id 1 to create a new BadClean object from inherited base classes: click, ValueError with example: obj = BadClean(before, after, keep_last)