Skip to content

Commit 16e0188

Browse files
committed
deploy: 663d323
1 parent e10862c commit 16e0188

16 files changed

Lines changed: 22 additions & 100 deletions

File tree

architecture/index.html

Lines changed: 6 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -621,23 +621,6 @@
621621
</span>
622622
</a>
623623

624-
<nav class="md-nav" aria-label="Communication Protocol">
625-
<ul class="md-nav__list">
626-
627-
<li class="md-nav__item">
628-
<a href="#why-messagepack" class="md-nav__link">
629-
<span class="md-ellipsis">
630-
631-
Why MessagePack?
632-
633-
</span>
634-
</a>
635-
636-
</li>
637-
638-
</ul>
639-
</nav>
640-
641624
</li>
642625

643626
<li class="md-nav__item">
@@ -1447,23 +1430,6 @@
14471430
</span>
14481431
</a>
14491432

1450-
<nav class="md-nav" aria-label="Communication Protocol">
1451-
<ul class="md-nav__list">
1452-
1453-
<li class="md-nav__item">
1454-
<a href="#why-messagepack" class="md-nav__link">
1455-
<span class="md-ellipsis">
1456-
1457-
Why MessagePack?
1458-
1459-
</span>
1460-
</a>
1461-
1462-
</li>
1463-
1464-
</ul>
1465-
</nav>
1466-
14671433
</li>
14681434

14691435
<li class="md-nav__item">
@@ -1589,11 +1555,11 @@
15891555
<h1 id="architecture">Architecture</h1>
15901556
<p>How PythonEmbed works under the hood.</p>
15911557
<h2 id="overview">Overview</h2>
1592-
<p>PythonEmbed uses a <strong>subprocess + MessagePack</strong> model:</p>
1593-
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>┌─────────────┐ MessagePack frames ┌──────────────────┐
1594-
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>│ JVM (Java) │ ◄──────────────────────────► │ CPython process │
1595-
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>│ │ via stdin / stdout │ (bridge.py) │
1596-
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>└─────────────┘ └──────────────────┘
1558+
<p>PythonEmbed uses a <strong>subprocess</strong> model:</p>
1559+
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>┌─────────────┐ ┌──────────────────┐
1560+
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>│ JVM (Java) │ ◄──────────────────────► │ CPython process │
1561+
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>│ │ via stdin / stdout │ (bridge.py) │
1562+
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>└─────────────┘ └──────────────────┘
15971563
</code></pre></div>
15981564
<p>Key design choices:</p>
15991565
<ul>
@@ -1602,46 +1568,7 @@ <h2 id="overview">Overview</h2>
16021568
<li><strong>One Python process per PythonEmbed</strong> — shared namespace, sequential-by-default, pool for concurrency</li>
16031569
</ul>
16041570
<h2 id="communication-protocol">Communication Protocol</h2>
1605-
<p>All communication happens via <strong>MessagePack</strong> binary protocol over stdin/stdout:</p>
1606-
<ol>
1607-
<li>Java serializes a request (eval/exec/ref/callback/etc.) as a MessagePack frame</li>
1608-
<li>The frame is prefixed with a 4-byte big-endian length header</li>
1609-
<li>Python's <code>bridge.py</code> reads the length, then the full frame</li>
1610-
<li>Python processes the request and writes a response frame back</li>
1611-
<li>Java reads the response, deserializes, and returns the result</li>
1612-
</ol>
1613-
<h3 id="why-messagepack">Why MessagePack?</h3>
1614-
<table>
1615-
<thead>
1616-
<tr>
1617-
<th>Format</th>
1618-
<th>Size (typical)</th>
1619-
<th>Speed</th>
1620-
<th>Python support</th>
1621-
</tr>
1622-
</thead>
1623-
<tbody>
1624-
<tr>
1625-
<td>MessagePack</td>
1626-
<td>~50 bytes</td>
1627-
<td>Fast (binary)</td>
1628-
<td><code>msgpack</code> package</td>
1629-
</tr>
1630-
<tr>
1631-
<td>JSON</td>
1632-
<td>~120 bytes</td>
1633-
<td>Medium</td>
1634-
<td>Built-in</td>
1635-
</tr>
1636-
<tr>
1637-
<td>Pickle</td>
1638-
<td>~40 bytes</td>
1639-
<td>Fast</td>
1640-
<td>Built-in (unsafe)</td>
1641-
</tr>
1642-
</tbody>
1643-
</table>
1644-
<p>MessagePack provides a compact binary format with strong typing, making it well-suited for cross-process communication over stdin/stdout.</p>
1571+
<p>All communication happens via a binary protocol over stdin/stdout. Each request is serialized, prefixed with a 4-byte big-endian length header, and read by <code>bridge.py</code>. Python processes the request and writes a response frame back.</p>
16451572
<h2 id="process-lifecycle">Process Lifecycle</h2>
16461573
<h3 id="startup">Startup</h3>
16471574
<ol>

examples/basic-eval/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1354,7 +1354,7 @@
13541354

