blob: 9cb1a54dcbad2c8298f55c10e0d2966abbd05c72 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>proton._data &#8212; Qpid Proton Python API 0.32.0 documentation</title>
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/language_data.js"></script>
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="nav-item nav-item-0"><a href="../../index.html">Qpid Proton Python API 0.32.0 documentation</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">proton._data</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for proton._data</h1><div class="highlight"><pre>
<span></span><span class="c1">#</span>
<span class="c1"># Licensed to the Apache Software Foundation (ASF) under one</span>
<span class="c1"># or more contributor license agreements. See the NOTICE file</span>
<span class="c1"># distributed with this work for additional information</span>
<span class="c1"># regarding copyright ownership. The ASF licenses this file</span>
<span class="c1"># to you under the Apache License, Version 2.0 (the</span>
<span class="c1"># &quot;License&quot;); you may not use this file except in compliance</span>
<span class="c1"># with the License. You may obtain a copy of the License at</span>
<span class="c1">#</span>
<span class="c1"># http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="c1">#</span>
<span class="c1"># Unless required by applicable law or agreed to in writing,</span>
<span class="c1"># software distributed under the License is distributed on an</span>
<span class="c1"># &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span>
<span class="c1"># KIND, either express or implied. See the License for the</span>
<span class="c1"># specific language governing permissions and limitations</span>
<span class="c1"># under the License.</span>
<span class="c1">#</span>
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
<span class="kn">import</span> <span class="nn">uuid</span>
<span class="kn">from</span> <span class="nn">cproton</span> <span class="kn">import</span> <span class="n">PN_ARRAY</span><span class="p">,</span> <span class="n">PN_BINARY</span><span class="p">,</span> <span class="n">PN_BOOL</span><span class="p">,</span> <span class="n">PN_BYTE</span><span class="p">,</span> <span class="n">PN_CHAR</span><span class="p">,</span> <span class="n">PN_DECIMAL128</span><span class="p">,</span> <span class="n">PN_DECIMAL32</span><span class="p">,</span> <span class="n">PN_DECIMAL64</span><span class="p">,</span> \
<span class="n">PN_DESCRIBED</span><span class="p">,</span> <span class="n">PN_DOUBLE</span><span class="p">,</span> <span class="n">PN_FLOAT</span><span class="p">,</span> <span class="n">PN_INT</span><span class="p">,</span> <span class="n">PN_LIST</span><span class="p">,</span> <span class="n">PN_LONG</span><span class="p">,</span> <span class="n">PN_MAP</span><span class="p">,</span> <span class="n">PN_NULL</span><span class="p">,</span> <span class="n">PN_OVERFLOW</span><span class="p">,</span> <span class="n">PN_SHORT</span><span class="p">,</span> <span class="n">PN_STRING</span><span class="p">,</span> \
<span class="n">PN_SYMBOL</span><span class="p">,</span> <span class="n">PN_TIMESTAMP</span><span class="p">,</span> <span class="n">PN_UBYTE</span><span class="p">,</span> <span class="n">PN_UINT</span><span class="p">,</span> <span class="n">PN_ULONG</span><span class="p">,</span> <span class="n">PN_USHORT</span><span class="p">,</span> <span class="n">PN_UUID</span><span class="p">,</span> <span class="n">pn_data</span><span class="p">,</span> <span class="n">pn_data_clear</span><span class="p">,</span> <span class="n">pn_data_copy</span><span class="p">,</span> \
<span class="n">pn_data_decode</span><span class="p">,</span> <span class="n">pn_data_dump</span><span class="p">,</span> <span class="n">pn_data_encode</span><span class="p">,</span> <span class="n">pn_data_encoded_size</span><span class="p">,</span> <span class="n">pn_data_enter</span><span class="p">,</span> <span class="n">pn_data_error</span><span class="p">,</span> <span class="n">pn_data_exit</span><span class="p">,</span> \
<span class="n">pn_data_format</span><span class="p">,</span> <span class="n">pn_data_free</span><span class="p">,</span> <span class="n">pn_data_get_array</span><span class="p">,</span> <span class="n">pn_data_get_array_type</span><span class="p">,</span> <span class="n">pn_data_get_binary</span><span class="p">,</span> <span class="n">pn_data_get_bool</span><span class="p">,</span> \
<span class="n">pn_data_get_byte</span><span class="p">,</span> <span class="n">pn_data_get_char</span><span class="p">,</span> <span class="n">pn_data_get_decimal128</span><span class="p">,</span> <span class="n">pn_data_get_decimal32</span><span class="p">,</span> <span class="n">pn_data_get_decimal64</span><span class="p">,</span> \
<span class="n">pn_data_get_double</span><span class="p">,</span> <span class="n">pn_data_get_float</span><span class="p">,</span> <span class="n">pn_data_get_int</span><span class="p">,</span> <span class="n">pn_data_get_list</span><span class="p">,</span> <span class="n">pn_data_get_long</span><span class="p">,</span> <span class="n">pn_data_get_map</span><span class="p">,</span> \
<span class="n">pn_data_get_short</span><span class="p">,</span> <span class="n">pn_data_get_string</span><span class="p">,</span> <span class="n">pn_data_get_symbol</span><span class="p">,</span> <span class="n">pn_data_get_timestamp</span><span class="p">,</span> <span class="n">pn_data_get_ubyte</span><span class="p">,</span> \
<span class="n">pn_data_get_uint</span><span class="p">,</span> <span class="n">pn_data_get_ulong</span><span class="p">,</span> <span class="n">pn_data_get_ushort</span><span class="p">,</span> <span class="n">pn_data_get_uuid</span><span class="p">,</span> <span class="n">pn_data_is_array_described</span><span class="p">,</span> \
<span class="n">pn_data_is_described</span><span class="p">,</span> <span class="n">pn_data_is_null</span><span class="p">,</span> <span class="n">pn_data_lookup</span><span class="p">,</span> <span class="n">pn_data_narrow</span><span class="p">,</span> <span class="n">pn_data_next</span><span class="p">,</span> <span class="n">pn_data_prev</span><span class="p">,</span> \
<span class="n">pn_data_put_array</span><span class="p">,</span> <span class="n">pn_data_put_binary</span><span class="p">,</span> <span class="n">pn_data_put_bool</span><span class="p">,</span> <span class="n">pn_data_put_byte</span><span class="p">,</span> <span class="n">pn_data_put_char</span><span class="p">,</span> <span class="n">pn_data_put_decimal128</span><span class="p">,</span> \
<span class="n">pn_data_put_decimal32</span><span class="p">,</span> <span class="n">pn_data_put_decimal64</span><span class="p">,</span> <span class="n">pn_data_put_described</span><span class="p">,</span> <span class="n">pn_data_put_double</span><span class="p">,</span> <span class="n">pn_data_put_float</span><span class="p">,</span> \
<span class="n">pn_data_put_int</span><span class="p">,</span> <span class="n">pn_data_put_list</span><span class="p">,</span> <span class="n">pn_data_put_long</span><span class="p">,</span> <span class="n">pn_data_put_map</span><span class="p">,</span> <span class="n">pn_data_put_null</span><span class="p">,</span> <span class="n">pn_data_put_short</span><span class="p">,</span> \
<span class="n">pn_data_put_string</span><span class="p">,</span> <span class="n">pn_data_put_symbol</span><span class="p">,</span> <span class="n">pn_data_put_timestamp</span><span class="p">,</span> <span class="n">pn_data_put_ubyte</span><span class="p">,</span> <span class="n">pn_data_put_uint</span><span class="p">,</span> \
<span class="n">pn_data_put_ulong</span><span class="p">,</span> <span class="n">pn_data_put_ushort</span><span class="p">,</span> <span class="n">pn_data_put_uuid</span><span class="p">,</span> <span class="n">pn_data_rewind</span><span class="p">,</span> <span class="n">pn_data_type</span><span class="p">,</span> <span class="n">pn_data_widen</span><span class="p">,</span> <span class="n">pn_error_text</span>
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_compat</span>
<span class="kn">from</span> <span class="nn">._common</span> <span class="kn">import</span> <span class="n">Constant</span>
<span class="kn">from</span> <span class="nn">._exceptions</span> <span class="kn">import</span> <span class="n">DataException</span><span class="p">,</span> <span class="n">EXCEPTIONS</span>
<span class="c1">#</span>
<span class="c1"># Hacks to provide Python2 &lt;---&gt; Python3 compatibility</span>
<span class="c1">#</span>
<span class="c1"># The results are</span>
<span class="c1"># | |long|unicode|</span>
<span class="c1"># |Python2|long|unicode|</span>
<span class="c1"># |Python3| int| str|</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">long</span><span class="p">()</span>
<span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span>
<span class="n">long</span> <span class="o">=</span> <span class="nb">int</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">unicode</span><span class="p">()</span>
<span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span>
<span class="n">unicode</span> <span class="o">=</span> <span class="nb">str</span>
<span class="k">class</span> <span class="nc">UnmappedType</span><span class="p">:</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="n">msg</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;UnmappedType(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">msg</span>
<div class="viewcode-block" id="ulong"><a class="viewcode-back" href="../../proton.html#proton.ulong">[docs]</a><span class="k">class</span> <span class="nc">ulong</span><span class="p">(</span><span class="n">long</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The ulong AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> An unsigned 64 bit integer in the range :math:`0` to :math:`2^{64} - 1` inclusive.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">l</span><span class="p">):</span>
<span class="k">if</span> <span class="p">(</span><span class="n">l</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="s2">&quot;initializing ulong with negative value&quot;</span><span class="p">)</span>
<span class="nb">super</span><span class="p">(</span><span class="n">ulong</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="n">ulong</span><span class="p">,</span> <span class="n">l</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;ulong(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="n">long</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="timestamp"><a class="viewcode-back" href="../../proton.html#proton.timestamp">[docs]</a><span class="k">class</span> <span class="nc">timestamp</span><span class="p">(</span><span class="n">long</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The timestamp AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> An absolute point in time, represented by a signed 64 bit value measuring</span>
<span class="sd"> milliseconds since the epoch. This value is encoded using the Unix ``time_t``</span>
<span class="sd"> [IEEE1003] encoding of UTC, but with a precision of milliseconds. For</span>
<span class="sd"> example, ``1311704463521`` represents the moment ``2011-07-26T18:21:03.521Z``.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;timestamp(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="n">long</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="symbol"><a class="viewcode-back" href="../../proton.html#proton.symbol">[docs]</a><span class="k">class</span> <span class="nc">symbol</span><span class="p">(</span><span class="n">unicode</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The symbol AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> Symbolic values from a constrained domain, represented by a sequence of ASCII characters.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;symbol(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="n">unicode</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="char"><a class="viewcode-back" href="../../proton.html#proton.char">[docs]</a><span class="k">class</span> <span class="nc">char</span><span class="p">(</span><span class="n">unicode</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The char AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> A 32 bit UTF-32BE encoded Unicode character.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;char(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="n">unicode</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="byte"><a class="viewcode-back" href="../../proton.html#proton.byte">[docs]</a><span class="k">class</span> <span class="nc">byte</span><span class="p">(</span><span class="nb">int</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The byte AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> An 8 bit signed integer in the range :math:`-(2^7)` to :math:`2^7 - 1` inclusive.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;byte(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">int</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="short"><a class="viewcode-back" href="../../proton.html#proton.short">[docs]</a><span class="k">class</span> <span class="nc">short</span><span class="p">(</span><span class="nb">int</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The short AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> A 16 bit signed integer in the range :math:`-(2^{15})` to :math:`2^{15} - 1` inclusive.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;short(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">int</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="int32"><a class="viewcode-back" href="../../proton.html#proton.int32">[docs]</a><span class="k">class</span> <span class="nc">int32</span><span class="p">(</span><span class="nb">int</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The signed int AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> A 32 bit signed integer in the range :math:`-(2^{31})` to :math:`2^{31} - 1` inclusive.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;int32(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">int</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="ubyte"><a class="viewcode-back" href="../../proton.html#proton.ubyte">[docs]</a><span class="k">class</span> <span class="nc">ubyte</span><span class="p">(</span><span class="nb">int</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The unsigned byte AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> An 8 bit unsigned integer in the range :math:`0` to :math:`2^8 - 1` inclusive.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
<span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="s2">&quot;initializing ubyte with negative value&quot;</span><span class="p">)</span>
<span class="nb">super</span><span class="p">(</span><span class="n">ubyte</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="n">ubyte</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;ubyte(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">int</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="ushort"><a class="viewcode-back" href="../../proton.html#proton.ushort">[docs]</a><span class="k">class</span> <span class="nc">ushort</span><span class="p">(</span><span class="nb">int</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The unsigned short AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> A 16 bit unsigned integer in the range :math:`0` to :math:`2^{16} - 1` inclusive.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
<span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="s2">&quot;initializing ushort with negative value&quot;</span><span class="p">)</span>
<span class="nb">super</span><span class="p">(</span><span class="n">ushort</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="n">ushort</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;ushort(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">int</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="uint"><a class="viewcode-back" href="../../proton.html#proton.uint">[docs]</a><span class="k">class</span> <span class="nc">uint</span><span class="p">(</span><span class="n">long</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The unsigned int AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> A 32 bit unsigned integer in the range :math:`0` to :math:`2^{32} - 1` inclusive.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">l</span><span class="p">):</span>
<span class="k">if</span> <span class="p">(</span><span class="n">l</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="s2">&quot;initializing uint with negative value&quot;</span><span class="p">)</span>
<span class="nb">super</span><span class="p">(</span><span class="n">uint</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="n">uint</span><span class="p">,</span> <span class="n">l</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;uint(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="n">long</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="float32"><a class="viewcode-back" href="../../proton.html#proton.float32">[docs]</a><span class="k">class</span> <span class="nc">float32</span><span class="p">(</span><span class="nb">float</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The float AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> A 32 bit floating point number (IEEE 754-2008 binary32).</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;float32(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">float</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="decimal32"><a class="viewcode-back" href="../../proton.html#proton.decimal32">[docs]</a><span class="k">class</span> <span class="nc">decimal32</span><span class="p">(</span><span class="nb">int</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The decimal32 AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> A 32 bit decimal floating point number (IEEE 754-2008 decimal32).</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;decimal32(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">int</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="decimal64"><a class="viewcode-back" href="../../proton.html#proton.decimal64">[docs]</a><span class="k">class</span> <span class="nc">decimal64</span><span class="p">(</span><span class="n">long</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The decimal64 AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> A 64 bit decimal floating point number (IEEE 754-2008 decimal64).</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;decimal64(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="n">long</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="decimal128"><a class="viewcode-back" href="../../proton.html#proton.decimal128">[docs]</a><span class="k">class</span> <span class="nc">decimal128</span><span class="p">(</span><span class="nb">bytes</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The decimal128 AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> A 128-bit decimal floating-point number (IEEE 754-2008 decimal128).</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;decimal128(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">bytes</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="Described"><a class="viewcode-back" href="../../proton.html#proton.Described">[docs]</a><span class="k">class</span> <span class="nc">Described</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A described AMQP type.</span>
<span class="sd"> :ivar descriptor: A symbol describing the value.</span>
<span class="sd"> :vartype descriptor: :class:`symbol`</span>
<span class="sd"> :ivar value: The described value</span>
<span class="sd"> :vartype value: Any AMQP value</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">descriptor</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">descriptor</span> <span class="o">=</span> <span class="n">descriptor</span>
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">value</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;Described(</span><span class="si">%r</span><span class="s2">, </span><span class="si">%r</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">descriptor</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">o</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">Described</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">descriptor</span> <span class="o">==</span> <span class="n">o</span><span class="o">.</span><span class="n">descriptor</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">==</span> <span class="n">o</span><span class="o">.</span><span class="n">value</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span></div>
<span class="n">UNDESCRIBED</span> <span class="o">=</span> <span class="n">Constant</span><span class="p">(</span><span class="s2">&quot;UNDESCRIBED&quot;</span><span class="p">)</span>
<div class="viewcode-block" id="Array"><a class="viewcode-back" href="../../proton.html#proton.Array">[docs]</a><span class="k">class</span> <span class="nc">Array</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> An AMQP array, a sequence of AMQP values of a single type.</span>
<span class="sd"> This class provides a convenient way to handle AMQP arrays when used with</span>
<span class="sd"> convenience methods :func:`Data.get_py_array` and :func:`Data.put_py_array`.</span>
<span class="sd"> :ivar descriptor: Optional descriptor if the array is to be described, otherwise ``None``</span>
<span class="sd"> :ivar type: Array element type, as an integer. The :class:`Data` class has constants defined</span>
<span class="sd"> for all the valid AMQP types. For example, for an array of double values, use</span>
<span class="sd"> :const:`Data.DOUBLE`, which has integer value 14.</span>
<span class="sd"> :ivar elements: A Python list of elements of the appropriate type. </span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">descriptor</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="o">*</span><span class="n">elements</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">descriptor</span> <span class="o">=</span> <span class="n">descriptor</span>
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="nb">type</span>
<span class="bp">self</span><span class="o">.</span><span class="n">elements</span> <span class="o">=</span> <span class="n">elements</span>
<span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">elements</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">elements</span><span class="p">:</span>
<span class="n">els</span> <span class="o">=</span> <span class="s2">&quot;, </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">repr</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">elements</span><span class="p">)))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">els</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">return</span> <span class="s2">&quot;Array(</span><span class="si">%r</span><span class="s2">, </span><span class="si">%r%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">descriptor</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">els</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">o</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">Array</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">descriptor</span> <span class="o">==</span> <span class="n">o</span><span class="o">.</span><span class="n">descriptor</span> <span class="ow">and</span> \
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">o</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">elements</span> <span class="o">==</span> <span class="n">o</span><span class="o">.</span><span class="n">elements</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span></div>
<span class="k">def</span> <span class="nf">_check_type</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">allow_ulong</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">symbol</span><span class="p">):</span>
<span class="k">return</span> <span class="n">s</span>
<span class="k">if</span> <span class="n">allow_ulong</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">ulong</span><span class="p">):</span>
<span class="k">return</span> <span class="n">s</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="c1"># Must be py2 or py3 str</span>
<span class="k">return</span> <span class="n">symbol</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">unicode</span><span class="p">):</span>
<span class="c1"># This must be python2 unicode as we already detected py3 str above</span>
<span class="k">return</span> <span class="n">symbol</span><span class="p">(</span><span class="n">s</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;utf-8&#39;</span><span class="p">))</span>
<span class="k">if</span> <span class="n">raise_on_error</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;Non-symbol type </span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="n">s</span><span class="p">))</span>
<span class="k">return</span> <span class="n">s</span>
<span class="k">def</span> <span class="nf">_check_is_symbol</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="k">return</span> <span class="n">_check_type</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">allow_ulong</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="n">raise_on_error</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_check_is_symbol_or_ulong</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="k">return</span> <span class="n">_check_type</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">allow_ulong</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="n">raise_on_error</span><span class="p">)</span>
<span class="k">class</span> <span class="nc">RestrictedKeyDict</span><span class="p">(</span><span class="nb">dict</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Parent class for :class:`PropertyDict` and :class:`AnnotationDict`&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">validation_fn</span><span class="p">,</span> <span class="n">e</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">RestrictedKeyDict</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">validation_fn</span> <span class="o">=</span> <span class="n">validation_fn</span>
<span class="bp">self</span><span class="o">.</span><span class="n">raise_on_error</span> <span class="o">=</span> <span class="n">raise_on_error</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Checks if the key is a :class:`symbol` type before setting the value&quot;&quot;&quot;</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">RestrictedKeyDict</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">validation_fn</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">raise_on_error</span><span class="p">),</span> <span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
<span class="k">pass</span>
<span class="c1"># __setitem__() must raise a KeyError, not TypeError</span>
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s1">&#39;invalid non-symbol key: </span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">key</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Equivalent to dict.update(), but it was needed to call :meth:`__setitem__()`</span>
<span class="sd"> instead of ``dict.__setitem__()``.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">e</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">e</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="fm">__setitem__</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">e</span><span class="p">[</span><span class="n">k</span><span class="p">])</span>
<span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="fm">__setitem__</span><span class="p">(</span><span class="n">k</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="c1"># use tuple consumed from from zip</span>
<span class="k">for</span> <span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> <span class="ow">in</span> <span class="n">e</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="fm">__setitem__</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span>
<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="fm">__setitem__</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">[</span><span class="n">k</span><span class="p">])</span>
<div class="viewcode-block" id="PropertyDict"><a class="viewcode-back" href="../../proton.html#proton.PropertyDict">[docs]</a><span class="k">class</span> <span class="nc">PropertyDict</span><span class="p">(</span><span class="n">RestrictedKeyDict</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A dictionary that only takes :class:`symbol` types as a key.</span>
<span class="sd"> However, if a string key is provided, it will be silently converted</span>
<span class="sd"> into a symbol key.</span>
<span class="sd"> &gt;&gt;&gt; from proton import symbol, ulong, PropertyDict</span>
<span class="sd"> &gt;&gt;&gt; a = PropertyDict(one=1, two=2)</span>
<span class="sd"> &gt;&gt;&gt; b = PropertyDict({&#39;one&#39;:1, symbol(&#39;two&#39;):2})</span>
<span class="sd"> &gt;&gt;&gt; c = PropertyDict(zip([&#39;one&#39;, symbol(&#39;two&#39;)], [1, 2]))</span>
<span class="sd"> &gt;&gt;&gt; d = PropertyDict([(symbol(&#39;one&#39;), 1), (&#39;two&#39;, 2)])</span>
<span class="sd"> &gt;&gt;&gt; e = PropertyDict(a)</span>
<span class="sd"> &gt;&gt;&gt; a == b == c == d == e</span>
<span class="sd"> True</span>
<span class="sd"> By default, non-string and non-symbol keys cause a ``KeyError`` to be raised:</span>
<span class="sd"> &gt;&gt;&gt; PropertyDict({&#39;one&#39;:1, 2:&#39;two&#39;})</span>
<span class="sd"> ...</span>
<span class="sd"> KeyError: &quot;invalid non-symbol key: &lt;type &#39;int&#39;&gt;: 2&quot;</span>
<span class="sd"> but by setting ``raise_on_error=False``, non-string and non-symbol keys will be ignored:</span>
<span class="sd"> &gt;&gt;&gt; PropertyDict({&#39;one&#39;:1, 2:&#39;two&#39;}, raise_on_error=False)</span>
<span class="sd"> PropertyDict({2: &#39;two&#39;, symbol(u&#39;one&#39;): 1})</span>
<span class="sd"> :param e: Initialization for ``dict``</span>
<span class="sd"> :type e: ``dict`` or ``list`` of ``tuple`` or ``zip`` object</span>
<span class="sd"> :param raise_on_error: If ``True``, will raise an ``KeyError`` if a non-string or non-symbol</span>
<span class="sd"> is encountered as a key in the initialization, or in a subsequent operation which</span>
<span class="sd"> adds such an key. If ``False``, non-strings and non-symbols will be added as keys</span>
<span class="sd"> to the dictionary without an error.</span>
<span class="sd"> :type raise_on_error: ``bool``</span>
<span class="sd"> :param kwargs: Keyword args for initializing a ``dict`` of the form key1=val1, key2=val2, ...</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">PropertyDict</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">_check_is_symbol</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Representation of PropertyDict &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="s1">&#39;PropertyDict(</span><span class="si">%s</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="nb">super</span><span class="p">(</span><span class="n">PropertyDict</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">()</span></div>
<div class="viewcode-block" id="AnnotationDict"><a class="viewcode-back" href="../../proton.html#proton.AnnotationDict">[docs]</a><span class="k">class</span> <span class="nc">AnnotationDict</span><span class="p">(</span><span class="n">RestrictedKeyDict</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A dictionary that only takes :class:`symbol` or :class:`ulong` types</span>
<span class="sd"> as a key. However, if a string key is provided, it will be silently</span>
<span class="sd"> converted into a symbol key.</span>
<span class="sd"> &gt;&gt;&gt; from proton import symbol, ulong, AnnotationDict</span>
<span class="sd"> &gt;&gt;&gt; a = AnnotationDict(one=1, two=2)</span>
<span class="sd"> &gt;&gt;&gt; a[ulong(3)] = &#39;three&#39;</span>
<span class="sd"> &gt;&gt;&gt; b = AnnotationDict({&#39;one&#39;:1, symbol(&#39;two&#39;):2, ulong(3):&#39;three&#39;})</span>
<span class="sd"> &gt;&gt;&gt; c = AnnotationDict(zip([symbol(&#39;one&#39;), &#39;two&#39;, ulong(3)], [1, 2, &#39;three&#39;]))</span>
<span class="sd"> &gt;&gt;&gt; d = AnnotationDict([(&#39;one&#39;, 1), (symbol(&#39;two&#39;), 2), (ulong(3), &#39;three&#39;)])</span>
<span class="sd"> &gt;&gt;&gt; e = AnnotationDict(a)</span>
<span class="sd"> &gt;&gt;&gt; a == b == c == d == e</span>
<span class="sd"> True</span>
<span class="sd"> By default, non-string, non-symbol and non-ulong keys cause a ``KeyError`` to be raised:</span>
<span class="sd"> &gt;&gt;&gt; AnnotationDict({&#39;one&#39;: 1, 2: &#39;two&#39;})</span>
<span class="sd"> ...</span>
<span class="sd"> KeyError: &quot;invalid non-symbol key: &lt;type &#39;int&#39;&gt;: 2&quot;</span>
<span class="sd"> but by setting ``raise_on_error=False``, non-string, non-symbol and non-ulong keys will be ignored:</span>
<span class="sd"> &gt;&gt;&gt; AnnotationDict({&#39;one&#39;: 1, 2: &#39;two&#39;}, raise_on_error=False)</span>
<span class="sd"> AnnotationDict({2: &#39;two&#39;, symbol(u&#39;one&#39;): 1})</span>
<span class="sd"> :param e: Initialization for ``dict``</span>
<span class="sd"> :type e: ``dict`` or ``list`` of ``tuple`` or ``zip`` object</span>
<span class="sd"> :param raise_on_error: If ``True``, will raise an ``KeyError`` if a non-string, non-symbol or</span>
<span class="sd"> non-ulong is encountered as a key in the initialization, or in a subsequent</span>
<span class="sd"> operation which adds such an key. If ``False``, non-strings, non-ulongs and non-symbols</span>
<span class="sd"> will be added as keys to the dictionary without an error.</span>
<span class="sd"> :type raise_on_error: ``bool``</span>
<span class="sd"> :param kwargs: Keyword args for initializing a ``dict`` of the form key1=val1, key2=val2, ...</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">AnnotationDict</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">_check_is_symbol_or_ulong</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Representation of AnnotationDict &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="s1">&#39;AnnotationDict(</span><span class="si">%s</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="nb">super</span><span class="p">(</span><span class="n">AnnotationDict</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">()</span></div>
<div class="viewcode-block" id="SymbolList"><a class="viewcode-back" href="../../proton.html#proton.SymbolList">[docs]</a><span class="k">class</span> <span class="nc">SymbolList</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A list that can only hold :class:`symbol` elements. However, if any string elements</span>
<span class="sd"> are present, they will be converted to symbols.</span>
<span class="sd"> &gt;&gt;&gt; a = SymbolList([&#39;one&#39;, symbol(&#39;two&#39;), &#39;three&#39;])</span>
<span class="sd"> &gt;&gt;&gt; b = SymbolList([symbol(&#39;one&#39;), &#39;two&#39;, symbol(&#39;three&#39;)])</span>
<span class="sd"> &gt;&gt;&gt; c = SymbolList(a)</span>
<span class="sd"> &gt;&gt;&gt; a == b == c</span>
<span class="sd"> True</span>
<span class="sd"> By default, using any key other than a symbol or string will result in a ``TypeError``:</span>
<span class="sd"> &gt;&gt;&gt; SymbolList([&#39;one&#39;, symbol(&#39;two&#39;), 3])</span>
<span class="sd"> ...</span>
<span class="sd"> TypeError: Non-symbol type &lt;class &#39;int&#39;&gt;: 3</span>
<span class="sd"> but by setting ``raise_on_error=False``, non-symbol and non-string keys will be ignored:</span>
<span class="sd"> &gt;&gt;&gt; SymbolList([&#39;one&#39;, symbol(&#39;two&#39;), 3], raise_on_error=False)</span>
<span class="sd"> SymbolList([symbol(u&#39;one&#39;), symbol(u&#39;two&#39;), 3])</span>
<span class="sd"> :param t: Initialization for list</span>
<span class="sd"> :type t: ``list``</span>
<span class="sd"> :param raise_on_error: If ``True``, will raise an ``TypeError`` if a non-string or non-symbol is</span>
<span class="sd"> encountered in the initialization list, or in a subsequent operation which adds such</span>
<span class="sd"> an element. If ``False``, non-strings and non-symbols will be added to the list without</span>
<span class="sd"> an error.</span>
<span class="sd"> :type raise_on_error: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">SymbolList</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">raise_on_error</span> <span class="o">=</span> <span class="n">raise_on_error</span>
<span class="k">if</span> <span class="n">t</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_check_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Check all items in list are :class:`symbol`s (or are converted to symbols). &quot;&quot;&quot;</span>
<span class="n">l</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">if</span> <span class="n">t</span><span class="p">:</span>
<span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">t</span><span class="p">:</span>
<span class="n">l</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_check_is_symbol</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">raise_on_error</span><span class="p">))</span>
<span class="k">return</span> <span class="n">l</span>
<div class="viewcode-block" id="SymbolList.append"><a class="viewcode-back" href="../../proton.html#proton.SymbolList.append">[docs]</a> <span class="k">def</span> <span class="nf">append</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">v</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Add a single value v to the end of the list &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">SymbolList</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_check_is_symbol</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">raise_on_error</span><span class="p">))</span></div>
<div class="viewcode-block" id="SymbolList.extend"><a class="viewcode-back" href="../../proton.html#proton.SymbolList.extend">[docs]</a> <span class="k">def</span> <span class="nf">extend</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Add all elements of an iterable t to the end of the list &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">SymbolList</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_check_list</span><span class="p">(</span><span class="n">t</span><span class="p">))</span></div>
<div class="viewcode-block" id="SymbolList.insert"><a class="viewcode-back" href="../../proton.html#proton.SymbolList.insert">[docs]</a> <span class="k">def</span> <span class="nf">insert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">v</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Insert a value v at index i &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">SymbolList</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">_check_is_symbol</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">raise_on_error</span><span class="p">))</span></div>
<span class="k">def</span> <span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Handles list1 + list2 &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">SymbolList</span><span class="p">(</span><span class="nb">super</span><span class="p">(</span><span class="n">SymbolList</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_check_list</span><span class="p">(</span><span class="n">t</span><span class="p">)),</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">raise_on_error</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__iadd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Handles list1 += list2 &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">SymbolList</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__iadd__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_check_list</span><span class="p">(</span><span class="n">t</span><span class="p">))</span>
<span class="k">def</span> <span class="fm">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Handles list[i] = v &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">SymbolList</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__setitem__</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">_check_is_symbol</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">raise_on_error</span><span class="p">))</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Representation of SymbolList &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="s1">&#39;SymbolList(</span><span class="si">%s</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="nb">super</span><span class="p">(</span><span class="n">SymbolList</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">()</span></div>
<div class="viewcode-block" id="Data"><a class="viewcode-back" href="../../proton.html#proton.Data">[docs]</a><span class="k">class</span> <span class="nc">Data</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The :class:`Data` class provides an interface for decoding, extracting,</span>
<span class="sd"> creating, and encoding arbitrary AMQP data. A :class:`Data` object</span>
<span class="sd"> contains a tree of AMQP values. Leaf nodes in this tree correspond</span>
<span class="sd"> to scalars in the AMQP type system such as :const:`ints &lt;INT&gt;` or</span>
<span class="sd"> :const:`strings &lt;STRING&gt;`. Non-leaf nodes in this tree correspond to</span>
<span class="sd"> compound values in the AMQP type system such as :const:`lists &lt;LIST&gt;`,</span>
<span class="sd"> :const:`maps &lt;MAP&gt;`, :const:`arrays &lt;ARRAY&gt;`, or :const:`described values &lt;DESCRIBED&gt;`.</span>
<span class="sd"> The root node of the tree is the :class:`Data` object itself and can have</span>
<span class="sd"> an arbitrary number of children.</span>
<span class="sd"> A :class:`Data` object maintains the notion of the current sibling node</span>
<span class="sd"> and a current parent node. Siblings are ordered within their parent.</span>
<span class="sd"> Values are accessed and/or added by using the :meth:`next`, :meth:`prev`,</span>
<span class="sd"> :meth:`enter`, and :meth:`exit` methods to navigate to the desired location in</span>
<span class="sd"> the tree and using the supplied variety of ``put_*`` / ``get_*`` methods to</span>
<span class="sd"> access or add a value of the desired type.</span>
<span class="sd"> The ``put_*`` methods will always add a value *after* the current node</span>
<span class="sd"> in the tree. If the current node has a next sibling the ``put_*`` method</span>
<span class="sd"> will overwrite the value on this node. If there is no current node</span>
<span class="sd"> or the current node has no next sibling then one will be added. The</span>
<span class="sd"> ``put_*`` methods always set the added/modified node to the current</span>
<span class="sd"> node. The ``get_*`` methods read the value of the current node and do</span>
<span class="sd"> not change which node is current.</span>
<span class="sd"> The following types of scalar values are supported:</span>
<span class="sd"> * :const:`NULL`</span>
<span class="sd"> * :const:`BOOL`</span>
<span class="sd"> * :const:`UBYTE`</span>
<span class="sd"> * :const:`USHORT`</span>
<span class="sd"> * :const:`SHORT`</span>
<span class="sd"> * :const:`UINT`</span>
<span class="sd"> * :const:`INT`</span>
<span class="sd"> * :const:`ULONG`</span>
<span class="sd"> * :const:`LONG`</span>
<span class="sd"> * :const:`FLOAT`</span>
<span class="sd"> * :const:`DOUBLE`</span>
<span class="sd"> * :const:`BINARY`</span>
<span class="sd"> * :const:`STRING`</span>
<span class="sd"> * :const:`SYMBOL`</span>
<span class="sd"> The following types of compound values are supported:</span>
<span class="sd"> * :const:`DESCRIBED`</span>
<span class="sd"> * :const:`ARRAY`</span>
<span class="sd"> * :const:`LIST`</span>
<span class="sd"> * :const:`MAP`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">NULL</span> <span class="o">=</span> <span class="n">PN_NULL</span><span class="p">;</span> <span class="s2">&quot;A null value.&quot;</span>
<span class="n">BOOL</span> <span class="o">=</span> <span class="n">PN_BOOL</span><span class="p">;</span> <span class="s2">&quot;A boolean value.&quot;</span>
<span class="n">UBYTE</span> <span class="o">=</span> <span class="n">PN_UBYTE</span><span class="p">;</span> <span class="s2">&quot;An unsigned byte value.&quot;</span>
<span class="n">BYTE</span> <span class="o">=</span> <span class="n">PN_BYTE</span><span class="p">;</span> <span class="s2">&quot;A signed byte value.&quot;</span>
<span class="n">USHORT</span> <span class="o">=</span> <span class="n">PN_USHORT</span><span class="p">;</span> <span class="s2">&quot;An unsigned short value.&quot;</span>
<span class="n">SHORT</span> <span class="o">=</span> <span class="n">PN_SHORT</span><span class="p">;</span> <span class="s2">&quot;A short value.&quot;</span>
<span class="n">UINT</span> <span class="o">=</span> <span class="n">PN_UINT</span><span class="p">;</span> <span class="s2">&quot;An unsigned int value.&quot;</span>
<span class="n">INT</span> <span class="o">=</span> <span class="n">PN_INT</span><span class="p">;</span> <span class="s2">&quot;A signed int value.&quot;</span>
<span class="n">CHAR</span> <span class="o">=</span> <span class="n">PN_CHAR</span><span class="p">;</span> <span class="s2">&quot;A character value.&quot;</span>
<span class="n">ULONG</span> <span class="o">=</span> <span class="n">PN_ULONG</span><span class="p">;</span> <span class="s2">&quot;An unsigned long value.&quot;</span>
<span class="n">LONG</span> <span class="o">=</span> <span class="n">PN_LONG</span><span class="p">;</span> <span class="s2">&quot;A signed long value.&quot;</span>
<span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">PN_TIMESTAMP</span><span class="p">;</span> <span class="s2">&quot;A timestamp value.&quot;</span>
<span class="n">FLOAT</span> <span class="o">=</span> <span class="n">PN_FLOAT</span><span class="p">;</span> <span class="s2">&quot;A float value.&quot;</span>
<span class="n">DOUBLE</span> <span class="o">=</span> <span class="n">PN_DOUBLE</span><span class="p">;</span> <span class="s2">&quot;A double value.&quot;</span>
<span class="n">DECIMAL32</span> <span class="o">=</span> <span class="n">PN_DECIMAL32</span><span class="p">;</span> <span class="s2">&quot;A DECIMAL32 value.&quot;</span>
<span class="n">DECIMAL64</span> <span class="o">=</span> <span class="n">PN_DECIMAL64</span><span class="p">;</span> <span class="s2">&quot;A DECIMAL64 value.&quot;</span>
<span class="n">DECIMAL128</span> <span class="o">=</span> <span class="n">PN_DECIMAL128</span><span class="p">;</span> <span class="s2">&quot;A DECIMAL128 value.&quot;</span>
<span class="n">UUID</span> <span class="o">=</span> <span class="n">PN_UUID</span><span class="p">;</span> <span class="s2">&quot;A UUID value.&quot;</span>
<span class="n">BINARY</span> <span class="o">=</span> <span class="n">PN_BINARY</span><span class="p">;</span> <span class="s2">&quot;A binary string.&quot;</span>
<span class="n">STRING</span> <span class="o">=</span> <span class="n">PN_STRING</span><span class="p">;</span> <span class="s2">&quot;A unicode string.&quot;</span>
<span class="n">SYMBOL</span> <span class="o">=</span> <span class="n">PN_SYMBOL</span><span class="p">;</span> <span class="s2">&quot;A symbolic string.&quot;</span>
<span class="n">DESCRIBED</span> <span class="o">=</span> <span class="n">PN_DESCRIBED</span><span class="p">;</span> <span class="s2">&quot;A described value.&quot;</span>
<span class="n">ARRAY</span> <span class="o">=</span> <span class="n">PN_ARRAY</span><span class="p">;</span> <span class="s2">&quot;An array value.&quot;</span>
<span class="n">LIST</span> <span class="o">=</span> <span class="n">PN_LIST</span><span class="p">;</span> <span class="s2">&quot;A list value.&quot;</span>
<span class="n">MAP</span> <span class="o">=</span> <span class="n">PN_MAP</span><span class="p">;</span> <span class="s2">&quot;A map value.&quot;</span>
<span class="n">type_names</span> <span class="o">=</span> <span class="p">{</span>
<span class="n">NULL</span><span class="p">:</span> <span class="s2">&quot;null&quot;</span><span class="p">,</span>
<span class="n">BOOL</span><span class="p">:</span> <span class="s2">&quot;bool&quot;</span><span class="p">,</span>
<span class="n">BYTE</span><span class="p">:</span> <span class="s2">&quot;byte&quot;</span><span class="p">,</span>
<span class="n">UBYTE</span><span class="p">:</span> <span class="s2">&quot;ubyte&quot;</span><span class="p">,</span>
<span class="n">SHORT</span><span class="p">:</span> <span class="s2">&quot;short&quot;</span><span class="p">,</span>
<span class="n">USHORT</span><span class="p">:</span> <span class="s2">&quot;ushort&quot;</span><span class="p">,</span>
<span class="n">INT</span><span class="p">:</span> <span class="s2">&quot;int&quot;</span><span class="p">,</span>
<span class="n">UINT</span><span class="p">:</span> <span class="s2">&quot;uint&quot;</span><span class="p">,</span>
<span class="n">CHAR</span><span class="p">:</span> <span class="s2">&quot;char&quot;</span><span class="p">,</span>
<span class="n">LONG</span><span class="p">:</span> <span class="s2">&quot;long&quot;</span><span class="p">,</span>
<span class="n">ULONG</span><span class="p">:</span> <span class="s2">&quot;ulong&quot;</span><span class="p">,</span>
<span class="n">TIMESTAMP</span><span class="p">:</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span>
<span class="n">FLOAT</span><span class="p">:</span> <span class="s2">&quot;float&quot;</span><span class="p">,</span>
<span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">&quot;double&quot;</span><span class="p">,</span>
<span class="n">DECIMAL32</span><span class="p">:</span> <span class="s2">&quot;decimal32&quot;</span><span class="p">,</span>
<span class="n">DECIMAL64</span><span class="p">:</span> <span class="s2">&quot;decimal64&quot;</span><span class="p">,</span>
<span class="n">DECIMAL128</span><span class="p">:</span> <span class="s2">&quot;decimal128&quot;</span><span class="p">,</span>
<span class="n">UUID</span><span class="p">:</span> <span class="s2">&quot;uuid&quot;</span><span class="p">,</span>
<span class="n">BINARY</span><span class="p">:</span> <span class="s2">&quot;binary&quot;</span><span class="p">,</span>
<span class="n">STRING</span><span class="p">:</span> <span class="s2">&quot;string&quot;</span><span class="p">,</span>
<span class="n">SYMBOL</span><span class="p">:</span> <span class="s2">&quot;symbol&quot;</span><span class="p">,</span>
<span class="n">DESCRIBED</span><span class="p">:</span> <span class="s2">&quot;described&quot;</span><span class="p">,</span>
<span class="n">ARRAY</span><span class="p">:</span> <span class="s2">&quot;array&quot;</span><span class="p">,</span>
<span class="n">LIST</span><span class="p">:</span> <span class="s2">&quot;list&quot;</span><span class="p">,</span>
<span class="n">MAP</span><span class="p">:</span> <span class="s2">&quot;map&quot;</span>
<span class="p">}</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A map which uses the enumerated type as a key to get a text name for the type.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<div class="viewcode-block" id="Data.type_name"><a class="viewcode-back" href="../../proton.html#proton.Data.type_name">[docs]</a> <span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">type_name</span><span class="p">(</span><span class="n">amqptype</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return a string name for an AMQP type.</span>
<span class="sd"> </span>
<span class="sd"> :param type: Numeric Proton AMQP type (`enum pn_type_t`)</span>
<span class="sd"> :type type: integer</span>
<span class="sd"> :rtype: String describing the AMQP type with numeric value `amqptype`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">Data</span><span class="o">.</span><span class="n">type_names</span><span class="p">[</span><span class="n">amqptype</span><span class="p">]</span></div>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">capacity</span><span class="o">=</span><span class="mi">16</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">capacity</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="n">long</span><span class="p">)):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o">=</span> <span class="n">pn_data</span><span class="p">(</span><span class="n">capacity</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_free</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o">=</span> <span class="n">capacity</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_free</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_free</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_data&quot;</span><span class="p">):</span>
<span class="n">pn_data_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span>
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span>
<span class="k">def</span> <span class="nf">_check</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">err</span><span class="p">):</span>
<span class="k">if</span> <span class="n">err</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">exc</span> <span class="o">=</span> <span class="n">EXCEPTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">err</span><span class="p">,</span> <span class="n">DataException</span><span class="p">)</span>
<span class="k">raise</span> <span class="n">exc</span><span class="p">(</span><span class="s2">&quot;[</span><span class="si">%s</span><span class="s2">]: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">err</span><span class="p">,</span> <span class="n">pn_error_text</span><span class="p">(</span><span class="n">pn_data_error</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))))</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">err</span>
<div class="viewcode-block" id="Data.clear"><a class="viewcode-back" href="../../proton.html#proton.Data.clear">[docs]</a> <span class="k">def</span> <span class="nf">clear</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Clears the data object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">pn_data_clear</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.rewind"><a class="viewcode-back" href="../../proton.html#proton.Data.rewind">[docs]</a> <span class="k">def</span> <span class="nf">rewind</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Clears current node and sets the parent to the root node. Clearing the</span>
<span class="sd"> current node sets it _before_ the first node, calling next() will advance to</span>
<span class="sd"> the first node.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
<span class="n">pn_data_rewind</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.next"><a class="viewcode-back" href="../../proton.html#proton.Data.next">[docs]</a> <span class="k">def</span> <span class="nf">next</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Advances the current node to its next sibling and returns its</span>
<span class="sd"> type. If there is no next sibling the current node remains</span>
<span class="sd"> unchanged and ``None`` is returned.</span>
<span class="sd"> :return: Node type or ``None``</span>
<span class="sd"> :rtype: ``int`` or ``None``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">found</span> <span class="o">=</span> <span class="n">pn_data_next</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span>
<span class="k">if</span> <span class="n">found</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="Data.prev"><a class="viewcode-back" href="../../proton.html#proton.Data.prev">[docs]</a> <span class="k">def</span> <span class="nf">prev</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Advances the current node to its previous sibling and returns its</span>
<span class="sd"> type. If there is no previous sibling the current node remains</span>
<span class="sd"> unchanged and ``None`` is returned.</span>
<span class="sd"> :return: Node type or ``None``</span>
<span class="sd"> :rtype: ``int`` or ``None``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">found</span> <span class="o">=</span> <span class="n">pn_data_prev</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span>
<span class="k">if</span> <span class="n">found</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="Data.enter"><a class="viewcode-back" href="../../proton.html#proton.Data.enter">[docs]</a> <span class="k">def</span> <span class="nf">enter</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Sets the parent node to the current node and clears the current node.</span>
<span class="sd"> Clearing the current node sets it *before* the first child,</span>
<span class="sd"> call :meth:`next` to advance to the first child.</span>
<span class="sd"> :return: ``True`` iff the pointers to the current/parent nodes are changed,</span>
<span class="sd"> ``False`` otherwise.</span>
<span class="sd"> :rtype: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_data_enter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.exit"><a class="viewcode-back" href="../../proton.html#proton.Data.exit">[docs]</a> <span class="k">def</span> <span class="nf">exit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Sets the current node to the parent node and the parent node to</span>
<span class="sd"> its own parent.</span>
<span class="sd"> :return: ``True`` iff the pointers to the current/parent nodes are changed,</span>
<span class="sd"> ``False`` otherwise.</span>
<span class="sd"> :rtype: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_data_exit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">lookup</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">return</span> <span class="n">pn_data_lookup</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
<div class="viewcode-block" id="Data.narrow"><a class="viewcode-back" href="../../proton.html#proton.Data.narrow">[docs]</a> <span class="k">def</span> <span class="nf">narrow</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Modify this :class:`Data` object to behave as if the current node is the</span>
<span class="sd"> root node of the tree. This impacts the behavior of :meth:`rewind`,</span>
<span class="sd"> :meth:`next`, :meth:`prev`, and anything else that depends on the</span>
<span class="sd"> navigational state of the :class:`Data` object. Use :meth:`widen`</span>
<span class="sd"> to reverse the effect of this operation.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">pn_data_narrow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.widen"><a class="viewcode-back" href="../../proton.html#proton.Data.widen">[docs]</a> <span class="k">def</span> <span class="nf">widen</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Reverse the effect of :meth:`narrow`. &quot;&quot;&quot;</span>
<span class="n">pn_data_widen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.type"><a class="viewcode-back" href="../../proton.html#proton.Data.type">[docs]</a> <span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns the type of the current node. Returns `None` if there is no</span>
<span class="sd"> current node.</span>
<span class="sd"> :return: The current node type enumeration.</span>
<span class="sd"> :rtype: ``int`` or ``None``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">dtype</span> <span class="o">=</span> <span class="n">pn_data_type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span>
<span class="k">if</span> <span class="n">dtype</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">dtype</span></div>
<div class="viewcode-block" id="Data.encoded_size"><a class="viewcode-back" href="../../proton.html#proton.Data.encoded_size">[docs]</a> <span class="k">def</span> <span class="nf">encoded_size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns the size in bytes needed to encode the data in AMQP format.</span>
<span class="sd"> :return: The size of the encoded data or an error code if data is invalid.</span>
<span class="sd"> :rtype: ``int``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_data_encoded_size</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.encode"><a class="viewcode-back" href="../../proton.html#proton.Data.encode">[docs]</a> <span class="k">def</span> <span class="nf">encode</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns a representation of the data encoded in AMQP format.</span>
<span class="sd"> :return: The size of the encoded data</span>
<span class="sd"> :rtype: ``int``</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">size</span> <span class="o">=</span> <span class="mi">1024</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">cd</span><span class="p">,</span> <span class="n">enc</span> <span class="o">=</span> <span class="n">pn_data_encode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
<span class="k">if</span> <span class="n">cd</span> <span class="o">==</span> <span class="n">PN_OVERFLOW</span><span class="p">:</span>
<span class="n">size</span> <span class="o">*=</span> <span class="mi">2</span>
<span class="k">elif</span> <span class="n">cd</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">return</span> <span class="n">enc</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">cd</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.decode"><a class="viewcode-back" href="../../proton.html#proton.Data.decode">[docs]</a> <span class="k">def</span> <span class="nf">decode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">encoded</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Decodes the first value from supplied AMQP data and returns the</span>
<span class="sd"> number of bytes consumed.</span>
<span class="sd"> :type encoded: binary</span>
<span class="sd"> :param encoded: AMQP encoded binary data</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_decode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">encoded</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_list"><a class="viewcode-back" href="../../proton.html#proton.Data.put_list">[docs]</a> <span class="k">def</span> <span class="nf">put_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a list value. Elements may be filled by entering the list</span>
<span class="sd"> node and putting element values.</span>
<span class="sd"> &gt;&gt;&gt; data = Data()</span>
<span class="sd"> &gt;&gt;&gt; data.put_list()</span>
<span class="sd"> &gt;&gt;&gt; data.enter()</span>
<span class="sd"> &gt;&gt;&gt; data.put_int(1)</span>
<span class="sd"> &gt;&gt;&gt; data.put_int(2)</span>
<span class="sd"> &gt;&gt;&gt; data.put_int(3)</span>
<span class="sd"> &gt;&gt;&gt; data.exit()</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_map"><a class="viewcode-back" href="../../proton.html#proton.Data.put_map">[docs]</a> <span class="k">def</span> <span class="nf">put_map</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a map value. Elements may be filled by entering the map node</span>
<span class="sd"> and putting alternating key value pairs.</span>
<span class="sd"> &gt;&gt;&gt; data = Data()</span>
<span class="sd"> &gt;&gt;&gt; data.put_map()</span>
<span class="sd"> &gt;&gt;&gt; data.enter()</span>
<span class="sd"> &gt;&gt;&gt; data.put_string(&quot;key&quot;)</span>
<span class="sd"> &gt;&gt;&gt; data.put_string(&quot;value&quot;)</span>
<span class="sd"> &gt;&gt;&gt; data.exit()</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_map</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_array"><a class="viewcode-back" href="../../proton.html#proton.Data.put_array">[docs]</a> <span class="k">def</span> <span class="nf">put_array</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">described</span><span class="p">,</span> <span class="n">element_type</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts an array value. Elements may be filled by entering the array</span>
<span class="sd"> node and putting the element values. The values must all be of the</span>
<span class="sd"> specified array element type. If an array is described then the</span>
<span class="sd"> first child value of the array is the descriptor and may be of any</span>
<span class="sd"> type.</span>
<span class="sd"> &gt;&gt;&gt; data = Data()</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &gt;&gt;&gt; data.put_array(False, Data.INT)</span>
<span class="sd"> &gt;&gt;&gt; data.enter()</span>
<span class="sd"> &gt;&gt;&gt; data.put_int(1)</span>
<span class="sd"> &gt;&gt;&gt; data.put_int(2)</span>
<span class="sd"> &gt;&gt;&gt; data.put_int(3)</span>
<span class="sd"> &gt;&gt;&gt; data.exit()</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &gt;&gt;&gt; data.put_array(True, Data.DOUBLE)</span>
<span class="sd"> &gt;&gt;&gt; data.enter()</span>
<span class="sd"> &gt;&gt;&gt; data.put_symbol(&quot;array-descriptor&quot;)</span>
<span class="sd"> &gt;&gt;&gt; data.put_double(1.1)</span>
<span class="sd"> &gt;&gt;&gt; data.put_double(1.2)</span>
<span class="sd"> &gt;&gt;&gt; data.put_double(1.3)</span>
<span class="sd"> &gt;&gt;&gt; data.exit()</span>
<span class="sd"> :type described: bool</span>
<span class="sd"> :param described: specifies whether the array is described</span>
<span class="sd"> :type element_type: int</span>
<span class="sd"> :param element_type: the type of the array elements</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_array</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">described</span><span class="p">,</span> <span class="n">element_type</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_described"><a class="viewcode-back" href="../../proton.html#proton.Data.put_described">[docs]</a> <span class="k">def</span> <span class="nf">put_described</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a described value. A described node has two children, the</span>
<span class="sd"> descriptor and the value. These are specified by entering the node</span>
<span class="sd"> and putting the desired values.</span>
<span class="sd"> &gt;&gt;&gt; data = Data()</span>
<span class="sd"> &gt;&gt;&gt; data.put_described()</span>
<span class="sd"> &gt;&gt;&gt; data.enter()</span>
<span class="sd"> &gt;&gt;&gt; data.put_symbol(&quot;value-descriptor&quot;)</span>
<span class="sd"> &gt;&gt;&gt; data.put_string(&quot;the value&quot;)</span>
<span class="sd"> &gt;&gt;&gt; data.exit()</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_described</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_null"><a class="viewcode-back" href="../../proton.html#proton.Data.put_null">[docs]</a> <span class="k">def</span> <span class="nf">put_null</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a null value.</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_null</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_bool"><a class="viewcode-back" href="../../proton.html#proton.Data.put_bool">[docs]</a> <span class="k">def</span> <span class="nf">put_bool</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a boolean value.</span>
<span class="sd"> :param b: a boolean value</span>
<span class="sd"> :type b: ``bool`` or ``int``</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_bool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">b</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_ubyte"><a class="viewcode-back" href="../../proton.html#proton.Data.put_ubyte">[docs]</a> <span class="k">def</span> <span class="nf">put_ubyte</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ub</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts an unsigned byte value.</span>
<span class="sd"> :param ub: an integral value in the range :math:`0` to :math:`2^8 - 1` inclusive</span>
<span class="sd"> :type ub: ``int``, :class:`ubyte`</span>
<span class="sd"> :raise: * ``AssertionError`` if parameter is out of the range :math:`0` to :math:`2^8 - 1` inclusive.</span>
<span class="sd"> * :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_ubyte</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">ub</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_byte"><a class="viewcode-back" href="../../proton.html#proton.Data.put_byte">[docs]</a> <span class="k">def</span> <span class="nf">put_byte</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a signed byte value.</span>
<span class="sd"> :param b: an integral value in the range :math:`-(2^7)` to :math:`2^7 - 1` inclusive.</span>
<span class="sd"> :type b: ``int``, :class:`byte`</span>
<span class="sd"> :raise: * ``AssertionError`` if parameter is out of the range :math:`-(2^7)` to :math:`2^7 - 1` inclusive.</span>
<span class="sd"> * :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_byte</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">b</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_ushort"><a class="viewcode-back" href="../../proton.html#proton.Data.put_ushort">[docs]</a> <span class="k">def</span> <span class="nf">put_ushort</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">us</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts an unsigned short value.</span>
<span class="sd"> :param us: an integral value in the range :math:`0` to :math:`2^{16} - 1` inclusive.</span>
<span class="sd"> :type us: ``int``, :class:`ushort`</span>
<span class="sd"> :raise: * ``AssertionError`` if parameter is out of the range :math:`0` to :math:`2^{16} - 1` inclusive.</span>
<span class="sd"> * :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_ushort</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">us</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_short"><a class="viewcode-back" href="../../proton.html#proton.Data.put_short">[docs]</a> <span class="k">def</span> <span class="nf">put_short</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">s</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a signed short value.</span>
<span class="sd"> :param s: an integral value in the range :math:`-(2^{15})` to :math:`2^{15} - 1` inclusive.</span>
<span class="sd"> :type s: ``int``, :class:`short`</span>
<span class="sd"> :raise: * ``AssertionError`` if parameter is out of the range :math:`-(2^{15})` to :math:`2^{15} - 1` inclusive.</span>
<span class="sd"> * :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_short</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">s</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_uint"><a class="viewcode-back" href="../../proton.html#proton.Data.put_uint">[docs]</a> <span class="k">def</span> <span class="nf">put_uint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ui</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts an unsigned int value.</span>
<span class="sd"> :param ui: an integral value in the range :math:`0` to :math:`2^{32} - 1` inclusive.</span>
<span class="sd"> :type ui: ``int``, :class:`uint`</span>
<span class="sd"> :raise: * ``AssertionError`` if parameter is out of the range :math:`0` to :math:`2^{32} - 1` inclusive. </span>
<span class="sd"> * :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_uint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">ui</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_int"><a class="viewcode-back" href="../../proton.html#proton.Data.put_int">[docs]</a> <span class="k">def</span> <span class="nf">put_int</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a signed int value.</span>
<span class="sd"> :param i: an integral value in the range :math:`-(2^{31})` to :math:`2^{31} - 1` inclusive.</span>
<span class="sd"> :type i: ``int``, :class:`int32`</span>
<span class="sd"> :raise: * ``AssertionError`` if parameter is out of the range :math:`-(2^{31})` to :math:`2^{31} - 1` inclusive.</span>
<span class="sd"> * :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">i</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_char"><a class="viewcode-back" href="../../proton.html#proton.Data.put_char">[docs]</a> <span class="k">def</span> <span class="nf">put_char</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">c</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a char value.</span>
<span class="sd"> :param c: a single character</span>
<span class="sd"> :type c: ``str``, :class:`char`</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_char</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="nb">ord</span><span class="p">(</span><span class="n">c</span><span class="p">)))</span></div>
<div class="viewcode-block" id="Data.put_ulong"><a class="viewcode-back" href="../../proton.html#proton.Data.put_ulong">[docs]</a> <span class="k">def</span> <span class="nf">put_ulong</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ul</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts an unsigned long value.</span>
<span class="sd"> :param ul: an integral value in the range :math:`0` to :math:`2^{64} - 1` inclusive.</span>
<span class="sd"> :type ul: ``int``, ``long``, :class:`ulong`</span>
<span class="sd"> :raise: * ``AssertionError`` if parameter is out of the range :math:`0` to :math:`2^{64} - 1` inclusive.</span>
<span class="sd"> * :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_ulong</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">ul</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_long"><a class="viewcode-back" href="../../proton.html#proton.Data.put_long">[docs]</a> <span class="k">def</span> <span class="nf">put_long</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">l</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a signed long value.</span>
<span class="sd"> :param l: an integral value in the range :math:`-(2^{63})` to :math:`2^{63} - 1` inclusive.</span>
<span class="sd"> :type ul: ``int``, ``long``</span>
<span class="sd"> :raise: * ``AssertionError`` if parameter is out of the range :math:`-(2^{63})` to :math:`2^{63} - 1` inclusive.</span>
<span class="sd"> * :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_long</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">l</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_timestamp"><a class="viewcode-back" href="../../proton.html#proton.Data.put_timestamp">[docs]</a> <span class="k">def</span> <span class="nf">put_timestamp</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a timestamp value.</span>
<span class="sd"> :param t: a positive integral value</span>
<span class="sd"> :type t: ``int``, :class:`timestamp`</span>
<span class="sd"> :raise: * ``AssertionError`` if parameter is negative.</span>
<span class="sd"> * :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_timestamp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">t</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_float"><a class="viewcode-back" href="../../proton.html#proton.Data.put_float">[docs]</a> <span class="k">def</span> <span class="nf">put_float</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a float value.</span>
<span class="sd"> :param f: a floating point value</span>
<span class="sd"> :type f: ``float``, :class:`float32`</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">f</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_double"><a class="viewcode-back" href="../../proton.html#proton.Data.put_double">[docs]</a> <span class="k">def</span> <span class="nf">put_double</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a double value.</span>
<span class="sd"> :param d: a floating point value.</span>
<span class="sd"> :type d: ``double``</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_double</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">d</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_decimal32"><a class="viewcode-back" href="../../proton.html#proton.Data.put_decimal32">[docs]</a> <span class="k">def</span> <span class="nf">put_decimal32</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a decimal32 value.</span>
<span class="sd"> :param d: a decimal32 number encoded in an 32-bit integral value.</span>
<span class="sd"> :type d: ``int``, :class:`decimal32`</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_decimal32</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">d</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_decimal64"><a class="viewcode-back" href="../../proton.html#proton.Data.put_decimal64">[docs]</a> <span class="k">def</span> <span class="nf">put_decimal64</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a decimal64 value.</span>
<span class="sd"> :param d: a decimal64 number encoded in an 32-bit integral value.</span>
<span class="sd"> :type d: ``int``, ``long``, :class:`decimal64`</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_decimal64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">d</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_decimal128"><a class="viewcode-back" href="../../proton.html#proton.Data.put_decimal128">[docs]</a> <span class="k">def</span> <span class="nf">put_decimal128</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a decimal128 value.</span>
<span class="sd"> :param d: a decimal128 value encoded in a 16-byte binary value.</span>
<span class="sd"> :type d: ``bytes``, :class:`decimal128`</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_decimal128</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">d</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_uuid"><a class="viewcode-back" href="../../proton.html#proton.Data.put_uuid">[docs]</a> <span class="k">def</span> <span class="nf">put_uuid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">u</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a UUID value.</span>
<span class="sd"> :param u: a uuid value.</span>
<span class="sd"> :type u: ``uuid.UUID``</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_uuid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">u</span><span class="o">.</span><span class="n">bytes</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_binary"><a class="viewcode-back" href="../../proton.html#proton.Data.put_binary">[docs]</a> <span class="k">def</span> <span class="nf">put_binary</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a binary value.</span>
<span class="sd"> :param b: a binary value</span>
<span class="sd"> :type b: ``bytes``</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_binary</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">b</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_memoryview"><a class="viewcode-back" href="../../proton.html#proton.Data.put_memoryview">[docs]</a> <span class="k">def</span> <span class="nf">put_memoryview</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mv</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Put a Python memoryview object as an AMQP binary value.</span>
<span class="sd"> :param mv: A Python memoryview object</span>
<span class="sd"> :type mv: ``memoryview``</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_binary</span><span class="p">(</span><span class="n">mv</span><span class="o">.</span><span class="n">tobytes</span><span class="p">())</span></div>
<div class="viewcode-block" id="Data.put_buffer"><a class="viewcode-back" href="../../proton.html#proton.Data.put_buffer">[docs]</a> <span class="k">def</span> <span class="nf">put_buffer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">buff</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Put a Python buffer object as an AMQP binary value.</span>
<span class="sd"> :param buff: A Python buffer object (**CHECK THIS**)</span>
<span class="sd"> :type buff: Any object supporting the Python buffer interface.</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_binary</span><span class="p">(</span><span class="nb">bytes</span><span class="p">(</span><span class="n">buff</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.put_string"><a class="viewcode-back" href="../../proton.html#proton.Data.put_string">[docs]</a> <span class="k">def</span> <span class="nf">put_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">s</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a unicode value.</span>
<span class="sd"> :param s: a unicode string</span>
<span class="sd"> :type s: ``str`` (Python 3.x) or ``unicode`` (Python 2.x)</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">s</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">&quot;utf8&quot;</span><span class="p">)))</span></div>
<div class="viewcode-block" id="Data.put_symbol"><a class="viewcode-back" href="../../proton.html#proton.Data.put_symbol">[docs]</a> <span class="k">def</span> <span class="nf">put_symbol</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">s</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Puts a symbolic value.</span>
<span class="sd"> :param s: the symbol name</span>
<span class="sd"> :type s: string, :class:`symbol`</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_put_symbol</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">s</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;ascii&#39;</span><span class="p">)))</span></div>
<div class="viewcode-block" id="Data.get_list"><a class="viewcode-back" href="../../proton.html#proton.Data.get_list">[docs]</a> <span class="k">def</span> <span class="nf">get_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> If the current node is a list, return the number of elements,</span>
<span class="sd"> otherwise return 0. List elements can be accessed by entering</span>
<span class="sd"> the list.</span>
<span class="sd"> &gt;&gt;&gt; count = data.get_list()</span>
<span class="sd"> &gt;&gt;&gt; data.enter()</span>
<span class="sd"> &gt;&gt;&gt; for i in range(count):</span>
<span class="sd"> ... type = data.next()</span>
<span class="sd"> ... if type == Data.STRING:</span>
<span class="sd"> ... print data.get_string()</span>
<span class="sd"> ... elif type == ...:</span>
<span class="sd"> ... ...</span>
<span class="sd"> &gt;&gt;&gt; data.exit()</span>
<span class="sd"> :return: the number of child elements of a list node</span>
<span class="sd"> :rtype: ``int``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_data_get_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.get_map"><a class="viewcode-back" href="../../proton.html#proton.Data.get_map">[docs]</a> <span class="k">def</span> <span class="nf">get_map</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> If the current node is a map, return the number of child elements,</span>
<span class="sd"> otherwise return 0. Key value pairs can be accessed by entering</span>
<span class="sd"> the map.</span>
<span class="sd"> &gt;&gt;&gt; count = data.get_map()</span>
<span class="sd"> &gt;&gt;&gt; data.enter()</span>
<span class="sd"> &gt;&gt;&gt; for i in range(count/2):</span>
<span class="sd"> ... type = data.next()</span>
<span class="sd"> ... if type == Data.STRING:</span>
<span class="sd"> ... print data.get_string()</span>
<span class="sd"> ... elif type == ...:</span>
<span class="sd"> ... ...</span>
<span class="sd"> &gt;&gt;&gt; data.exit()</span>
<span class="sd"> :return: the number of child elements of a map node</span>
<span class="sd"> :rtype: ``int``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_data_get_map</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.get_array"><a class="viewcode-back" href="../../proton.html#proton.Data.get_array">[docs]</a> <span class="k">def</span> <span class="nf">get_array</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> If the current node is an array, return a tuple of the element</span>
<span class="sd"> count, a boolean indicating whether the array is described, and</span>
<span class="sd"> the type of each element, otherwise return ``None``. Array</span>
<span class="sd"> data can be accessed by entering the array.</span>
<span class="sd"> &gt;&gt;&gt; # read an array of strings with a symbolic descriptor</span>
<span class="sd"> &gt;&gt;&gt; count, described, type = data.get_array()</span>
<span class="sd"> &gt;&gt;&gt; data.enter()</span>
<span class="sd"> &gt;&gt;&gt; data.next()</span>
<span class="sd"> &gt;&gt;&gt; print &quot;Descriptor:&quot;, data.get_symbol()</span>
<span class="sd"> &gt;&gt;&gt; for i in range(count):</span>
<span class="sd"> ... data.next()</span>
<span class="sd"> ... print &quot;Element:&quot;, data.get_string()</span>
<span class="sd"> &gt;&gt;&gt; data.exit()</span>
<span class="sd"> :return: A tuple containing the number of array elements, the descriptor</span>
<span class="sd"> (or ``None`` if no descriptor) and the enumerated array element type. </span>
<span class="sd"> :rtype: ``tuple`` (``int``, ``str`` or ``None``, ``int``)</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">pn_data_get_array</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span>
<span class="n">described</span> <span class="o">=</span> <span class="n">pn_data_is_array_described</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span>
<span class="nb">type</span> <span class="o">=</span> <span class="n">pn_data_get_array_type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
<span class="nb">type</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">count</span><span class="p">,</span> <span class="n">described</span><span class="p">,</span> <span class="nb">type</span></div>
<div class="viewcode-block" id="Data.is_described"><a class="viewcode-back" href="../../proton.html#proton.Data.is_described">[docs]</a> <span class="k">def</span> <span class="nf">is_described</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Checks if the current node is a described value. The descriptor</span>
<span class="sd"> and value may be accessed by entering the described value.</span>
<span class="sd"> &gt;&gt;&gt; # read a symbolically described string</span>
<span class="sd"> &gt;&gt;&gt; assert data.is_described() # will error if the current node is not described</span>
<span class="sd"> &gt;&gt;&gt; data.enter()</span>
<span class="sd"> &gt;&gt;&gt; data.next()</span>
<span class="sd"> &gt;&gt;&gt; print data.get_symbol()</span>
<span class="sd"> &gt;&gt;&gt; data.next()</span>
<span class="sd"> &gt;&gt;&gt; print data.get_string()</span>
<span class="sd"> &gt;&gt;&gt; data.exit()</span>
<span class="sd"> :return: ``True`` if the current node is a described type, ``False`` otherwise.</span>
<span class="sd"> :rtype: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_data_is_described</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.is_null"><a class="viewcode-back" href="../../proton.html#proton.Data.is_null">[docs]</a> <span class="k">def</span> <span class="nf">is_null</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Checks if the current node is the AMQP null type.</span>
<span class="sd"> :return: ``True`` if the current node is the AMQP null type, ``False`` otherwise.</span>
<span class="sd"> :rtype: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_data_is_null</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.get_bool"><a class="viewcode-back" href="../../proton.html#proton.Data.get_bool">[docs]</a> <span class="k">def</span> <span class="nf">get_bool</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a ``bool``.</span>
<span class="sd"> :return: If the current node is a boolean type, returns its value,</span>
<span class="sd"> ``False`` otherwise.</span>
<span class="sd"> :rtype: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_data_get_bool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.get_ubyte"><a class="viewcode-back" href="../../proton.html#proton.Data.get_ubyte">[docs]</a> <span class="k">def</span> <span class="nf">get_ubyte</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`ubyte`.</span>
<span class="sd"> :return: If the current node is an unsigned byte, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`ubyte`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">ubyte</span><span class="p">(</span><span class="n">pn_data_get_ubyte</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.get_byte"><a class="viewcode-back" href="../../proton.html#proton.Data.get_byte">[docs]</a> <span class="k">def</span> <span class="nf">get_byte</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`byte`.</span>
<span class="sd"> :return: If the current node is a signed byte, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`byte`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">byte</span><span class="p">(</span><span class="n">pn_data_get_byte</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.get_ushort"><a class="viewcode-back" href="../../proton.html#proton.Data.get_ushort">[docs]</a> <span class="k">def</span> <span class="nf">get_ushort</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`ushort`.</span>
<span class="sd"> :return: If the current node is an unsigned short, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`ushort`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">ushort</span><span class="p">(</span><span class="n">pn_data_get_ushort</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.get_short"><a class="viewcode-back" href="../../proton.html#proton.Data.get_short">[docs]</a> <span class="k">def</span> <span class="nf">get_short</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`short`.</span>
<span class="sd"> :return: If the current node is a signed short, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`short`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">short</span><span class="p">(</span><span class="n">pn_data_get_short</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.get_uint"><a class="viewcode-back" href="../../proton.html#proton.Data.get_uint">[docs]</a> <span class="k">def</span> <span class="nf">get_uint</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`uint`.</span>
<span class="sd"> :return: If the current node is an unsigned int, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`uint`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">uint</span><span class="p">(</span><span class="n">pn_data_get_uint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.get_int"><a class="viewcode-back" href="../../proton.html#proton.Data.get_int">[docs]</a> <span class="k">def</span> <span class="nf">get_int</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`int32`.</span>
<span class="sd"> :return: If the current node is a signed int, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`int32`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">int32</span><span class="p">(</span><span class="n">pn_data_get_int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.get_char"><a class="viewcode-back" href="../../proton.html#proton.Data.get_char">[docs]</a> <span class="k">def</span> <span class="nf">get_char</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`char`.</span>
<span class="sd"> :return: If the current node is a char, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`char`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">char</span><span class="p">(</span><span class="n">_compat</span><span class="o">.</span><span class="n">unichr</span><span class="p">(</span><span class="n">pn_data_get_char</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)))</span></div>
<div class="viewcode-block" id="Data.get_ulong"><a class="viewcode-back" href="../../proton.html#proton.Data.get_ulong">[docs]</a> <span class="k">def</span> <span class="nf">get_ulong</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`long`.</span>
<span class="sd"> :return: If the current node is an unsigned long, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`ulong`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">ulong</span><span class="p">(</span><span class="n">pn_data_get_ulong</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.get_long"><a class="viewcode-back" href="../../proton.html#proton.Data.get_long">[docs]</a> <span class="k">def</span> <span class="nf">get_long</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`ulong`.</span>
<span class="sd"> :return: If the current node is an signed long, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`long`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">long</span><span class="p">(</span><span class="n">pn_data_get_long</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.get_timestamp"><a class="viewcode-back" href="../../proton.html#proton.Data.get_timestamp">[docs]</a> <span class="k">def</span> <span class="nf">get_timestamp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`timestamp`.</span>
<span class="sd"> :return: If the current node is a timestamp, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`timestamp`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">timestamp</span><span class="p">(</span><span class="n">pn_data_get_timestamp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.get_float"><a class="viewcode-back" href="../../proton.html#proton.Data.get_float">[docs]</a> <span class="k">def</span> <span class="nf">get_float</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`float32`.</span>
<span class="sd"> :return: If the current node is a float, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`float32`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">float32</span><span class="p">(</span><span class="n">pn_data_get_float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.get_double"><a class="viewcode-back" href="../../proton.html#proton.Data.get_double">[docs]</a> <span class="k">def</span> <span class="nf">get_double</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a ``double``.</span>
<span class="sd"> :return: If the current node is a double, its value, 0 otherwise.</span>
<span class="sd"> :rtype: ``double``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_data_get_double</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<span class="c1"># XXX: need to convert</span>
<div class="viewcode-block" id="Data.get_decimal32"><a class="viewcode-back" href="../../proton.html#proton.Data.get_decimal32">[docs]</a> <span class="k">def</span> <span class="nf">get_decimal32</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`decimal32`.</span>
<span class="sd"> :return: If the current node is a decimal32, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`decimal32`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">decimal32</span><span class="p">(</span><span class="n">pn_data_get_decimal32</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<span class="c1"># XXX: need to convert</span>
<div class="viewcode-block" id="Data.get_decimal64"><a class="viewcode-back" href="../../proton.html#proton.Data.get_decimal64">[docs]</a> <span class="k">def</span> <span class="nf">get_decimal64</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`decimal64`.</span>
<span class="sd"> :return: If the current node is a decimal64, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`decimal64`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">decimal64</span><span class="p">(</span><span class="n">pn_data_get_decimal64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<span class="c1"># XXX: need to convert</span>
<div class="viewcode-block" id="Data.get_decimal128"><a class="viewcode-back" href="../../proton.html#proton.Data.get_decimal128">[docs]</a> <span class="k">def</span> <span class="nf">get_decimal128</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a :class:`decimal128`.</span>
<span class="sd"> :return: If the current node is a decimal128, its value, 0 otherwise.</span>
<span class="sd"> :rtype: :class:`decimal128`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">decimal128</span><span class="p">(</span><span class="n">pn_data_get_decimal128</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.get_uuid"><a class="viewcode-back" href="../../proton.html#proton.Data.get_uuid">[docs]</a> <span class="k">def</span> <span class="nf">get_uuid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as a ``uuid.UUID``.</span>
<span class="sd"> :return: If the current node is a UUID, its value, ``None`` otherwise.</span>
<span class="sd"> :rtype: ``uuid.UUID`` or ``None``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">pn_data_type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span> <span class="o">==</span> <span class="n">Data</span><span class="o">.</span><span class="n">UUID</span><span class="p">:</span>
<span class="k">return</span> <span class="n">uuid</span><span class="o">.</span><span class="n">UUID</span><span class="p">(</span><span class="nb">bytes</span><span class="o">=</span><span class="n">pn_data_get_uuid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="Data.get_binary"><a class="viewcode-back" href="../../proton.html#proton.Data.get_binary">[docs]</a> <span class="k">def</span> <span class="nf">get_binary</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as ``bytes``.</span>
<span class="sd"> :return: If the current node is binary, its value, ``&quot;&quot;`` otherwise.</span>
<span class="sd"> :rtype: ``bytes``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_data_get_binary</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.get_string"><a class="viewcode-back" href="../../proton.html#proton.Data.get_string">[docs]</a> <span class="k">def</span> <span class="nf">get_string</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as ``str``.</span>
<span class="sd"> :return: If the current node is a string, its value, ``&quot;&quot;`` otherwise.</span>
<span class="sd"> :rtype: ``str``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_data_get_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">&quot;utf8&quot;</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.get_symbol"><a class="viewcode-back" href="../../proton.html#proton.Data.get_symbol">[docs]</a> <span class="k">def</span> <span class="nf">get_symbol</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the current node value as :class:`symbol`.</span>
<span class="sd"> :return: If the current node is a symbol, its value, ``&quot;&quot;`` otherwise.</span>
<span class="sd"> :rtype: :class:`symbol`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">symbol</span><span class="p">(</span><span class="n">pn_data_get_symbol</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;ascii&#39;</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.copy"><a class="viewcode-back" href="../../proton.html#proton.Data.copy">[docs]</a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">src</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Copy the contents of another pn_data_t object. Any values in the</span>
<span class="sd"> data object will be lost.</span>
<span class="sd"> </span>
<span class="sd"> :param src: The source object from which to copy</span>
<span class="sd"> :type src: :class:`Data`</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">pn_data_copy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">src</span><span class="o">.</span><span class="n">_data</span><span class="p">))</span></div>
<div class="viewcode-block" id="Data.format"><a class="viewcode-back" href="../../proton.html#proton.Data.format">[docs]</a> <span class="k">def</span> <span class="nf">format</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Formats the contents of this :class:`Data` object in a human readable way.</span>
<span class="sd"> :return: A Formatted string containing contents of this :class:`Data` object.</span>
<span class="sd"> :rtype: ``str``</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">sz</span> <span class="o">=</span> <span class="mi">16</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">err</span><span class="p">,</span> <span class="n">result</span> <span class="o">=</span> <span class="n">pn_data_format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">sz</span><span class="p">)</span>
<span class="k">if</span> <span class="n">err</span> <span class="o">==</span> <span class="n">PN_OVERFLOW</span><span class="p">:</span>
<span class="n">sz</span> <span class="o">*=</span> <span class="mi">2</span>
<span class="k">continue</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_check</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="Data.dump"><a class="viewcode-back" href="../../proton.html#proton.Data.dump">[docs]</a> <span class="k">def</span> <span class="nf">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Dumps a debug representation of the internal state of this :class:`Data`</span>
<span class="sd"> object that includes its navigational state to ``cout`` (``stdout``) for</span>
<span class="sd"> debugging purposes.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">pn_data_dump</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.put_dict"><a class="viewcode-back" href="../../proton.html#proton.Data.put_dict">[docs]</a> <span class="k">def</span> <span class="nf">put_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A convenience method for encoding the contents of a Python ``dict``</span>
<span class="sd"> as an AMQP map.</span>
<span class="sd"> :param d: The dictionary to be encoded</span>
<span class="sd"> :type d: ``dict``</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_map</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">enter</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">d</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_object</span><span class="p">(</span><span class="n">k</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_object</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
<span class="k">finally</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span></div>
<div class="viewcode-block" id="Data.get_dict"><a class="viewcode-back" href="../../proton.html#proton.Data.get_dict">[docs]</a> <span class="k">def</span> <span class="nf">get_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A convenience method for decoding an AMQP map as a Python ``dict``.</span>
<span class="sd"> :returns: The decoded dictionary.</span>
<span class="sd"> :rtype: ``dict``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">enter</span><span class="p">():</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">next</span><span class="p">():</span>
<span class="n">k</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_object</span><span class="p">()</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">next</span><span class="p">():</span>
<span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_object</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">v</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">result</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span>
<span class="k">finally</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="Data.put_sequence"><a class="viewcode-back" href="../../proton.html#proton.Data.put_sequence">[docs]</a> <span class="k">def</span> <span class="nf">put_sequence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">s</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A convenience method for encoding a Python ``list`` as an</span>
<span class="sd"> AMQP list.</span>
<span class="sd"> :param s: The sequence to be encoded</span>
<span class="sd"> :type s: ``list``</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_list</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">enter</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">s</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_object</span><span class="p">(</span><span class="n">o</span><span class="p">)</span>
<span class="k">finally</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span></div>
<div class="viewcode-block" id="Data.get_sequence"><a class="viewcode-back" href="../../proton.html#proton.Data.get_sequence">[docs]</a> <span class="k">def</span> <span class="nf">get_sequence</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A convenience method for decoding an AMQP list as a Python ``list``.</span>
<span class="sd"> :returns: The decoded list.</span>
<span class="sd"> :rtype: ``list``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">enter</span><span class="p">():</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">next</span><span class="p">():</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_object</span><span class="p">())</span>
<span class="k">finally</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="Data.get_py_described"><a class="viewcode-back" href="../../proton.html#proton.Data.get_py_described">[docs]</a> <span class="k">def</span> <span class="nf">get_py_described</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A convenience method for decoding an AMQP described value.</span>
<span class="sd"> :returns: The decoded AMQP descriptor.</span>
<span class="sd"> :rtype: :class:`Described`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">enter</span><span class="p">():</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">next</span><span class="p">()</span>
<span class="n">descriptor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_object</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">next</span><span class="p">()</span>
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_object</span><span class="p">()</span>
<span class="k">finally</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
<span class="k">return</span> <span class="n">Described</span><span class="p">(</span><span class="n">descriptor</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.put_py_described"><a class="viewcode-back" href="../../proton.html#proton.Data.put_py_described">[docs]</a> <span class="k">def</span> <span class="nf">put_py_described</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A convenience method for encoding a :class:`Described` object</span>
<span class="sd"> as an AMQP described value. This method encapsulates all the steps</span>
<span class="sd"> described in :func:`put_described` into a single method.</span>
<span class="sd"> :param d: The descriptor to be encoded</span>
<span class="sd"> :type d: :class:`Described`</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_described</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">enter</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_object</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">descriptor</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_object</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">finally</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span></div>
<div class="viewcode-block" id="Data.get_py_array"><a class="viewcode-back" href="../../proton.html#proton.Data.get_py_array">[docs]</a> <span class="k">def</span> <span class="nf">get_py_array</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A convenience method for decoding an AMQP array into an</span>
<span class="sd"> :class:`Array` object. This method encapsulates all the</span>
<span class="sd"> steps described in :func:`get_array` into a single function.</span>
<span class="sd"> If the current node is an array, return an Array object</span>
<span class="sd"> representing the array and its contents. Otherwise return ``None``.</span>
<span class="sd"> :returns: The decoded AMQP array.</span>
<span class="sd"> :rtype: :class:`Array`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">count</span><span class="p">,</span> <span class="n">described</span><span class="p">,</span> <span class="nb">type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_array</span><span class="p">()</span>
<span class="k">if</span> <span class="nb">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="k">return</span> <span class="kc">None</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">enter</span><span class="p">():</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">described</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">next</span><span class="p">()</span>
<span class="n">descriptor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_object</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">descriptor</span> <span class="o">=</span> <span class="n">UNDESCRIBED</span>
<span class="n">elements</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">next</span><span class="p">():</span>
<span class="n">elements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_object</span><span class="p">())</span>
<span class="k">finally</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
<span class="k">return</span> <span class="n">Array</span><span class="p">(</span><span class="n">descriptor</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="o">*</span><span class="n">elements</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.put_py_array"><a class="viewcode-back" href="../../proton.html#proton.Data.put_py_array">[docs]</a> <span class="k">def</span> <span class="nf">put_py_array</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">a</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A convenience method for encoding an :class:`Array` object as</span>
<span class="sd"> an AMQP array. This method encapsulates the steps described in</span>
<span class="sd"> :func:`put_array` into a single function.</span>
<span class="sd"> :param a: The array object to be encoded</span>
<span class="sd"> :type a: :class:`Array`</span>
<span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">described</span> <span class="o">=</span> <span class="n">a</span><span class="o">.</span><span class="n">descriptor</span> <span class="o">!=</span> <span class="n">UNDESCRIBED</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_array</span><span class="p">(</span><span class="n">described</span><span class="p">,</span> <span class="n">a</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">enter</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">described</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_object</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">descriptor</span><span class="p">)</span>
<span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">a</span><span class="o">.</span><span class="n">elements</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">put_object</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
<span class="k">finally</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span></div>
<span class="n">put_mappings</span> <span class="o">=</span> <span class="p">{</span>
<span class="kc">None</span><span class="o">.</span><span class="vm">__class__</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">s</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="n">s</span><span class="o">.</span><span class="n">put_null</span><span class="p">(),</span>
<span class="nb">bool</span><span class="p">:</span> <span class="n">put_bool</span><span class="p">,</span>
<span class="n">ubyte</span><span class="p">:</span> <span class="n">put_ubyte</span><span class="p">,</span>
<span class="n">ushort</span><span class="p">:</span> <span class="n">put_ushort</span><span class="p">,</span>
<span class="n">uint</span><span class="p">:</span> <span class="n">put_uint</span><span class="p">,</span>
<span class="n">ulong</span><span class="p">:</span> <span class="n">put_ulong</span><span class="p">,</span>
<span class="n">byte</span><span class="p">:</span> <span class="n">put_byte</span><span class="p">,</span>
<span class="n">short</span><span class="p">:</span> <span class="n">put_short</span><span class="p">,</span>
<span class="n">int32</span><span class="p">:</span> <span class="n">put_int</span><span class="p">,</span>
<span class="n">long</span><span class="p">:</span> <span class="n">put_long</span><span class="p">,</span>
<span class="n">float32</span><span class="p">:</span> <span class="n">put_float</span><span class="p">,</span>
<span class="nb">float</span><span class="p">:</span> <span class="n">put_double</span><span class="p">,</span>
<span class="n">decimal32</span><span class="p">:</span> <span class="n">put_decimal32</span><span class="p">,</span>
<span class="n">decimal64</span><span class="p">:</span> <span class="n">put_decimal64</span><span class="p">,</span>
<span class="n">decimal128</span><span class="p">:</span> <span class="n">put_decimal128</span><span class="p">,</span>
<span class="n">char</span><span class="p">:</span> <span class="n">put_char</span><span class="p">,</span>
<span class="n">timestamp</span><span class="p">:</span> <span class="n">put_timestamp</span><span class="p">,</span>
<span class="n">uuid</span><span class="o">.</span><span class="n">UUID</span><span class="p">:</span> <span class="n">put_uuid</span><span class="p">,</span>
<span class="nb">bytes</span><span class="p">:</span> <span class="n">put_binary</span><span class="p">,</span>
<span class="n">unicode</span><span class="p">:</span> <span class="n">put_string</span><span class="p">,</span>
<span class="n">symbol</span><span class="p">:</span> <span class="n">put_symbol</span><span class="p">,</span>
<span class="nb">list</span><span class="p">:</span> <span class="n">put_sequence</span><span class="p">,</span>
<span class="nb">tuple</span><span class="p">:</span> <span class="n">put_sequence</span><span class="p">,</span>
<span class="nb">dict</span><span class="p">:</span> <span class="n">put_dict</span><span class="p">,</span>
<span class="n">Described</span><span class="p">:</span> <span class="n">put_py_described</span><span class="p">,</span>
<span class="n">Array</span><span class="p">:</span> <span class="n">put_py_array</span><span class="p">,</span>
<span class="n">AnnotationDict</span><span class="p">:</span> <span class="n">put_dict</span><span class="p">,</span>
<span class="n">PropertyDict</span><span class="p">:</span> <span class="n">put_dict</span><span class="p">,</span>
<span class="n">SymbolList</span><span class="p">:</span> <span class="n">put_sequence</span>
<span class="p">}</span>
<span class="c1"># for Python 3.x, long is merely an alias for int, but for Python 2.x</span>
<span class="c1"># we need to add an explicit int since it is a different type</span>
<span class="k">if</span> <span class="nb">int</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">put_mappings</span><span class="p">:</span>
<span class="n">put_mappings</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">put_int</span>
<span class="c1"># Python &gt;=3.0 has &#39;memoryview&#39;, &lt;=2.5 has &#39;buffer&#39;, &gt;=2.6 has both.</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">put_mappings</span><span class="p">[</span><span class="nb">memoryview</span><span class="p">]</span> <span class="o">=</span> <span class="n">put_memoryview</span>
<span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span>
<span class="k">pass</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">put_mappings</span><span class="p">[</span><span class="n">buffer</span><span class="p">]</span> <span class="o">=</span> <span class="n">put_buffer</span>
<span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span>
<span class="k">pass</span>
<span class="n">get_mappings</span> <span class="o">=</span> <span class="p">{</span>
<span class="n">NULL</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">s</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">BOOL</span><span class="p">:</span> <span class="n">get_bool</span><span class="p">,</span>
<span class="n">BYTE</span><span class="p">:</span> <span class="n">get_byte</span><span class="p">,</span>
<span class="n">UBYTE</span><span class="p">:</span> <span class="n">get_ubyte</span><span class="p">,</span>
<span class="n">SHORT</span><span class="p">:</span> <span class="n">get_short</span><span class="p">,</span>
<span class="n">USHORT</span><span class="p">:</span> <span class="n">get_ushort</span><span class="p">,</span>
<span class="n">INT</span><span class="p">:</span> <span class="n">get_int</span><span class="p">,</span>
<span class="n">UINT</span><span class="p">:</span> <span class="n">get_uint</span><span class="p">,</span>
<span class="n">CHAR</span><span class="p">:</span> <span class="n">get_char</span><span class="p">,</span>
<span class="n">LONG</span><span class="p">:</span> <span class="n">get_long</span><span class="p">,</span>
<span class="n">ULONG</span><span class="p">:</span> <span class="n">get_ulong</span><span class="p">,</span>
<span class="n">TIMESTAMP</span><span class="p">:</span> <span class="n">get_timestamp</span><span class="p">,</span>
<span class="n">FLOAT</span><span class="p">:</span> <span class="n">get_float</span><span class="p">,</span>
<span class="n">DOUBLE</span><span class="p">:</span> <span class="n">get_double</span><span class="p">,</span>
<span class="n">DECIMAL32</span><span class="p">:</span> <span class="n">get_decimal32</span><span class="p">,</span>
<span class="n">DECIMAL64</span><span class="p">:</span> <span class="n">get_decimal64</span><span class="p">,</span>
<span class="n">DECIMAL128</span><span class="p">:</span> <span class="n">get_decimal128</span><span class="p">,</span>
<span class="n">UUID</span><span class="p">:</span> <span class="n">get_uuid</span><span class="p">,</span>
<span class="n">BINARY</span><span class="p">:</span> <span class="n">get_binary</span><span class="p">,</span>
<span class="n">STRING</span><span class="p">:</span> <span class="n">get_string</span><span class="p">,</span>
<span class="n">SYMBOL</span><span class="p">:</span> <span class="n">get_symbol</span><span class="p">,</span>
<span class="n">DESCRIBED</span><span class="p">:</span> <span class="n">get_py_described</span><span class="p">,</span>
<span class="n">ARRAY</span><span class="p">:</span> <span class="n">get_py_array</span><span class="p">,</span>
<span class="n">LIST</span><span class="p">:</span> <span class="n">get_sequence</span><span class="p">,</span>
<span class="n">MAP</span><span class="p">:</span> <span class="n">get_dict</span>
<span class="p">}</span>
<div class="viewcode-block" id="Data.put_object"><a class="viewcode-back" href="../../proton.html#proton.Data.put_object">[docs]</a> <span class="k">def</span> <span class="nf">put_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
<span class="n">putter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">put_mappings</span><span class="p">[</span><span class="n">obj</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span>
<span class="n">putter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">)</span></div>
<div class="viewcode-block" id="Data.get_object"><a class="viewcode-back" href="../../proton.html#proton.Data.get_object">[docs]</a> <span class="k">def</span> <span class="nf">get_object</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="nb">type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">()</span>
<span class="k">if</span> <span class="nb">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="k">return</span> <span class="kc">None</span>
<span class="n">getter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_mappings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">type</span><span class="p">)</span>
<span class="k">if</span> <span class="n">getter</span><span class="p">:</span>
<span class="k">return</span> <span class="n">getter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">UnmappedType</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="nb">type</span><span class="p">))</span></div></div>
<span class="k">def</span> <span class="nf">dat2obj</span><span class="p">(</span><span class="n">dimpl</span><span class="p">):</span>
<span class="k">if</span> <span class="n">dimpl</span><span class="p">:</span>
<span class="n">d</span> <span class="o">=</span> <span class="n">Data</span><span class="p">(</span><span class="n">dimpl</span><span class="p">)</span>
<span class="n">d</span><span class="o">.</span><span class="n">rewind</span><span class="p">()</span>
<span class="n">d</span><span class="o">.</span><span class="n">next</span><span class="p">()</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get_object</span><span class="p">()</span>
<span class="n">d</span><span class="o">.</span><span class="n">rewind</span><span class="p">()</span>
<span class="k">return</span> <span class="n">obj</span>
<span class="k">def</span> <span class="nf">obj2dat</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">dimpl</span><span class="p">):</span>
<span class="k">if</span> <span class="n">obj</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">d</span> <span class="o">=</span> <span class="n">Data</span><span class="p">(</span><span class="n">dimpl</span><span class="p">)</span>
<span class="n">d</span><span class="o">.</span><span class="n">put_object</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
</pre></div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="nav-item nav-item-0"><a href="../../index.html">Qpid Proton Python API 0.32.0 documentation</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">proton._data</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2019, Apache Qpid Contributors.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>