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

    """A decorator  that asserts that the decorated validator doesn\t modify
    its `data` dict param.
    :param validator: the validator function to decorate
    :type validator: function
    Usage:
    @does_not_modify_data_dict
    def call_validator(*args, **kwargs):
    return validators.user_name_validator(*args, **kwargs)
    call_validator(key, data, errors)
    """
    def call_and_assert(key, data, errors, context=None):
        if (context is None):
            context = {}
        original_data = copy.deepcopy(data)
        original_errors = copy.deepcopy(errors)
        original_context = copy.deepcopy(context)
        result = validator(key, data, errors, context=context)
        assert (data == original_data), 'Should    not    modify    data    dict    when    called    with    key:    {key},    data:    {data},    errors:    {errors},    context:    {context}'.format(key=key, data=original_data, errors=original_errors, context=original_context)
        return result
    return call_and_assert