
#454 It's some form of Elvish
Python Bytes
Exploring New Shell and Its Features
Michael and Brian discuss New Shell's powerful LS queries, Python plugin support, and why it's intriguing for structured output.
- * djrest2 -* A small and simple REST library for Django based on class-based views.
- Github CLI
- caniscrape - Know before you scrape. Analyze any website's anti-bot protections in seconds.
- * đ´ GittyUp*
- Extras
- Joke
About the show
Sponsored by us! Support our work through:
Connect with the hosts
- Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)
- Brian: @brianokken@fosstodon.org / @brianokken.bsky.social
- Show: @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 Levit
- Based on an interesting blog post -
Michael #2: Github CLI
- GitHubâs official command line tool
- Features
- Checking out a pull request locally
- You can clone any repository using OWNER/REPO syntax: gh repo clone cli/cli
- Create a pull request interactively: gh pr create
- See all at cli.github.com/manual/examples
Brian #3: caniscrape - Know before you scrape. Analyze any website's anti-bot protections in seconds.
caniscrape 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 problem
- Rebuilt and published last week as part of my upcoming Agentic AI Programming for Python course. Get notified this week at training.talkpython.fm/getnotified
- Update everything in a folder tree with
gittyup - Review changes, blockers, etc with
gittyup --explain
Extras
Brian:
- Three times faster with lazy imports - Hugo van Kemenade
- Interesting discussion on Hugoâs post - on Mastodon
- Use lazy module imports now - Graham Dumpleton
- Grahamâs post uses wrapt, a âmodule for decorators, wrappers and monkey patchingâ, to simulate lazy imports
- Helpful 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


