| |
| <!DOCTYPE html> |
| |
| <html> |
| <head> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <title>proton._data — Qpid Proton Python API 0.33.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.33.0 documentation</a> »</li> |
| <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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"># "License"); 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"># "AS IS" 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 <---> 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">"UnmappedType(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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"><</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">"initializing ulong with negative value"</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">"ulong(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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">"timestamp(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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">"symbol(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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">"char(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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">"byte(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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">"short(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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">"int32(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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"><</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">"initializing ubyte with negative value"</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">"ubyte(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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"><</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">"initializing ushort with negative value"</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">"ushort(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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"><</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">"initializing uint with negative value"</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">"uint(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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">"float32(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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">"decimal32(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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">"decimal64(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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">"decimal128(</span><span class="si">%s</span><span class="s2">)"</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">"""</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"> """</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">"Described(</span><span class="si">%r</span><span class="s2">, </span><span class="si">%r</span><span class="s2">)"</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">"UNDESCRIBED"</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">"""</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"> """</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">", </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s2">", "</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">""</span> |
| <span class="k">return</span> <span class="s2">"Array(</span><span class="si">%r</span><span class="s2">, </span><span class="si">%r%s</span><span class="s2">)"</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">'utf-8'</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">'Non-symbol type </span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">'</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">"""Parent class for :class:`PropertyDict` and :class:`AnnotationDict`"""</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">"""Checks if the key is a :class:`symbol` type before setting the value"""</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">'invalid non-symbol key: </span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">'</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">"""</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"> """</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">"""</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"> >>> from proton import symbol, ulong, PropertyDict</span> |
| <span class="sd"> >>> a = PropertyDict(one=1, two=2)</span> |
| <span class="sd"> >>> b = PropertyDict({'one':1, symbol('two'):2})</span> |
| <span class="sd"> >>> c = PropertyDict(zip(['one', symbol('two')], [1, 2]))</span> |
| <span class="sd"> >>> d = PropertyDict([(symbol('one'), 1), ('two', 2)])</span> |
| <span class="sd"> >>> e = PropertyDict(a)</span> |
| <span class="sd"> >>> 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"> >>> PropertyDict({'one':1, 2:'two'})</span> |
| <span class="sd"> ...</span> |
| <span class="sd"> KeyError: "invalid non-symbol key: <type 'int'>: 2"</span> |
| |
| <span class="sd"> but by setting ``raise_on_error=False``, non-string and non-symbol keys will be ignored:</span> |
| |
| <span class="sd"> >>> PropertyDict({'one':1, 2:'two'}, raise_on_error=False)</span> |
| <span class="sd"> PropertyDict({2: 'two', symbol(u'one'): 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"> """</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">""" Representation of PropertyDict """</span> |
| <span class="k">return</span> <span class="s1">'PropertyDict(</span><span class="si">%s</span><span class="s1">)'</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">"""</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"> >>> from proton import symbol, ulong, AnnotationDict</span> |
| <span class="sd"> >>> a = AnnotationDict(one=1, two=2)</span> |
| <span class="sd"> >>> a[ulong(3)] = 'three'</span> |
| <span class="sd"> >>> b = AnnotationDict({'one':1, symbol('two'):2, ulong(3):'three'})</span> |
| <span class="sd"> >>> c = AnnotationDict(zip([symbol('one'), 'two', ulong(3)], [1, 2, 'three']))</span> |
| <span class="sd"> >>> d = AnnotationDict([('one', 1), (symbol('two'), 2), (ulong(3), 'three')])</span> |
| <span class="sd"> >>> e = AnnotationDict(a)</span> |
| <span class="sd"> >>> 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"> >>> AnnotationDict({'one': 1, 2: 'two'})</span> |
| <span class="sd"> ...</span> |
| <span class="sd"> KeyError: "invalid non-symbol key: <type 'int'>: 2"</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"> >>> AnnotationDict({'one': 1, 2: 'two'}, raise_on_error=False)</span> |
| <span class="sd"> AnnotationDict({2: 'two', symbol(u'one'): 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"> """</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">""" Representation of AnnotationDict """</span> |
| <span class="k">return</span> <span class="s1">'AnnotationDict(</span><span class="si">%s</span><span class="s1">)'</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">"""</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"> >>> a = SymbolList(['one', symbol('two'), 'three'])</span> |
| <span class="sd"> >>> b = SymbolList([symbol('one'), 'two', symbol('three')])</span> |
| <span class="sd"> >>> c = SymbolList(a)</span> |
| <span class="sd"> >>> 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"> >>> SymbolList(['one', symbol('two'), 3])</span> |
| <span class="sd"> ...</span> |
| <span class="sd"> TypeError: Non-symbol type <class 'int'>: 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"> >>> SymbolList(['one', symbol('two'), 3], raise_on_error=False)</span> |
| <span class="sd"> SymbolList([symbol(u'one'), symbol(u'two'), 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"> """</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">""" Check all items in list are :class:`symbol`s (or are converted to symbols). """</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">""" Add a single value v to the end of the list """</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">""" Add all elements of an iterable t to the end of the list """</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">""" Insert a value v at index i """</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">""" Handles list1 + list2 """</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">""" Handles list1 += list2 """</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">""" Handles list[i] = v """</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">""" Representation of SymbolList """</span> |
| <span class="k">return</span> <span class="s1">'SymbolList(</span><span class="si">%s</span><span class="s1">)'</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">"""</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 <INT>` or</span> |
| <span class="sd"> :const:`strings <STRING>`. Non-leaf nodes in this tree correspond to</span> |
| <span class="sd"> compound values in the AMQP type system such as :const:`lists <LIST>`,</span> |
| <span class="sd"> :const:`maps <MAP>`, :const:`arrays <ARRAY>`, or :const:`described values <DESCRIBED>`.</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"> """</span> |
| |
| <span class="n">NULL</span> <span class="o">=</span> <span class="n">PN_NULL</span><span class="p">;</span> <span class="s2">"A null value."</span> |
| <span class="n">BOOL</span> <span class="o">=</span> <span class="n">PN_BOOL</span><span class="p">;</span> <span class="s2">"A boolean value."</span> |
| <span class="n">UBYTE</span> <span class="o">=</span> <span class="n">PN_UBYTE</span><span class="p">;</span> <span class="s2">"An unsigned byte value."</span> |
| <span class="n">BYTE</span> <span class="o">=</span> <span class="n">PN_BYTE</span><span class="p">;</span> <span class="s2">"A signed byte value."</span> |
| <span class="n">USHORT</span> <span class="o">=</span> <span class="n">PN_USHORT</span><span class="p">;</span> <span class="s2">"An unsigned short value."</span> |
| <span class="n">SHORT</span> <span class="o">=</span> <span class="n">PN_SHORT</span><span class="p">;</span> <span class="s2">"A short value."</span> |
| <span class="n">UINT</span> <span class="o">=</span> <span class="n">PN_UINT</span><span class="p">;</span> <span class="s2">"An unsigned int value."</span> |
| <span class="n">INT</span> <span class="o">=</span> <span class="n">PN_INT</span><span class="p">;</span> <span class="s2">"A signed int value."</span> |
| <span class="n">CHAR</span> <span class="o">=</span> <span class="n">PN_CHAR</span><span class="p">;</span> <span class="s2">"A character value."</span> |
| <span class="n">ULONG</span> <span class="o">=</span> <span class="n">PN_ULONG</span><span class="p">;</span> <span class="s2">"An unsigned long value."</span> |
| <span class="n">LONG</span> <span class="o">=</span> <span class="n">PN_LONG</span><span class="p">;</span> <span class="s2">"A signed long value."</span> |
| <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">PN_TIMESTAMP</span><span class="p">;</span> <span class="s2">"A timestamp value."</span> |
| <span class="n">FLOAT</span> <span class="o">=</span> <span class="n">PN_FLOAT</span><span class="p">;</span> <span class="s2">"A float value."</span> |
| <span class="n">DOUBLE</span> <span class="o">=</span> <span class="n">PN_DOUBLE</span><span class="p">;</span> <span class="s2">"A double value."</span> |
| <span class="n">DECIMAL32</span> <span class="o">=</span> <span class="n">PN_DECIMAL32</span><span class="p">;</span> <span class="s2">"A DECIMAL32 value."</span> |
| <span class="n">DECIMAL64</span> <span class="o">=</span> <span class="n">PN_DECIMAL64</span><span class="p">;</span> <span class="s2">"A DECIMAL64 value."</span> |
| <span class="n">DECIMAL128</span> <span class="o">=</span> <span class="n">PN_DECIMAL128</span><span class="p">;</span> <span class="s2">"A DECIMAL128 value."</span> |
| <span class="n">UUID</span> <span class="o">=</span> <span class="n">PN_UUID</span><span class="p">;</span> <span class="s2">"A UUID value."</span> |
| <span class="n">BINARY</span> <span class="o">=</span> <span class="n">PN_BINARY</span><span class="p">;</span> <span class="s2">"A binary string."</span> |
| <span class="n">STRING</span> <span class="o">=</span> <span class="n">PN_STRING</span><span class="p">;</span> <span class="s2">"A unicode string."</span> |
| <span class="n">SYMBOL</span> <span class="o">=</span> <span class="n">PN_SYMBOL</span><span class="p">;</span> <span class="s2">"A symbolic string."</span> |
| <span class="n">DESCRIBED</span> <span class="o">=</span> <span class="n">PN_DESCRIBED</span><span class="p">;</span> <span class="s2">"A described value."</span> |
| <span class="n">ARRAY</span> <span class="o">=</span> <span class="n">PN_ARRAY</span><span class="p">;</span> <span class="s2">"An array value."</span> |
| <span class="n">LIST</span> <span class="o">=</span> <span class="n">PN_LIST</span><span class="p">;</span> <span class="s2">"A list value."</span> |
| <span class="n">MAP</span> <span class="o">=</span> <span class="n">PN_MAP</span><span class="p">;</span> <span class="s2">"A map value."</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">"null"</span><span class="p">,</span> |
| <span class="n">BOOL</span><span class="p">:</span> <span class="s2">"bool"</span><span class="p">,</span> |
| <span class="n">BYTE</span><span class="p">:</span> <span class="s2">"byte"</span><span class="p">,</span> |
| <span class="n">UBYTE</span><span class="p">:</span> <span class="s2">"ubyte"</span><span class="p">,</span> |
| <span class="n">SHORT</span><span class="p">:</span> <span class="s2">"short"</span><span class="p">,</span> |
| <span class="n">USHORT</span><span class="p">:</span> <span class="s2">"ushort"</span><span class="p">,</span> |
| <span class="n">INT</span><span class="p">:</span> <span class="s2">"int"</span><span class="p">,</span> |
| <span class="n">UINT</span><span class="p">:</span> <span class="s2">"uint"</span><span class="p">,</span> |
| <span class="n">CHAR</span><span class="p">:</span> <span class="s2">"char"</span><span class="p">,</span> |
| <span class="n">LONG</span><span class="p">:</span> <span class="s2">"long"</span><span class="p">,</span> |
| <span class="n">ULONG</span><span class="p">:</span> <span class="s2">"ulong"</span><span class="p">,</span> |
| <span class="n">TIMESTAMP</span><span class="p">:</span> <span class="s2">"timestamp"</span><span class="p">,</span> |
| <span class="n">FLOAT</span><span class="p">:</span> <span class="s2">"float"</span><span class="p">,</span> |
| <span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"double"</span><span class="p">,</span> |
| <span class="n">DECIMAL32</span><span class="p">:</span> <span class="s2">"decimal32"</span><span class="p">,</span> |
| <span class="n">DECIMAL64</span><span class="p">:</span> <span class="s2">"decimal64"</span><span class="p">,</span> |
| <span class="n">DECIMAL128</span><span class="p">:</span> <span class="s2">"decimal128"</span><span class="p">,</span> |
| <span class="n">UUID</span><span class="p">:</span> <span class="s2">"uuid"</span><span class="p">,</span> |
| <span class="n">BINARY</span><span class="p">:</span> <span class="s2">"binary"</span><span class="p">,</span> |
| <span class="n">STRING</span><span class="p">:</span> <span class="s2">"string"</span><span class="p">,</span> |
| <span class="n">SYMBOL</span><span class="p">:</span> <span class="s2">"symbol"</span><span class="p">,</span> |
| <span class="n">DESCRIBED</span><span class="p">:</span> <span class="s2">"described"</span><span class="p">,</span> |
| <span class="n">ARRAY</span><span class="p">:</span> <span class="s2">"array"</span><span class="p">,</span> |
| <span class="n">LIST</span><span class="p">:</span> <span class="s2">"list"</span><span class="p">,</span> |
| <span class="n">MAP</span><span class="p">:</span> <span class="s2">"map"</span> |
| <span class="p">}</span> |
| <span class="sd">"""</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"> """</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">"""</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"> """</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">"_data"</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"><</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">"[</span><span class="si">%s</span><span class="s2">]: </span><span class="si">%s</span><span class="s2">"</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">"""</span> |
| <span class="sd"> Clears the data object.</span> |
| <span class="sd"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">""" Reverse the effect of :meth:`narrow`. """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">>=</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">"""</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"> """</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">"""</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"> >>> data = Data()</span> |
| <span class="sd"> >>> data.put_list()</span> |
| <span class="sd"> >>> data.enter()</span> |
| <span class="sd"> >>> data.put_int(1)</span> |
| <span class="sd"> >>> data.put_int(2)</span> |
| <span class="sd"> >>> data.put_int(3)</span> |
| <span class="sd"> >>> data.exit()</span> |
| |
| <span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span> |
| <span class="sd"> """</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">"""</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"> >>> data = Data()</span> |
| <span class="sd"> >>> data.put_map()</span> |
| <span class="sd"> >>> data.enter()</span> |
| <span class="sd"> >>> data.put_string("key")</span> |
| <span class="sd"> >>> data.put_string("value")</span> |
| <span class="sd"> >>> data.exit()</span> |
| |
| <span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span> |
| <span class="sd"> """</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">"""</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"> >>> data = Data()</span> |
| <span class="sd"> >>></span> |
| <span class="sd"> >>> data.put_array(False, Data.INT)</span> |
| <span class="sd"> >>> data.enter()</span> |
| <span class="sd"> >>> data.put_int(1)</span> |
| <span class="sd"> >>> data.put_int(2)</span> |
| <span class="sd"> >>> data.put_int(3)</span> |
| <span class="sd"> >>> data.exit()</span> |
| <span class="sd"> >>></span> |
| <span class="sd"> >>> data.put_array(True, Data.DOUBLE)</span> |
| <span class="sd"> >>> data.enter()</span> |
| <span class="sd"> >>> data.put_symbol("array-descriptor")</span> |
| <span class="sd"> >>> data.put_double(1.1)</span> |
| <span class="sd"> >>> data.put_double(1.2)</span> |
| <span class="sd"> >>> data.put_double(1.3)</span> |
| <span class="sd"> >>> 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"> """</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">"""</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"> >>> data = Data()</span> |
| <span class="sd"> >>> data.put_described()</span> |
| <span class="sd"> >>> data.enter()</span> |
| <span class="sd"> >>> data.put_symbol("value-descriptor")</span> |
| <span class="sd"> >>> data.put_string("the value")</span> |
| <span class="sd"> >>> data.exit()</span> |
| |
| <span class="sd"> :raise: :exc:`DataException` if there is a Proton error.</span> |
| <span class="sd"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"utf8"</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">"""</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"> """</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">'ascii'</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">"""</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"> >>> count = data.get_list()</span> |
| <span class="sd"> >>> data.enter()</span> |
| <span class="sd"> >>> 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"> >>> 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"> """</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">"""</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"> >>> count = data.get_map()</span> |
| <span class="sd"> >>> data.enter()</span> |
| <span class="sd"> >>> 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"> >>> 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"> """</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">"""</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"> >>> # read an array of strings with a symbolic descriptor</span> |
| <span class="sd"> >>> count, described, type = data.get_array()</span> |
| <span class="sd"> >>> data.enter()</span> |
| <span class="sd"> >>> data.next()</span> |
| <span class="sd"> >>> print "Descriptor:", data.get_symbol()</span> |
| <span class="sd"> >>> for i in range(count):</span> |
| <span class="sd"> ... data.next()</span> |
| <span class="sd"> ... print "Element:", data.get_string()</span> |
| <span class="sd"> >>> 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"> """</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">"""</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"> >>> # read a symbolically described string</span> |
| <span class="sd"> >>> assert data.is_described() # will error if the current node is not described</span> |
| <span class="sd"> >>> data.enter()</span> |
| <span class="sd"> >>> data.next()</span> |
| <span class="sd"> >>> print data.get_symbol()</span> |
| <span class="sd"> >>> data.next()</span> |
| <span class="sd"> >>> print data.get_string()</span> |
| <span class="sd"> >>> 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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</span> |
| <span class="sd"> Get the current node value as ``bytes``.</span> |
| |
| <span class="sd"> :return: If the current node is binary, its value, ``""`` otherwise.</span> |
| <span class="sd"> :rtype: ``bytes``</span> |
| <span class="sd"> """</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">"""</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, ``""`` otherwise.</span> |
| <span class="sd"> :rtype: ``str``</span> |
| <span class="sd"> """</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">"utf8"</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">"""</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, ``""`` otherwise.</span> |
| <span class="sd"> :rtype: :class:`symbol`</span> |
| <span class="sd"> """</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">'ascii'</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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 >=3.0 has 'memoryview', <=2.5 has 'buffer', >=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.33.0 documentation</a> »</li> |
| <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> |
| <li class="nav-item nav-item-this"><a href="">proton._data</a></li> |
| </ul> |
| </div> |
| <div class="footer" role="contentinfo"> |
| © Copyright 2019, Apache Qpid Contributors. |
| Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1. |
| </div> |
| </body> |
| </html> |