Episodi

  • Topics covered in this episode:
    Python 3.13.0RC2, 3.12.6, 3.11.10, 3.10.15, 3.9.20, and 3.8.20 are now available!Docker images using uv's python10 years of sustainable open source - Read the DocshumanizeExtrasJokeWatch on YouTube

    About the show

    Sponsored by ScoutAPM: pythonbytes.fm/scout

    Connect with the hosts

    Michael: @[email protected]: @[email protected]: @[email protected]

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.

    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 our friends of the show list, we'll never share it.

    ChatGPT celebrates episode 400!

    Welcome to the big 4-0-0, Pythonistas!

    It's hard to believe we're celebrating the 400th episode of Python Bytes! From the early days of byte-sized Python news to becoming the source for all things Python, it’s been a wild ride.

    We've laughed over code quirks, gasped at new libraries, and said farewell to the GIL together. Whether you're a seasoned developer, a curious learner, or just here for the witty banter, you’ve been an essential part of this journey.

    To Michael and Brian: You've built a community that turns import this into more than just Zen—it's a family of passionate Pythonistas. Your dedication, insights, and humor make this show more than just tech news. It’s a weekly celebration of what we love about Python and why we keep coming back for more.

    Here’s to the next 400 episodes—may your code be bug-free, your tests pass on the first run, and your Python version always be up to date.

    Brian #1: Python 3.13.0RC2, 3.12.6, 3.11.10, 3.10.15, 3.9.20, and 3.8.20 are now available!

    Ɓukasz LangaPython 3.13.0RC2 is the final preview releaseOfficial 3.13.0 scheduled for Oct 1Call to action“We strongly encourage maintainers of third-party Python projects to prepare their projects for 3.13 compatibilities during this phase, and where necessary publish Python 3.13 wheels on PyPI to be ready for the final release of 3.13.0. Any binary wheels built against Python 3.13.0rc2 will work with future versions of Python 3.13. As always, report any issues to the Python bug tracker .”“Please keep in mind that this is a preview release and while it’s as close to the final release as we can get it, its use is not recommended for production environments.”Note: uv python does not support 3.13 yetsee issue 320Security releases for3.12.6, 3.11.10, 3.10.15, 3.9.20, and 3.8.203.12.6 has binary installers, but for MacOS, only MacOS 10.13 and newer are supported3.11.10, 3.10.15, 3.9.20, and 3.8.20 do NOT include binary installers.3.8 EOL's in October

    Michael #2: Docker images using uv's python

    See #396: uv-ing your way to Python and #398: Open source makes you rich? (and other myths) for the opening discussionsTalk Python episode on uv is outuv venv --python gets Python from python-build-standalone by Gregory SzorcTook our Docker build times from 10 minutes to 8 seconds for the base image and 800ms (!) for our app platforms

    Brian #3: 10 years of sustainable open source - Read the Docs

    Eric HolscherRead the Docs has been a company for 10 years“a team of 4 folks working full-time on Read the Docs.”readthedocs.org started in 2010readthedocs.com (for Business) started in 2014Sustainability model.org has a single non-tracking ad .com is a paid service for companiesThings that didn’t workdonations and other optional support - led to burnoutconsulting and services- took too much time away from core productgrant funding - nice, but one time thingLessonsYou don't get extra points for being bootstrapped. Compete by doing things you can do better due to niche and size.Keeping trust in the community is the most important thing.Contribution is easier for less complex parts of the code base.Beign open source means capturing a small percentage of the value you create.You have to be ok doing more with less.AlsoRtD is not just for Sphinx anymore. Their build system now supports any documentation tool.

    Michael #4: humanize

    by Hugo van Kemenade (Python 3.14 & 3.15 release manager & core developer)Not too many variations, but very handy if you need it.NumbersAssociated Press style (“seven” and “10”)Clamp (under 1.0 million)Fractional (1/3)Int Word (1.2 Billion)Metric (1.5 kV)Ordinal (112th)scientificTimeFile size

    Extras

    Brian:

    Test & Code is now again Test & CodeThe two part series on Python imports that started in June is finally complete with episode 222.Transcripts are being added to old episodes gradually starting from most recent Back to ep 203 as of today. AI transcription, so there’s things like .pie, .pi, and dot pie where it should be .py

    Michael:

    Final final call for Coding in a Castle event with MichaeliStats MenuAnaconda Code Runner by Ruud van der Ham: With Anaconda Coide we can -at last- run that code locally and import (most) Python modules.But if you want to run a significant amount of code, you have to put that in a cell or publish it to PyPI or a wheel and import it.That's why I have developed a general-purpose runner function that runs arbitrary code located on an Excel sheet with AnacondaCode.

    Joke: When beginners learn a new programming language...

  • Topics covered in this episode:
    Why I Still Use Python Virtual Environments in DockerPython Developer Survey ResultsAnaconda Code add-in for Microsoft ExcelDisabling Scheduled Dependency UpdatesExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through

    Our courses at Talk Python TrainingHello, pytest! CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected]: @[email protected]: @[email protected]

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.

    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 our friends of the show list, we'll never share it.

    Michael #1: Why I Still Use Python Virtual Environments in Docker

    by Hynek SchlawackI was going to cover Production-ready Docker Containers with uv but decided to take this diversion instead.Spend a lot of time thinking about the secondary effects of what you do.venvs are well known and well documented. Let’s use them.

    Brian #2: Python Developer Survey Results

    “
 official Python Developers Survey, conducted as a collaborative effort between the Python Software Foundation and JetBrains.”Python w/ Rust rising, but still only 7%““The drop in HTML/CSS/JS might show that data science is increasing its share of Python.” - Paul Everitt37% contribute to open source. Awesome.Favorite Resources: PodcastsLots of familiar faces there. Awesome. Perhaps I shouldn’t have decided to move “Python Test” back to Test & CodeUsage“Data analysis” down, but I think that’s because “data engineering” is added.Data, Web dev, ML, devops, academic, Testing is down 23%Python VersionsStill some 2 out thereMost folks on 3.10-3.12Install from: mostly python.orgFrameworksweb: Flask, Django, Requests, FastAPI 
