Topics covered in this episode:
rumdl - A Markdown Linter written in Rust
* Coverage 7.10.0: patch*
* aioboto3*
* You might not need a Python class*
Extras
Joke
Watch on YouTube
About the show
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...
Topics covered in this episode:
- rumdl - A Markdown Linter written in Rust
- * Coverage 7.10.0: patch*
- * aioboto3*
- * You might not need a Python class*
- Extras
- Joke
Watch on YouTube
About the show
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.
Michael #1: rumdl - A Markdown Linter written in Rust
- via Owen Lamont
- Supports toml file config settings
- Install via uv tool install rumdl.
- ⚡️ Built for speed with Rust - significantly faster than alternatives
- 🔍 54 lint rules covering common Markdown issues
- 🛠️ Automatic fixing with -fix for most rules
- 📦 Zero dependencies - single binary with no runtime requirements
- 🔧 Highly configurable with TOML-based config files
- 🌐 Multiple installation options - Rust, Python, standalone binaries
- 🐍 Installable via pip for Python users
- 📏 Modern CLI with detailed error reporting
- 🔄 CI/CD friendly with non-zero exit code on errors
Brian #2: Coverage 7.10.0: patch
Michael #3: aioboto3
- via Pat Decker
- Wrapper to use boto3 resources with the aiobotocore async backend
- aiobotocore allows you to use near enough all of the boto3 client commands in an async manner just by prefixing the command with await.
- With aioboto3 you can now use the higher level APIs provided by boto3 in an asynchronous manner.
Brian #4: You might not need a Python class
- Adam Grant
- This is an important periodic reminder to everyone coming into Python from other languages.
- Many other languages lean on classes a lot more than we need to in Python
- Adams suggestions
- Simple Data Containers: Use Named Tuples or Data Classes
- Stateless Utility Functions: Just Use Functions
- Grouping Constants: Use Modules
- Managing State with Simple Structures: Use Dictionaries or Lists
- Simple One-off Operations: Use Lambdas or Comprehensions
- I’ll add “just use functions”
- Avoiding Complexity: Built-in Libraries
- When You Actually Need a Class
- I’ll add
- You probably don’t
- If you think you do, ask a friend. Friends don’t let friends create extraneous classes in Python.
- If you think your case is an exception, it probably isn’t
- If you think dataclasses aren’t right for you, check out attrs
Extras
Brian:
- PyPI Incident Report: Phishing Attack -Sent in by listener John Hagen
- Both of Adam Johnson’s recent-ish interviews are now up on Test & Code
- 236: Git Tips for Testing - Adam Johnson
- 235: pytest-django - Adam Johnson
Michael:
- Dive into uv webcast with me and Will Vincent
Joke: Default text editor
View more