<strong>Topics covered in this episode:</strong><br>
<ul>
<li><strong><a href="https://www.python.org/downloads/release/python-3130/?featured_on=pythonbytes">Python 3.13.0 released Oct 7</a></strong></li>
<li><strong><a href="https://peps.python.org/pep-0759/?featured_on=pythonbytes">PEP 759 – External Wheel Hosting</a></strong></li>
<li><strong><a href="https://pypi.org/project/pytest-freethreaded/?featured_on=pythonbytes">pytest-freethreaded</a></strong></li>
<li><strong><a href="https://github.com/MrMino/pytest-edit?featured_on=pythonbytes">pytest-edit</a></strong></li>
<li><strong>Extras</strong></li>
<li><strong>Joke</strong></li>
</ul><a href='https://www.youtube.com/watch?v=6w3-YkKMJ0E' style='font-weight: bold;'data-umami-event="Livestream-Past" data-umami-event-episode="404">Watch on YouTube</a><br>
<p><strong>About the show</strong></p>
<p>Sponsored by ScoutAPM: <a href="https://pythonbytes.fm/scout"><strong>pythonbytes.fm/scout</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></li>
<li>Brian: <a href="https://fosstodon.org/@brianokken"><strong>@brianokken@fosstodon.org</strong></a></li>
<li>Show: <a href="https://fosstodon.org/@pythonbytes"><strong>@pythonbytes@fosstodon.org</strong></a></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>Brian #1:</strong> <a href="https://www.python.org/downloads/release/python-3130/?featured_on=pythonbytes">Python 3.13.0 released Oct 7</a></p>
<ul>
<li>That’s today!</li>
<li><a href="https://docs.python.org/3.13/whatsnew/3.13.html?featured_on=pythonbytes">What’s New In Python 3.13</a>
<ul>
<li>Interpreter (REPL) improvements
<ul>
<li>exit works (really, this is worth the release right here)</li>
<li>Multiline editing with history preservation.
<ul>
<li>history sticks around between sessions</li>
</ul></li>
<li>Direct support for REPL-specific commands like help, exit, and quit, without the need to call them as functions.</li>
<li>Prompts and tracebacks with color enabled by default.</li>
<li>Interactive help browsing using F1 with a separate command history.</li>
<li>History browsing using F2 that skips output as well as the >>> and … prompts.</li>
<li>“Paste mode” with F3 that makes pasting larger blocks of code easier (press F3 again to return to the regular prompt).</li>
<li>exit now works without parens</li>
</ul></li>
<li>Improved error messages
<ul>
<li>Colorful tracebacks</li>
<li>Better messages for
<ul>
<li>naming a script/module the same name as a stdlib module.</li>
<li>naming a script/module the same name as an installed third party module.</li>
<li>misspelling a keyword argument</li>
</ul></li>
</ul></li>
<li>Free threaded CPython
<ul>
<li>Included in official installers on <a href="https://docs.python.org/3.13/using/windows.html#install-freethreaded-windows">Windows</a> and <a href="https://docs.python.org/3.13/using/mac.html#install-freethreaded-macos">macOS</a>
<ul>
<li>Read these links to figure out how - it’s not turned on by default</li>
</ul></li>
</ul></li>
<li>Lot’s more. see the What’s new page</li>
</ul></li>
</ul>
<p><strong>Michael #2:</strong> <a href="https://peps.python.org/pep-0759/?featured_on=pythonbytes">PEP 759 – External Wheel Hosting</a></p>
<ul>
<li>pypi.org ships <a href="https://www.fastly.com/customers/python-software-foundation/?featured_on=pythonbytes">over 66 petabytes / month</a> backed by Fastly</li>
<li>There are hard project size limits for publishers to PyPI</li>
<li>We can host the essence of a <strong>.whl</strong> as a <strong>.rim</strong> file, then allow an external download URL</li>
<li>Security: Several factors as described in this proposal should mitigate security concerns with externally hosted wheels, such as:
<ul>
<li>Wheel file checksums <strong>MUST</strong> be included in .rim files, and once uploaded cannot be changed. Since the checksum stored on PyPI is immutable and required, it is not possible to spoof an external wheel file, even if the owning organization lost control of their hosting domain.</li>
<li>Externally hosted wheels <strong>MUST</strong> be served over HTTPS.</li>
<li>In order to serve externally hosted wheels, organizations <strong>MUST</strong> be approved by the PyPI admins.</li>
</ul></li>
</ul>
<p><strong>Brian #3:</strong> <a href="https://pypi.org/project/pytest-freethreaded/?featured_on=pythonbytes">pytest-freethreaded</a></p>
<ul>
<li>PyCon JP 2024 Team:
<ul>
<li>This extension was created at PyCon JP sprints with <a href="https://github.com/tonybaloney/pytest-freethreaded/blob/main/README.md#credits">Anthony Shaw and 7 other folks listed in credits.</a></li>
</ul></li>
<li>“A pytest plugin for helping verify that your tests and libraries are thread-safe with the Python 3.13 experimental freethreaded mode.”</li>
<li>Testing your project for compatibility with freethreaded Python.
<ul>
<li>Testing in single thread doesn’t test that.</li>
<li>Neither does testing with pytest-xdist, because it uses multiprocessing to parallelize tests.</li>
<li>So, Ant and others “made this plugin to help you run your tests in a thread-pool with the GIL disabled, to help you identify if your tests are thread-safe.”</li>
<li>“And the first library we tested it on (which was marked as compatible) caused a segmentation fault in CPython! So you should give this a go if you're a package maintainer.”</li>
</ul></li>
</ul>
<p><strong>Michael #4:</strong> <a href="https://github.com/MrMino/pytest-edit?featured_on=pythonbytes">pytest-edit</a></p>
<ul>
<li>A simple Pytest plugin for opening editor on the failed tests.</li>
<li>Type <code>pytest --edit</code> to open the failing test code <img src="https://paper.dropboxstatic.com/static/img/ace/emoji/2728.png?version=8.0.0" alt="sparkles" /></li>
<li>Be sure to set your favorite editor in the ENV variables</li>
</ul>
<p><strong>Extras</strong> </p>
<p>Michael:</p>
<ul>
<li><a href="https://training.talkpython.fm/courses/all?featured_on=pythonbytes">New way to explore</a> Talk Python courses via topics
<ul>
<li>This has been in our <a href="https://training.talkpython.fm/apps?featured_on=pythonbytes">mobile apps</a> since their rewrite but finally comes to <a href="https://training.talkpython.fm/courses/all?featured_on=pythonbytes">the web</a></li>
</ul></li>
<li><a href="https://mkennedy.codes/posts/lets-go-easy-on-pypi-ok/?featured_on=pythonbytes">Let's go easy on PyPI, OK? essay</a></li>
<li>Hynek’s video: <a href="https://www.youtube.com/watch?v=8UuW8o4bHbw">uv IS the Future of Python Packaging </a><a href="https://www.youtube.com/watch?v=8UuW8o4bHbw"><img src="https://paper.dropboxstatic.com/static/img/ace/emoji/1f40d.png?version=8.0.0" alt="snake" /></a><a href="https://www.youtube.com/watch?v=8UuW8o4bHbw"><img src="https://paper.dropboxstatic.com/static/img/ace/emoji/1f4e6.png?version=8.0.0" alt="package" /></a></li>
<li><a href="https://github.com/adamchainz/djade-pre-commit?featured_on=pythonbytes">djade-pre-commit</a></li>
<li>Polyfill.io, BootCDN, Bootcss, Staticfile attack <a href="https://www.bleepingcomputer.com/news/security/polyfillio-bootcdn-bootcss-staticfile-attack-traced-to-1-operator/?featured_on=pythonbytes">traced to 1 operator</a></li>
<li><a href="https://purgecss.com/CLI.html?featured_on=pythonbytes">PurgeCSS CLI</a> </li>
<li><a href="https://blog.python.org/2024/10/python-3127-released.html?featured_on=pythonbytes">Python 3.12.7 released</a></li>
<li><a href="https://discuss.python.org/t/incremental-gc-and-pushing-back-the-3-13-0-release/65285/1?featured_on=pythonbytes">Incremental GC and pushing back the 3.13.0 release</a></li>
<li><a href="https://fosstodon.org/@midnitte/113239548093653991">uv making the rounds</a></li>
<li><a href="https://fosstodon.org/@mkennedy/113247714541010618">LLM fatigue</a>, is it real?</li>
<li>Take the <a href="https://survey.alchemer.com/s3/8009809/l-python-developers-survey-2024/?utm_source=pythonbytespodcast">Python Developers Survey 2024</a></li>
</ul>
<p><strong>Joke:</strong> <a href="https://inzonedesign.com/blog/28-cleverly-funny-creative-404-error-pages/?featured_on=pythonbytes">Funny 404 pages</a></p>
<ul>
<li>We have <a href="https://pythonbytes.fm/not-found-page-or-something">something at least interesting at pythonbytes.fm</a></li>
</ul>
↧