<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def query_version(stream: aioxmpp.stream.StanzaStream, target: aioxmpp.JID) -> version_xso.Query: """ Query the software version of an entity. :param stream: A stanza stream to send the query on. :type stream: :class:`aioxmpp.stream.StanzaStream` :param target: The address of the entity to query. :type target: :class:`aioxmpp.JID` :raises OSError: if a connection issue occured before a reply was received :raises aioxmpp.errors.XMPPError: if an XMPP error was returned instead of a reply. :rtype: :class:`aioxmpp.version.xso.Query` :return: The response from the peer. The response is returned as :class:`~aioxmpp.version.xso.Query` object. The attributes hold the data returned by the peer. Each attribute may be :data:`None` if the peer chose to omit that information. In an extreme case, all attributes are :data:`None`. """


    return (yield from stream.send(
        aioxmpp.IQ(
            type_=aioxmpp.IQType.GET,
            to=target,
            payload=version_xso.Query(),
        )
    ))