'"Construct a new :class:`.ColumnDefault`.
:param arg: argument representing the default value.
May be one of the following:
* a plain non-callable Python value, such as a
string, integer, boolean, or other simple type.
The default value will be used as is each time.
* a SQL expression, that is one which derives from
:class:`.ColumnElement`.  The SQL expression will
be rendered into the INSERT or UPDATE statement,
or in the case of a primary key column when
RETURNING is not used may be
pre-executed before an INSERT within a SELECT.
* A Python callable.  The function will be invoked for each
new row subject to an INSERT or UPDATE.
The callable must accept exactly
zero or one positional arguments.  The one-argument form
will receive an instance of the :class:`.ExecutionContext`,
which provides contextual information as to the current
:class:`.Connection` in use as well as the current
statement and parameters.'

def __init__(self, arg, **kwargs):

    super(ColumnDefault, self).__init__(**kwargs)
    if isinstance(arg, FetchedValue):
        raise exc.ArgumentError('ColumnDefault    may    not    be    a    server-side    default    type.')
    if util.callable(arg):
        arg = self._maybe_wrap_callable(arg)
    self.arg = arg
