Python Bytes

#439 That Astral Episode


Listen Later

Topics covered in this episode:
  • * ty documentation site and uv migration guide*
  • * uv build backend is now stable + other Astral news*
  • * Refactoring long boolean expressions*
  • * fastapi-ml-skeleton*
  • Extras
  • Joke
  • Watch on YouTube

    About the show

    Sponsored by Sentry: pythonbytes.fm/sentry

    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 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: ty documentation site and uv migration guide

      • via Skyler Kasko
      • Astral created a documentation site for ty (PR #744 in release 0.0.1-alpha.13).
      • Astral added a page on migrating from pip to a uv project in the uv documentation. (PR #12382 in release 0.7.19).
      • Talk Python episode on ty.
      • Brian #2: uv build backend is now stable + other Astral news

        • The uv build backend is now stable

          • Tim Hopper via Python Developer Tooling Handbook
          • From Charlie Marsh

            • “The uv build backend is now stable, and considered ready for production use. An alternative to setuptools, hatchling, etc. for pure Python projects, with a focus on good defaults, user-friendly error messages, and performance. When used with uv, it's 10-35x faster.”
            • “(In a future release, we'll make this the default.)”

            • [build-system]
              requires = ["uv_build>=0.7.19,<0.8.0"]
              build-backend = "uv_build"
            • I believe it’s faster, but I agree with Brett Cannon in asking “What's being benchmarked? I'm not sure what a "backend sync" is referring to other than maybe installing the build back-end?”

            • See also: uv: Making Python Local Workflows FAST and BORING in 2025 - Hynek

            • Brian #3: Refactoring long boolean expressions

              • Trey Hunner

              • This is applied boolean logic, and even folks who learned this in a CS program probably did so early on, and may have forgotten it.

              • How can you improve the readability of long Boolean expressions in Python?

                • Put parens around the whole expression and separate clauses onto different lines

                • Where to put boolean operators between clauses? at the end of the line or the beginning?

                  • PEP8 recommends the beginning
                  • if (expression1
                    and expression2
                    and expression3):
                    ...
                  • Naming sub-expressions with variables

                    • Odd downside that wouldn’t occur to me. All expressions are evaluated, thus not taking advantage of expression short-circuiting.
                    • Naming operations with functions

                      • Less readable, but takes advantage of short-circuiting
                      • Using De Morgan’s Law : replacing a compound expression with a similar (and hopefully easier to read) expression

                      • # neither: we want both to be false
                        not (a or b) == (not a) and (not b)
                        # never_both: at least one false
                        not (a and b) == (not a) or (not b)

                        Michael #4: fastapi-ml-skeleton

                        • FastAPI Skeleton App to serve machine learning models production-ready.
                        • This repository contains a skeleton app which can be used to speed-up your next machine learning project.
                        • The code is fully tested and provides a preconfigured tox to quickly expand this sample code.
                        • A sample regression model for house price prediction is included in this project.
                        • Short write up on "What does set -a do?"
                        • Extras

                          Brian:

                          • OCF
                          • Michael:

                            • via Wei Lee

                            • Extra Airflow ruff rules:

                            • Starting from Ruff version 0.11.13, most changes from Airflow 2 to Airflow 3 can be automated using AIR3. (It’s still in preview so a “—-preview” flag is needed)

                              e.g., if you have the following Airflow 2 code

                              import datetime
                              from airflow.models import DAG
                              from airflow.operators.empty import EmptyOperator
                              with DAG(
                              dag_id="my_dag_name",
                              start_date=datetime.datetime(2021, 1, 1),
                              schedule_interval="@daily",
                              ):
                              EmptyOperator(task_id="task")

                              it can be fixed with uvx ruff check --select AIR3 --fix --unsafe-fixes --preview

                              import datetime
                              from airflow.sdk import DAG
                              from airflow.providers.standard.operators.empty import EmptyOperator
                              with DAG(
                              dag_id="my_dag_name",
                              start_date=datetime.datetime(2021, 1, 1),
                              schedule="@daily",
                              ):
                              EmptyOperator(task_id="task")

                              which works with Airflow 3.

                              Joke:

                              • Front Toward Enemy
                              • ...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
                                Software Engineering Radio - the podcast for professional software developers by se-radio@computer.org

                                Software Engineering Radio - the podcast for professional software developers

                                274 Listeners

                                The Changelog: Software Development, Open Source by Changelog Media

                                The Changelog: Software Development, Open Source

                                284 Listeners

                                Data Skeptic by Kyle Polich

                                Data Skeptic

                                481 Listeners

                                Talk Python To Me by Michael Kennedy

                                Talk Python To Me

                                590 Listeners

                                Software Engineering Daily by Software Engineering Daily

                                Software Engineering Daily

                                621 Listeners

                                Test & Code by Brian Okken

                                Test & Code

                                70 Listeners

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

                                Super Data Science: ML & AI Podcast with Jon Krohn

                                298 Listeners

                                Data Engineering Podcast by Tobias Macey

                                Data Engineering Podcast

                                141 Listeners

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

                                Syntax - Tasty Web Development Treats

                                987 Listeners

                                CoRecursive: Coding Stories by Adam Gordon Bell - Software Developer

                                CoRecursive: Coding Stories

                                189 Listeners

                                DataFramed by DataCamp

                                DataFramed

                                267 Listeners

                                Practical AI by Practical AI LLC

                                Practical AI

                                192 Listeners

                                The Stack Overflow Podcast by The Stack Overflow Podcast

                                The Stack Overflow Podcast

                                62 Listeners

                                The Real Python Podcast by Real Python

                                The Real Python Podcast

                                139 Listeners

                                Oxide and Friends by Oxide Computer Company

                                Oxide and Friends

                                47 Listeners