Python Bytes

Written by: Michael Kennedy and Brian Okken
  • Summary

  • Python Bytes is a weekly podcast hosted by Michael Kennedy and Brian Okken. The show is a short discussion on the headlines and noteworthy news in the Python, developer, and data science space.
    Copyright 2016-2025
    Show more Show less
Episodes
  • #421 22 years old
    Feb 24 2025
    Topics covered in this episode: httpdbgPyPI Now Supports iOS and Android Wheels for Mobile Python DevelopmentArcade Game Platform goes 3.0PEP 765 – Disallow return/break/continue that exit a finally blockExtrasJokeWatch 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: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) 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: httpdbg A tool for Python developers to easily debug the HTTP(S) client requests in a Python program.To use it, execute your program using the pyhttpdbg command instead of python and that's it. Open a browser to http://localhost:4909 to view the requests Brian #2: PyPI Now Supports iOS and Android Wheels for Mobile Python Development Sara Gooding“the Python Packaging Index (PyPI) has officially begun accepting and distributing pre-compiled binary packages, known as "wheels," for both iOS and Android platforms. “Next up, “cibuildwheel Updates Are in Progress to Simplify iOS and Android Wheel Creation” Michael #3: Arcade Game Platform goes 3.0 via Maic SiemeringThis is our first major release since 2022.It keeps the beginner-friendly API while adding power and efficiency.Arcade now supports both standard OpenGL and ShaderToy (www.shadertoy.com) a-shaders through a compatibility layer.Since 3.0 is a major release, the full list of changes is over ingithub.com/pythonarcade/arcade/blob/development/CHANGELOG.md Brian #4: PEP 765 – Disallow return/break/continue that exit a finally block Accepted for Python 3.14I wouldn’t have thought to do this anyway, but it’s weird, so don’t.Will become a SyntaxWarning catchable by running with -We Extras Brian: Correction: Niki Tonsky was originator of “Pride Versioning”. Thanks NikitaCorrection: Scheme is actually awesome. Brian is just a curmudgeonAlso: pytest-rerunfailures is good for exposing flaky testsAnd apparently me being wrong was a great to get at least one person to blog more. Cheers Filip Łajszczak Michael: Tea pot follow up While you're right that some software actually had this implemented, Python does not. It's not an officially accepted HTTP status code, it was proposed in a 'joke' RFC. I guess Python - even though its name comes from the funny TV series Monty Python - is not so funny. httpx, your (or at least -my-) favorite HTTP module for python, does have the I_AM_A_TEAPOT constant.By the way, there are some HTTP status codes that changed their names in RFC 9110, for instance, http.HTTPStatus.UNPROCESSABLE_CONTENT (422, previously UNPROCESSABLE_ENTITY)Pride follow up fosstodon.org/@kytta/114034442981727301Time to upgrade your mini? Joke: How old is she?
    Show more Show less
    23 mins
  • #420 90% Done in 50% of the Available Time
    Feb 17 2025
    Topics covered in this episode: PEP 772 – Packaging governance processOfficial Django MongoDB Backend Now Available in Public PreviewDeveloper PhilosophyPython 3.13.2 releasedExtrasJokeWatch 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: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) 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: PEP 772 – Packaging governance process draft, created 21-Jan, by Barry Warsaw, Deb Nicholson, Pradyun Gedam“As Python packaging has matured, several interrelated problems with the current way of managing the technical development, decision making and processes have become apparent.”“This PEP proposes a Python Packaging Council with broad authority over packaging standards, tools, and implementations. Like the Python Steering Council, the Packaging Council seeks to exercise this authority as rarely as possible; instead, they use this power to establish standard processes.”PEP discusses PyPA, Packaging-WG, Interoperability Standards, Python Steering Council, and Expectations of an elected Packaging CouncilA specification with Composition: 5 peopleMandate, Responsibilities, Delegations, Process, Terms, etc. Michael #2: Official Django MongoDB Backend Now Available in Public Preview Over the last few years, Django developers have increasingly used MongoDB, presenting an opportunity for an official MongoDB-built Python package to make integrating both technologies as painless as possible.Features The ability to use Django models with confidence. Developers can use Django models to represent MongoDB documents, with support for Django forms, validations, and authentication.Django admin support. The package allows users to fire up the Django admin page as they normally would, with full support for migrations and database schema history.Native connecting from settings.py. Just as with any other database provider, developers can customize the database engine in settings.py to get MongoDB up and running.MongoDB-specific querying optimizations. Field lookups have been replaced with aggregation calls (aggregation stages and aggregate operators), JOIN operations are represented through $lookup, and it’s possible to build indexes right from Python.Limited advanced functionality. While still in development, the package already has support for time series, projections, and XOR operations.Aggregation pipeline support. Raw querying allows aggregation pipeline operators. Since aggregation is a superset of what traditional MongoDB Query API methods provide, it gives developers more functionality. Brian #3: Developer Philosophy by qntmIntended as “advice for junior developers about personal dev philosophy”, I think these are just great tips to keep in mind.The items Avoid, at all costs, arriving at a scenario where the ground-up rewrite starts to look attractive This is less about “don’t do rewrites”, but about noticing the warning signs ahead of time.Aim to be 90% done in 50% of the available time Great quote: “The first 90% of the job takes 90% of the time. The last 10% of the job takes the other 90% of the time.”Automate good practicesThink about pathological data “Nobody cares about the golden path. Edge cases are our entire job.”Brian’s note: But also think about the happy path. Documenting and testing what you think of as the happy path is a testing start and helps others understand your idea of how things are supposed to work.There’s usually a simpler way to write itWrite code to be testableIt is insufficient for code to be provably correct; it should be obviously, visibly, trivially correct Brian’s note: Even if it’s obviously, visibly, trivially correct, it will still break. So test it anyway. Michael #4: Python 3.13.2 released Python 3.13’s second maintenance release. About 250 changes went into this updateAlso Python 3.12.9, Python 3.12’s ninth maintenance release already. Just 180 changes for 3.12, but it’s still worth upgrading.For us, it’s simply rebuilding our Docker base (i.e. —no-cache) with these lines: RUN curl -LsSf https://astral.sh/uv/install.sh | sh RUN --mount=type=cache,target=/root/.cache uv venv --python 3.13 /venv Extras Brian: Still thinking about pytest plugins a lot.The top pytest plugin list Has been updated for FebIs starting to include things without “pytest” in the name, like Hypothesis and Syrupy. Eventually I’ll have to add “looking at trove classifiers” as part of the search...
    Show more Show less
    28 mins
  • #419 Is your back end popular?
    Feb 4 2025
    Topics covered in this episode: content-types package for better MIME types/Content-TypeWagtail 6.4Build It YourselfBuild backend popularity over timeExtrasJokeWatch 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: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) 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: content-types package for better MIME types/Content-Type It started with this comment from Raf.mimetypes — Map filenames to MIME typesIt is oddly missing very common types and varies by platform, OS install and other factors (see this function).Search around and found python-magic. Seems great but ImportError: failed to find libmagic. Check your installation → brew install libmagicmagic.from_file("testdata/test.pdf") → FileNotFoundError: [Errno 2] No such file or directory: 'testdata/test.pdf'hmmSo I had to create my own. Introducing content-types A Python library to map file extensions to MIME types.Unlike other libraries, this one does not try to access the file or parse the bytes of the file or stream. It just looks at the extension.Better support than mimetypes builtin. Brian #2: Wagtail 6.4 Release notesLots of great updates, but I want to zoom in on background tasks.6.4 includes django-tasks which is an available implementation of DEP 0014: Background workers This proposal is accepted and this thread includes a great talk from DjangoCon Europe 2024Why is this cool? Even though django-tasks says it’s “under active development”, as long as you pin the version and test your behavior depending on this, it must be ready to use if wagtail is going for it. Don't you think? Michael #3: Build It Yourself from Armin Ronacher, sent in by Rafael WeingartnerAn excellent article pushing back on too many dependenciesMaybe the advice of always prefer code reuse isn’t that great after all?It’s much much easier to solve small little problems these days due to AI.Take Postmark as an example.“It's time to have a new perspective: we should give kudos to engineers who write a small function themselves instead of hooking in a transitive web of crates. We should be suspicious of big crate graphs. Celebrated are the minimal dependencies, the humble function that just quietly does the job, the code that doesn't need to be touched for years because it was done right once.” - Armin Brian #4: Build backend popularity over time Bastian VenthurThis is just for projects using pyproject.tomlApparently he did this last year as well, so we can see some trends.Results setuptools: ~50% (last year ~50%)poetry: ~30% (last year ~33%)hatchling: (percent not listed, but looks like 12-15%), (last year 10%)flit: ~5% (last year ~10%)other: (above flit now)Analysis: setuptools continues to grow in absolute numbers and maintain it’s percentage.poetry declininghatchling growingflit decliningBrian commentary This is not surprising to me. I generally use hatchling for more control, and setuptools for simple projects. I think we might end up with mostly setuptools and hatchling in a couple years. Extras Brian: Test & Code Archive is now all episodes on one page Old method was 30 episodes per pageFor something completely different NameGrapher - popularity of US namesNo wonder I don’t meet a lot of kids named BrianMichael is #16 (#1 in 1950s - 1990s)Brian is #317 (#8 in 1970s) Joke: The long path to rejection.
    Show more Show less
    30 mins

What listeners say about Python Bytes

Average Customer Ratings

Reviews - Please select the tabs below to change the source of reviews.