<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def search(self, query, **kwargs):
 """ Cruddy provides a limited but useful interface to search GSI indexes in DynamoDB with the following limitations (hopefully some of these will be expanded or eliminated in the future. * The GSI must be configured with a only HASH and not a RANGE. * The only operation supported in the query is equality To use the ``search`` operation you must pass in a query string of this form: <attribute_name>=<value> As stated above, the only operation currently supported is equality (=) but other operations will be added over time. Also, the ``attribute_name`` must be an attribute which is configured as the ``HASH`` of a GSI in the DynamoDB table. If all of the above conditions are met, the ``query`` operation will return a list (possibly empty) of all items matching the query and the ``status`` of the response will be ``success``. Otherwise, the ``status`` will be ``error`` and the ``error_type`` and ``error_message`` will provide further information about the error. """

        response = self._new_response()
        if self._check_supported_op('search', response):
            if '=' not in query:
                response.status = 'error'
                response.error_type = 'InvalidQuery'
                msg = 'Only the = operation is supported'
                response.error_message = msg
            else:
                key, value = query.split('=')
                if key not in self._indexes:
                    response.status = 'error'
                    response.error_type = 'InvalidQuery'
                    msg = 'Attribute {} is not indexed'.format(key)
                    response.error_message = msg
                else:
                    params = {'KeyConditionExpression': Key(key).eq(value)}
                    index_name = self._indexes[key]
                    if index_name:
                        params['IndexName'] = index_name
                    pe = kwargs.get('projection_expression')
                    if pe:
                        params['ProjectionExpression'] = pe
                    self._call_ddb_method(self.table.query,
                                          params, response)
                    if response.status == 'success':
                        response.data = self._replace_decimals(
                            response.raw_response['Items'])
        response.prepare()
        return response