<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def oneshot(self, query, **params):
 """Run a oneshot search and returns a streaming handle to the results. The ``InputStream`` object streams XML fragments from the server. To parse this stream into usable Python objects, pass the handle to :class:`splunklib.results.ResultsReader`:: import splunklib.client as client import splunklib.results as results rr = results.ResultsReader(service.jobs.oneshot("search * | head 5")) for result in rr: if isinstance(result, results.Message):
 # Diagnostic messages may be returned in the results print '%s: %s' % (result.type, result.message) elif isinstance(result, dict):
 # Normal events are returned as dicts print result assert rr.is_preview == False The ``oneshot`` method makes a single roundtrip to the server (as opposed to two for :meth:`create` followed by :meth:`results`), plus at most two more if the ``autologin`` field of :func:`connect` is set to ``True``. :raises ValueError: Raised for invalid queries. :param query: The search query. :type query: ``string`` :param params: Additional arguments (optional):
 - "output_mode": Specifies the output format of the results (XML, JSON, or CSV). - "earliest_time": Specifies the earliest time in the time range to search. The time string can be a UTC time (with fractional seconds), a relative time specifier (to now), or a formatted time string. - "latest_time": Specifies the latest time in the time range to search. The time string can be a UTC time (with fractional seconds), a relative time specifier (to now), or a formatted time string. - "rf": Specifies one or more fields to add to the search. :type params: ``dict`` :return: The ``InputStream`` IO handle to raw XML returned from the server. """

        if "exec_mode" in params:
            raise TypeError("Cannot specify an exec_mode to oneshot.")
        params['segmentation'] = params.get('segmentation', 'none')
        return self.post(search=query,
                         exec_mode="oneshot",
                         **params).body