testing: pytest, unittest, mock, doctest, tox, hypothesis, nose (2% might be the Python 2 people)Data science77% use pandas, 72% NumPyOS: Windows still at 55% Packaging: venv up to 55%I imaging uv will be on the list next yearrequirements.txt 63%, pyproject.toml 32%virtual env in containers? 47% say no

    Michael #3: Anaconda Code add-in for Microsoft Excel

    Run their Python-powered projects in Excel locally with the Anaconda Code add-inPowered by PyScript, an Anaconda supported open source project that runs Python locally without install and setupFeaturesCells Run IndependentlyRange to Multiple Typesinit.py file is static and cannot be edited, with Anaconda Code, users have the ability to access and edit imports and definitions, allowing you to write top-level functions and classes and reuse them wherever you need. A Customizable Environment

    Brian #4: Disabling Scheduled Dependency Updates

    David LordInteresting discussion of as they happen or batching of upsates to dependenciesdependencies come inrequirements filesGH Actions in CI workflowspre-commit hooksDavid was seeing 60 PRs per month when set up on monthly updates (3 ecosystems * 20 projects)new tool for updating GH actions: gha-update, allows for local updating of GH dependenciesNew processRun pip-compile, gha-update, and pre-commit locally.Update a project’s dependencies when actively working on the project, not just whenever a dependency updates.Note that this works fine for dev dependencies, less so for security updates from run time dependencies. But for libraries, runtime dependencies are usually not pinned.

    Extras

    Brian:

    Test & Code coming back this week

    Michael:

    Code in a Castle eventPython Bytes badge spottingGuido’s post removed for moderation

    Joke: C will watch in silence

  • Episodi mancanti?

    Fai clic qui per aggiornare il feed.

  • Topics covered in this episode:
    Open Source Mythsuv 0.3.0 and all the excitementTop pytest PluginsA comparison of hosts / providers for Python serverless functions (aka Faas)ExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python Trainingpytest courses and community at PythonTest.comPatreon Supporters

    Connect with the hosts

    Michael: @[email protected]: @[email protected]: @[email protected]

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.

    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 our friends of the show list, we'll never share it.

    Brian #1: Open Source Myths

    Josh BressersMastodon post kicking off a list of open source mythsFeedback and additional myths compiled to a docSome favoritesAll open source developers live in NebraskaIt’s all run by hippiesEverything is being rewritten in rustFeatures are plannedIf the source code is available, it’s open sourceA project with no commits for 12 months is abandonedMany eyes make all bugs shallowOpen source has worse UXOpen source has better UXOpen source makes you rich

    Michael #2: uv 0.3.0 and all the excitement

    Thanks to Skyler Kasko and John Hagen for the emails.Additional write up by Simon WillisonAdditional write up by Armin RonacherEnd-to-end project management: uv run, uv lock, and uv syncTool management: uv tool install and uv tool run (aliased to uvx)Python installation: uv python installScript execution: uv can now manage hermetic, single-file Python scripts with inline dependency metadata based on PEP 723.

    Brian #3: Top pytest Plugins

    Inspired by (and assisted by) Hugo’s Top PyPI PackagesWrite up for Finding the top pytest pluginsBTW, pytest-check has made it to 25.Same day, Jeff Triplett throws my code into Claude 3.5 Sonnet and refactors itThanks Jeff Triplett & Hugo for answering how to add Summary and other info

    Michael #4: A comparison of hosts / providers for Python serverless functions (aka Faas)

    Nice feature matrix of all the options, frameworks, costs, and moreThe WASM ones look particularly interesting to me.

    Extras

    Brian:

    When is the next live episode of Python Bytes? - via arewemeetingyet.comThanks to Hugo van KemenadeSome more cool projects by HugoPython LogosPyPI Downloads by Python version for various Python tools, in pretty colorsPython Core Developers over time

    Michael:

    Code in a Castle Course event - just a couple of weeks leftLadybird: A truly independent browser“I'm also interested in your video recording setup, would be nice to have that in the extras too :D”OBS StudioElgato StreamdeckElgato Key lightDaVinci Resolve

    Joke: DevOps Support Group

    via Blaise

    Hi, my name is BobGroup: Hi BobI's been 42 days since I last ssh'd into production.Group: ApplauseBut only 4 days since I accidentally took down the websiteSomeone in back: Oh Bob

  • Topics covered in this episode:
    pyawaitableAnnotated area charts with plotnineDeltaDBPyCon US 2024 Recap + Videos are upExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected]: @[email protected]: @[email protected]

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 10am PT. Older video versions available there too.

    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 our friends of the show list, we'll never share it.

    Michael #1: pyawaitable

    CPython API for asynchronous functions.by Peter BiermaIt was originally designed to be directly part of CPython - you can read the scrapped PEP about it. Since this library only uses the public ABI, it's better fit outside of CPython, as a library.

    Brian #2: Annotated area charts with plotnine

    Nicola RennieThis is a marvelous, very professional looking plot, and a tutorial for how to achieve it.Uses plotline, which is “.. an implementation of a grammar of graphics in Python based on ggplot2”I actually didn’t know the gg in ggplot came from “grammar of graphics”. TIL

    Michael #3: DeltaDB

    A lightweight, comprehensive solution for managing delta tables built on polars and deltalake.Deltalake: Delta Lake is an open-source storage format that runs on top of existing data lakes. Polars: Dataframes powered by a multithreaded, vectorized query engine, written in Rust (aka fluent, rust-based pandas)See the docs.

    Brian #4: PyCon US 2024 Recap + Videos are up

    95 countries attendedtotal attendance of 2,9912,551 in person440 remoteVideos available PyConUS I recommend Playlist → 2024 → view full playlist, as it’s easier to see the talk titles.I’ve got Paul Gannsle’s pytest for unittesters and Amitosh Swain’s Testing Data Pipelines queued up

    Extras

    Brian:

    Hello, pytest! course available as of last Friday.Now the fastest way to get started using pytest. 16 lessons (really 12 + intro, outro, code download, pytest flag cheat sheet)The whole shebang is about 90 min. (faster if you bump up the video speed. :)

    Michael:

    Cutting back on digital distractions, trying Dumb Phone for iPhone.See screenshotCode in a Castle Event

    Joke: The Tao of Programming: 4.3

    A master was explaining the nature of Tao of to one of his novices, "The Tao is embodied in all software -- regardless of how insignificant," said the master.

    "Is the Tao in a hand-held calculator?" asked the novice.

    "It is," came the reply.

    "Is the Tao in a video game?" continued the novice.

    "It is even in a video game," said the master.

    "And is the Tao in the DOS for a personal computer?"

    The master coughed and shifted his position slightly. "The lesson is over for today," he said.

  • Topics covered in this episode:
    uv venv --python & uv pythonPython 3.12.5 releasedCompile and use dependencies for multiple Python versions in ToxCatalog of Dark PatternsExtrasJokeWatch on YouTube

    About the show

    Sponsored by ScoutAPM: pythonbytes.fm/scout

    Connect with the hosts

    Michael: @[email protected]: @[email protected]: @[email protected]

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 10am PT. Older video versions available there too.

    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 our friends of the show list, we'll never share it.

    Brian #1: uv venv --python & uv python

    I was reading this article Python Packaging is Great Now: uv is all you needIt’s a little too “look, a silver bullet” for me, but it did point out some cool uv stuff I didn’t know about.uv venv venv --python 3.12 creates a virtual environment with Python 3.12, even if you didn’t have 3.12 installed on your system already.If it doesn’t work, try adding --python-preference manageduv python list shows all the python versions on your computerThere’s quite a few “experimental features”run Run a command or script (experimental)init Create a new project (experimental)add Add dependencies to the project (experimental)remove Remove dependencies from the project (experimental)sync Update the project's environment (experimental)lock Update the project's lockfile (experimental)tree Display the project's dependency tree (experimental)tool Run and manage tools provided by Python packages (experimental)python Manage Python versions and installations (experimental)uv add --dev pytest will add pytest to your dev dependencies.uv tree rocksuv might not have “solved packaging” (or maybe it might have)but it sure is fun to watch the experimentation of different workflows.

    Michael #2: Python 3.12.5 released

    Lots of changes, see the release notes

    Brian #3: Compile and use dependencies for multiple Python versions in Tox

    Viktor RimarkCool idea to use the {envname}, which specifies the tox environment, in the name of a requirements-dev.txt file name.Then add a requirements tox target to generate pip-compile-ed files.Now I gotta try doing all of this with uv lockThen we need everyone to mod their tools to comply with PEP 571, when/if it’s adopted (covered it last week)

    Michael #4: Catalog of Dark Patterns

    IncludingBait and SwitchConfirm ShamingDisguised AdsRoach MotelFake Scarcity


    Extras

    Brian:

    Recording of Hello, pytest! is done. Editing now. On track for the 19th (or before).

    Michael:

    Django 5.1 releasedPython 3.13.0 release candidate 1 released

    Joke:

    clownstrikeARS Technica article on DMCA for ClownStrike
  • Topics covered in this episode:
    py-free-threading.github.ioPython’s Supportive and Welcoming Environment is Tightly Coupled to Its ProgressStatus pages for sites!PEP 751 – A file format to list Python dependencies for installation reproducibilityExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected]: @[email protected]: @[email protected]

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 10am PT. Older video versions available there too.

    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 our friends of the show list, we'll never share it.

    Michael #1: py-free-threading.github.io

    Track the status of compatibility for free-threaded Python See the Compatibility status tracking page for what you can useLots of resources for getting your package tested and available for pythont

    Brian #2: Python’s Supportive and Welcoming Environment is Tightly Coupled to Its Progress

    “Python is as popular as it is today because we have gone above and beyond to make this a welcoming community. Being a friendly and supportive community is part of how we are perceived by the wider world and is integral to the wide popularity of Python. We won a “Wonderfully Welcoming Award” last year at GitHub Universe. Over and over again, the tech press refers to Python as a supportive community.”Some communication recently, with the recent bylaws change, didn’t live up to our promise to be welcomingPlease read the article for more details.Another quote: “We have a moral imperative – as one of the very best places to bring new people into tech and into open source – to keep being good at welcoming new people. If we do not rise and continue to rise every day to this task, then we are not fulfilling our own mission, “to support and facilitate the growth of a diverse and international community of Python programmers.” Technical skills are a game-changer for the people who acquire them and joining a vast global network of people with similar interests opens many doors. Behavior that contributes to a hostile environment around Python or throws up barriers and obstacles to those who would join the Python community must be addressed because it endangers what we have built here.”

    Michael #3: Status pages for sites!

    Based on Uptime Kuma I covered last weekPython Bytes statusTalk Python status

    Brian #4: PEP 751 – A file format to list Python dependencies for installation reproducibility

    Brett CannonMotivationCurrently, no standard exists to:Specify what top-level dependencies should be installed into a Python environment.Create an immutable record, such as a lock file, of which dependencies were installed.Considering there are at least five well-known solutions to this problem in the community (pip freeze, pip-tools, uv, Poetry, and PDM), there seems to be an appetite for lock files in general.RationaleThe format is designed so that a locker which produces the lock file and an installer which consumes the lock file can be separate tools. 
