How do you pass an arbitrary python object in/out of a QDataStream when you have the SIP API set to version 2 for QVariants?<br><br>&gt;&gt;&gt; import sip<br>&gt;&gt;&gt; sip.setapi(&#39;QVariant&#39;, 2)<br>&gt;&gt;&gt; from PyQt4 import QtCore<br>

&gt;&gt;&gt; data = QtCore.QByteArray()<br>&gt;&gt;&gt; outstream = QtCore.QDataStream(data, QtCore.QIODevice.WriteOnly)<br>&gt;&gt;&gt; outstream &lt;&lt; {&#39;foo&#39;:&#39;bar&#39;}<br>Traceback (most recent call last):<br>

  File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;<br>TypeError: unsupported operand type(s) for &lt;&lt;: &#39;QDataStream&#39; and &#39;dict&#39;<br>&gt;&gt;&gt; outstream &lt;&lt; QtCore.QVariant({&#39;foo&#39;:&#39;bar&#39;})<br>

Traceback (most recent call last):<br>  File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;<br>TypeError: PyQt4.QtCore.QVariant represents a mapped type and cannot be instantiated<br><br>