Python Bytes

#470 A Jolting Episode


Listen Later

Topics covered in this episode:
  • Better Python tests with inline-snapshot
  • jolt Battery intelligence for your laptop
  • Markdown code formatting with ruff
  • act - run your GitHub actions locally
  • Extras
  • Joke
  • Watch on YouTube

    About the show

    Sponsored by us! Support our work through:

    • Our courses at Talk Python Training
    • The Complete pytest Course
    • Patreon Supporters
    • Connect with the hosts
    • Michael: @[email protected] / @mkennedy.codes (bsky)
    • Brian: @[email protected] / @brianokken.bsky.social
    • Show: @[email protected] / @pythonbytes.fm (bsky)
    • Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 11am 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: Better Python tests with inline-snapshot

      • Alex Hall, on Pydantic blog
      • Great for testing complex data structures
      • Allows you to write a test like this:

      • from inline_snapshot import snapshot
        def test_user_creation():
        user = create_user(id=123, name="test_user")
        assert user.dict() == snapshot({})
      • Then run pytest --inline-snapshot=fix

      • And the library updates the test source code to look like this:

      • def test_user_creation():
        user = create_user(id=123, name="test_user")
        assert user.dict() == snapshot({
        "id": 123,
        "name": "test_user",
        "status": "active"
        })
      • Now, when you run the code without “fix” the collected data is used for comparison

      • Awesome to be able to visually inspect the test data right there in the test code.
      • Projects mentioned
        • inline-snapshot
        • pytest-examples
        • syrupy
        • dirty-equals
        • executing
        • Michael #2: jolt Battery intelligence for your laptop

          • Support for both macOS and Linux
          • Battery Status — Charge percentage, time remaining, health, and cycle count
          • Power Monitoring — System power draw with CPU/GPU breakdown
          • Process Tracking — Processes sorted by energy impact with color-coded severity
          • Historical Graphs — Track battery and power trends over time
          • Themes — 10+ built-in themes with dark/light auto-detection
          • Background Daemon — Collect historical data even when the TUI isn't running
          • Process Management — Kill energy-hungry processes directly
          • Brian #3: Markdown code formatting with ruff

            • Suggested by Matthias Schoettle
            • ruff can now format code within markdown files
            • Will format valid Python code in code blocks marked with python, py, python3 or py3.
            • Also recognizes pyi as Python type stub files.
            • Includes the ability to turn off formatting with comment [HTML_REMOVED] , [HTML_REMOVED] blocks.
            • Requires preview mode
            • [tool.ruff.lint]
              preview = true

              Michael #4: act - run your GitHub actions locally

              • Run your GitHub Actions locally! Why would you want to do this? Two reasons:
                • Fast Feedback - Rather than having to commit/push every time you want to test out the changes you are making to your .github/workflows/ files (or for any changes to embedded GitHub actions), you can use act to run the actions locally. The environment variables and filesystem are all configured to match what GitHub provides.
                • Local Task Runner - I love make. However, I also hate repeating myself. With act, you can use the GitHub Actions defined in your .github/workflows/ to replace your Makefile!
                • When you run act it reads in your GitHub Actions from .github/workflows/ and determines the set of actions that need to be run.
                  • Uses the Docker API to either pull or build the necessary images, as defined in your workflow files and finally determines the execution path based on the dependencies that were defined.
                  • Once it has the execution path, it then uses the Docker API to run containers for each action based on the images prepared earlier.
                  • The environment variables and filesystem are all configured to match what GitHub provides.
                  • Extras

                    Michael:

                    • Winter is coming: Frozendict accepted
                    • Django ORM stand-alone
                    • Command Book app announcement post
                    • Joke: Plug ‘n Paste

                      ...more
                      View all episodesView all episodes
                      Download on the App Store

                      Python BytesBy Michael Kennedy and Brian Okken

                      • 4.7
                      • 4.7
                      • 4.7
                      • 4.7
                      • 4.7

                      4.7

                      212 ratings


                      More shows like Python Bytes

                      View all
                      The Changelog: Software Development, Open Source by Changelog Media

                      The Changelog: Software Development, Open Source

                      288 Listeners

                      The a16z Show by Andreessen Horowitz

                      The a16z Show

                      1,103 Listeners

                      Daily Tech News Show by Tom Merritt

                      Daily Tech News Show

                      1,392 Listeners

                      Software Engineering Daily by Software Engineering Daily

                      Software Engineering Daily

                      627 Listeners

                      Talk Python To Me by Michael Kennedy

                      Talk Python To Me

                      583 Listeners

                      Super Data Science: ML & AI Podcast with Jon Krohn by Jon Krohn

                      Super Data Science: ML & AI Podcast with Jon Krohn

                      302 Listeners

                      NVIDIA AI Podcast by NVIDIA

                      NVIDIA AI Podcast

                      348 Listeners

                      Syntax - Tasty Web Development Treats by Wes Bos & Scott Tolinski - Full Stack JavaScript Web Developers

                      Syntax - Tasty Web Development Treats

                      990 Listeners

                      Tech Brew Ride Home by Morning Brew

                      Tech Brew Ride Home

                      972 Listeners

                      Practical AI by Practical AI LLC

                      Practical AI

                      215 Listeners

                      The Real Python Podcast by Real Python

                      The Real Python Podcast

                      140 Listeners

                      No Priors: Artificial Intelligence | Technology | Startups by Conviction

                      No Priors: Artificial Intelligence | Technology | Startups

                      142 Listeners

                      Latent Space: The AI Engineer Podcast by Latent.Space

                      Latent Space: The AI Engineer Podcast

                      99 Listeners

                      This Day in AI Podcast by Michael Sharkey, Chris Sharkey

                      This Day in AI Podcast

                      228 Listeners

                      The AI Daily Brief: Artificial Intelligence News and Analysis by Nathaniel Whittemore

                      The AI Daily Brief: Artificial Intelligence News and Analysis

                      670 Listeners