# pycsw Migration Guide

This page provides migration support across pycsw versions over time to help with pycsw change management.

## pycsw 1.x to 2.0 Migration

- the default CSW version is now 3.0.0. CSW clients need to explicitly specify `version=2.0.2` for CSW 2 behaviour. Also, pycsw administrators can use a WSGI wrapper to the pycsw API to force `version=2.0.2` on init of `pycsw.server.Csw` from the server. See CSW Support for more information.
- `pycsw.server.Csw.dispatch_wsgi()` previously returned the response content as a string. 2.0.0 introduces a compatability break to additionally return the HTTP status code along with the response as a list

    from pycsw.server import Csw
    my_csw = Csw(my_dict)  # add: env=some_environ_dict,  version='2.0.2' if preferred

    # using pycsw 1.x
    response = my_csw.dispatch_wsgi()

    # using pycsw 2.0
    http_status_code, response = my_csw.dispatch_wsgi()

    # covering either pycsw version
    content = csw.dispatch_wsgi()

    # pycsw 2.0 has an API break:
    # pycsw < 2.0: content = xml_response
    # pycsw >= 2.0: content = [http_status_code, content]
    # deal with the API break
    if isinstance(content, list):  # pycsw 2.0+
        http_response_code, response = content

See API for more information.