Python Bytes

#486: underscore-underscore-ghost-emoji

Topics covered in this episode:

  • Free-threaded Python: past, present, and future
  • django-admin-site-search
  • Qwen 3.6 27B is the sweet spot for local development
  • A large batch of PEPs are finalized
  • Extras
  • Joke
Watch on YouTube

Show Intro

Sponsored by us! Support our work through:

  • Our courses at Talk Python
  • Consulting from Six Feet Up Connect with the hosts
  • Michael: Mastodon / BlueSky / X / LinkedIn
  • Calvin: Mastodon / BlueSky / X / LinkedIn
  • Show: Mastodon / BlueSky / X Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesday at 7am 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.

Calvin #1: Free-threaded Python: past, present, and future

  • The GIL has prevented true multi-threaded parallelism in CPython since the beginning — multiple past attempts to remove it failed on performance grounds
  • Sam Gross at Meta finally solved it; his work became PEP 703 and ships as free-threaded CPython today
  • Python 3.13 was experimental with 20–40% single-threaded slowdown; 3.14 brought that to 0–10%
  • Python 3.15 (October 2026) delivers a unified ABI — one extension binary works on both GIL and free-threaded builds
  • Already >50% of the top PyPI binary wheels support free threading
  • Wouters predicts free-threaded becomes the default between 3.16–3.20 (2027–2031), with the GIL eventually disappearing next decade

Michael #2: django-admin-site-search

  • via Adam Parkin
  • A global/site search modal for the Django admin, by Ahmed Aljawahiry. Hit cmd+k anywhere in the admin and you get a command-palette-style search window, kind of like the one in VS Code.
  • It doesn't just search one model's list page. It searches your entire site in one box:
    • App labels
    • Model labels and field attributes
    • Actual model instances (your data)
  • Two ways to search the instances:
    • model_char_fields (the default): runs an __icontains across every CharField (and subclasses) on the model. Zero config, works out of the box.
    • admin_search_fields: defers to each ModelAdmin's existing get_search_results(), so it respects the search_fields you've already set up.
  • The part I like: it's permission-aware out of the box. Users only see results for the apps and models they actually have view permission on, so you're not leaking anything through search.
  • Results appear as you type, with throttling/debouncing so you're not hammering the server on every keystroke, and it's full keyboard nav: cmd+k to open, up/down to move, enter to go.
  • It's responsive, does dark and light mode, and it pulls Django's built-in admin CSS variables so it just matches whatever admin theme you're running.
  • Under the hood it's Alpine.js, but bundled into static so there's no external CDN dependency.
  • Setup is about what you'd expect: pip install django-admin-site-search, add it to INSTALLED_APPS, mix the AdminSiteSearchView into your AdminSite, and drop a few template includes into base_site.html.
  • Supports Python 3.8 through 3.14 and Django 3.2 through 6.0, MIT licensed, and everything is overridable if you want to skip certain models, add TextField matching, etc.

Calvin #3: Qwen 3.6 27B is the sweet spot for local development

  • Qwen 3.6 27B is being called the first local model that genuinely competes as a general-purpose intelligence — benchmarks put it at roughly mid-2025 frontier level (comparable to GPT-5 / Claude Sonnet 4.5)
  • Runs locally via llama.cpp; on an M5 MacBook Max with 8-bit quantization + multi-token prediction, it hits ~32 tokens/sec using ~42GB RAM
  • 4-bit quantization gets it under 18GB, runnable on 32GB devices; Nvidia RTX cards run it even faster
  • The dense 27B is recommended over the faster MoE 35B A3B — author prefers higher quality output over raw speed
  • Privacy and reliability are the pitch: fine-tunable, can't be taken down, suitable for sensitive/proprietary data
  • Author sees this as a stepping stone — frontier open-weight models like GLM 5.2 are now locally runnable with company-grade hardware, and smarter-still local models are coming

Michael #4: A large batch of PEPs are finalized

  • A bunch of PEPs went from accepted to final.
    • 668, 687, 691, 699, 701, 703, 728, 770, 773, 829
  • But this wasn’t them making their way into CPython. It’s an admin sorta thing. (Thanks PyCoders)
  • See the commit.

Extras

Calvin:

  • More fun bling for your terminal this time - https://charm.land/

Michael:

  • Follow up from pls, What the pls? Thanks Pito.

Joke: BEMoji

  • A production-grade utility and component framework built entirely on emoji class names
  • via Jeff Triplett