human
Complete this python program:
def experimental(api_name):
assistant
#Here is the Python code you requested.

    """Declares that user is using an experimental feature.
    The developer of an API can mark it as *experimental* by calling
    this function. When users call experimental APIs, :class:`FutureWarning`
    is issued.
    The presentation of :class:`FutureWarning` is disabled by setting
    ``chainer.disable_experimental_feature_warning`` to ``True``,
    which is ``False`` by default.
    The basic usage is to call it in the function or method we want to
    mark as experimental along with the API name.
    .. testsetup::
    import sys
    import warnings
    warnings.simplefilter(\always\)
    def wrapper(message, category, filename, lineno, file=None, line=None):
    sys.stdout.write(warnings.formatwarning(
    message, category, filename, lineno))
    showwarning_orig = warnings.showwarning
    warnings.showwarning = wrapper
    .. testcleanup::
    warnings.showwarning = showwarning_orig
    .. testcode::
    from chainer import utils
    def f(x):
    utils.experimental(\chainer.foo.bar.f\)
    # concrete implementation of f follows
    f(1)
    .. testoutput::
    :options: +ELLIPSIS, +NORMALIZE_WHITESPACE
    ... FutureWarning: chainer.foo.bar.f is experimental. The interface can change in the future. ...
    We can also make a whole class experimental. In that case,
    we should call this function in its ``__init__`` method.
    .. testcode::
    class C():
    def __init__(self):
    utils.experimental(\chainer.foo.C\)
    C()
    .. testoutput::
    :options: +ELLIPSIS, +NORMALIZE_WHITESPACE
    ... FutureWarning: chainer.foo.C is experimental. The interface can change in the future. ...
    If we want to mark ``__init__`` method only, rather than class itself,
    it is recommended that we explicitly feed its API name.
    .. testcode::
    class D():
    def __init__(self):
    utils.experimental(\D.__init__\)
    D()
    .. testoutput::
    :options: +ELLIPSIS, +NORMALIZE_WHITESPACE
    ...  FutureWarning: D.__init__ is experimental. The interface can change in the future. ...
    Currently, we do..."""
    if (not chainer.disable_experimental_feature_warning):
        warnings.warn('{}    is    experimental.    The    interface    can    change    in    the    future.'.format(api_name), FutureWarning)