<strong>Topics covered in this episode:</strong><br>
<ul>
<li><strong><a href="https://x.com/mitsuhiko/status/1899928805742899231?featured_on=pythonbytes">Why aren't you using uv</a>?</strong></li>
<li><strong><a href="https://pydevtools.com/handbook/?featured_on=pythonbytes">Python Developer Tooling Handbook</a></strong></li>
<li><a href="https://github.com/adamchainz/blacken-docs?featured_on=pythonbytes"><strong>Calling all doc writers: blacken-docs</strong></a></li>
<li><strong><a href="https://marimo.io/blog/python-not-json?_bhlid=137e05f1384ff987aef74d01decfeb08d76910c7&featured_on=pythonbytes">Reinventing notebooks as reusable Python programs</a></strong></li>
<li><strong>Extras</strong></li>
<li><strong>Joke</strong></li>
</ul><a href='https://www.youtube.com/watch?v=cps-wnsRte8' style='font-weight: bold;'data-umami-event="Livestream-Past" data-umami-event-episode="425">Watch on YouTube</a><br>
<p><strong>About the show</strong></p>
<p>Brought to you by <a href="https://pythonbytes.fm/connect"><strong>Posit Connect: pythonbytes.fm/connect</strong></a>.</p>
<p><strong>Connect with the hosts</strong></p>
<ul>
<li>Michael: <a href="https://fosstodon.org/@mkennedy"><strong>@mkennedy@fosstodon.org</strong></a> <strong>/</strong> <a href="https://bsky.app/profile/mkennedy.codes?featured_on=pythonbytes"><strong>@mkennedy.codes</strong></a> <strong>(bsky)</strong></li>
<li>Brian: <a href="https://fosstodon.org/@brianokken"><strong>@brianokken@fosstodon.org</strong></a> <strong>/</strong> <a href="https://bsky.app/profile/brianokken.bsky.social?featured_on=pythonbytes"><strong>@brianokken.bsky.social</strong></a></li>
<li>Show: <a href="https://fosstodon.org/@pythonbytes"><strong>@pythonbytes@fosstodon.org</strong></a> <strong>/</strong> <a href="https://bsky.app/profile/pythonbytes.fm"><strong>@pythonbytes.fm</strong></a> <strong>(bsky)</strong></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 #1:</strong> <a href="https://x.com/mitsuhiko/status/1899928805742899231?featured_on=pythonbytes">Why aren't you using uv</a>?</p>
<ul>
<li>Fun conversation on X by <a href="https://x.com/mitsuhiko?featured_on=pythonbytes">Armin Ronacher</a>.</li>
<li>Interesting quotes from the thread
<ul>
<li>I get it replaces pip/pyenv, but should I also use it instead of the built in 'python -m venv .venv'?</li>
<li>But I need python installed to make python programs?</li>
<li>Because it places the venv in the project folder and I can't run executables from there due to corporate policy. Many such cases. No idea why astral doesn't address this with more urgency.
<ul>
<li>Sounds like a bad corporate policy :)</li>
</ul></li>
<li>i’m too lazy to switch from pyenv and pip</li>
<li>trust issues, what if they do a bait and switch …</li>
<li>Because everyone said that about poetry and I'm not sure I'm really ready to get hurt again.</li>
<li>Masochism</li>
<li>Many times I tried a lot of similar tools and always come back to pip and pip-tools. Them are just work, why should I spend my time for something "cool" that will bring more problems?</li>
<li>I tried this week but I was expecting a "uv install requests" instead of "uv add". Switched back to pipenv.</li>
<li>we partially use it. will transition when Dependabot support is available.</li>
</ul></li>
<li>I’ll leave it with → Jared Scheel: Seeing a whole lotta Stockholm Syndrome in the replies to this question.</li>
</ul>
<p><strong>Brian #2:</strong> <a href="https://pydevtools.com/handbook/?featured_on=pythonbytes">Python Developer Tooling Handbook</a></p>
<ul>
<li>Tim Hopper</li>
<li>“This is not a book about programming Python. Instead, the goal of this book is to help you understand the ecosystem of tools used to make Python development easier and more productive”</li>
<li>Covers tools related to packaging, linting, formatting, and managing dependencies. </li>
</ul>
<p><strong>Michael #3:</strong> <a href="https://github.com/adamchainz/blacken-docs?featured_on=pythonbytes"><strong>Calling all doc writers: blacken-docs</strong></a></p>
<ul>
<li>Run <code>black</code> on python code blocks in documentation files </li>
<li>You can also install blacken-docs as a <a href="https://pre-commit.com/?featured_on=pythonbytes">pre-commit</a> hook.</li>
<li>It supports Markdown, reStructuredText, and LaTex files. </li>
<li>Additionally, you can run it on Python files to reformat Markdown and reStructuredText within docstrings.</li>
</ul>
<p><strong>Brian #4:</strong> <a href="https://marimo.io/blog/python-not-json?_bhlid=137e05f1384ff987aef74d01decfeb08d76910c7&featured_on=pythonbytes">Reinventing notebooks as reusable Python programs</a></p>
<ul>
<li>marimo allows you to store notebooks as plaintext Python files</li>
<li>properties
<ul>
<li>Git-friendly: small code change => small diff</li>
<li>easy for both humans and computers to read</li>
<li>importable as a Python module, without executing notebook cells</li>
<li>executable as a Python script</li>
<li>editable with a text editor</li>
</ul></li>
<li>Also, … testing with pytest</li>
<li>“Because marimo notebooks are just Python files, they are interoperable with other tools for Python — including pytest. “</li>
<li>“<strong>Testing cells.</strong> Any cell named as test_* is automatically discoverable and testable by pytest. The same goes for any cell that contains only test_ functions and Test classes.”</li>
<li>“Importantly, because cells are wrapped in functions, running pytest test_notebook.py doesn’t execute the entire notebook — just its tests.”</li>
</ul>
<p><strong>Extras</strong> </p>
<p>Brian:</p>
<ul>
<li>PyConUS announces <a href="https://pycon.blogspot.com/2025/03/refund-policy-for-international.html?featured_on=pythonbytes">Refund Policy for International Attendees</a></li>
<li>New format now live for <a href="https://courses.pythontest.com?featured_on=pythonbytes">The Complete pytest Course Bundle</a> and component courses
<ul>
<li>Each course now available separately also
<ul>
<li><a href="https://courses.pythontest.com/pytest-primary-power?featured_on=pythonbytes">pytest Primary Power</a> is 13 lessons, 3.9 hours</li>
<li><a href="https://courses.pythontest.com/using-pytest-with-projects?featured_on=pythonbytes">Using pytest with Projects</a>, 10 lessons, 3.4 hours</li>
<li><a href="https://courses.pythontest.com/pytest-booster-rockets?featured_on=pythonbytes">pytest Booster Rockets</a>, 6 lessons, 1.3 hours of content</li>
</ul></li>
<li>New format is easier to navigate</li>
<li>Better for people who like different speeds. I’m usually a 1.25x-1.5x speed person.</li>
<li>Now also with Congratulations! lessons (with fireworks) and printable certificates.</li>
</ul></li>
</ul>
<p>Michael:</p>
<ul>
<li><a href="https://tw.pycon.org/2025/en-us/speaking/cfp?featured_on=pythonbytes">PyCon Taiwan is currently calling for proposals</a></li>
<li>HN trends follow up via Shinjitsu</li>
</ul>
<p>I'm sure some other Hacker News reader has already given you the feedback, but in the unlikely case that they haven't, You read those headlines in this segment exactly wrong.</p>
<p>“Ask HN: Who is hiring?" is a monthly post that asks employers to post
about jobs they have available</p>
<p>“Ask HN: Who wants to be hired?” is a monthly topic where they ask
people who are looking for jobs to post about themselves in the hope
that their skillset it is a good match (and not an LLM generated resume)</p>
<p>So unfortunately your rosy analysis might need a less rosy
interpretation.</p>
<p><strong>Joke:</strong> </p>
<ul>
<li><a href="https://www.cs.cornell.edu/courses/cs100/1999su/handouts/klingons.htm?featured_on=pythonbytes">Top 12 things likely to be overheard if you had a Klingon Programmer</a>
<ul>
<li>From Holgi on Mastodon</li>
</ul></li>
</ul>
↧