DiscoverPython Bytes#443 Patching Multiprocessing
#443 Patching Multiprocessing

#443 Patching Multiprocessing

Update: 2025-08-04
Share

Description

Topics covered in this episode:


Watch on YouTube


About the show



Connect with the hosts





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




  • Ned Batchelder


  • Actually up to 7.10.2 as of today


  • patch allows coverage to run better when a covered project uses




    • subprocesses

    • os._exit()

    • execv family of functions


  • Looking at subprocess




    • “Coverage works great when you start your program with coverage measurement, but has long had the problem of how to also measure the coverage of sub-processes that your program created. The existing solution had been a complicated two-step process of creating obscure .pth files and setting environment variables. Whole projects appeared on PyPI to handle this for you.”


  • From release notes



    for 7.10.0




    • A new configuration option: “[run] patch” specifies named patches to work around some limitations in coverage measurement. These patches are available:







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:





Michael:





Joke: Default text editor

Comments 
loading
00:00
00:00
x

0.5x

0.8x

1.0x

1.25x

1.5x

2.0x

3.0x

Sleep Timer

Off

End of Episode

5 Minutes

10 Minutes

15 Minutes

30 Minutes

45 Minutes

60 Minutes

120 Minutes

#443 Patching Multiprocessing

#443 Patching Multiprocessing

Michael Kennedy and Brian Okken