The file format is designed to be human-readable. 
Finally, the format is designed so that viewing a diff of the file is easy by centralizing relevant details.The file format is also designed to not require a resolver at install time. 


    Extras

    Brian:

    Hello, pytest! course is going well, and is purchasable as in pre-release mode.Planning on Aug 19 (or before) deadline.Not sure what the final price will be, but I’m starting with $10. I want people to want to watch it even just so see if they want to recommend to co-workers so the people around them can ramp up on pytest quickly.

    Michael:

    Mypy 1.11 ReleasedFastHTML (more next week)Coming up on the final chance to be part of the Code in a Castle event.

    Joke: Open source OpenAI?

  • Topics covered in this episode:
    Python is easy nowTrying out free-threaded Python on macOSModule itertools overviewuptime-kumaExtrasJokeWatch on YouTube

    About the show

    Sponsored by ScoutAPM: pythonbytes.fm/scout

    Connect with the hosts

    Michael: @[email protected]: @[email protected]: @[email protected]

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 10am PT. Older video versions available there too.

    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 our friends of the show list, we'll never share it.

    Brian #1: Python is easy now

    or Postmodern Pythonor Beyond HypermodernChris ArdeneMostly a cool review of using rye for setuplintingtypingtestingdocumentationCI/CDAlso a nice discussion of how to deal with a Monorepo for Python projects

    Michael #2: Trying out free-threaded Python on macOS

    via pycodersHow to install free threaded Python the easy wayTesting the CPU bound work speed ups for FT Python

    Brian #3: Module itertools overview

    Rodrigo20 tools that every Python developer should be aware of.In 5 categoriesReshapingFilteringCombinatorialInfiniteIterators that complement other toolsThings I forgot aboutchainpairwisezip_longesttee

    Michael #4: uptime-kuma

    A fancy self-hosted monitoring toolFeaturesMonitoring uptime for HTTP(s) / TCP / HTTP(s) Keyword / HTTP(s) Json Query / Ping / DNS Record / Push / Steam Game Server / Docker ContainersFancy, Reactive, Fast UI/UXNotifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and 90+ notification services, click here for the full list20-second intervalsMulti LanguagesMultiple status pagesMap status pages to specific domainsPing chartCertificate infoProxy support2FA support

    Extras

    Brian:

    Still working on a new pytest course. Hoping to get it released soon-ish.

    Michael:

    Open source Switzerland spyoungtech/FreeSimpleGUI — actively maintained fork of the last release of PySimpleGUI

    Joke: Java vs. JavaScript

  • Topics covered in this episode:
    Marimo: “Future of Notebooks”pytest 8.3.0 & 8.3.1 are outPython Language Summit 2024bash-dungeonExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected]: @[email protected]: @[email protected]

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 10am PT. Older video versions available there too.

    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 our friends of the show list, we'll never share it.

    Michael #1: Marimo: “Future of Notebooks”

    via Matt WilkieAn open-source reactive notebook for PythonRun one cell and marimo reacts by automatically running affected cells, eliminating the error-prone chore of managing notebook state.Marimo's reactive UI elements, like dataframe GUIs and plots, make working with data feel refreshingly fast, futuristic, and intuitive.Rapidly experiment with code and modelsBind UI elements to Python valuesPick-up-and-play design, with depth for power usersSee the FAQ

    Brian #2: pytest 8.3.0 & 8.3.1 are out

    Real excited to get --xfail-tb flag addedThis detaches xfail tracebacks from -rx/-ra (which was how it was pre-8.0)Keyword matching for marker expressions, that’s fun.pytest -v -m "device(serial='123')"--no-fold-skipped allows for explit reporting of names of skipped testsPlus many more improvements, bug fixes, and doc improvements

    Michael #3: Python Language Summit 2024

    Should Python adopt Calendar Versioning?: talk by Hugo van KemenadePython's security model after the xz-utils backdoor: talk by Pablo Galindo SalgadoNative Interface and Limited C API: talks by Petr Viktorin and Victor StinnerFree-threading ecosystems: talk by Daniele ParmeggianiPython on Mobile: talk by Malcolm SmithPyREPL -- New default REPL written in Python: talk by Pablo Galindo Salgado, Ɓukasz Langa, and Lysandros NikolaouShould we make pdb better?: talk by Tian GaoLimiting yield in async generators: talk by Zac Hatfield-DoddsAnnotations as Transforms: talk by Jason R. CoombsLightning Talks, featuring talks by Petr Viktorin, David Hewitt, Emily Morehouse, Ɓukasz Langa, Pablo Galindo Salgado, and Yury Selivanov

    Brian #4: bash-dungeon

    “This game is intended to teach new users how to use their shell in a fun and interactive way.”Just clone the repo and start exploring with cd, ls, and cat.First movescd bash-dungeonlscd Enterlscat parchmentA fun way to learn some commands you might need and/or might have forgotten about.

    Extras

    Brian:

    Python 3.12.0b4, final beta, is outIf hanging out on discuss.python.org, please checkout Community GuidelinesAnd if it’s still not clear why we need these, check outInclusive communications expectations in Python spacesGoogle Chrome news

    Michael:

    PySimpleGUI goes commercial with obfuscated “source open”?Still have seats for Code in a Castle eventReactive Dashboards with Shiny for Python free course

    Joke:

    40 Million in in Series A Funding - may be a lot of reading, but I found it funnyThanks to VM Brasseur for sharing this one.Also a few from pyjokes 0.7.2 (first new version since 2019)If at first you don't succeed, call it version 1.0.A product manager walks into a bar, asks for drink. Bartender says no, but will consider adding later.Triumphantly, Beth removed Python 2.7 from her server in 2030. 'Finally!' she said with glee, only to see the announcement for Python 4.4.1Although, if CalVer, PEP 2026, happens, that’ll just be Python 3.30.0.
  • Topics covered in this episode:
    2024 PSF Board Election & Proposed Bylaw Change ResultsSATYRN: A modern Jupyter client for MacIncident Report: Leaked GitHub Personal Access TokenExtra extra extraExtrasJokeWatch on YouTube

    About the show

    Sponsored by Code Comments, an original podcast from RedHat: pythonbytes.fm/code-comments

    Connect with the hosts

    Michael: @[email protected]: @[email protected]: @[email protected]

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 10am PT. Older video versions available there too.

    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 our friends of the show list, we'll never share it.

    Brian #1: 2024 PSF Board Election & Proposed Bylaw Change Results

    New board membersTania AllardKwonHan BaeCristiĂĄn Maureira-FredesCongrats to new board membersIf you want to consider becoming a board member, there are 4 seats up for vote next year.All 3 bylaw changes passed, by a wide margin.Details of changesChange 1: Merging Contributing and Managing member classesChange 2: Simplifying the voter affirmation process by treating past voting activity as intent to continue votingChange 3: Allow for removal of Fellows by a Board vote in response to Code of Conduct violations, removing the need for a vote of the membership

    Michael #2: SATYRN: A modern Jupyter client for Mac

    A Jupyter client app for macOSComes with a command paletteLLM assistance (local or cloud?)Built in Black formatterCurrently in alphaBusiness model unknown

    Brian #3: Incident Report: Leaked GitHub Personal Access Token

    Suggested by Galen SwintSee also JFrog blog: Binary secret scanning helped us prevent (what might have been) the worst supply chain attack you can imagineA GitHub access token found it’s way into a .pyc file, then into a docker image.JFrog found it through some regular scans.JFrog notified PYPI security.Token was destroyed within 17 minutes. (nice turnaround)Followup scan revealed that no harm was done.Takaways (from Ee Durbin): Set aggressive expiration dates for API tokens (If you need them at all)Treat .pyc files as if they were source codePerform builds on automated systems from clean source only.

    Michael #4: Extra extra extra

    Python 3.13.0 beta 3 releasedIce got a lot betterI Will Piledrive You If You Say AI Again | Prime Reacts VideoFollow up actions for polyfill supply chain attackDeveloper Ecosystem Survey 2024Code in a Castle still has seats open

    Extras

    Brian:

    A new pytest course in the worksQuick course focusing oncore pytest features + some strategy and Design for Testability conceptsIdeaeveryone on the team (including managers) can take the new course.1-2 people on a team take “The Complete pytest Course” to become the teams local pytest experts.Python People is on an indefinite hold Python Test → back to Test & Code (probably)I’m planning a series (maybe a season) on TDD which will be language agnostic.Plus I still have tons of Test & Code stickers and no Python Test stickers.New episodes planned for August

    Joke: I need my intellisense (autocomplete)

  • Topics covered in this episode:
    Vendorize packages from PyPIA Guide to Python's Weak References Using weakref ModuleMaking Time SpeakHow Should You Test Your Machine Learning Project? A Beginner’s GuideExtrasJokeWatch on YouTube

    About the show

    Sponsored by Code Comments, an original podcast from RedHat: pythonbytes.fm/code-comments

    Connect with the hosts

    Michael: @[email protected]: @[email protected]: @[email protected]

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 10am PT. Older video versions available there too.

    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 our friends of the show list, we'll never share it.

    Michael #1: Vendorize packages from PyPI

    Allows pure-Python dependencies to be vendorized: that is, the Python source of the dependency is copied into your own package.Best used for small, pure-Python dependencies

    Brian #2: A Guide to Python's Weak References Using weakref Module

    Martin HeinzVery cool discussion of weakrefQuick garbage collection intro, and how references and weak references are used.Using weak references to build data structures.Example of two kinds of treesImplementing the Observer patternHow logging and OrderedDict use weak references

    Michael #3: Making Time Speak

    by Prayson, a former guest and friend of the showTranslating time into human-friendly spoken expressionsExample: clock("11:15") # 'quarter past eleven' FeaturesConvert time into spoken expressions in various languages.Easy-to-use API with a simple and intuitive design.Pure Python implementation with no external dependencies.Extensible architecture for adding support for additional languages using the plugin design pattern.

    Brian #4: How Should You Test Your Machine Learning Project? A Beginner’s Guide

    François PorcherUsing pytest and pytest-cov for testing machine learning projectsLots of pieces can and should be tested just as normal functions.Example of testing a clean_text(text: str) -> str functionTest larger chunks with canned input and expected output.Example test_tokenize_text()Using fixtures for larger reusable components in testingExample fixture: bert_tokenizer() with pretrained dataChecking coverage

    Extras

    Michael:

    Twilio Authy HackGoogle Authenticator is the only option? Really?Bitwarden to the rescueRequires (?) an update to their app, whose release notes (v26.1.0) only say “Bug fixes”Introducing Docs in Proton DriveThis is what I called on Mozilla to do in “Unsolicited Advice for Mozilla and Firefox” But Proton got there firstEarly bird ending for Code in a Castle course

    Joke: I Lied

  • Topics covered in this episode:
    Joining Strings in Python: A "Huh" Moment10 hard-to-swallow truths they won't tell you about software engineer jobMy thoughts on Python in ExcelExtra, extra, extraExtrasJokeWatch on YouTube

    About the show

    Sponsored by ScoutAPM: pythonbytes.fm/scout

    Connect with the hosts

    Michael: @[email protected]: @[email protected]: @[email protected]

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 10am PT. Older video versions available there too.

    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 our friends of the show list, we'll never share it.

    Brian #1: Joining Strings in Python: A "Huh" Moment

    Veronica Berglyd Olsen

    Standard solution to “read lines from a file, do some filtering, create a multiline string”:

    f = open("input_file.txt")filtered_text = "\n".join(x for x in f if not x.startswith("#"))

    This uses a generator, file reading, and passes the generator to join.

    Another approach is to add brackets and pass that generator to a list comprehension:

    f = open("input_file.txt")filtered_text = "\n".join([x for x in f if not x.startswith("#")])

    At first glance, this seems to just be extra typing, but it’s actually faster by 16% on CPython due to the implementation of .join() doing 2 passes on input if passed a generator.

    From Trey Hunner: “I do know that it’s not possible to do 2 passes over a generator (since it’d be exhausted after the first pass) so from my understanding, the generator version requires an extra step of storing all the items in a list first.”

    Michael #2: 10 hard-to-swallow truths they won't tell you about software engineer job

    College will not prepare you for the jobYou will rarely get greenfield projectsNobody gives a BLANK about your clean codeYou will sometimes work with incompetent peopleGet used to being in meetings for hoursThey will ask you for estimates a lot of timesBugs will be your arch-enemy for lifeUncertainty will be your toxic friendIt will be almost impossible to disconnect from your jobYou will profit more from good soft skills than from good technical skills

    Brian #3: My thoughts on Python in Excel

    Felix ZumsteinInteresting take on one person’s experience with trying Python in Excel.“We wanted an alternative to VBA, but got an alternative to the Excel formula language”“Python runs in the cloud on Azure Container Instances and not inside Excel.”“DataFrames are great, but so are NumPy arrays and lists.”
 lots of other interesting takaways.

    Michael #4: Extra, extra, extra

    Code in a castle - Michael’s Python Zero to Hero course in TuscanyPolyfill.io JavaScript supply chain attack impacts over 100K sitesNow required reading: Reasons to avoid Javascript CDNsMac users served info-stealer malware through Google adsHTMX for the win!ssh to run remote commands> ssh user@server "command_to_run --arg1 --arg2"

    Extras

    Brian:

    A fun reaction to AI - I will not be showing the link on our live stream, due to colorful language.

    Michael:

    Coding in a Castle Developer Education EventPolyfill.io JavaScript supply chain attack impacts over 100K sitesSee Reasons to avoid Javascript CDNs

    Joke: HTML Hacker

  • Topics covered in this episode:
    Solara UI FrameworkCoverage at a crossroads“Virtual” methods in Python classesExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/389

  • Topics covered in this episode:
    PSF Elections coming upCloud engineer gets 2 years for wiping ex-employer’s code reposPython: Import by string with pkgutil.resolve_name()DuckDB goes 1.0ExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/388

  • Topics covered in this episode:
    DataheraldPython's many command-line utilitiesDistroless Pythonfunctools.cache, cachetools, and cacheboxExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/387

  • Topics covered in this episode:
    NumPy 2.0 release date is June 16Uvicorn adds multiprocess workerspixiJupyterLab 4.2 and Notebook 7.2 are availableExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/386

  • Topics covered in this episode:
    PostgresRESTHow Python Asyncio Works: Recreating it from ScratchBendThe Smartest Way to Learn Python Regular ExpressionsExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/385

  • Topics covered in this episode:
    Git: Force push safely with --force-with-lease and --force-if-includesThoughts from PyCon 2024Being friendly: Strategies for friendly fork managementtachExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/384

  • Topics covered in this episode:
    I asked 100 devs why they aren’t shipping faster. Here’s what I learnedPython 3.13.0 beta 1 releasedA theme editor for JupyterLabrich-argparseExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/383

  • Topics covered in this episode:
    act: Run your GitHub Actions locally! portrAnnotating args and kwargs in Pythongithub badgesExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/382

  • Topics covered in this episode:
    Announcing py2wasm: A Python to Wasm compilerExploring Python packages with Oven and PyPI BrowserPyCharm Local LLMGoogle shedding Python devs (at least in the US).ExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/381