エピソード

  • #456 You're so wrong
    2025/11/03
    Topics covered in this episode: The PSF has withdrawn a $1.5 million proposal to US government grant programA Binary Serializer for Pydantic ModelsT-strings: Python's Fifth String Formatting Technique?CronboardExtrasJokeWatch 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: The PSF has withdrawn a $1.5 million proposal to US government grant program Related post from Simon WillisonARS Technica: Python plan to boost software security foiled by Trump admin’s anti-DEI rulesThe Register: Python Foundation goes ride or DEI, rejects government grant with strings attachedIn Jan 2025, the PSF submitted a proposal for a US NSF grant under the Safety, Security, and Privacy of Open Source Ecosystems program. After months of work by the PSF, the proposal was recommended for funding.If the PSF accepted it, however, they would need to agree to the some terms and conditions, including, affirming that the PSF doesn't support diversity. The restriction wouldn't just be around the security work, but around all activity of the PSF as a whole. And further, that any deemed violation would give the NSF the right to ask for the money back.That just won't work, as the PSF would have already spent the money.The PSF mission statement includes "The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers." The money would have obviously been very valuable, but the restrictions are just too unacceptable.The PSF withdrew the proposal. This couldn't have been an easy decision, that was a lot of money, but I think the PSF did the right thing. Michael #2: A Binary Serializer for Pydantic Models 7× Smaller Than JSONA compact binary serializer for Pydantic models that dramatically reduces RAM usage compared to JSON.The library is designed for high-load systems (e.g., Redis caching), where millions of models are stored in memory and every byte matters.It serializes Pydantic models into a minimal binary format and deserializes them back with zero extra metadata overhead.Target Audience: This project is intended for developers working with: high-load APIsin-memory caches (Redis, Memcached)message queuescost-sensitive environments where object size matters Brian #3: T-strings: Python's Fifth String Formatting Technique? Trey HunnerPython 3.14 has t-strings. How do they fit in with the rest of the string story?History percent-style (%) strings - been around for a very long timestring.Template - and t.substitute() - from Python 2.4, but I don’t think I’ve ever used thembracket variables and .format() - Since Python 2.6f-strings - Python 3.6 - Now I feel old. These still seem new to met-strings - Python 3.14, but a totally different beast. These don’t return strings.Trey then covers a problem with f-strings in that the substitution happens at definition time.t-strings have substitution happen later. this is essentially “lazy string interpolation”This still takes a bit to get your head around, but I appreciate Trey taking a whack at the explanation. Michael #4: Cronboard Cronboard is a terminal application that allows you to manage and schedule cronjobs on local and remote servers.With Cronboard, you can easily add, edit, and delete cronjobs, as well as view their status.✨ Features ✔️ Check cron jobs✔️ Create cron jobs with validation and human-readable feedback✔️ Pause and resume cron jobs✔️ Edit existing cron jobs✔️ Delete cron jobs✔️ View formatted last and next run times✔️ Accepts special expressions like @daily, @yearly, @monthly, etc.✔️ Connect to servers using SSH, using password or SSH keys✔️ Choose another user to manage cron jobs if you have the permissions to do so (sudo) Extras Brian: PEP 810: Explicit lazy imports, has been unanimously accepted by steering councilLean TDD book will be written in the open. TOC, some details, and a 10 page introduction are now available. Hoping for the first pass to be complete by the end of the year. I’d love feedback to help make it a great book, and keep it small-ish, on a very limited budget. Joke: You are so wrong!
    続きを読む 一部表示
    26 分
  • #455 Gilded Python and Beyond
    2025/10/27
    Topics covered in this episode: Cyclopts: A CLI library* The future of Python web services looks GIL-free** Free-threaded GC** Polite lazy imports for Python package maintainers*ExtrasJokeWatch 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: Cyclopts: A CLI library A CLI library that fixes 13 annoying issues in TyperMuch of Cyclopts was inspired by the excellent Typer library.Despite its popularity, Typer has some traits that I (and others) find less than ideal. Part of this stems from Typer's age, with its first release in late 2019, soon after Python 3.8's release. Because of this, most of its API was initially designed around assigning proxy default values to function parameters. This made the decorated command functions difficult to use outside of Typer. With the introduction of Annotated in python3.9, type-hints were able to be directly annotated, allowing for the removal of these proxy defaults.The 13: Argument vs OptionPositional or Keyword ArgumentsChoicesDefault CommandDocstring ParsingDecorator ParenthesesOptional ListsKeyword Multiple ValuesFlag NegationHelp DefaultsValidationUnion/Optional SupportAdding a Version FlagDocumentation Brian #2: The future of Python web services looks GIL-free Giovanni Barillari“Python 3.14 was released at the beginning of the month. This release was particularly interesting to me because of the improvements on the "free-threaded" variant of the interpreter. Specifically, the two major changes when compared to the free-threaded variant of Python 3.13 are: Free-threaded support now reached phase II, meaning it's no longer considered experimentalThe implementation is now completed, meaning that the workarounds introduced in Python 3.13 to make code sound without the GIL are now gone, and the free-threaded implementation now uses the adaptive interpreter as the GIL enabled variant. These facts, plus additional optimizations make the performance penalty now way better, moving from a 35% penalty to a 5-10% difference.”Lots of benchmark data, both ASGI and WSGILots of great thoughts in the “Final Thoughts” section, including “On asynchronous protocols like ASGI, despite the fact the concurrency model doesn't change that much – we shift from one event loop per process, to one event loop per thread – just the fact we no longer need to scale memory allocations just to use more CPU is a massive improvement. ”“… for everybody out there coding a web application in Python: simplifying the concurrency paradigms and the deployment process of such applications is a good thing.”“… to me the future of Python web services looks GIL-free.” Michael #3: Free-threaded GC The free-threaded build of Python uses a different garbage collector implementation than the default GIL-enabled build.The Default GC: In the standard CPython build, every object that supports garbage collection (like lists or dictionaries) is part of a per-interpreter, doubly-linked list. The list pointers are contained in a PyGC_Head structure.The Free-Threaded GC: Takes a different approach. It scraps the PyGC_Head structure and the linked list entirely. Instead, it allocates these objects from a special memory heap managed by the "mimalloc" library. This allows the GC to find and iterate over all collectible objects using mimalloc's data structures, without needing to link them together manually.The free-threaded GC does NOT support "generations”By marking all objects reachable from these known roots, we can identify a large set of objects that are definitely alive and exclude them from the more expensive cycle-finding part of the GC process.Overall speedup of the free-threaded GC collection is between 2 and 12 times faster than the 3.13 version. Brian #4: Polite lazy imports for Python package maintainers Will McGugan commented on a LI post by Bob Belderbos regarding lazy importing“I'm excited about this PEP. I wrote a lazy loading mechanism for Textual's widgets. Without it, the entire widget library would be imported even if you needed just one widget. Having this as a core language feature would make me very happy.” https://github.com/Textualize/textual/blob/main/src/textual/widgets/__init__.pyWell, I was excited about Will’s example for how to, essentially, allow users of your package to import only the part they need, when they need it.So...
    続きを読む 一部表示
    39 分
  • #454 It's some form of Elvish
    2025/10/20
    Topics covered in this episode: djrest2 - A small and simple REST library for Django based on class-based views.Github CLIcaniscrape - Know before you scrape. Analyze any website's anti-bot protections in seconds.🐴 GittyUpExtrasJokeWatch 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: djrest2 - A small and simple REST library for Django based on class-based views. Emma LevitBased on an interesting blog post Why, in 2025, do we still need a 3rd party app to write a REST API with Django?As opposed to using DRF or Django Ninja - Michael #2: Github CLI GitHub’s official command line toolFeatures Checking out a pull request locallyYou can clone any repository using OWNER/REPO syntax: gh repo clone cli/cliCreate a pull request interactively: gh pr createSee all at cli.github.com/manual/examples Brian #3: caniscrape - Know before you scrape. Analyze any website's anti-bot protections in seconds. reddit announcement and discussioncaniscrape checks a website for common anti-bot mechanisms and reports: A difficulty score (0–10)Which protections are active (e.g., Cloudflare, Akamai, hCaptcha, etc.)What tools you’ll likely need (headless browsers, proxies, CAPTCHA solvers, etc.)Whether using a scraping API might be better This helps you decide the right scraping approach before you waste time building a bot that keeps getting blocked. Michael #4: 🐴 GittyUp Never forget to pull again: Automatically discover and update all your Git repositories with one command.Built initially to solve this problemRebuilt and published last week as part of my upcoming Agentic AI Programming for Python course. Get notified this week at training.talkpython.fm/getnotifiedUpdate everything in a folder tree with gittyupReview changes, blockers, etc with gittyup --explain Extras Brian: Three times faster with lazy imports - Hugo van KemenadeInteresting discussion on Hugo’s post - on MastodonUse lazy module imports now - Graham DumpletonGraham’s post uses wrapt, a “module for decorators, wrappers and monkey patching”, to simulate lazy importsHelpful comment from Adam Johnson on Graham’s post to actually do the import during type checking using if TYPE_CHECKING: import ... Michael: uvloop is back!pypi+ listened. :) https://www.reddit.com/r/Python/comments/1o9dey5/i_just_released_pypipluscom_20_offlineready/Feedback from my “Show me your ls” post. Joke: Some form of Elvish
    続きを読む 一部表示
    29 分
  • #453 Python++
    2025/10/16
    Topics covered in this episode: * PyPI+** uv-ship - a CLI-tool for shipping with uv** How fast is 3.14?** air - a new web framework built with FastAPI, Starlette, and Pydantic.*ExtrasJokeWatch 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: PyPI+ Very nice search and exploration tool for PyPIMinor but annoying bug: content-types ≠ content_types on PyPI+ but they are in Python itself. Minimum Python version seems to be interpreted as max Python version.See dependency graphs and moreExamples content-typesjinja-partialsfastapi-chameleon Brian #2: uv-ship - a CLI-tool for shipping with uv “uv-ship is a lightweight companion to uv that removes the risky parts of cutting a release. It verifies the repo state, bumps your project metadata and optionally refreshes the changelog. It then commits, tags & pushes the result, while giving you the chance to review every step.” Michael #3: How fast is 3.14? by Miguel GrinbergA big focus on threaded vs. non-threaded PythonSome times its faster, other times, it’s slower Brian #4: air - a new web framework built with FastAPI, Starlette, and Pydantic. An very new project in Alpha stage by Daniel & Audrey Felderoy, the “Two Scoops of Django” people.Air Tags are an interesting thing.Also Why? is amazing “Don't use AIR”“Every release could break your code! If you have to ask why you should use it, it's probably not for you.”“If you want to use Air, you can. But we don't recommend it.”“It'll likely infect you, your family, and your codebase with an evil web framework mind virus, , …” Extras Brian: Python 3.15a1 is available uv python install 3.15 already worksPython lazy imports you can use today - one of two blog posts I threatened to write recentlyTesting against Python 3.14 - the other oneFree Threading has some trove classifiers Michael: Blog post about the book: Talk Python in Production book is out! In particular, the extras are interesting.AI Usage TUIShow me your lsHelium Browser is interesting. But also has Python as a big role. GitHub says Languages Python 97.4% 👀Shell 1.9%Other 0.7%Smallest Python release? 3.13.9 Joke: An unforgivable crime
    続きを読む 一部表示
    36 分
  • #452 pi py-day (or is it py pi-day?)
    2025/10/09
    Topics covered in this episode: * Python 3.14** Free-threaded Python Library Compatibility Checker** Claude Sonnet 4.5** Python 3.15 will get Explicit lazy imports*ExtrasJokeWatch on YouTube About the show Sponsored by DigitalOcean: pythonbytes.fm/digitalocean-gen-ai Use code DO4BYTES and get $200 in free credit 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: Python 3.14 Released on Oct 7What’s new in Python 3.14Just a few of the changes PEP 750: Template string literalsPEP 758: Allow except and except* expressions without bracketsImproved error messagesDefault interactive shell now highlights Python syntaxsupports auto-completionargparse better support for python -m modulehas a new suggest_on_error parameter for “maybe you meant …” supportpython -m calendar now highlights today’s datePlus so much more Michael #2: Free-threaded Python Library Compatibility Checker by Donghee NaApp checks compatibility of top PyPI libraries with CPython 3.13t and 3.14t, helping developers understand how the Python ecosystem adapts to upcoming Python versions.It’s still pretty red, let’s get in the game everyone! Michael #3: Claude Sonnet 4.5 Top programming model (even above Opus 4.1)Shows large improvements in reducing concerning behaviors like sycophancy, deception, power-seeking, and the tendency to encourage delusional thinkingAnthropic is releasing the Claude Agent SDK, the same infrastructure that powers Claude Code, making it available for developers to build their own agents, along with major upgrades including checkpoints, a VS Code extension, and new context editing featuresAnd Claude Sonnet 4.5 is available in PyCharm too. Brian #4: Python 3.15 will get Explicit lazy imports Discussion on discuss.python.orgThis PEP introduces syntax for lazy imports as an explicit language feature: lazy import json lazy from json import dumps BTW, lazy loading in fixtures is a super easy way to speed up test startup times. Extras Brian: Music video made in Python - from Patrick of the band “Friends in Real Life” source code: https://gitlab.com/low-capacity-music/r9-legends/ Michael: New article: Thanks AILots of updates for content-typesDramatically improved search on Python Bytes (example: https://pythonbytes.fm/search?q=wheel use the filter toggle to see top hits)Talk Python in Production is out and for sale Joke: You do estimates?
    続きを読む 一部表示
    41 分
  • #451 Databases are a Fad
    2025/09/29
    Topics covered in this episode: * PostgreSQL 18 Released** Testing is better than DSA (Data Structures and Algorithms)** Pyrefly in Cursor/PyCharm/VSCode/etc** Playwright & pytest techniques that bring me joy*ExtrasJokeWatch 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: PostgreSQL 18 Released PostgreSQL 18 is out (Sep 25, 2025) with a focus on faster text handling, async I/O, and easier upgrades.New async I/O subsystem speeds sequential scans, bitmap heap scans, and vacuum by issuing concurrent reads instead of blocking on each request.Major-version upgrades are smoother: pg_upgrade retains planner stats, adds parallel checks via -jobs, and supports faster cutovers with -swap.Smarter query performance lands with skip scans on multicolumn B-tree indexes, better OR optimization, incremental-sort merge joins, and parallel GIN index builds.Dev quality-of-life: virtual generated columns enabled by default, a uuidv7() generator for time-ordered IDs, and RETURNING can expose both OLD and NEW.Security gets an upgrade with native OAuth 2.0 authentication; MD5 password auth is deprecated and TLS controls expand.Text operations get a boost via the new PG_UNICODE_FAST collation, faster upper/lower, a casefold() helper, and clearer collation behavior for LIKE/FTS. Brian #2: Testing is better than DSA (Data Structures and Algorithms) Ned BatchelderIf you need to grind through DSA problems to get your first job, then of course, do that, but if you want to prepare yourself for a career, and also stand out in job interviews, learn how to write tests.Testing is a skill you’ll use constantly, will make you stand out in job interviews, and isn’t taught well in school (usually).Testing code well is not obvious. It’s a puzzle and a problem to solve.It gives you confidence and helps you write better code.Applies everywhere, at all levels.Notes from Brian Most devs suck at testing, so being good at it helps you stand out very quickly.Thinking about a system and how to test it often very quickly shines a spotlight on problem areas, parts with not enough specification, and fuzzy requirements. This is a good thing, and bringing up these topics helps you to become a super valuable team member.High level tests need to be understood by key engineers on a project. Even if tons of the code is AI generated. Even if many of the tests are, the people understanding the requirements and the high level tests are quite valuable. Michael #3: Pyrefly in Cursor/PyCharm/VSCode/etc Install the VSCode/Cursor extension or PyCharm plugin, see https://pyrefly.org/en/docs/IDE/Brian spoke about Pyrefly in #433: Dev in the ArenaI’ve subsequently had the team on Talk Python: #523: Pyrefly: Fast, IDE-friendly typing for Python (podcast version coming in a few weeks, see video for now.)My experience has been Pyrefly changes the feel of the editor, give it a try. But disable the regular language server extension. Brian #4: Playwright & pytest techniques that bring me joy Tim Shilling“I’ve been working with playwright more often to do end to end tests. As a project grows to do more with HTMX and Alpine in the markup, there’s less unit and integration test coverage and a greater need for end to end tests.”Tim covers some cool E2E techniques Open new pages / tabs to be testedUsing a pytest marker to identify playwright testsUsing a pytest marker in place of fixturesUsing page.pause() and Playwright’s debugging toolUsing assert_axe_violations to prevent accessibility regressionsUsing page.expect_response() to confirm a background request occurredFrom Brian Again, with more and more lower level code being generated, and many unit tests being generated (shakes head in sadness), there’s an increased need for high level tests.Don’t forget API tests, obviously, but if there’s a web interface, it’s gotta be tested.Especially if the primary user experience is the web interface, building your Playwright testing chops helps you stand out and let’s you test a whole lot of your system with not very many tests. Extras Brian: Big O - By Sam Who Yes, take Ned’s advice and don’t focus so much on DSA, focus also on learning to test.However, one topic you should be comfortable with in algortithm-land is Big O, at least enough to have a gut feel for it. And this article is really good enough for most people.Great graphics, ...
    続きを読む 一部表示
    24 分
  • #450 At-Cost Agentic IDE Tooling
    2025/09/22
    Topics covered in this episode: * pandas is getting pd.col expressions** Cline, At-Cost Agentic IDE Tooling** uv cheatsheet*Ducky Network UIExtrasJokeWatch 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: pandas is getting pd.col expressions Marco GorelliNext release of Pandas will have pd.col(), inspired by some of the other frameworks I’m guessing Pandas 2.3.3? or 2.4.0? or 3.0.0? (depending on which version they bump?)“The output of pd.col is called an expression. You can think of it as a delayed column - it only produces a result once it's evaluated inside a dataframe context.”It replaces many contexts where lambda expressions were used Michael #2: Cline, At-Cost Agentic IDE Tooling Free and open-sourceProbably supports your IDE (if your IDE isn’t a terminal) VS CodeVS Code InsidersCursorWindsurfJetBrains IDEs (including PyCharm)You pick plan or act (very important)It shows you the price as the AI works, per request, right in the UI Brian #3: uv cheatsheet Rodgrigo at mathspp.comNice compact cheat sheet of commands for Creating projectsManaging dependenciesLifecycle stuff like build, publish, bumping versionuv tool (uvx) commandsworking with scriptsInstalling and updating Python versionsplus venv, pip, format, help and update Michael #4: Ducky Network UI Ducky is a powerful, open-source, all-in-one desktop application built with Python and PySide6.It is designed to be the perfect companion for network engineers, students, and tech enthusiasts, combining several essential utilities into a single, intuitive graphical interface.Features Multi-Protocol Terminal: Connect via SSH, Telnet, and Serial (COM) in a modern, tabbed interface.SNMP Topology Mapper: Automatically discover your network with a ping and SNMP sweep. See a graphical map of your devices, color-coded by type, and click to view detailed information.Network Diagnostics: A full suite of tools including a Subnet Calculator, Network Monitor (Ping, Traceroute), and a multi-threaded Port Scanner.Security Toolkit: Look up CVEs from the NIST database, check password strength, and calculate file hashes (MD5, SHA1, SHA256, SHA512).Rich-Text Notepad: Keep notes and reminders in a dockable widget with formatting tools and auto-save.Customizable UI: Switch between a sleek dark theme and a clean light theme. Customize terminal colors and fonts to your liking. Extras Brian: Where are the cool kids hosting static sites these days? Moving from Netlify to Cloudflare Pages - Will Vincent from Feb 2024Traffic is a concern now for even low-ish traffic sites since so many bots are out thereNetlify free plan is less than 30 GB/mo allowed (grandfathered plans are 100 GB/mo)GH Pages have a soft limit of 100 GB/moCloudflare pages says unlimited Michael: PyCon Brazil needs some help with reduced funding from the PSF Get a ticket to donate for a student to attend (at the button of the buy ticket checkout dialog)I upgraded to macOS Tahoe Loving it so far.Only issue I’ve seen so far has been with alt-tab for macOS Joke: Hiring in 2025 vs 2021 2021: “Do you have an in-house kombucha sommelier?”“Let’s talk about pets, are you donkey-friendly?”, “Oh you think this is a joke?”2025: “Round 8/7”“Out of 12,000 resumes, the AI picked yours”“Binary tree? Build me a foundational model!”“Healthcare? What, you want to live forever?”
    続きを読む 一部表示
    33 分
  • #449 Suggestive Trove Classifiers
    2025/09/15
    Topics covered in this episode: * Mozilla’s Lifeline is Safe After Judge’s Google Antitrust Ruling** troml - suggests or fills in trove classifiers for your projects** pqrs: Command line tool for inspecting Parquet files** Testing for Python 3.14*ExtrasJokeWatch 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: Mozilla’s Lifeline is Safe After Judge’s Google Antitrust Ruling A judge lets Google keep paying Mozilla to make Google the default search engine but only if those deals aren’t exclusive.More than 85% of Mozilla’s revenue comes from Google search payments.The ruling forbids Google from making exclusive contracts for Search, Chrome, Google Assistant, or Gemini, and forces data sharing and search syndication so rivals get a fighting chance. Brian #2: troml - suggests or fills in trove classifiers for your projects Adam HillThis is super cool and so welcome.Trove Classifiers are things like Programming Language :: Python :: 3.14 that allow for some fun stuff to show up in PyPI, like the versions you support, etc.Note that just saying you require 3.9+ doesn’t tell the user that you’ve actually tested stuff on 3.14. I like to keep Trove Classifiers around for this reason.Also, License classifier is deprecated, and if you include it, it shows up in two places, in Meta, and in the Classifiers section. Probably good to only have one place. So I’m going to be removing it from classifiers for my projects.One problem, classifier text has to be an exact match to something in the classifier list, so we usually recommend copy/pasting from that list.But no longer! Just use troml!It just fills it in for you (if you run troml suggest --fix). How totally awesome is that!I tried it on pytest-check, and it was mostly right. It suggested me adding 3.15, which I haven’t tested yet, so I’m not ready to add that just yet. :)BTW, I talked with Brett Cannon about classifiers back in ‘23 if you want some more in depth info on trove classifiers. Michael #3: pqrs: Command line tool for inspecting Parquet files pqrs is a command line tool for inspecting Parquet filesThis is a replacement for the parquet-tools utility written in RustBuilt using the Rust implementation of Parquet and Arrowpqrs roughly means "parquet-tools in rust"Why Parquet? Size A 200 MB CSV will usually shrink to somewhere between about 20-100 MB as Parquet depending on the data and compression. Loading a Parquet file is typically several times faster than parsing CSV, often 2x-10x faster for a full-file load and much faster when you only read some columns.Speed Full-file load into pandas: Parquet with pyarrow/fastparquet is usually 2x–10x faster than reading CSV with pandas because CSV parsing is CPU intensive (text tokenizing, dtype inference). Example: if read_csv is 10 seconds, read_parquet might be ~1–5 seconds depending on CPU and codec.Column subset: Parquet is much faster if you only need some columns — often 5x–50x faster because it reads only those column chunks.Predicate pushdown & row groups: When using dataset APIs (pyarrow.dataset) you can push filters to skip row groups, reducing I/O dramatically for selective queries.Memory usage: Parquet avoids temporary string buffers and repeated parsing, so peak memory and temporary allocations are often lower. Brian #4: Testing for Python 3.14 Python 3.14 is just around the corner, with a final release scheduled for October.What’s new in Python 3.14Python 3.14 release scheduleAdding 3.14 to your CI tests in GitHub Actions Add “3.14” and optionally “3.14t” for freethreadedAdd the line allow-prereleases: trueI got stuck on this, and asked folks on Mastdon and BlueskyA couple folks suggested the allow-prereleases: true step. Thank you!Ed Rogers also suggested Hugo’s article Free-threaded Python on GitHub Actions, which I had read and forgot about. Thanks Ed! And thanks Hugo! Extras Brian: dj-toml-settings : Load Django settings from a TOML file. - Another cool project from Adam HillLidAngleSensor for Mac - from Sam Henri Gold, with examples of creaky door and theraminListener Bryan Weber found a Python version via Changelog, pybooklid, from tcsenpaiGrab PyBay Michael: Ready prek go! by Hugo van Kemenade Joke: Console Devs Can’t Find a Date
    続きを読む 一部表示
    31 分