<strong>Topics covered in this episode:</strong><br>
<ul>
<li><strong><a href="https://discuss.python.org/t/pep-814-add-frozendict-built-in-type/104854?featured_on=pythonbytes">PEP 814 – Add frozendict built-in type</a></strong></li>
<li><strong>From <a href="https://squidfunk.github.io/mkdocs-material/?featured_on=pythonbytes">Material for MkDocs</a> to <a href="https://zensical.org?featured_on=pythonbytes">Zensical</a></strong></li>
<li><strong><a href="https://github.com/tach-org/tach?featured_on=pythonbytes">Tach</a></strong></li>
<li><strong>Some Python Speedups in 3.15 and 3.16</strong></li>
<li><strong>Extras</strong></li>
<li><strong>Joke</strong></li>
</ul><p><strong>About the show</strong></p>
<p>Sponsored by us! Support our work through:</p>
<ul>
<li>Our <a href="https://training.talkpython.fm/?featured_on=pythonbytes"><strong>courses at Talk Python Training</strong></a></li>
<li><a href="https://courses.pythontest.com/p/the-complete-pytest-course?featured_on=pythonbytes"><strong>The Complete pytest Course</strong></a></li>
<li><a href="https://www.patreon.com/pythonbytes"><strong>Patreon Supporters</strong></a></li>
</ul>
<p><strong>Connect with the hosts</strong></p>
<ul>
<li>Michael: <a href="https://fosstodon.org/@mkennedy">@[email protected]</a> / <a href="https://bsky.app/profile/mkennedy.codes?featured_on=pythonbytes">@mkennedy.codes</a> (bsky)</li>
<li>Brian: <a href="https://fosstodon.org/@brianokken">@[email protected]</a> / <a href="https://bsky.app/profile/brianokken.bsky.social?featured_on=pythonbytes">@brianokken.bsky.social</a></li>
<li>Show: <a href="https://fosstodon.org/@pythonbytes">@[email protected]</a> / <a href="https://bsky.app/profile/pythonbytes.fm">@pythonbytes.fm</a> (bsky)</li>
</ul>
<p>Join us on YouTube at <a href="https://pythonbytes.fm/stream/live"><strong>pythonbytes.fm/live</strong></a> to be part of the audience. Usually <strong>Monday</strong> at 10am PT. Older video versions available there too.</p>
<p>Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to <a href="https://pythonbytes.fm/friends-of-the-show">our friends of the show list</a>, we'll never share it.</p>
<p><strong>Michael #0</strong>: <a href="https://talkpython.fm/black-friday?featured_on=pythonbytes">Black Friday is on at Talk Python</a></p>
<ul>
<li>What’s on offer:
<ol>
<li>An <a href="https://training.talkpython.fm/courses/bundle/black-friday-ai-2025?featured_on=pythonbytes">AI course mini bundle</a> (22% off)</li>
<li>20% off our entire library via the <a href="https://training.talkpython.fm/courses/bundle/everything?featured_on=pythonbytes">Everything Bundle</a> (<a href="https://training.talkpython.fm/bundles-arent-subscriptions?featured_on=pythonbytes">what's that? ;)</a> )</li>
<li>The new <a href="https://mikeckennedy.gumroad.com/l/talk-python-in-production-book/black-friday-2025?featured_on=pythonbytes">Talk Python in Production book</a> (25% off)</li>
</ol></li>
</ul>
<p>Brian: This is peer pressure in action</p>
<ul>
<li>20% off <a href="https://courses.pythontest.com/the-complete-pytest-course-bundle?featured_on=pythonbytes">The Complete pytest Course bundle</a> (use code BLACKFRIDAY) through November
<ul>
<li>or use save50 for 50% off, your choice.</li>
</ul></li>
<li><a href="https://pragprog.com/titles/bopytest2/python-testing-with-pytest-second-edition/?featured_on=pythonbytes">Python Testing with pytest, 2nd edition</a>, eBook (50% off with code save50) also through November
<ul>
<li>I would have picked 20%, but it’s a PragProg wide thing</li>
</ul></li>
</ul>
<p><strong>Michael #1: <a href="https://discuss.python.org/t/pep-814-add-frozendict-built-in-type/104854?featured_on=pythonbytes">PEP 814 – Add frozendict built-in type</a></strong></p>
<ul>
<li>by Victor Stinner & Donghee Na</li>
<li>A new public immutable type <code>frozendict</code> is added to the <code>builtins</code> module.</li>
<li>We expect <code>frozendict</code> to be safe by design, as it prevents any unintended modifications. This addition benefits not only CPython’s standard library, but also third-party maintainers who can take advantage of a reliable, immutable dictionary type.</li>
<li>To add to <a href="https://blobs.pythonbytes.fm/existing-frozen-typesstructures-in-python.html?cache_id=5788ae">existing frozen types in Python</a>.</li>
</ul>
<p><strong>Brian #2: From <a href="https://squidfunk.github.io/mkdocs-material/?featured_on=pythonbytes">Material for MkDocs</a> to <a href="https://zensical.org?featured_on=pythonbytes">Zensical</a></strong></p>
<ul>
<li>Suggested by John Hagen</li>
<li>A lot of people, me included, use Material for MkDocs as our MkDocs theme for both personal and professional projects, and in-house docs.</li>
<li>This plugin for MkDocs is <a href="https://github.com/squidfunk/mkdocs-material/issues/8523?featured_on=pythonbytes">now in maintenance mode</a></li>
<li>The development team is switching to working on Zensical, a static site generator to overcome some technical limitations with MkDocs. There’s a series of posts about the transition and reasoning
<ol>
<li><a href="https://squidfunk.github.io/mkdocs-material/blog/2024/08/19/how-were-transforming-material-for-mkdocs/?featured_on=pythonbytes">Transforming Material for MkDocs</a></li>
<li><a href="https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/?featured_on=pythonbytes">Zensical – A modern static site generator built by the creators of Material for MkDocs</a></li>
<li><a href="https://squidfunk.github.io/mkdocs-material/blog/2025/11/11/insiders-now-free-for-everyone/?featured_on=pythonbytes">Material for MkDocs Insiders – Now free for everyone</a></li>
<li><a href="https://squidfunk.github.io/mkdocs-material/blog/2025/11/18/goodbye-github-discussions/?featured_on=pythonbytes">Goodbye, GitHub Discussions</a></li>
</ol></li>
<li>Material for MkDocs
<ul>
<li>still around, but in maintenance mode</li>
<li>all insider features now available to everyone</li>
</ul></li>
<li>Zensical is / will be
<ul>
<li>compatible with Material for Mkdocs, can natively read mkdocs.yml, to assist with the transition</li>
<li>Open Source, MIT license</li>
<li>funded by an offering for professional users: Zensical Spark</li>
</ul></li>
</ul>
<p><strong>Michael #3: <a href="https://github.com/tach-org/tach?featured_on=pythonbytes">Tach</a></strong></p>
<ul>
<li>Keep the streak: pip deps with uv + tach</li>
<li>From Gerben Decker</li>
<li>We needed some more control over linting our dependency structure, both internal and external.</li>
<li>We use <code>tach</code> (which you covered before IIRC), but also some home built linting rules for our specific structure. These are extremely easy to build using an underused feature of <code>ruff</code>: "uv run ruff analyze graph --python python_exe_path .".</li>
<li><a href="https://app.gauge.sh/show?uid=fee5a5ca-7f89-4f0a-bcf7-bca1f7c6cc8a&featured_on=pythonbytes">Example from an app</a> I’m working on (shhhhh not yet announced!)</li>
</ul>
<p><strong>Brian #4: Some Python Speedups in 3.15 and 3.16</strong></p>
<ul>
<li><a href="https://fidget-spinner.github.io/posts/faster-jit-plan.html?featured_on=pythonbytes"><strong>A Plan for 5-10%* Faster Free-Threaded JIT by Python 3.16</strong></a>
<ul>
<li>5% faster by 3.15 and 10% faster by 3.16</li>
</ul></li>
<li><a href="https://emmatyping.dev/decompression-is-up-to-30-faster-in-cpython-315.html?featured_on=pythonbytes">Decompression is up to 30% faster in CPython 3.15</a></li>
</ul>
<p><strong>Extras</strong></p>
<p>Brian:</p>
<ul>
<li><a href="https://github.com/okken/lean-tdd-book?featured_on=pythonbytes">LeanTDD book issue tracker</a></li>
</ul>
<p>Michael:</p>
<ul>
<li>No. 4 for dependencies: <a href="https://www.linkedin.com/posts/bbelderbos_i-needed-to-see-which-packages-were-pulling-share-7398344644629016576-C-Q8?featured_on=pythonbytes">Inverted dep trees</a> from Bob Belderbos</li>
</ul>
<p><strong>Joke: <a href="https://x.com/creativedrewy/status/1990891118569869327?featured_on=pythonbytes">git pull inception</a></strong></p>