Skip to content

Commit 8b19f3d

Browse files
Deployed 76d5326 to dev with MkDocs 1.6.1 and mike 2.1.3
1 parent 2272733 commit 8b19f3d

4 files changed

Lines changed: 112 additions & 3 deletions

File tree

dev/api_reference/bind_manager/index.html

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,17 @@
750750
<nav class="md-nav" aria-label="SQLAlchemyBindManager">
751751
<ul class="md-nav__list">
752752

753+
<li class="md-nav__item">
754+
<a href="#sqlalchemy_bind_manager.SQLAlchemyBindManager.dispose_engines" class="md-nav__link">
755+
<span class="md-ellipsis">
756+
757+
dispose_engines
758+
759+
</span>
760+
</a>
761+
762+
</li>
763+
753764
<li class="md-nav__item">
754765
<a href="#sqlalchemy_bind_manager.SQLAlchemyBindManager.get_bind_mappers_metadata" class="md-nav__link">
755766
<span class="md-ellipsis">
@@ -946,6 +957,17 @@
946957
<nav class="md-nav" aria-label="SQLAlchemyBindManager">
947958
<ul class="md-nav__list">
948959

960+
<li class="md-nav__item">
961+
<a href="#sqlalchemy_bind_manager.SQLAlchemyBindManager.dispose_engines" class="md-nav__link">
962+
<span class="md-ellipsis">
963+
964+
dispose_engines
965+
966+
</span>
967+
</a>
968+
969+
</li>
970+
949971
<li class="md-nav__item">
950972
<a href="#sqlalchemy_bind_manager.SQLAlchemyBindManager.get_bind_mappers_metadata" class="md-nav__link">
951973
<span class="md-ellipsis">
@@ -1266,7 +1288,7 @@ <h3 id="sqlalchemy_bind_manager.SQLAlchemyBindManager" class="doc doc-heading">
12661288
<span class="bp">self</span><span class="o">.</span><span class="n">__init_bind</span><span class="p">(</span><span class="n">DEFAULT_BIND_NAME</span><span class="p">,</span> <span class="n">config</span><span class="p">)</span>
12671289
<span class="n">SQLAlchemyBindManager</span><span class="o">.</span><span class="n">_instances</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
12681290

1269-
<span class="k">def</span><span class="w"> </span><span class="nf">_dispose_sync</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
1291+
<span class="k">def</span><span class="w"> </span><span class="nf">dispose_engines</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
12701292
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Dispose all engines synchronously.</span>
12711293

12721294
<span class="sd"> This method is safe to call from any context, including __del__</span>
@@ -1280,7 +1302,7 @@ <h3 id="sqlalchemy_bind_manager.SQLAlchemyBindManager" class="doc doc-heading">
12801302
<span class="n">bind</span><span class="o">.</span><span class="n">engine</span><span class="o">.</span><span class="n">dispose</span><span class="p">()</span>
12811303

12821304
<span class="k">def</span><span class="w"> </span><span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
1283-
<span class="bp">self</span><span class="o">.</span><span class="n">_dispose_sync</span><span class="p">()</span>
1305+
<span class="bp">self</span><span class="o">.</span><span class="n">dispose_engines</span><span class="p">()</span>
12841306

12851307
<span class="k">def</span><span class="w"> </span><span class="nf">__init_bind</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="nb">str</span><span class="p">,</span> <span class="n">config</span><span class="p">:</span> <span class="n">SQLAlchemyConfig</span><span class="p">):</span>
12861308
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="n">SQLAlchemyConfig</span><span class="p">):</span>
@@ -1412,6 +1434,56 @@ <h3 id="sqlalchemy_bind_manager.SQLAlchemyBindManager" class="doc doc-heading">
14121434

14131435

14141436

