mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2026-09-03 05:10:16 +03:00
sync_readme_v3
23
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
01c908e95d |
build(deps-dev): bump openai from 2.53.0 to 3.3.1 in /engine (#7700)
Signed-off-by: dependabot[bot] <support@github.com> |
||
|
|
54e839ae65 |
build(deps-dev): bump reportlab from 5.0.0 to 5.0.1 in /engine (#7699)
Signed-off-by: dependabot[bot] <support@github.com> |
||
|
|
3aca7a26f6 |
build(deps-dev): bump python-dotenv from 1.2.2 to 1.2.3 in /engine (#7702)
Signed-off-by: dependabot[bot] <support@github.com> |
||
|
|
ddee690c58 |
Exclude Python virtualenvs from the Docker build context (#7658)
# Description of Changes Stirling engine docker slimming Exclude Python virtualenvs from the Docker build context Drop unused provider SDKs from the engine dependency set Retry the SQLite WAL switch when workers race on startup Build the engine image in two stages and run it unprivileged Swap voyage SDK for api call removing 200MB bloat Bundle the AI engine in the fat image Publish the AI engine as a standalone image 886MB to 295MB in docker file And Docker fat is only 230MB bigger after adding (since it already has python and some deps) --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
b549964529 |
build(deps-dev): bump fpdf2 from 2.8.7 to 2.8.8 in /engine (#7560)
Bumps [fpdf2](https://github.com/py-pdf/fpdf2) from 2.8.7 to 2.8.8. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/py-pdf/fpdf2/releases">fpdf2's releases</a>.</em></p> <blockquote> <h2>Add resource access controls, SVG complexity limits, Optional Content Groups, and other features and bug fixes</h2> <h2>[2.8.8] - 2026-08-09</h2> <blockquote> <p>[!WARNING] Upgrading to <strong>fpdf2 2.8.8</strong> is strongly recommended for applications that render user-provided images, SVGs, or HTML content.</p> </blockquote> <h3>Added</h3> <ul> <li>Punjabi (pa) tutorial translation - thanks to <a href="https://github.com/Pawansingh3889"><code>@Pawansingh3889</code></a></li> <li><code>FPDF.svg_limits</code> and <code>SVGLimits</code> to configure SVG complexity limits while rendering SVG images</li> <li><code>resource_access_policy</code> and <a href="https://py-pdf.github.io/fpdf2/Security.html">Security considerations</a> documentation</li> <li><a href="https://py-pdf.github.io/fpdf2/OptionalContent.html"><code>FPDF.optional_content()</code></a> context manager to mark content as visible on screen only or in print only, using PDF Optional Content Groups - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/441">#441</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/441">py-pdf/fpdf2#441</a>), based on a recipe by <a href="https://github.com/digidigital"><code>@digidigital</code></a> - thanks to <a href="https://github.com/eugen-goebel"><code>@eugen-goebel</code></a></li> <li>basic support for SVG <code><symbol></code> elements in the SVG parser - thanks to <a href="https://github.com/Theo1335"><code>@Theo1335</code></a></li> <li>basic support for SVG <code><switch></code> elements in the SVG parser - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/537">#537</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/537">py-pdf/fpdf2#537</a>) - thanks to <a href="https://github.com/dannymaaz"><code>@dannymaaz</code></a></li> <li>support for keeping aspect ratio for images in templates - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1118">#1118</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1118">py-pdf/fpdf2#1118</a>) - thanks to <a href="https://github.com/prateek-dagar"><code>@prateek-dagar</code></a></li> </ul> <h3>Fixed</h3> <ul> <li>custom height passed to <code>Paragraph.ln()</code> in a text region is now applied to the line it terminates instead of the first line of the following paragraph - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1786">#1786</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1786">py-pdf/fpdf2#1786</a>) - thanks to <a href="https://github.com/Sanjays2402"><code>@Sanjays2402</code></a></li> <li>the optional <code>numpy</code> import in <code>image_parsing.py</code> no longer crashes on CPUs unsupported by numpy's <code>manylinux</code> wheel baseline; <code>RuntimeError</code> is now treated the same as <code>ImportError</code>, so <code>numpy</code> degrades to unavailable instead of taking down <code>import fpdf</code> - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1908">#1908</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1908">py-pdf/fpdf2#1908</a>) - thanks to <a href="https://github.com/stumpylog"><code>@stumpylog</code></a></li> <li>font state (family, style, size, current font, and the page-level "font is set" flag) no longer leaks back onto the <code>FPDF</code> instance after a <code>text_columns()</code> / <code>text_region()</code> context exits, so a subsequent <code>pdf.cell()</code> / <code>pdf.write()</code> renders at the caller's font instead of the last paragraph's - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1804">#1804</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1804">py-pdf/fpdf2#1804</a>) - thanks to <a href="https://github.com/Pawansingh3889"><code>@Pawansingh3889</code></a></li> <li>text rendering when the first text on a page starts with a fallback glyph - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1772">#1772</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1772">py-pdf/fpdf2#1772</a>)</li> <li>preserve boundary-neutral formatting during bidirectional text preprocessing - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1779">#1779</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1779">py-pdf/fpdf2#1779</a>)</li> <li>transform application on user space gradients - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1784">#1784</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1784">py-pdf/fpdf2#1784</a>)</li> <li>dependency extras for camelot-py and endesive on pyproject.toml - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1792">#1792</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1792">py-pdf/fpdf2#1792</a>)</li> <li>preserve link annotations during dry-run of <code>FPDF.multi_cell</code> - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1807">#1807</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1807">py-pdf/fpdf2#1807</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>preserve two consecutive markdown links (without space inbetween) - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1814">#1814</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1814">py-pdf/fpdf2#1814</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>support markdown style around markdown links - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1826">#1826</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1826">py-pdf/fpdf2#1826</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>Reset gstate for ToC-rendering - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1837">#1837</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1837">py-pdf/fpdf2#1837</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>preserve markdown format in <code>FPDF.multi_cell</code> in dry-run - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1840">#1840</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1840">py-pdf/fpdf2#1840</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>fix page order after dry-run of <code>FPDF.multi_cell</code> in ToC - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1836">#1836</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1836">py-pdf/fpdf2#1836</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>rendering SVG arcs with very small sweeps that previously rounded to zero - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1831">#1831</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1831">py-pdf/fpdf2#1831</a>)</li> <li>spurious "Not enough horizontal space to render a single character" error when text without break opportunities is split into many small fragments, e.g. by a fallback font alternating with the main font - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1250">#1250</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1250">py-pdf/fpdf2#1250</a>) - thanks to <a href="https://github.com/uttam12331"><code>@uttam12331</code></a></li> <li>number of surviving escape characters - <strong>cf.</strong> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1215">#1215</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1215">py-pdf/fpdf2#1215</a>) - thanks to <a href="https://github.com/amidou-naba"><code>@amidou-naba</code></a></li> <li>leading spaces on new lines inside <code><pre></code> and <code><pre><code></code> blocks are no longer dropped - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1063">#1063</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1063">py-pdf/fpdf2#1063</a>) - thanks to <a href="https://github.com/eugen-goebel"><code>@eugen-goebel</code></a></li> <li><code>FPDF.set_font()</code> can restore <code>current_font</code> when the selected font state diverged - <em>cf.</em> [PR <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1872">#1872</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/pull/1872">py-pdf/fpdf2#1872</a>) - thanks to <a href="https://github.com/gaoflow"><code>@gaoflow</code></a></li> <li>embed CID-keyed CFF fonts as raw CFF programs so browser PDF viewers render them correctly - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1874">#1874</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1874">py-pdf/fpdf2#1874</a>)</li> <li>fixed broken links on documentation not directly leading to the API reference - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1876">#1876</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1876">py-pdf/fpdf2#1876</a>) - thanks to <a href="https://github.com/iamfazakb"><code>@iamfazakb</code></a></li> <li>reject SVG <code><use></code> cycles and excessive nested expansion to prevent resource exhaustion in <code>FPDF.image()</code></li> <li>count SVG <code><switch></code> elements in SVG complexity limits</li> <li>declare the default base state and display order for Optional Content Groups so PDF viewers can list layers correctly - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1895">#1895</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1895">py-pdf/fpdf2#1895</a>)</li> </ul> <h3>Changed</h3> <ul> <li>skip byte-for-byte compressed data comparison when zlib-ng is detected, regardless of OS</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/py-pdf/fpdf2/blob/master/CHANGELOG.md">fpdf2's changelog</a>.</em></p> <blockquote> <h2>[2.8.8] - 2026-08-09</h2> <h3>Added</h3> <ul> <li>Punjabi (pa) tutorial translation - thanks to <a href="https://github.com/Pawansingh3889"><code>@Pawansingh3889</code></a></li> <li><code>FPDF.svg_limits</code> and <code>SVGLimits</code> to configure SVG complexity limits while rendering SVG images</li> <li><code>resource_access_policy</code> and <a href="https://py-pdf.github.io/fpdf2/Security.html">Security considerations</a> documentation</li> <li><a href="https://py-pdf.github.io/fpdf2/OptionalContent.html"><code>FPDF.optional_content()</code></a> context manager to mark content as visible on screen only or in print only, using PDF Optional Content Groups - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/441">#441</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/441">py-pdf/fpdf2#441</a>), based on a recipe by <a href="https://github.com/digidigital"><code>@digidigital</code></a> - thanks to <a href="https://github.com/eugen-goebel"><code>@eugen-goebel</code></a></li> <li>basic support for SVG <code><symbol></code> elements in the SVG parser - thanks to <a href="https://github.com/Theo1335"><code>@Theo1335</code></a></li> <li>basic support for SVG <code><switch></code> elements in the SVG parser - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/537">#537</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/537">py-pdf/fpdf2#537</a>) - thanks to <a href="https://github.com/dannymaaz"><code>@dannymaaz</code></a></li> <li>support for keeping aspect ratio for images in templates - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1118">#1118</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1118">py-pdf/fpdf2#1118</a>) - thanks to <a href="https://github.com/prateek-dagar"><code>@prateek-dagar</code></a></li> </ul> <h3>Fixed</h3> <ul> <li>custom height passed to <code>Paragraph.ln()</code> in a text region is now applied to the line it terminates instead of the first line of the following paragraph - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1786">#1786</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1786">py-pdf/fpdf2#1786</a>) - thanks to <a href="https://github.com/Sanjays2402"><code>@Sanjays2402</code></a></li> <li>the optional <code>numpy</code> import in <code>image_parsing.py</code> no longer crashes on CPUs unsupported by numpy's <code>manylinux</code> wheel baseline; <code>RuntimeError</code> is now treated the same as <code>ImportError</code>, so <code>numpy</code> degrades to unavailable instead of taking down <code>import fpdf</code> - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1908">#1908</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1908">py-pdf/fpdf2#1908</a>) - thanks to <a href="https://github.com/stumpylog"><code>@stumpylog</code></a></li> <li>font state (family, style, size, current font, and the page-level "font is set" flag) no longer leaks back onto the <code>FPDF</code> instance after a <code>text_columns()</code> / <code>text_region()</code> context exits, so a subsequent <code>pdf.cell()</code> / <code>pdf.write()</code> renders at the caller's font instead of the last paragraph's - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1804">#1804</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1804">py-pdf/fpdf2#1804</a>) - thanks to <a href="https://github.com/Pawansingh3889"><code>@Pawansingh3889</code></a></li> <li>text rendering when the first text on a page starts with a fallback glyph - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1772">#1772</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1772">py-pdf/fpdf2#1772</a>)</li> <li>preserve boundary-neutral formatting during bidirectional text preprocessing - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1779">#1779</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1779">py-pdf/fpdf2#1779</a>)</li> <li>transform application on user space gradients - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1784">#1784</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1784">py-pdf/fpdf2#1784</a>)</li> <li>dependency extras for camelot-py and endesive on pyproject.toml - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1792">#1792</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1792">py-pdf/fpdf2#1792</a>)</li> <li>preserve link annotations during dry-run of <code>FPDF.multi_cell</code> - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1807">#1807</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1807">py-pdf/fpdf2#1807</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>preserve two consecutive markdown links (without space inbetween) - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1814">#1814</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1814">py-pdf/fpdf2#1814</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>support markdown style around markdown links - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1826">#1826</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1826">py-pdf/fpdf2#1826</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>Reset gstate for ToC-rendering - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1837">#1837</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1837">py-pdf/fpdf2#1837</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>preserve markdown format in <code>FPDF.multi_cell</code> in dry-run - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1840">#1840</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1840">py-pdf/fpdf2#1840</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>fix page order after dry-run of <code>FPDF.multi_cell</code> in ToC - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1836">#1836</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1836">py-pdf/fpdf2#1836</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>rendering SVG arcs with very small sweeps that previously rounded to zero - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1831">#1831</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1831">py-pdf/fpdf2#1831</a>)</li> <li>spurious "Not enough horizontal space to render a single character" error when text without break opportunities is split into many small fragments, e.g. by a fallback font alternating with the main font - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1250">#1250</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1250">py-pdf/fpdf2#1250</a>) - thanks to <a href="https://github.com/uttam12331"><code>@uttam12331</code></a></li> <li>number of surviving escape characters - <strong>cf.</strong> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1215">#1215</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1215">py-pdf/fpdf2#1215</a>) - thanks to <a href="https://github.com/amidou-naba"><code>@amidou-naba</code></a></li> <li>leading spaces on new lines inside <code><pre></code> and <code><pre><code></code> blocks are no longer dropped - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1063">#1063</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1063">py-pdf/fpdf2#1063</a>) - thanks to <a href="https://github.com/eugen-goebel"><code>@eugen-goebel</code></a></li> <li><code>FPDF.set_font()</code> can restore <code>current_font</code> when the selected font state diverged - <em>cf.</em> [PR <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1872">#1872</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/pull/1872">py-pdf/fpdf2#1872</a>) - thanks to <a href="https://github.com/gaoflow"><code>@gaoflow</code></a></li> <li>embed CID-keyed CFF fonts as raw CFF programs so browser PDF viewers render them correctly - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1874">#1874</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1874">py-pdf/fpdf2#1874</a>)</li> <li>fixed broken links on documentation not directly leading to the API reference - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1876">#1876</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1876">py-pdf/fpdf2#1876</a>) - thanks to <a href="https://github.com/iamfazakb"><code>@iamfazakb</code></a></li> <li>reject SVG <code><use></code> cycles and excessive nested expansion to prevent resource exhaustion in <code>FPDF.image()</code></li> <li>count SVG <code><switch></code> elements in SVG complexity limits</li> <li>declare the default base state and display order for Optional Content Groups so PDF viewers can list layers correctly - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1895">#1895</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1895">py-pdf/fpdf2#1895</a>)</li> </ul> <h3>Changed</h3> <ul> <li>skip byte-for-byte compressed data comparison when zlib-ng is detected, regardless of OS</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/py-pdf/fpdf2/commit/e1fc653d8fce65d2fb118755bda8581a9bf1e4d9"><code>e1fc653</code></a> release v2.8.8 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1916">#1916</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/42ec66442bf278b9768ca787fe601d3d334c62e4"><code>42ec664</code></a> add Sanjays2402 as a contributor for code (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1915">#1915</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/af9d7dc11c36db49364c0096ad1edca5d569c676"><code>af9d7dc</code></a> fix(text_region): apply Paragraph.ln(h) height to the line it terminates (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1904">#1904</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/81951f837b46782df38f7c4d6f4c8f2644ac9b7e"><code>81951f8</code></a> add stumpylog as a contributor for bug, and code (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1913">#1913</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/b30c38c8cfc804342f429fffb26cc44f34f20af3"><code>b30c38c</code></a> Fix: catch RuntimeError alongside ImportError for the optional numpy import (...</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/63df0d0f4f085d3a014166d2d752d9c1e77305e4"><code>63df0d0</code></a> Update github/codeql-action action to v4.37.6 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1910">#1910</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/11a30e672cad2157b657642ed290cb27eb57e482"><code>11a30e6</code></a> Update crate-ci/typos action to v1.49.0 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1911">#1911</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/f65707b369a7ca7aaa6226a77eabf69b9903eac4"><code>f65707b</code></a> Update step-security/harden-runner action to v2.20.1 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1912">#1912</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/a7f7c8945139fb5a20d1993fcff6484b5c2267c7"><code>a7f7c89</code></a> Update github/codeql-action action to v4.37.4 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1907">#1907</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/fe9d8f52643c5dcb88370813f51c29410463e299"><code>fe9d8f5</code></a> Update pypa/gh-action-pypi-publish action to v1.14.2 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1906">#1906</a>)</li> <li>Additional commits viewable in <a href="https://github.com/py-pdf/fpdf2/compare/2.8.7...2.8.8">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
1f337c06e4 |
build(deps-dev): bump uvicorn from 0.52.1 to 0.52.3 in /engine (#7600)
Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.52.1 to 0.52.3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/Kludex/uvicorn/releases">uvicorn's releases</a>.</em></p> <blockquote> <h2>Version 0.52.3</h2> <h3>Changed</h3> <ul> <li>Update <code>zttp</code> to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3067">#3067</a>)</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3">https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3</a></p> <h2>Version 0.52.2</h2> <h3>Fixed</h3> <ul> <li>Update <code>zttp</code> to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3063">#3063</a>)</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2">https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md">uvicorn's changelog</a>.</em></p> <blockquote> <h2>0.52.3 (August 13, 2026)</h2> <h3>Changed</h3> <ul> <li>Update <code>zttp</code> to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3067">#3067</a>)</li> </ul> <h2>0.52.2 (August 13, 2026)</h2> <h3>Fixed</h3> <ul> <li>Update <code>zttp</code> to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3063">#3063</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/Kludex/uvicorn/commit/a68da608147c5f79d962352dce11de8f6e32d972"><code>a68da60</code></a> Version 0.52.3 (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3068">#3068</a>)</li> <li><a href="https://github.com/Kludex/uvicorn/commit/6e3bb4c5c22531c16d341f2da49f2653307f412f"><code>6e3bb4c</code></a> Use zttp 0.0.24 fast receive path (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3067">#3067</a>)</li> <li><a href="https://github.com/Kludex/uvicorn/commit/2a5ff183e02e6dce62f363009c85574bd5a23de2"><code>2a5ff18</code></a> Version 0.52.2 (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3066">#3066</a>)</li> <li><a href="https://github.com/Kludex/uvicorn/commit/1920297df92b9cf5e6befb00327c1e34276db46f"><code>1920297</code></a> Update zttp to 0.0.22 (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3063">#3063</a>)</li> <li><a href="https://github.com/Kludex/uvicorn/commit/5c560dae6a87f6109d958c6154277f1dc727f704"><code>5c560da</code></a> chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3061">#3061</a>)</li> <li>See full diff in <a href="https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.3">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
fb0281fc80 |
build(deps-dev): bump codespell from 2.4.2 to 2.4.3 in /engine (#7456)
Bumps [codespell](https://github.com/codespell-project/codespell) from 2.4.2 to 2.4.3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/codespell-project/codespell/releases">codespell's releases</a>.</em></p> <blockquote> <h2>v2.4.3</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <ul> <li>Add 'radback' to dictionary with correction by <a href="https://github.com/Flo3561"><code>@Flo3561</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3883">codespell-project/codespell#3883</a></li> <li>Add 'repetirion' to dictionary corrections by <a href="https://github.com/Flo3561"><code>@Flo3561</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3885">codespell-project/codespell#3885</a></li> <li>Need to specify a version of Python version after all by <a href="https://github.com/DimitriPapadopoulos"><code>@DimitriPapadopoulos</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3887">codespell-project/codespell#3887</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3889">codespell-project/codespell#3889</a></li> <li>Add cases for "modulle" -> "module" by <a href="https://github.com/utzcoz"><code>@utzcoz</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3888">codespell-project/codespell#3888</a></li> <li>Add case "auido" -> "audio" by <a href="https://github.com/utzcoz"><code>@utzcoz</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3890">codespell-project/codespell#3890</a></li> <li>Add credentilas->credentials and friends by <a href="https://github.com/peternewman"><code>@peternewman</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3895">codespell-project/codespell#3895</a></li> <li>Add the case "cubid" -> "cubic" by <a href="https://github.com/utzcoz"><code>@utzcoz</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3891">codespell-project/codespell#3891</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3897">codespell-project/codespell#3897</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3900">codespell-project/codespell#3900</a></li> <li>Bump codecov/codecov-action from 5 to 6 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3902">codespell-project/codespell#3902</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3904">codespell-project/codespell#3904</a></li> <li>Add <code>magntiude->magnitude</code> by <a href="https://github.com/nathanjmcdougall"><code>@nathanjmcdougall</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3899">codespell-project/codespell#3899</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3909">codespell-project/codespell#3909</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3912">codespell-project/codespell#3912</a></li> <li>Add the case "instanc" -> "instance" by <a href="https://github.com/utzcoz"><code>@utzcoz</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3896">codespell-project/codespell#3896</a></li> <li>gampad -> gamepad (and plural) by <a href="https://github.com/julianstirling"><code>@julianstirling</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3906">codespell-project/codespell#3906</a></li> <li>Add typos of <code>monotonic</code> and <code>monotonicity</code> by <a href="https://github.com/nathanjmcdougall"><code>@nathanjmcdougall</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3898">codespell-project/codespell#3898</a></li> <li>Add spelling correction for multipile(s)/vulnerabities. by <a href="https://github.com/cfi-gb"><code>@cfi-gb</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3905">codespell-project/codespell#3905</a></li> <li>Add 'simpilfy -> simplify' by <a href="https://github.com/alexreinking"><code>@alexreinking</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3913">codespell-project/codespell#3913</a></li> <li>fix(packaging): prevent unwanted files and tests from being installed by <a href="https://github.com/mikelolasagasti"><code>@mikelolasagasti</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3911">codespell-project/codespell#3911</a></li> <li>Add skarhoj->SKAARHOJ to dictionary corrections by <a href="https://github.com/peternewman"><code>@peternewman</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3908">codespell-project/codespell#3908</a></li> <li>Improve the dictionary by <a href="https://github.com/algonell"><code>@algonell</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3914">codespell-project/codespell#3914</a></li> <li>Add spelling correction for accorss/accors. by <a href="https://github.com/cfi-gb"><code>@cfi-gb</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3916">codespell-project/codespell#3916</a></li> <li>Bump autofix-ci/action from 1.3.3 to 1.3.4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3921">codespell-project/codespell#3921</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3923">codespell-project/codespell#3923</a></li> <li>Add <code>influecer->influencer</code> and <code>influnce*</code> typos to dictionary by <a href="https://github.com/nathanjmcdougall"><code>@nathanjmcdougall</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3925">codespell-project/codespell#3925</a></li> <li>Add typos for <code>excavate</code> and variants by <a href="https://github.com/nathanjmcdougall"><code>@nathanjmcdougall</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3926">codespell-project/codespell#3926</a></li> <li>Dict: Add corrections for memoy by <a href="https://github.com/mdeweerd"><code>@mdeweerd</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3924">codespell-project/codespell#3924</a></li> <li><code>overheda -> overhead</code> by <a href="https://github.com/George-Ogden"><code>@George-Ogden</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3919">codespell-project/codespell#3919</a></li> <li><code>inclusize->inclusive</code> and variants by <a href="https://github.com/George-Ogden"><code>@George-Ogden</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3918">codespell-project/codespell#3918</a></li> <li>Add spelling corrections for authorization by <a href="https://github.com/cfi-gb"><code>@cfi-gb</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3922">codespell-project/codespell#3922</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3927">codespell-project/codespell#3927</a></li> <li>Don't fix Voight by <a href="https://github.com/DimitriPapadopoulos"><code>@DimitriPapadopoulos</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3929">codespell-project/codespell#3929</a></li> <li>Add spelling corrections for interstect and interstection by <a href="https://github.com/korli"><code>@korli</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3928">codespell-project/codespell#3928</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3930">codespell-project/codespell#3930</a></li> <li>Improve output in interactive mode by <a href="https://github.com/darkmattercoder"><code>@darkmattercoder</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3884">codespell-project/codespell#3884</a></li> <li>feat: support codespell:ignore-next-line directive by <a href="https://github.com/SAY-5"><code>@SAY-5</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3931">codespell-project/codespell#3931</a></li> <li>Add woork->work and formace->format and friends by <a href="https://github.com/peternewman"><code>@peternewman</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3828">codespell-project/codespell#3828</a></li> <li>shortctu -> shortcut by <a href="https://github.com/George-Ogden"><code>@George-Ogden</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3934">codespell-project/codespell#3934</a></li> <li>A couple typos by <a href="https://github.com/DimitriPapadopoulos"><code>@DimitriPapadopoulos</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3935">codespell-project/codespell#3935</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3937">codespell-project/codespell#3937</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3942">codespell-project/codespell#3942</a></li> <li>reclaculate->recalculate by <a href="https://github.com/adamgann"><code>@adamgann</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3936">codespell-project/codespell#3936</a></li> <li>Add spelling correction for improprt. by <a href="https://github.com/cfi-gb"><code>@cfi-gb</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3939">codespell-project/codespell#3939</a></li> <li>Dictionary plasic-plastic by <a href="https://github.com/julianstirling"><code>@julianstirling</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3938">codespell-project/codespell#3938</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/codespell-project/codespell/commit/57b21406f092110c18776e39b0bda50d37c945c8"><code>57b2140</code></a> Read only [tool.codespell] from TOML config (<a href="https://redirect.github.com/codespell-project/codespell/issues/3975">#3975</a>)</li> <li><a href="https://github.com/codespell-project/codespell/commit/23b8d940332bcff6369872b53964d4137c586728"><code>23b8d94</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/codespell-project/codespell/commit/926c4d6ff083acc62bc04c102e0a9b2091d754f1"><code>926c4d6</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/codespell-project/codespell/commit/820a3011e0bfe3f90789ba41e751a26656bea7ab"><code>820a301</code></a> Merge pull request <a href="https://redirect.github.com/codespell-project/codespell/issues/3967">#3967</a> from codespell-project/peternewman-patch-1</li> <li><a href="https://github.com/codespell-project/codespell/commit/9fe42c964c90f65a9a2841847af4e093c67ec817"><code>9fe42c9</code></a> Add common misspellings for reseeve->reserve to dictionary</li> <li><a href="https://github.com/codespell-project/codespell/commit/725173c815cee1b781b85ec51eb43dc4f51dcd0f"><code>725173c</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/codespell-project/codespell/commit/86c13ee4dce0010e8d8119ded33694806e37ca8f"><code>86c13ee</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/codespell-project/codespell/commit/7b9f36ce634c551107a3a4a5c25782a2245d7658"><code>7b9f36c</code></a> Bump actions/checkout from 6 to 7</li> <li><a href="https://github.com/codespell-project/codespell/commit/bcc1b804a83b8a146586101431b063c07cfcc699"><code>bcc1b80</code></a> Add spelling corrections for simpe and variants.</li> <li><a href="https://github.com/codespell-project/codespell/commit/89584cc1479d0f8dbfd501925673b6be6d460fe1"><code>89584cc</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li>Additional commits viewable in <a href="https://github.com/codespell-project/codespell/compare/v2.4.2...v2.4.3">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
05eb74022a |
chore(ci): migrate Python tooling to uv and standardize workflow execution (#7386)
# Description of Changes This PR modernizes the project's Python tooling across GitHub Actions by migrating CI workflows from pip-based dependency management to `uv` and aligning Python execution with the engine project's managed environment. ### What was changed - Replaced `actions/setup-python` and ad-hoc `pip install` steps with `astral-sh/setup-uv` across CI workflows. - Configured shared `uv` dependency caching using `engine/pyproject.toml` and `engine/uv.lock`. - Updated Python script execution to use `uv run --project engine --locked` for a consistent runtime environment. - Replaced package installation steps with `uv sync` for the required dependency groups (e.g. `tools` and `cucumber`). - Added Docker image build validation for both production and development AI engine images. - Updated workflow cache configuration and Docker build context where required. - Removed obsolete Python requirements files that are no longer needed after the migration. - Applied minor Python code modernizations, including import cleanup, modern built-in generic type annotations (`list[...]`, `tuple[...]`, `float | None`), and small style improvements. - Removed unnecessary Python formatter/linter extensions from the development container configuration. ### Why the change was made - Standardize Python dependency management across the repository. - Reduce duplicated dependency installation logic in CI. - Improve workflow performance through shared dependency caching. - Ensure all Python utilities execute against the same locked dependency set managed by the engine project. - Simplify long-term maintenance by eliminating legacy requirements files and pip-specific workflow steps. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. --------- Signed-off-by: Carsten Drewes <c.drewes@stud.uni-hannover.de> Co-authored-by: albanobattistella <34811668+albanobattistella@users.noreply.github.com> Co-authored-by: kastenherri <116314318+kastenherri@users.noreply.github.com> Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: James Brunton <jbrunton96@gmail.com> |
||
|
|
94fbc74271 |
build(deps): bump the uv group across 1 directory with 3 updates (#7287)
Bumps the uv group with 3 updates in the /engine directory: [cryptography](https://github.com/pyca/cryptography), [aiohttp](https://github.com/aio-libs/aiohttp) and [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator). Updates `cryptography` from 49.0.0 to 50.0.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst">cryptography's changelog</a>.</em></p> <blockquote> <p>50.0.0 - 2026-07-31</p> <pre><code> * **SECURITY ISSUE**: :func:`~cryptography.hazmat.primitives.serialization.pkcs7.pkcs7_decrypt_der` and its PEM and S/MIME variants no longer expose distinguishable errors or timing when unwrapping a ``RecipientInfo``'s ``encryptedKey``, which could act as a Bleichenbacher oracle for callers that decrypt untrusted messages. A random key is now substituted on failure, as described in :rfc:`3218`. Credit to **@X1AOxiang** for reporting the issue. **CVE-2026-69247** * Deprecated Diffie-Hellman key exchange over finite fields (FFDH). Everything FFDH is deprecated, including the types in ``cryptography.hazmat.primitives.asymmetric.dh`` and loading FFDH keys or parameters with the key loading APIs. Users should migrate to a more modern key exchange algorithm. * Added ``xof()`` class methods to :class:`~cryptography.hazmat.primitives.hashes.SHAKE128` and :class:`~cryptography.hazmat.primitives.hashes.SHAKE256` for constructing algorithm instances configured for use with :class:`~cryptography.hazmat.primitives.hashes.XOFHash`. * The :mod:`X.509 verification <cryptography.x509.verification>` APIs are now considered stable and are subject to our API stability policy. * Added the :doc:`/cobblestone` recipe, an implementation of the Cobblestone-128 and Cobblestone-256 instantiations of the `C2SP chunked-encryption specification <https://c2sp.org/chunked-encryption>`_ for streaming authenticated encryption of large messages. * Parsing a Signed Certificate Timestamp list now rejects encodings that carry trailing bytes after the list or after an individual SCT, instead of silently ignoring them. * Added support for using :class:`~cryptography.x509.Name` as a field type in the :doc:`/hazmat/asn1/index` module. * Loading a public key or an EC private key now rejects DER where the ``subjectPublicKey`` (or EC ``publicKey``) ``BIT STRING`` declares a non-zero number of unused bits, instead of silently ignoring it. * Parsing a CRL entry's ``InvalidityDate`` extension now rejects a ``GeneralizedTime`` that carries fractional seconds or another non-DER form, matching the strict encoding already required for every other X.509 time field. * :func:`~cryptography.x509.ocsp.load_der_ocsp_request` and :func:`~cryptography.x509.ocsp.load_der_ocsp_response` now reject a request or response whose ``version`` field is not ``v1``, the only version defined by RFC 6960, matching the version validation already performed when loading certificates, CSRs and CRLs. * :class:`~cryptography.hazmat.primitives.hashes.XOFHash` is now supported when building against AWS-LC. * HMAC (and therefore PBKDF2-HMAC) with SHA-3 hashes is now supported when building against AWS-LC. * Diffie-Hellman (:doc:`/hazmat/primitives/asymmetric/dh`) is now supported when building against AWS-LC. </tr></table> </code></pre> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pyca/cryptography/commit/dcb7050b807b00392fa9fe2eac7cb362fcf355cc"><code>dcb7050</code></a> Prepare for 50.0.0 release (<a href="https://redirect.github.com/pyca/cryptography/issues/15372">#15372</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/53fccd93413a8d7f07d6d8999681f27b75cffa3f"><code>53fccd9</code></a> Don't leak how PKCS#7 encryptedKey decryption failed (<a href="https://redirect.github.com/pyca/cryptography/issues/15369">#15369</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/d472f978470fbefa521b86d98b2ecccbbb4d1dd8"><code>d472f97</code></a> Add <code>from __future__ import annotations</code> to all src/ Python files (<a href="https://redirect.github.com/pyca/cryptography/issues/15371">#15371</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/908773d53829fb1466c6db364b31321c3cd8eb9a"><code>908773d</code></a> Bump downstream dependencies in CI (<a href="https://redirect.github.com/pyca/cryptography/issues/15368">#15368</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/2cc07cc948948211899bcb0cddd1fddf86e95812"><code>2cc07cc</code></a> Bump BoringSSL, OpenSSL, AWS-LC in CI (<a href="https://redirect.github.com/pyca/cryptography/issues/15367">#15367</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/c94ede9f040fa44942f7139772603419000acf66"><code>c94ede9</code></a> chore(deps): bump ruff from 0.16.0 to 0.16.1 (<a href="https://redirect.github.com/pyca/cryptography/issues/15366">#15366</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/67a8308dc9ea4cce6056e0f1438f903c208c3f35"><code>67a8308</code></a> chore(deps): bump virtualenv from 21.7.0 to 21.7.1 (<a href="https://redirect.github.com/pyca/cryptography/issues/15365">#15365</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/95018ffcdbbc510fd92fc872e3a3e80aa6e58596"><code>95018ff</code></a> Release the GIL in one-shot AEAD encrypt/decrypt (<a href="https://redirect.github.com/pyca/cryptography/issues/15361">#15361</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/6954733eaf55a0074abf88f06f7242dfca3a5d02"><code>6954733</code></a> Release the GIL during DH and DSA parameter generation (<a href="https://redirect.github.com/pyca/cryptography/issues/15364">#15364</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/6893b94c33e948f6240082461424cfb5da2dacc6"><code>6893b94</code></a> Import _serialization instead of serialization in x509/extensions (<a href="https://redirect.github.com/pyca/cryptography/issues/15363">#15363</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pyca/cryptography/compare/49.0.0...50.0.0">compare view</a></li> </ul> </details> <br /> Updates `aiohttp` from 3.14.1 to 3.14.3 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst">aiohttp's changelog</a>.</em></p> <blockquote> <h1>3.14.3 (2026-07-22)</h1> <h2>Bug fixes</h2> <ul> <li> <p>Fixed the client dropping only the first <code>Authorization</code>, <code>Cookie</code> and <code>Proxy-Authorization</code> header when a redirect crossed an origin -- by :user:<code>arshsmith1</code>.</p> <p><em>Related issues and pull requests on GitHub:</em> :issue:<code>13180</code>.</p> </li> <li> <p>Fixed error message construction in the C HTTP parser -- by :user:<code>bdraco</code>.</p> <p><em>Related issues and pull requests on GitHub:</em> :issue:<code>13222</code>.</p> </li> </ul> <hr /> <h1>3.14.2 (2026-07-20)</h1> <h2>Bug fixes</h2> <ul> <li> <p>Fixed :py:attr:<code>~aiohttp.web.StreamResponse.last_modified</code> rounding a :class:<code>datetime.datetime</code> with a fractional second down.</p> <p><em>Related issues and pull requests on GitHub:</em> :issue:<code>5303</code>.</p> </li> <li> <p>Fixed resolving <code>localhost</code> on Windows to fall back without <code>AI_ADDRCONFIG</code> when the first lookup fails, so <code>localhost</code> still works without an active network.</p> <p><em>Related issues and pull requests on GitHub:</em> :issue:<code>5357</code>.</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aio-libs/aiohttp/commit/5e392ce0456f5235a4ee6ad46f0e806df2f15873"><code>5e392ce</code></a> Release v3.14.3 (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/13225">#13225</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/49f65d54150397892f7bcc4aae887767d51c322d"><code>49f65d5</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/13222">#13222</a>/f4866933 backport][3.14] Build C parser error message from bounded...</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/240099e5216a01b32919dcd8dd5c6c0b1bf83671"><code>240099e</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/13180">#13180</a>/ee53d655 backport][3.14] drop every copy of credential headers on ...</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/d93f30a302f8b930074fe14a2be7b2088ba28111"><code>d93f30a</code></a> Bump version (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/13202">#13202</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/c1b9212ad3d93c24b5fc66ad0849597166bc816e"><code>c1b9212</code></a> Release v3.14.2 (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/13201">#13201</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/380d4b55e8df48dfd62f1addfb530426f6bc4106"><code>380d4b5</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/13054">#13054</a>/ed8b040c backport][3.14] escape backslashes in digest auth quoted-...</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/e1e1bee363dfba04a9a75c8801717da2ed5bdcb9"><code>e1e1bee</code></a> Make llhttp method array size dynamic (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/13174">#13174</a>) (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/13196">#13196</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/aa4cf29b6a5ad6f4d21fa1dd3f69193dc2f5d505"><code>aa4cf29</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/13170">#13170</a>/2b906869 backport][3.14] Fix StreamResponse.last_modified rounding...</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/71b57b40d85a0723c92b0a5a37ebdf518210d2ea"><code>71b57b4</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/13172">#13172</a>/a57747ed backport][3.14] Fix C parser folding fragment into query_...</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/64a03fb620b623e5a5a1b7103c07ae3e536a0d40"><code>64a03fb</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/13169">#13169</a>/1adc0cd7 backport][3.14] Upgrade http:// to https:// in README.rst...</li> <li>Additional commits viewable in <a href="https://github.com/aio-libs/aiohttp/compare/v3.14.1...v3.14.3">compare view</a></li> </ul> </details> <br /> Updates `datamodel-code-generator` from 0.56.0 to 0.64.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/koxudaxi/datamodel-code-generator/releases">datamodel-code-generator's releases</a>.</em></p> <blockquote> <h2>0.64.0</h2> <h2>Breaking Changes</h2> <h3>Code Generation Changes</h3> <ul> <li>Self-referencing fields are now quoted with <code>--disable-future-imports</code> - When <code>--disable-future-imports</code> is set (no <code>from __future__ import annotations</code> and no native PEP 649 deferred evaluation on Python < 3.14), self-referencing and forward-referencing field annotations in regular <code>BaseModel</code> classes are now emitted as quoted forward references instead of bare names. Previously such annotations were left unquoted, producing invalid code that raised <code>NameError</code> (Ruff F821) at class-evaluation time. Output for the common case (with <code>from __future__ import annotations</code> or Python 3.14 native deferred annotations) is unchanged. Users who snapshot/golden-file generated output for the <code>--disable-future-imports</code> configuration with self-referencing models will see the annotation change from unquoted to quoted, e.g. <code>children: Optional[List[Node]]</code> → <code>children: Optional[List["Node"]]</code>. (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3387">#3387</a>)</li> </ul> <h2>What's Changed</h2> <ul> <li>Update CHANGELOG for 0.63.0 by <a href="https://github.com/dcg-generated-docs"><code>@dcg-generated-docs</code></a>[bot] in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3345">koxudaxi/datamodel-code-generator#3345</a></li> <li>Deduplicate module content builder by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3346">koxudaxi/datamodel-code-generator#3346</a></li> <li>Deduplicate import reference helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3348">koxudaxi/datamodel-code-generator#3348</a></li> <li>Refactor jsonschema root model registration by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3352">koxudaxi/datamodel-code-generator#3352</a></li> <li>Refactor XML Schema literal helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3349">koxudaxi/datamodel-code-generator#3349</a></li> <li>Move builtin formatter helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3351">koxudaxi/datamodel-code-generator#3351</a></li> <li>Deduplicate Pydantic v2 config helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3350">koxudaxi/datamodel-code-generator#3350</a></li> <li>Deduplicate DataType type hint rendering by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3354">koxudaxi/datamodel-code-generator#3354</a></li> <li>Fix <code>constr()</code> for string fields carrying minItems/maxItems by <a href="https://github.com/DarkaMaul"><code>@DarkaMaul</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3353">koxudaxi/datamodel-code-generator#3353</a></li> <li>Cover non-finite import idempotence by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3367">koxudaxi/datamodel-code-generator#3367</a></li> <li>Deduplicate input text detection by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3357">koxudaxi/datamodel-code-generator#3357</a></li> <li>Remove stale protobuf coverage pragma by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3358">koxudaxi/datamodel-code-generator#3358</a></li> <li>Cover explicit null OpenAPI media schemas by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3360">koxudaxi/datamodel-code-generator#3360</a></li> <li>Simplify Python version feature checks by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3361">koxudaxi/datamodel-code-generator#3361</a></li> <li>Speed up CI checks by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3378">koxudaxi/datamodel-code-generator#3378</a></li> <li>Add maintainer link to docs footer and README by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3379">koxudaxi/datamodel-code-generator#3379</a></li> <li>Use builtin formatter in CI by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3380">koxudaxi/datamodel-code-generator#3380</a></li> <li>Split coverage by OS by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3381">koxudaxi/datamodel-code-generator#3381</a></li> <li>Simplify import removal cleanup by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3362">koxudaxi/datamodel-code-generator#3362</a></li> <li>Pin deprecation warning stacklevel by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3363">koxudaxi/datamodel-code-generator#3363</a></li> <li>Pin public module exports by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3364">koxudaxi/datamodel-code-generator#3364</a></li> <li>Cover to_hashable branch cases by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3366">koxudaxi/datamodel-code-generator#3366</a></li> <li>Cover stable toposort behavior by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3369">koxudaxi/datamodel-code-generator#3369</a></li> <li>Extract registry render helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3371">koxudaxi/datamodel-code-generator#3371</a></li> <li>Fix minItems for arrays of URI strings by <a href="https://github.com/sjh9714"><code>@sjh9714</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3377">koxudaxi/datamodel-code-generator#3377</a></li> <li>Deduplicate config value validators by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3372">koxudaxi/datamodel-code-generator#3372</a></li> <li>Cover CLI option metadata helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3374">koxudaxi/datamodel-code-generator#3374</a></li> <li>Cover Pydantic v2 version fallback by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3368">koxudaxi/datamodel-code-generator#3368</a></li> <li>Fix nullable JSON Schema const enums by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3355">koxudaxi/datamodel-code-generator#3355</a></li> <li>Pin patchable generation seams by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3365">koxudaxi/datamodel-code-generator#3365</a></li> <li>Cover utility helper behavior by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3375">koxudaxi/datamodel-code-generator#3375</a></li> <li>Cover DefaultPutDict behavior by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3376">koxudaxi/datamodel-code-generator#3376</a></li> <li>Cover validator config normalization by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3373">koxudaxi/datamodel-code-generator#3373</a></li> <li>Avoid expensive runtime type checks by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3382">koxudaxi/datamodel-code-generator#3382</a></li> <li>Avoid eager builtin formatter import by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3383">koxudaxi/datamodel-code-generator#3383</a></li> <li>Avoid eager TOML parser import by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3384">koxudaxi/datamodel-code-generator#3384</a></li> <li>Stabilize msgspec payload tests by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3385">koxudaxi/datamodel-code-generator#3385</a></li> <li>Avoid eager input parser imports by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3386">koxudaxi/datamodel-code-generator#3386</a></li> <li>Avoid eager parser model imports by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3388">koxudaxi/datamodel-code-generator#3388</a></li> <li>Avoid eager AsyncAPI converter imports by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3389">koxudaxi/datamodel-code-generator#3389</a></li> <li>Dispose parser on parse errors by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3390">koxudaxi/datamodel-code-generator#3390</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/koxudaxi/datamodel-code-generator/blob/main/CHANGELOG.md">datamodel-code-generator's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/koxudaxi/datamodel-code-generator/releases/tag/0.64.0">0.64.0</a> - 2026-06-14</h2> <h2>Breaking Changes</h2> <h3>Code Generation Changes</h3> <ul> <li>Self-referencing fields are now quoted with <code>--disable-future-imports</code> - When <code>--disable-future-imports</code> is set (no <code>from __future__ import annotations</code> and no native PEP 649 deferred evaluation on Python < 3.14), self-referencing and forward-referencing field annotations in regular <code>BaseModel</code> classes are now emitted as quoted forward references instead of bare names. Previously such annotations were left unquoted, producing invalid code that raised <code>NameError</code> (Ruff F821) at class-evaluation time. Output for the common case (with <code>from __future__ import annotations</code> or Python 3.14 native deferred annotations) is unchanged. Users who snapshot/golden-file generated output for the <code>--disable-future-imports</code> configuration with self-referencing models will see the annotation change from unquoted to quoted, e.g. <code>children: Optional[List[Node]]</code> → <code>children: Optional[List["Node"]]</code>. (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3387">#3387</a>)</li> </ul> <h2>What's Changed</h2> <ul> <li>Update CHANGELOG for 0.63.0 by <a href="https://github.com/dcg-generated-docs"><code>@dcg-generated-docs</code></a>[bot] in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3345">koxudaxi/datamodel-code-generator#3345</a></li> <li>Deduplicate module content builder by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3346">koxudaxi/datamodel-code-generator#3346</a></li> <li>Deduplicate import reference helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3348">koxudaxi/datamodel-code-generator#3348</a></li> <li>Refactor jsonschema root model registration by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3352">koxudaxi/datamodel-code-generator#3352</a></li> <li>Refactor XML Schema literal helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3349">koxudaxi/datamodel-code-generator#3349</a></li> <li>Move builtin formatter helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3351">koxudaxi/datamodel-code-generator#3351</a></li> <li>Deduplicate Pydantic v2 config helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3350">koxudaxi/datamodel-code-generator#3350</a></li> <li>Deduplicate DataType type hint rendering by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3354">koxudaxi/datamodel-code-generator#3354</a></li> <li>Fix <code>constr()</code> for string fields carrying minItems/maxItems by <a href="https://github.com/DarkaMaul"><code>@DarkaMaul</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3353">koxudaxi/datamodel-code-generator#3353</a></li> <li>Cover non-finite import idempotence by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3367">koxudaxi/datamodel-code-generator#3367</a></li> <li>Deduplicate input text detection by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3357">koxudaxi/datamodel-code-generator#3357</a></li> <li>Remove stale protobuf coverage pragma by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3358">koxudaxi/datamodel-code-generator#3358</a></li> <li>Cover explicit null OpenAPI media schemas by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3360">koxudaxi/datamodel-code-generator#3360</a></li> <li>Simplify Python version feature checks by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3361">koxudaxi/datamodel-code-generator#3361</a></li> <li>Speed up CI checks by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3378">koxudaxi/datamodel-code-generator#3378</a></li> <li>Add maintainer link to docs footer and README by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3379">koxudaxi/datamodel-code-generator#3379</a></li> <li>Use builtin formatter in CI by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3380">koxudaxi/datamodel-code-generator#3380</a></li> <li>Split coverage by OS by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3381">koxudaxi/datamodel-code-generator#3381</a></li> <li>Simplify import removal cleanup by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3362">koxudaxi/datamodel-code-generator#3362</a></li> <li>Pin deprecation warning stacklevel by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3363">koxudaxi/datamodel-code-generator#3363</a></li> <li>Pin public module exports by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3364">koxudaxi/datamodel-code-generator#3364</a></li> <li>Cover to_hashable branch cases by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3366">koxudaxi/datamodel-code-generator#3366</a></li> <li>Cover stable toposort behavior by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3369">koxudaxi/datamodel-code-generator#3369</a></li> <li>Extract registry render helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3371">koxudaxi/datamodel-code-generator#3371</a></li> <li>Fix minItems for arrays of URI strings by <a href="https://github.com/sjh9714"><code>@sjh9714</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3377">koxudaxi/datamodel-code-generator#3377</a></li> <li>Deduplicate config value validators by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3372">koxudaxi/datamodel-code-generator#3372</a></li> <li>Cover CLI option metadata helpers by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3374">koxudaxi/datamodel-code-generator#3374</a></li> <li>Cover Pydantic v2 version fallback by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3368">koxudaxi/datamodel-code-generator#3368</a></li> <li>Fix nullable JSON Schema const enums by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3355">koxudaxi/datamodel-code-generator#3355</a></li> <li>Pin patchable generation seams by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3365">koxudaxi/datamodel-code-generator#3365</a></li> <li>Cover utility helper behavior by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3375">koxudaxi/datamodel-code-generator#3375</a></li> <li>Cover DefaultPutDict behavior by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3376">koxudaxi/datamodel-code-generator#3376</a></li> <li>Cover validator config normalization by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3373">koxudaxi/datamodel-code-generator#3373</a></li> <li>Avoid expensive runtime type checks by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3382">koxudaxi/datamodel-code-generator#3382</a></li> <li>Avoid eager builtin formatter import by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3383">koxudaxi/datamodel-code-generator#3383</a></li> <li>Avoid eager TOML parser import by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3384">koxudaxi/datamodel-code-generator#3384</a></li> <li>Stabilize msgspec payload tests by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3385">koxudaxi/datamodel-code-generator#3385</a></li> <li>Avoid eager input parser imports by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3386">koxudaxi/datamodel-code-generator#3386</a></li> <li>Avoid eager parser model imports by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3388">koxudaxi/datamodel-code-generator#3388</a></li> <li>Avoid eager AsyncAPI converter imports by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3389">koxudaxi/datamodel-code-generator#3389</a></li> <li>Dispose parser on parse errors by <a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/3390">koxudaxi/datamodel-code-generator#3390</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/koxudaxi/datamodel-code-generator/commit/53a25ab8ddb132ac68a2795247fc855b8f445d84"><code>53a25ab</code></a> Fast path schema output (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3410">#3410</a>)</li> <li><a href="https://github.com/koxudaxi/datamodel-code-generator/commit/ee2087f32e6100f5c3642e7ea8506aa38e9df26c"><code>ee2087f</code></a> Skip discriminator import scan (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3411">#3411</a>)</li> <li><a href="https://github.com/koxudaxi/datamodel-code-generator/commit/bdf5ddfc27f94a06ba8d289759193bb09daadd34"><code>bdf5ddf</code></a> fix: quote self-referencing fields when --disable-future-imports is set (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3387">#3387</a>)</li> <li><a href="https://github.com/koxudaxi/datamodel-code-generator/commit/ad4ec877fa6708baebdaaf820171d24bfe5bf0cb"><code>ad4ec87</code></a> Cache payload validation strategies (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3409">#3409</a>)</li> <li><a href="https://github.com/koxudaxi/datamodel-code-generator/commit/b191d52a0a1d83edeac9553119f70b2f5c131126"><code>b191d52</code></a> Shard Python tests (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3408">#3408</a>)</li> <li><a href="https://github.com/koxudaxi/datamodel-code-generator/commit/29dd6d74c95dd7799d51f2c707db24862809eb23"><code>29dd6d7</code></a> Cache parsed sources (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3407">#3407</a>)</li> <li><a href="https://github.com/koxudaxi/datamodel-code-generator/commit/93e2fe3cf5774d5e4d2083fac365e5bcbf0a647a"><code>93e2fe3</code></a> Defer generation refresh (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3406">#3406</a>)</li> <li><a href="https://github.com/koxudaxi/datamodel-code-generator/commit/bb01d9c628f9077cc5dd72320ae60a18abd5b790"><code>bb01d9c</code></a> Lazy root format exports (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3405">#3405</a>)</li> <li><a href="https://github.com/koxudaxi/datamodel-code-generator/commit/48237ed8c3af3bb58b5e6b274925ebb646412d3a"><code>48237ed</code></a> Fast path JSON schemas (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3404">#3404</a>)</li> <li><a href="https://github.com/koxudaxi/datamodel-code-generator/commit/b21d106c88ac22f137cd4562389ad95a50c2e912"><code>b21d106</code></a> Slot generation facts (<a href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3403">#3403</a>)</li> <li>Additional commits viewable in <a href="https://github.com/koxudaxi/datamodel-code-generator/compare/0.56.0...0.64.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/Stirling-Tools/Stirling-PDF/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
8de94ff152 |
Ai customization settings (#7069)
# Description of Changes AI settings customisation in settings menu, as part of this also tested and fixed ollama and other 3rd party AI integrations - Adds an admin AI settings UI for customizing AI behaviour, including per-provider model and API-key configuration - Backend pushes AI config changes to the Python engine at runtime via a config-push bridge, so changes apply without a restart - Config-push is gated off in SaaS; engine now drains background tasks on shutdown instead of cancelling them --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
bef83d80a1 |
Patch CVEs in engine Python dependencies (#6804)
# Description of Changes - Patch CVEs in engine Python dependencies (43 alerts): `starlette` 1.3.1, `cryptography` 49.0.0, `pyjwt` 2.13.0, `urllib3` 2.7.0, `aiohttp` 3.14.1, `python-multipart` 0.0.32, `langchain-core` 1.4.8, `langsmith` 0.9.1, `authlib` 1.7.2, `requests` 2.34.2, `idna` 3.18, `pytest` 9.1.1, `pygments` 2.20.0, `pydantic-settings` 2.14.2 - Cap `pydantic-ai` `<2.0.0` and bump to 1.107.0 (1.99.0 patches CVE-2026-46678; 2.0 is a separate major migration) --- ## Checklist ### General - [x] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [x] I have performed a self-review of my own code - [x] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs (if functionality has heavily changed) - [ ] I have read the section Add New Translation Tags (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally |
||
|
|
0570c4c4d9 | Create-PDF engine: render from a structured document (#7018) | ||
|
|
d995471a55 |
Merge remote-tracking branch 'origin/main' into SaaS-update
# Conflicts: # frontend/editor/src/proprietary/components/chat/ChatContext.tsx # frontend/editor/src/saas/components/shared/TrialStatusBanner.tsx |
||
|
|
d52c7ced7c |
Improvements to Stirling Engine to prepare for SaaS release (#6603)
# Description of Changes - Use pool for postgres connections - Add ability to require user ID to be set on API calls to the engine - Add process-wide concurrency cap on AI access (in addition to existing user caps) - Allow number of workers (threads) to be specified for stirling engine - Update env var names to reflect that the DB is not just for RAG |
||
|
|
88adb7adad |
create agent (#6520)
Added the create agent. Use [these prompts](https://github.com/Stirling-Tools/Stirling-PDF-SaaS/blob/main/docgen/backend/default_templates/sample_prompts.md) to test or try your own :) Here’s the one I use ``` Hey, I need to generate an employee expense report for reimbursement. Company: Summit Consulting Partners Company address: 88 Riverside Plaza, Suite 1400, New York, NY 10069 Accounting department email: expenses@example.com Employee details: * Employee Name: Michael Tran * Employee ID: EMP-1047 * Department: Client Services * Report Date: January 20th, 2026 * Reporting Period: January 5th, 2026 – January 16th, 2026 * Manager Approver: Laura Simmons Trip purpose: Client onsite meetings with Atlantic Energy Solutions in Boston, MA. Expense items: * Flight (NYC to Boston roundtrip) — $325.40 — January 5th, 2026 — Airline ticket * Hotel (3 nights at Harborview Hotel) — $822.75 — January 5th-8th, 2026 * Taxi from airport to hotel — $48.00 — January 5th, 2026 * Client dinner (3 attendees) — $186.20 — January 6th, 2026 * Parking at JFK Airport — $72.00 — January 5th-8th, 2026 * Breakfast (per diem not used) — $18.50 — January 7th, 2026 * Uber to client office — $22.10 — January 7th, 2026 * Printing + presentation materials — $46.90 — January 8th, 2026 * Lunch with client — $39.75 — January 8th, 2026 * Office supplies (notebooks, pens) — $27.60 — January 10th, 2026 * Mileage reimbursement (client visit in NJ, 42 miles @ $0.67/mile) — $28.14 — January 14th, 2026 * Team lunch meeting (internal) — $64.30 — January 15th, 2026 Reimbursement method should be direct deposit. Add a notes section stating: "All receipts attached. Expenses are business-related and comply with company travel policy." ``` --------- Co-authored-by: Anthony Stirling <77850077+frooodle@users.noreply.github.com> |
||
|
|
86774d556e |
Pdf comment agent (#6196)
Co-authored-by: James Brunton <jbrunton96@gmail.com> |
||
|
|
f779085d75 | setup RAG (#6146) | ||
|
|
e5767ed58b |
Change AI engine to execute tools in Java instead of on frontend (#6116)
# Description of Changes Redesign AI engine so that it autogenerates the `tool_models.py` file from the OpenAPI spec so the Python has access to the Java API parameters and the full list of Java tools that it can run. CI ensures that whenever someone modifies a tool endpoint that the AI enigne tool models get updated as well (the dev gets told to run `task engine:tool-models`). There's loads of advantages to having the Java be the one that actually executes the tools, rather than the frontend as it was previously set up to theoretically use: - The AI gets much better descriptions of the params from the API docs - It'll be usable headless in the future so a Java daemon could run to execute ops on files in a folder without the need for the UI to run - The Java already has all the logic it needs to execute the tools - We don't need to parse the TypeScript to find the API (which is hard because the TS wasn't designed to be computer-read to extract the API) I've also hooked up the prototype frontend to ensure it's working properly, and have built it in a way that all the tool names can be translated properly, which was always an issue with previous prototypes of this. --------- Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Co-authored-by: EthanHealy01 <80844253+EthanHealy01@users.noreply.github.com> |
||
|
|
de8c483054 |
Feat/math validation agent (#6012)
Co-authored-by: James Brunton <jbrunton96@gmail.com> Co-authored-by: EthanHealy01 <80844253+EthanHealy01@users.noreply.github.com> |
||
|
|
2bf5f0b18e |
Add tracking system to support optional PostHog tracking in AI engine (#6040)
Co-authored-by: ConnorYoh <40631091+ConnorYoh@users.noreply.github.com> |
||
|
|
b130242688 |
Add Java orchestrator to connect to the AI engine (#6003)
# Description of Changes Add Java orchestration layer which can connect and go back and forth with the AI engine to get results for the user. It's expected that the AI engine will not be publicly available and this Java layer will always be in front of it, to manage sessions and auth etc. |
||
|
|
e10c5f6283 |
Redesign Python AI engine (#5991)
# Description of Changes Redesign the Python AI engine to be properly agentic and make use of `pydantic-ai` instead of `langchain` for correctness and ergonomics. This should be a good foundation for us to build our AI engine on going forwards. |
||
|
|
c58a6092ec | Add SaaS AI engine (#5907) |