'Return a new :class:`MapAdapter` with the details specified to the
call.  Note that `script_name` will default to ``\'/\'`` if not further
specified or `None`.  The `server_name` at least is a requirement
because the HTTP RFC requires absolute URLs for redirects and so all
redirect exceptions raised by Werkzeug will contain the full canonical
URL.
If no path_info is passed to :meth:`match` it will use the default path
info passed to bind.  While this doesn\'t really make sense for
manual bind calls, it\'s useful if you bind a map to a WSGI
environment which already contains the path info.
`subdomain` will default to the `default_subdomain` for this map if
no defined. If there is no `default_subdomain` you cannot use the
subdomain feature.
.. versionadded:: 0.7
`query_args` added
.. versionadded:: 0.8
`query_args` can now also be a string.'

def bind(self, server_name, script_name=None, subdomain=None, url_scheme='http', default_method='GET', path_info=None, query_args=None):

    server_name = server_name.lower()
    if self.host_matching:
        if (subdomain is not None):
            raise RuntimeError('host    matching    enabled    and    a    subdomain    was    provided')
    elif (subdomain is None):
        subdomain = self.default_subdomain
    if (script_name is None):
        script_name = '/'
    try:
        server_name = _encode_idna(server_name)
    except UnicodeError:
        raise BadHost()
    return MapAdapter(self, server_name, script_name, subdomain, url_scheme, path_info, default_method, query_args)