1437+
<div class="doc doc-object doc-function">
1438+
1439+
1440+
<h4 id="sqlalchemy_bind_manager.SQLAlchemyBindManager.dispose_engines" class="doc doc-heading">
1441+
<span class="doc doc-object-name doc-function-name">dispose_engines</span>
1442+
1443+
1444+
</h4>
1445+
<div class="doc-signature highlight"><pre><span></span><code><span class="nf">dispose_engines</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="kc">None</span>
1446+
</code></pre></div>
1447+
1448+
<div class="doc doc-contents ">
1449+
1450+
<p>Dispose all engines synchronously.</p>
1451+
<p>This method is safe to call from any context, including <strong>del</strong>
1452+
and atexit handlers. For async engines, it uses the underlying
1453+
sync_engine to perform synchronous disposal.</p>
1454+
1455+
1456+
<details class="mkdocstrings-source">
1457+
<summary>Source code in <code>sqlalchemy_bind_manager/_bind_manager.py</code></summary>
1458+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 94</span>
1459+
<span class="normal"> 95</span>
1460+
<span class="normal"> 96</span>
1461+
<span class="normal"> 97</span>
1462+
<span class="normal"> 98</span>
1463+
<span class="normal"> 99</span>
1464+
<span class="normal">100</span>
1465+
<span class="normal">101</span>
1466+
<span class="normal">102</span>
1467+
<span class="normal">103</span>
1468+
<span class="normal">104</span>
1469+
<span class="normal">105</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">dispose_engines</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
1470+
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Dispose all engines synchronously.</span>
1471+
1472+
<span class="sd"> This method is safe to call from any context, including __del__</span>
1473+
<span class="sd"> and atexit handlers. For async engines, it uses the underlying</span>
1474+
<span class="sd"> sync_engine to perform synchronous disposal.</span>
1475+
<span class="sd"> &quot;&quot;&quot;</span>
1476+
<span class="k">for</span> <span class="n">bind</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">__binds</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
1477+
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">bind</span><span class="p">,</span> <span class="n">SQLAlchemyAsyncBind</span><span class="p">):</span>
1478+
<span class="n">bind</span><span class="o">.</span><span class="n">engine</span><span class="o">.</span><span class="n">sync_engine</span><span class="o">.</span><span class="n">dispose</span><span class="p">()</span>
1479+
<span class="k">else</span><span class="p">:</span>
1480+
<span class="n">bind</span><span class="o">.</span><span class="n">engine</span><span class="o">.</span><span class="n">dispose</span><span class="p">()</span>
1481+
</code></pre></div></td></tr></table></div>
1482+
</details>
1483+
</div>
1484+
1485+
</div>
1486+
14151487
<div class="doc doc-object doc-function">
14161488

14171489

dev/manager/config/index.html

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,17 @@
450450
</span>
451451
</a>
452452

453+
</li>
454+
455+
<li class="md-nav__item">
456+
<a href="#bind-engines-lifecycle" class="md-nav__link">
457+
<span class="md-ellipsis">
458+
459+
Bind engines lifecycle
460+
461+
</span>
462+
</a>
463+
453464
</li>
454465

455466
</ul>
@@ -886,6 +897,17 @@
886897
</span>
887898
</a>
888899

900+
</li>
901+
902+
<li class="md-nav__item">
903+
<a href="#bind-engines-lifecycle" class="md-nav__link">
904+
<span class="md-ellipsis">
905+
906+
Bind engines lifecycle
907+
908+
</span>
909+
</a>
910+
889911
</li>
890912

891913
</ul>
@@ -981,6 +1003,21 @@ <h2 id="asynchronous-database-engines">Asynchronous database engines</h2>
9811003
</code></pre></div>
9821004
<p>Note that async implementation has several differences from the sync one, make sure
9831005
to check <a href="https://docs.sqlalchemy.org/en/20/orm/extensions/asyncio.html">SQLAlchemy asyncio documentation</a></p>
1006+
<h2 id="bind-engines-lifecycle">Bind engines lifecycle</h2>
1007+
<p>Engine disposal is handled automatically by <code>SQLAlchemyBindManager</code>. Engines are disposed when:</p>
1008+
<ul>
1009+
<li>The manager instance is garbage collected</li>
1010+
<li>The Python interpreter shuts down (via an <code>atexit</code> handler)</li>
1011+
</ul>
1012+
<p>In some scenarios, such as automated tests, you may need to manually dispose engines to release database connections between tests. The <code>dispose_engines()</code> method is available for this purpose:</p>
1013+
<div class="highlight"><pre><span></span><code><span class="n">sa_manager</span> <span class="o">=</span> <span class="n">SQLAlchemyBindManager</span><span class="p">(</span><span class="n">config</span><span class="p">)</span>
1014+
1015+
<span class="c1"># ... use the manager ...</span>
1016+
1017+
<span class="c1"># Manually dispose all engines</span>
1018+
<span class="n">sa_manager</span><span class="o">.</span><span class="n">dispose_engines</span><span class="p">()</span>
1019+
</code></pre></div>
1020+
<p>This method disposes all engines synchronously, including async engines (using their underlying sync engine).</p>
9841021

9851022

9861023

dev/objects.inv

21 Bytes
Binary file not shown.

dev/search/search_index.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)