tag:github.com,2008:https://github.com/tarantool/tarantool-python/releases Release notes from tarantool-python 2024-03-27T07:59:28Z tag:github.com,2008:Repository/2915576/1.2.0 2024-03-27T08:19:06Z 1.2.0: socket fd <h2>Overview</h2> <p>This release introduces socket fd connect support.</p> <h2>Added</h2> <ul> <li>The ability to connect to the Tarantool using an existing socket fd (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1828888903" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/304" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/304/hovercard" href="https://github.com/tarantool/tarantool-python/issues/304">#304</a>).</li> </ul> DifferentialOrange tag:github.com,2008:Repository/2915576/1.1.2 2023-09-20T07:16:15Z tarantool-python 1.1.2 <h2>Overview</h2> <p>This release introduces several bugfixes and behavior improvements.</p> <h2>Fixed</h2> <ul> <li>Exception rethrow in crud API (PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1903162035" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/310" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/310/hovercard" href="https://github.com/tarantool/tarantool-python/pull/310">#310</a>).</li> <li>Work with timestamps larger than year 2038 for some platforms (like Windows) (PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1903376845" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/311" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/311/hovercard" href="https://github.com/tarantool/tarantool-python/pull/311">#311</a>). It covers <ul> <li>building new <code>tarantool.Datetime</code> objects from timestamp,</li> <li>parsing datetime objects received from Tarantool.</li> </ul> </li> </ul> DifferentialOrange tag:github.com,2008:Repository/2915576/1.1.1 2023-07-21T08:31:26Z tarantool-python 1.1.1 <h2>Overview</h2> <p>This release introduces various datetime interval fixes and quality of life improvements.</p> <h2>Breaking changes</h2> <ul> <li>Forbid to create datetime intervals out of Tarantool limits (PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1807940167" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/302" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/302/hovercard" href="https://github.com/tarantool/tarantool-python/pull/302">#302</a>).</li> </ul> <h2>Changed</h2> <ul> <li>Validate <code>tarantool.Interval</code> limits with the same rules as in Tarantool (PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1807940167" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/302" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/302/hovercard" href="https://github.com/tarantool/tarantool-python/pull/302">#302</a>).</li> </ul> <h2>Fixed</h2> <ul> <li><code>tarantool.Interval</code> arithmetic with weeks (PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1807940167" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/302" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/302/hovercard" href="https://github.com/tarantool/tarantool-python/pull/302">#302</a>).</li> <li><code>tarantool.Interval</code> weeks display in <code>str()</code> and <code>repr()</code> (PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1807940167" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/302" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/302/hovercard" href="https://github.com/tarantool/tarantool-python/pull/302">#302</a>).</li> </ul> DifferentialOrange tag:github.com,2008:Repository/2915576/1.1.0 2023-06-30T09:39:20Z tarantool-python 1.1.0 <h2>Overview</h2> <p>This release introduces API to request server protocol version and feature, as well as introduce decimal bugfix.</p> <h2>Breaking changes</h2> <ul> <li>Drop <code>msgpack-python</code> support. (Package not supported since 2019.) Use <code>msgpack</code> instead.</li> </ul> <h2>Added</h2> <ul> <li>Allow to require specific server protocol version and features (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1469260935" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/267" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/267/hovercard" href="https://github.com/tarantool/tarantool-python/issues/267">#267</a>).</li> </ul> <h2>Fixed</h2> <ul> <li>Parsing of E-notation Tarantool decimals with positive exponent (PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1780730250" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/298" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/298/hovercard" href="https://github.com/tarantool/tarantool-python/pull/298">#298</a>).</li> </ul> DifferentialOrange tag:github.com,2008:Repository/2915576/1.0.0 2023-04-17T11:32:58Z tarantool-python 1.0.0 <h2>Overview</h2> <p>This release introduces several minor behavior changes to make API more consistent.</p> <p>Starting from this release, connector no longer depends on <code>pandas</code>.</p> <h2>Breaking changes</h2> <ul> <li>Allow only named <code>on_push</code> and <code>on_push_ctx</code> for <code>insert</code> and <code>replace</code>.</li> <li><code>tarantool.Datetime</code> <code>__repr__</code> has been changed.</li> <li><code>tarantool.Datetime</code> input arguments are validated with <code>datetime.datetime</code> rules.</li> <li><code>tarantool.Datetime</code> is no longer expected to throw <code>pandas.Timestamp</code> exceptions. <code>datetime.datetime</code> exceptions will be thrown instead of them.</li> <li>Drop the support of <code>__eq__</code> operator of <code>tarantool.Datetime</code> for <code>pandas.Timestamp</code>.</li> <li>Remove <code>join</code> and <code>subscribe</code> connection methods.</li> </ul> <h2>Changes</h2> <ul> <li>Migrate to built-in <code>Warning</code> instead of a custom one.</li> <li>Migrate to built-in <code>RecursionError</code> instead of a custom one.</li> <li>Collect full exception traceback.</li> <li>Package no longer depends on <code>pandas</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1662282539" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/290" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/290/hovercard" href="https://github.com/tarantool/tarantool-python/issues/290">#290</a>).</li> </ul> <h2>Infrastructure</h2> <ul> <li>Lint the code with <code>pylint</code>, <code>flake8</code> and <code>codespell</code>.</li> </ul> DifferentialOrange tag:github.com,2008:Repository/2915576/0.12.1 2023-02-28T07:51:44Z tarantool-python 0.12.1 <h2>Overview</h2> <p>This release introduces several bug fixes and behavior improvements.</p> <h2>Breaking changes</h2> <p>This release should not break any existing behavior.</p> <h2>Bugfixes</h2> <ul> <li>Discovery iproto features only for Tarantools since version 2.10.0 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1600042588" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/283" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/283/hovercard" href="https://github.com/tarantool/tarantool-python/issues/283">#283</a>).</li> <li>Schema fetch for spaces with foreign keys (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1599057347" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/282" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/282/hovercard" href="https://github.com/tarantool/tarantool-python/issues/282">#282</a>).</li> </ul> DifferentialOrange tag:github.com,2008:Repository/2915576/0.12.0 2023-02-13T10:56:49Z tarantool-python 0.12.0 <h2>Overview</h2> <p>This release introduces the support of <code>fetch_schema</code> connection option to disable schema fetch and various fixes.</p> <h2>Breaking changes</h2> <p>This release should not break any existing behavior.</p> <h2>New features</h2> <ul> <li><code>fetch_schema</code> parameter for a connection (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1237592756" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/219" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/219/hovercard" href="https://github.com/tarantool/tarantool-python/issues/219">#219</a>).</li> </ul> <h2>Bugfixes</h2> <ul> <li>Error code on socket error (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1579553304" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/279" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/279/hovercard" href="https://github.com/tarantool/tarantool-python/pull/279">#279</a>).</li> </ul> <h2>Thanks</h2> <p>We want to thank <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bekhzod91/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bekhzod91">@bekhzod91</a> for a bugfix contribution.</p> DifferentialOrange tag:github.com,2008:Repository/2915576/0.11.0 2022-12-30T23:35:50Z tarantool-python 0.11.0 <h2>Overview</h2> <p>This release introduces the support of crud module API, encoding and decoding customization and various security features for Tarantool EE.</p> <h2>Breaking changes</h2> <p>This release should not break any existing behavior.</p> <h2>New features</h2> <ul> <li>Support custom packer and unpacker factories (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="909297028" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/191" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/191/hovercard" href="https://github.com/tarantool/tarantool-python/issues/191">#191</a>).</li> <li>Support <a href="https://github.com/tarantool/crud">crud module</a> native API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1080156942" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/205" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/205/hovercard" href="https://github.com/tarantool/tarantool-python/issues/205">#205</a>).</li> <li>Support <code>ssl_password</code> and <code>ssl_password_file</code> options to decrypt private SSL key file (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1334477885" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/224" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/224/hovercard" href="https://github.com/tarantool/tarantool-python/issues/224">#224</a>).</li> <li>Support specifying authentication method with <code>auth_type</code> and Tarantool EE <code>pap-sha256</code> authentication method (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1470913812" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/269" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/269/hovercard" href="https://github.com/tarantool/tarantool-python/issues/269">#269</a>).</li> </ul> DifferentialOrange tag:github.com,2008:Repository/2915576/0.10.0 2022-11-09T11:32:56Z tarantool-python 0.10.0 <h2>Overview</h2> <p>This release introduces the support of extension types (decimal, uuid, error, datetime, interval) in MessagePack, various IProto features support (feature discovery and push protocol) and major infrastructure updates (scm version computation, full documentation for external and internal API both as code docstrings and readthedocs HTML, deb and RPM packages, and everything is processed with CI/CD pipelines).</p> <p>For deb and RPM packages, search for <code>python3-tarantool</code>.</p> <h2>Breaking changes</h2> <p>This release should not break any existing behavior.</p> <h2>New features</h2> <ul> <li> <p>Backport ConnectionPool support for Python 3.6 (PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1407919782" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/245" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/245/hovercard" href="https://github.com/tarantool/tarantool-python/pull/245">#245</a>).</p> </li> <li> <p>Support iproto feature discovery (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1080174073" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/206" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/206/hovercard" href="https://github.com/tarantool/tarantool-python/issues/206">#206</a>).</p> </li> <li> <p>Decimal type support (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1080021302" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/203" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/203/hovercard" href="https://github.com/tarantool/tarantool-python/issues/203">#203</a>).</p> </li> <li> <p>UUID type support (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1080010816" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/202" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/202/hovercard" href="https://github.com/tarantool/tarantool-python/issues/202">#202</a>).</p> </li> <li> <p>Support extra information for iproto errors (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1373190062" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/232" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/232/hovercard" href="https://github.com/tarantool/tarantool-python/issues/232">#232</a>).</p> </li> <li> <p>Error extension type support (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1373190062" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/232" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/232/hovercard" href="https://github.com/tarantool/tarantool-python/issues/232">#232</a>).</p> </li> <li> <p>Datetime type support and tarantool.Datetime type (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1080023994" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/204" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/204/hovercard" href="https://github.com/tarantool/tarantool-python/issues/204">#204</a>, PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1420836814" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/252" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/252/hovercard" href="https://github.com/tarantool/tarantool-python/pull/252">#252</a>).</p> <p>Tarantool datetime objects are decoded to <code>tarantool.Datetime</code><br> type. <code>tarantool.Datetime</code> may be encoded to Tarantool datetime<br> objects.</p> <p>You can create <code>tarantool.Datetime</code> objects either from<br> MessagePack data or by using the same API as in Tarantool:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="dt1 = tarantool.Datetime(year=2022, month=8, day=31, hour=18, minute=7, sec=54, nsec=308543321) dt2 = tarantool.Datetime(timestamp=1661969274) dt3 = tarantool.Datetime(timestamp=1661969274, nsec=308543321)"><pre><span class="pl-s1">dt1</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">year</span><span class="pl-c1">=</span><span class="pl-c1">2022</span>, <span class="pl-s1">month</span><span class="pl-c1">=</span><span class="pl-c1">8</span>, <span class="pl-s1">day</span><span class="pl-c1">=</span><span class="pl-c1">31</span>, <span class="pl-s1">hour</span><span class="pl-c1">=</span><span class="pl-c1">18</span>, <span class="pl-s1">minute</span><span class="pl-c1">=</span><span class="pl-c1">7</span>, <span class="pl-s1">sec</span><span class="pl-c1">=</span><span class="pl-c1">54</span>, <span class="pl-s1">nsec</span><span class="pl-c1">=</span><span class="pl-c1">308543321</span>) <span class="pl-s1">dt2</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">timestamp</span><span class="pl-c1">=</span><span class="pl-c1">1661969274</span>) <span class="pl-s1">dt3</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">timestamp</span><span class="pl-c1">=</span><span class="pl-c1">1661969274</span>, <span class="pl-s1">nsec</span><span class="pl-c1">=</span><span class="pl-c1">308543321</span>)</pre></div> <p><code>tarantool.Datetime</code> exposes <code>year</code>, <code>month</code>, <code>day</code>, <code>hour</code>,<br> <code>minute</code>, <code>sec</code>, <code>nsec</code>, <code>timestamp</code> and <code>value</code> (integer epoch time<br> with nanoseconds precision) properties if you need to convert<br> <code>tarantool.Datetime</code> to any other kind of datetime object:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="pdt = pandas.Timestamp(year=dt.year, month=dt.month, day=dt.day, hour=dt.hour, minute=dt.minute, second=dt.sec, microsecond=(dt.nsec // 1000), nanosecond=(dt.nsec % 1000))"><pre><span class="pl-s1">pdt</span> <span class="pl-c1">=</span> <span class="pl-s1">pandas</span>.<span class="pl-c1">Timestamp</span>(<span class="pl-s1">year</span><span class="pl-c1">=</span><span class="pl-s1">dt</span>.<span class="pl-c1">year</span>, <span class="pl-s1">month</span><span class="pl-c1">=</span><span class="pl-s1">dt</span>.<span class="pl-c1">month</span>, <span class="pl-s1">day</span><span class="pl-c1">=</span><span class="pl-s1">dt</span>.<span class="pl-c1">day</span>, <span class="pl-s1">hour</span><span class="pl-c1">=</span><span class="pl-s1">dt</span>.<span class="pl-c1">hour</span>, <span class="pl-s1">minute</span><span class="pl-c1">=</span><span class="pl-s1">dt</span>.<span class="pl-c1">minute</span>, <span class="pl-s1">second</span><span class="pl-c1">=</span><span class="pl-s1">dt</span>.<span class="pl-c1">sec</span>, <span class="pl-s1">microsecond</span><span class="pl-c1">=</span>(<span class="pl-s1">dt</span>.<span class="pl-c1">nsec</span> <span class="pl-c1">//</span> <span class="pl-c1">1000</span>), <span class="pl-s1">nanosecond</span><span class="pl-c1">=</span>(<span class="pl-s1">dt</span>.<span class="pl-c1">nsec</span> <span class="pl-c1">%</span> <span class="pl-c1">1000</span>))</pre></div> <p>Use <code>tzoffset</code> parameter to set up offset timezone:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="dt = tarantool.Datetime(year=2022, month=8, day=31, hour=18, minute=7, sec=54, nsec=308543321, tzoffset=180)"><pre><span class="pl-s1">dt</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">year</span><span class="pl-c1">=</span><span class="pl-c1">2022</span>, <span class="pl-s1">month</span><span class="pl-c1">=</span><span class="pl-c1">8</span>, <span class="pl-s1">day</span><span class="pl-c1">=</span><span class="pl-c1">31</span>, <span class="pl-s1">hour</span><span class="pl-c1">=</span><span class="pl-c1">18</span>, <span class="pl-s1">minute</span><span class="pl-c1">=</span><span class="pl-c1">7</span>, <span class="pl-s1">sec</span><span class="pl-c1">=</span><span class="pl-c1">54</span>, <span class="pl-s1">nsec</span><span class="pl-c1">=</span><span class="pl-c1">308543321</span>, <span class="pl-s1">tzoffset</span><span class="pl-c1">=</span><span class="pl-c1">180</span>)</pre></div> <p>You may use <code>tzoffset</code> property to get timezone offset of a datetime<br> object.</p> <p>Use <code>tz</code> parameter to set up timezone name:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="dt = tarantool.Datetime(year=2022, month=8, day=31, hour=18, minute=7, sec=54, nsec=308543321, tz='Europe/Moscow')"><pre><span class="pl-s1">dt</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">year</span><span class="pl-c1">=</span><span class="pl-c1">2022</span>, <span class="pl-s1">month</span><span class="pl-c1">=</span><span class="pl-c1">8</span>, <span class="pl-s1">day</span><span class="pl-c1">=</span><span class="pl-c1">31</span>, <span class="pl-s1">hour</span><span class="pl-c1">=</span><span class="pl-c1">18</span>, <span class="pl-s1">minute</span><span class="pl-c1">=</span><span class="pl-c1">7</span>, <span class="pl-s1">sec</span><span class="pl-c1">=</span><span class="pl-c1">54</span>, <span class="pl-s1">nsec</span><span class="pl-c1">=</span><span class="pl-c1">308543321</span>, <span class="pl-s1">tz</span><span class="pl-c1">=</span><span class="pl-s">'Europe/Moscow'</span>)</pre></div> <p>If both <code>tz</code> and <code>tzoffset</code> is specified, <code>tz</code> is used.</p> <p>You may use <code>tz</code> property to get timezone name of a datetime object.</p> <p><code>timestamp_since_utc_epoch</code> is a parameter to set timestamp<br> convertion behavior for timezone-aware datetimes.</p> <p>If <code>False</code> (default), behaves similar to Tarantool <code>datetime.new()</code>:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; dt = tarantool.Datetime(timestamp=1640995200, timestamp_since_utc_epoch=False) &gt;&gt;&gt; dt datetime: Timestamp('2022-01-01 00:00:00'), tz: &quot;&quot; &gt;&gt;&gt; dt.timestamp 1640995200.0 &gt;&gt;&gt; dt = tarantool.Datetime(timestamp=1640995200, tz='Europe/Moscow', ... timestamp_since_utc_epoch=False) &gt;&gt;&gt; dt datetime: Timestamp('2022-01-01 00:00:00+0300', tz='Europe/Moscow'), tz: &quot;Europe/Moscow&quot; &gt;&gt;&gt; dt.timestamp 1640984400.0"><pre><span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">timestamp</span><span class="pl-c1">=</span><span class="pl-c1">1640995200</span>, <span class="pl-s1">timestamp_since_utc_epoch</span><span class="pl-c1">=</span><span class="pl-c1">False</span>) <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-s1">datetime</span>: <span class="pl-en">Timestamp</span>(<span class="pl-s">'2022-01-01 00:00:00'</span>), <span class="pl-smi">tz</span>: <span class="pl-s">""</span> <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span>.<span class="pl-c1">timestamp</span> <span class="pl-c1">1640995200.0</span> <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">timestamp</span><span class="pl-c1">=</span><span class="pl-c1">1640995200</span>, <span class="pl-s1">tz</span><span class="pl-c1">=</span><span class="pl-s">'Europe/Moscow'</span>, ... <span class="pl-s1">timestamp_since_utc_epoch</span><span class="pl-c1">=</span><span class="pl-c1">False</span>) <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-s1">datetime</span>: <span class="pl-en">Timestamp</span>(<span class="pl-s">'2022-01-01 00:00:00+0300'</span>, <span class="pl-s1">tz</span><span class="pl-c1">=</span><span class="pl-s">'Europe/Moscow'</span>), <span class="pl-smi">tz</span>: <span class="pl-s">"Europe/Moscow"</span> <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span>.<span class="pl-c1">timestamp</span> <span class="pl-c1">1640984400.0</span></pre></div> <p>Thus, if <code>False</code>, datetime is computed from timestamp<br> since epoch and then timezone is applied without any<br> convertion. In that case, <code>dt.timestamp</code> won't be equal to<br> initialization <code>timestamp</code> for all timezones with non-zero offset.</p> <p>If <code>True</code>, behaves similar to <code>pandas.Timestamp</code>:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; dt = tarantool.Datetime(timestamp=1640995200, timestamp_since_utc_epoch=True) &gt;&gt;&gt; dt datetime: Timestamp('2022-01-01 00:00:00'), tz: &quot;&quot; &gt;&gt;&gt; dt.timestamp 1640995200.0 &gt;&gt;&gt; dt = tarantool.Datetime(timestamp=1640995200, tz='Europe/Moscow', ... timestamp_since_utc_epoch=True) &gt;&gt;&gt; dt datetime: Timestamp('2022-01-01 03:00:00+0300', tz='Europe/Moscow'), tz: &quot;Europe/Moscow&quot; &gt;&gt;&gt; dt.timestamp 1640995200.0"><pre><span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">timestamp</span><span class="pl-c1">=</span><span class="pl-c1">1640995200</span>, <span class="pl-s1">timestamp_since_utc_epoch</span><span class="pl-c1">=</span><span class="pl-c1">True</span>) <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-s1">datetime</span>: <span class="pl-en">Timestamp</span>(<span class="pl-s">'2022-01-01 00:00:00'</span>), <span class="pl-smi">tz</span>: <span class="pl-s">""</span> <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span>.<span class="pl-c1">timestamp</span> <span class="pl-c1">1640995200.0</span> <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">timestamp</span><span class="pl-c1">=</span><span class="pl-c1">1640995200</span>, <span class="pl-s1">tz</span><span class="pl-c1">=</span><span class="pl-s">'Europe/Moscow'</span>, ... <span class="pl-s1">timestamp_since_utc_epoch</span><span class="pl-c1">=</span><span class="pl-c1">True</span>) <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-s1">datetime</span>: <span class="pl-en">Timestamp</span>(<span class="pl-s">'2022-01-01 03:00:00+0300'</span>, <span class="pl-s1">tz</span><span class="pl-c1">=</span><span class="pl-s">'Europe/Moscow'</span>), <span class="pl-smi">tz</span>: <span class="pl-s">"Europe/Moscow"</span> <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span>.<span class="pl-c1">timestamp</span> <span class="pl-c1">1640995200.0</span></pre></div> <p>Thus, if <code>True</code>, datetime is computed in a way that <code>dt.timestamp</code> will<br> always be equal to initialization <code>timestamp</code>.</p> </li> <li> <p>Datetime interval type support and tarantool.Interval type (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1364446958" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/229" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/229/hovercard" href="https://github.com/tarantool/tarantool-python/issues/229">#229</a>).</p> <p>Tarantool datetime interval objects are decoded to <code>tarantool.Interval</code><br> type. <code>tarantool.Interval</code> may be encoded to Tarantool interval<br> objects.</p> <p>You can create <code>tarantool.Interval</code> objects either from<br> MessagePack data or by using the same API as in Tarantool:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="di = tarantool.Interval(year=-1, month=2, day=3, hour=4, minute=-5, sec=6, nsec=308543321, adjust=tarantool.IntervalAdjust.NONE)"><pre><span class="pl-s1">di</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Interval</span>(<span class="pl-s1">year</span><span class="pl-c1">=</span><span class="pl-c1">-</span><span class="pl-c1">1</span>, <span class="pl-s1">month</span><span class="pl-c1">=</span><span class="pl-c1">2</span>, <span class="pl-s1">day</span><span class="pl-c1">=</span><span class="pl-c1">3</span>, <span class="pl-s1">hour</span><span class="pl-c1">=</span><span class="pl-c1">4</span>, <span class="pl-s1">minute</span><span class="pl-c1">=</span><span class="pl-c1">-</span><span class="pl-c1">5</span>, <span class="pl-s1">sec</span><span class="pl-c1">=</span><span class="pl-c1">6</span>, <span class="pl-s1">nsec</span><span class="pl-c1">=</span><span class="pl-c1">308543321</span>, <span class="pl-s1">adjust</span><span class="pl-c1">=</span><span class="pl-s1">tarantool</span>.<span class="pl-c1">IntervalAdjust</span>.<span class="pl-c1">NONE</span>)</pre></div> <p>Its attributes (same as in init API) are exposed, so you can<br> use them if needed.</p> </li> <li> <p>Datetime interval arithmetic support (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1364446958" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/229" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/229/hovercard" href="https://github.com/tarantool/tarantool-python/issues/229">#229</a>).</p> <p>Valid operations:</p> <ul> <li><code>tarantool.Datetime</code> + <code>tarantool.Interval</code> = <code>tarantool.Datetime</code></li> <li><code>tarantool.Datetime</code> - <code>tarantool.Interval</code> = <code>tarantool.Datetime</code></li> <li><code>tarantool.Datetime</code> - <code>tarantool.Datetime</code> = <code>tarantool.Interval</code></li> <li><code>tarantool.Interval</code> + <code>tarantool.Interval</code> = <code>tarantool.Interval</code></li> <li><code>tarantool.Interval</code> - <code>tarantool.Interval</code> = <code>tarantool.Interval</code></li> </ul> <p>Since <code>tarantool.Interval</code> could contain <code>month</code> and <code>year</code> fields<br> and such operations could be ambiguous, you can use <code>adjust</code> field<br> to tune the logic. The behavior is the same as in Tarantool, see<br> <a href="https://github.com/tarantool/tarantool/wiki/Datetime-Internals#interval-arithmetic">Interval arithmetic RFC</a>.</p> <ul> <li> <p><code>tarantool.IntervalAdjust.NONE</code> -- only truncation toward the end of<br> month performed (default mode).</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; dt = tarantool.Datetime(year=2022, month=3, day=31) datetime: Timestamp('2022-03-31 00:00:00'), tz: &quot;&quot; &gt;&gt;&gt; di = tarantool.Interval(month=1, adjust=tarantool.IntervalAdjust.NONE) &gt;&gt;&gt; dt + di datetime: Timestamp('2022-04-30 00:00:00'), tz: &quot;&quot;"><pre><span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">year</span><span class="pl-c1">=</span><span class="pl-c1">2022</span>, <span class="pl-s1">month</span><span class="pl-c1">=</span><span class="pl-c1">3</span>, <span class="pl-s1">day</span><span class="pl-c1">=</span><span class="pl-c1">31</span>) <span class="pl-s1">datetime</span>: <span class="pl-en">Timestamp</span>(<span class="pl-s">'2022-03-31 00:00:00'</span>), <span class="pl-smi">tz</span>: <span class="pl-s">""</span> <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">di</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Interval</span>(<span class="pl-s1">month</span><span class="pl-c1">=</span><span class="pl-c1">1</span>, <span class="pl-s1">adjust</span><span class="pl-c1">=</span><span class="pl-s1">tarantool</span>.<span class="pl-c1">IntervalAdjust</span>.<span class="pl-c1">NONE</span>) <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-c1">+</span> <span class="pl-s1">di</span> <span class="pl-s1">datetime</span>: <span class="pl-en">Timestamp</span>(<span class="pl-s">'2022-04-30 00:00:00'</span>), <span class="pl-s1">tz</span>: <span class="pl-s">""</span></pre></div> </li> <li> <p><code>tarantool.IntervalAdjust.EXCESS</code> -- overflow mode, without any snap<br> or truncation to the end of month, straight addition of days in month,<br> stopping over month boundaries if there is less number of days.</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; dt = tarantool.Datetime(year=2022, month=1, day=31) datetime: Timestamp('2022-01-31 00:00:00'), tz: &quot;&quot; &gt;&gt;&gt; di = tarantool.Interval(month=1, adjust=tarantool.IntervalAdjust.EXCESS) &gt;&gt;&gt; dt + di datetime: Timestamp('2022-03-02 00:00:00'), tz: &quot;&quot;"><pre><span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">year</span><span class="pl-c1">=</span><span class="pl-c1">2022</span>, <span class="pl-s1">month</span><span class="pl-c1">=</span><span class="pl-c1">1</span>, <span class="pl-s1">day</span><span class="pl-c1">=</span><span class="pl-c1">31</span>) <span class="pl-s1">datetime</span>: <span class="pl-en">Timestamp</span>(<span class="pl-s">'2022-01-31 00:00:00'</span>), <span class="pl-smi">tz</span>: <span class="pl-s">""</span> <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">di</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Interval</span>(<span class="pl-s1">month</span><span class="pl-c1">=</span><span class="pl-c1">1</span>, <span class="pl-s1">adjust</span><span class="pl-c1">=</span><span class="pl-s1">tarantool</span>.<span class="pl-c1">IntervalAdjust</span>.<span class="pl-c1">EXCESS</span>) <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-c1">+</span> <span class="pl-s1">di</span> <span class="pl-s1">datetime</span>: <span class="pl-en">Timestamp</span>(<span class="pl-s">'2022-03-02 00:00:00'</span>), <span class="pl-s1">tz</span>: <span class="pl-s">""</span></pre></div> </li> <li> <p><code>tarantool.IntervalAdjust.LAST</code> -- mode when day snaps to the end of month,<br> if happens.</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; dt = tarantool.Datetime(year=2022, month=2, day=28) datetime: Timestamp('2022-02-28 00:00:00'), tz: &quot;&quot; &gt;&gt;&gt; di = tarantool.Interval(month=1, adjust=tarantool.IntervalAdjust.LAST) &gt;&gt;&gt; dt + di datetime: Timestamp('2022-03-31 00:00:00'), tz: &quot;&quot;"><pre><span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Datetime</span>(<span class="pl-s1">year</span><span class="pl-c1">=</span><span class="pl-c1">2022</span>, <span class="pl-s1">month</span><span class="pl-c1">=</span><span class="pl-c1">2</span>, <span class="pl-s1">day</span><span class="pl-c1">=</span><span class="pl-c1">28</span>) <span class="pl-s1">datetime</span>: <span class="pl-en">Timestamp</span>(<span class="pl-s">'2022-02-28 00:00:00'</span>), <span class="pl-smi">tz</span>: <span class="pl-s">""</span> <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">di</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Interval</span>(<span class="pl-s1">month</span><span class="pl-c1">=</span><span class="pl-c1">1</span>, <span class="pl-s1">adjust</span><span class="pl-c1">=</span><span class="pl-s1">tarantool</span>.<span class="pl-c1">IntervalAdjust</span>.<span class="pl-c1">LAST</span>) <span class="pl-c1">&gt;</span><span class="pl-c1">&gt;&gt;</span> <span class="pl-s1">dt</span> <span class="pl-c1">+</span> <span class="pl-s1">di</span> <span class="pl-s1">datetime</span>: <span class="pl-en">Timestamp</span>(<span class="pl-s">'2022-03-31 00:00:00'</span>), <span class="pl-s1">tz</span>: <span class="pl-s">""</span></pre></div> </li> </ul> </li> <li> <p>Full documentation of internal and external API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="132469733" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/67" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/67/hovercard" href="https://github.com/tarantool/tarantool-python/issues/67">#67</a>).</p> </li> </ul> <h2>Bugfixes</h2> <ul> <li>Allow any MessagePack supported type as a request key (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1402714063" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/240" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/240/hovercard" href="https://github.com/tarantool/tarantool-python/issues/240">#240</a>).</li> <li>Make connection close idempotent (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1420331570" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/250" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/250/hovercard" href="https://github.com/tarantool/tarantool-python/issues/250">#250</a>).</li> </ul> <h2>Infrastructure</h2> <ul> <li>Use git version to set package version (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1401059711" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/238" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/238/hovercard" href="https://github.com/tarantool/tarantool-python/issues/238">#238</a>).</li> <li>Test pip install from branch (PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1403140652" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/241" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/241/hovercard" href="https://github.com/tarantool/tarantool-python/pull/241">#241</a>).</li> <li>Pack and publish pip, RPM and deb packages with GitHub Actions (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="683206626" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/164" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/164/hovercard" href="https://github.com/tarantool/tarantool-python/issues/164">#164</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1079821174" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/198" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/198/hovercard" href="https://github.com/tarantool/tarantool-python/issues/198">#198</a>).</li> <li>Publish on readthedocs with CI/CD (including PRs) (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="132469733" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/67" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/67/hovercard" href="https://github.com/tarantool/tarantool-python/issues/67">#67</a>).</li> </ul> DifferentialOrange tag:github.com,2008:Repository/2915576/0.9.0 2022-06-20T18:22:12Z tarantool-python 0.9.0 <h3>Overview</h3> <p>This release features SSL support.</p> <p>To use encrypted connection with Tarantool Enterprise Edition instance, pass "ssl" <code>transport</code> parameter on connect:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="con = tarantool.Connection( host, port, user=user, password=pass, transport=&quot;ssl&quot;)"><pre><span class="pl-s1">con</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Connection</span>( <span class="pl-s1">host</span>, <span class="pl-s1">port</span>, <span class="pl-s1">user</span><span class="pl-c1">=</span><span class="pl-s1">user</span>, <span class="pl-s1">password</span><span class="pl-c1">=</span><span class="pl-s1">pass</span>, <span class="pl-s1">transport</span><span class="pl-c1">=</span><span class="pl-s">"ssl"</span>)</pre></div> <p>To verify the server, set client trusted certificate authorities (CA) file with <code>ssl_ca_file</code> parameter:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="con = tarantool.Connection( host, port, user=user, password=password, transport=&quot;ssl&quot;, ssl_ca_file=client_ca_file)"><pre><span class="pl-s1">con</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Connection</span>( <span class="pl-s1">host</span>, <span class="pl-s1">port</span>, <span class="pl-s1">user</span><span class="pl-c1">=</span><span class="pl-s1">user</span>, <span class="pl-s1">password</span><span class="pl-c1">=</span><span class="pl-s1">password</span>, <span class="pl-s1">transport</span><span class="pl-c1">=</span><span class="pl-s">"ssl"</span>, <span class="pl-s1">ssl_ca_file</span><span class="pl-c1">=</span><span class="pl-s1">client_ca_file</span>)</pre></div> <p>If the server authenticates clients using certificates issued by given CA, you must provide private SSL key file with <code>ssl_key_file</code> parameter and SSL certificate file with <code>ssl_cert_file</code> parameter. Otherwise, these parameters are optional.</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="con = tarantool.Connection( host, port, user=user, password=password, transport=&quot;ssl&quot;, ssl_key_file=client_key_file, ssl_cert_file=client_cert_file)"><pre><span class="pl-s1">con</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Connection</span>( <span class="pl-s1">host</span>, <span class="pl-s1">port</span>, <span class="pl-s1">user</span><span class="pl-c1">=</span><span class="pl-s1">user</span>, <span class="pl-s1">password</span><span class="pl-c1">=</span><span class="pl-s1">password</span>, <span class="pl-s1">transport</span><span class="pl-c1">=</span><span class="pl-s">"ssl"</span>, <span class="pl-s1">ssl_key_file</span><span class="pl-c1">=</span><span class="pl-s1">client_key_file</span>, <span class="pl-s1">ssl_cert_file</span><span class="pl-c1">=</span><span class="pl-s1">client_cert_file</span>)</pre></div> <p>To set SSL ciphers, set them with <code>ssl_ciphers</code> parameter as a colon-separated (:) string:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="con = tarantool.Connection( host, port, user=user, password=password, transport=&quot;ssl&quot;, ssl_ciphers=client_ssl_ciphers)"><pre><span class="pl-s1">con</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">Connection</span>( <span class="pl-s1">host</span>, <span class="pl-s1">port</span>, <span class="pl-s1">user</span><span class="pl-c1">=</span><span class="pl-s1">user</span>, <span class="pl-s1">password</span><span class="pl-c1">=</span><span class="pl-s1">password</span>, <span class="pl-s1">transport</span><span class="pl-c1">=</span><span class="pl-s">"ssl"</span>, <span class="pl-s1">ssl_ciphers</span><span class="pl-c1">=</span><span class="pl-s1">client_ssl_ciphers</span>)</pre></div> <p>ConnectionPool and MeshConnection also support these parameters.</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="mesh = tarantool.MeshConnection( addrs={ &quot;host&quot;: host, &quot;post&quot;: port, &quot;transport&quot;: &quot;ssl&quot;, &quot;ssl_key_file&quot;: client_key_file, &quot;ssl_cert_file&quot;: client_cert_file, &quot;ssl_ca_file&quot;: client_ca_file, &quot;ssl_ciphers&quot;: client_ssl_ciphers, }, user=user, password=password)"><pre><span class="pl-s1">mesh</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">MeshConnection</span>( <span class="pl-s1">addrs</span><span class="pl-c1">=</span>{ <span class="pl-s">"host"</span>: <span class="pl-s1">host</span>, <span class="pl-s">"post"</span>: <span class="pl-s1">port</span>, <span class="pl-s">"transport"</span>: <span class="pl-s">"ssl"</span>, <span class="pl-s">"ssl_key_file"</span>: <span class="pl-s1">client_key_file</span>, <span class="pl-s">"ssl_cert_file"</span>: <span class="pl-s1">client_cert_file</span>, <span class="pl-s">"ssl_ca_file"</span>: <span class="pl-s1">client_ca_file</span>, <span class="pl-s">"ssl_ciphers"</span>: <span class="pl-s1">client_ssl_ciphers</span>, }, <span class="pl-s1">user</span><span class="pl-c1">=</span><span class="pl-s1">user</span>, <span class="pl-s1">password</span><span class="pl-c1">=</span><span class="pl-s1">password</span>)</pre></div> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="pool = tarantool.ConnectionPool( addrs={ &quot;host&quot;: host, &quot;post&quot;: port, &quot;transport&quot;: &quot;ssl&quot;, &quot;ssl_key_file&quot;: client_key_file, &quot;ssl_cert_file&quot;: client_cert_file, &quot;ssl_ca_file&quot;: client_ca_file, &quot;ssl_ciphers&quot;: client_ssl_ciphers, }, user=user, password=password)"><pre><span class="pl-s1">pool</span> <span class="pl-c1">=</span> <span class="pl-s1">tarantool</span>.<span class="pl-c1">ConnectionPool</span>( <span class="pl-s1">addrs</span><span class="pl-c1">=</span>{ <span class="pl-s">"host"</span>: <span class="pl-s1">host</span>, <span class="pl-s">"post"</span>: <span class="pl-s1">port</span>, <span class="pl-s">"transport"</span>: <span class="pl-s">"ssl"</span>, <span class="pl-s">"ssl_key_file"</span>: <span class="pl-s1">client_key_file</span>, <span class="pl-s">"ssl_cert_file"</span>: <span class="pl-s1">client_cert_file</span>, <span class="pl-s">"ssl_ca_file"</span>: <span class="pl-s1">client_ca_file</span>, <span class="pl-s">"ssl_ciphers"</span>: <span class="pl-s1">client_ssl_ciphers</span>, }, <span class="pl-s1">user</span><span class="pl-c1">=</span><span class="pl-s1">user</span>, <span class="pl-s1">password</span><span class="pl-c1">=</span><span class="pl-s1">password</span>)</pre></div> <p>See <a href="https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption" rel="nofollow">Tarantool Enterprise Edition manual</a> for details.</p> <h3>Breaking changes</h3> <p>There are no breaking changes in the release.</p> <h3>New features</h3> <ul> <li>SSL support (PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1263401983" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/220" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/220/hovercard" href="https://github.com/tarantool/tarantool-python/pull/220">#220</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1192007838" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/217" data-hovercard-type="issue" data-hovercard-url="/tarantool/tarantool-python/issues/217/hovercard" href="https://github.com/tarantool/tarantool-python/issues/217">#217</a>).</li> </ul> <h3>Testing</h3> <ul> <li>Tarantool Enterprise testing workflow on GitHub actions (PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1263401983" data-permission-text="Title is private" data-url="https://github.com/tarantool/tarantool-python/issues/220" data-hovercard-type="pull_request" data-hovercard-url="/tarantool/tarantool-python/pull/220/hovercard" href="https://github.com/tarantool/tarantool-python/pull/220">#220</a>).</li> </ul> DifferentialOrange