13551355
<h1 id="basic-eval">Basic Eval</h1>
13561356
<p>Demonstrates basic <code>PythonEmbed</code> usage: <code>eval()</code>, <code>exec()</code>, <code>PythonValue</code> type conversion, and safe parameter injection with <code>arg()</code>.</p>
1357-
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/basic-eval/src/main/java/io/github/howtis/pythonembed/examples/BasicEvalExample.java">:fontawesome-brands-github: View source</a></p>
1357+
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/basic-eval/src/main/java/io/github/howtis/pythonembed/examples/BasicEvalExample.java"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg></span> View source</a></p>
13581358
<h2 id="key-points">Key Points</h2>
13591359
<ul>
13601360
<li><code>eval()</code> evaluates expressions and returns <code>PythonValue</code></li>

examples/batch-operations/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1354,7 +1354,7 @@
13541354

13551355
<h1 id="batch-operations">Batch Operations</h1>
13561356
<p>Demonstrates batch evaluation and execution — sending multiple requests in a single round-trip to reduce protocol overhead. Both <code>PythonEmbed</code> (single instance) and <code>PythonEmbedPool</code> support batch operations.</p>
1357-
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/batch-operations/src/main/java/io/github/howtis/pythonembed/examples/BatchOperationsExample.java">:fontawesome-brands-github: View source</a></p>
1357+
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/batch-operations/src/main/java/io/github/howtis/pythonembed/examples/BatchOperationsExample.java"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg></span> View source</a></p>
13581358
<h2 id="key-points">Key Points</h2>
13591359
<ul>
13601360
<li><code>batchEval()</code> evaluates multiple expressions in one MessagePack frame</li>

examples/callback-bridge/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1354,7 +1354,7 @@
13541354

13551355
<h1 id="callback-bridge">Callback Bridge</h1>
13561356
<p>Demonstrates Python-to-Java callbacks and push handlers. Python code can call Java methods via <code>_bridge.call("name", args...)</code> (synchronous) and <code>_bridge.push("name", value)</code> (fire-and-forget).</p>
1357-
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/callback-bridge/src/main/java/io/github/howtis/pythonembed/examples/CallbackBridgeExample.java">:fontawesome-brands-github: View source</a></p>
1357+
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/callback-bridge/src/main/java/io/github/howtis/pythonembed/examples/CallbackBridgeExample.java"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg></span> View source</a></p>
13581358
<h2 id="key-points">Key Points</h2>
13591359
<ul>
13601360
<li><code>registerCallback(name, handler)</code> — synchronous Python→Java call</li>

examples/configuration/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1354,7 +1354,7 @@
13541354

13551355
<h1 id="configuration">Configuration</h1>
13561356
<p>Demonstrates the full <code>PythonEmbed.Options</code> builder: timeouts, environment variables, warmup scripts, code limits, close hooks, and explicit Python executable path.</p>
1357-
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/configuration/src/main/java/io/github/howtis/pythonembed/examples/ConfigurationExample.java">:fontawesome-brands-github: View source</a></p>
1357+
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/configuration/src/main/java/io/github/howtis/pythonembed/examples/ConfigurationExample.java"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg></span> View source</a></p>
13581358
<h2 id="key-points">Key Points</h2>
13591359
<ul>
13601360
<li><code>timeoutMs()</code> / <code>startupTimeoutMs()</code> — per-request and startup timeouts</li>

examples/error-handling/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1354,7 +1354,7 @@
13541354

13551355
<h1 id="error-handling">Error Handling</h1>
13561356
<p>Demonstrates Python error handling with detailed diagnostic information. Every Python exception is wrapped as a <code>PythonExecutionException</code> providing error type, cause code, and full Python traceback.</p>
1357-
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/error-handling/src/main/java/io/github/howtis/pythonembed/examples/ErrorHandlingExample.java">:fontawesome-brands-github: View source</a></p>
1357+
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/error-handling/src/main/java/io/github/howtis/pythonembed/examples/ErrorHandlingExample.java"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg></span> View source</a></p>
13581358
<h2 id="key-points">Key Points</h2>
13591359
<ul>
13601360
<li><code>PythonExecutionException</code> wraps all Python errors</li>

examples/health-monitor/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1354,7 +1354,7 @@
13541354

13551355
<h1 id="health-monitor">Health Monitor</h1>
13561356
<p>Demonstrates health monitoring for PythonEmbed instances and pools. Use <code>ping()</code> for liveness checks and <code>health()</code> for detailed runtime statistics (memory, reference count, GC status).</p>
1357-
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/health-monitor/src/main/java/io/github/howtis/pythonembed/examples/HealthMonitorExample.java">:fontawesome-brands-github: View source</a></p>
1357+
<p><a href="https://github.com/howtis/python-embed/blob/main/python-embed-examples/health-monitor/src/main/java/io/github/howtis/pythonembed/examples/HealthMonitorExample.java"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg></span> View source</a></p>
13581358
<h2 id="key-points">Key Points</h2>
13591359
<ul>
13601360
<li><code>ping()</code> — quick liveness check (returns boolean)</li>

0 commit comments

Comments
 (0)