'Enforce that the WSGI response is a response object of the current
type.  Werkzeug will use the :class:`BaseResponse` internally in many
situations like the exceptions.  If you call :meth:`get_response` on an
exception you will get back a regular :class:`BaseResponse` object, even
if you are using a custom subclass.
This method can enforce a given response type, and it will also
convert arbitrary WSGI callables into response objects if an environ
is provided::
# convert a Werkzeug response object into an instance of the
# MyResponseClass subclass.
response = MyResponseClass.force_type(response)
# convert any WSGI application into a response object
response = MyResponseClass.force_type(response, environ)
This is especially useful if you want to post-process responses in
the main dispatcher and use functionality provided by your subclass.
Keep in mind that this will modify response objects in place if
possible!
:param response: a response object or wsgi application.
:param environ: a WSGI environment object.
:return: a response object.'

@classmethod
def force_type(cls, response, environ=None):

    if (not isinstance(response, BaseResponse)):
        if (environ is None):
            raise TypeError('cannot    convert    WSGI    application    into    response    objects    without    an    environ')
        response = BaseResponse(*_run_wsgi_app(response, environ))
    response.__class__ = cls
    return response
