Python Bytes

#384 Force push lightly

May 21, 2024

Topics covered in this episode:

Watch on YouTube

About the show

Sponsored by Mailtrap:

Connect with the hosts

Join us on YouTube at to be part of the audience. Usually Tuesdays 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: Git: Force push safely with --force-with-lease and --force-if-includes

  • Adam Johnson
  • Using gentle force
  • Avoid stomping on remote changes with a couple extra flags.

Michael #2: Thoughts from PyCon 2024

  • PyCon is special - the connections you make are always more than you expect
  • Great to see many old friends
  • Did a ”live” Talk Python episode that’ll be out in a few weeks.
  • The talks look great, we’ll let you know when they land on YouTube.
  • Masks were a mistake - universally heard complaints from fellow attendees. This is my two cents towards a more reasonable next PyCon.

Brian #3: Being friendly: Strategies for friendly fork management

  • That’s part 2.
  • Part 1 is Being friendly: Friendly forks 101
  • Lessley Dennington on GitHub Blog
  • Examples of long running friendly forks
    • git-for-windows/git, microsift/git, github/git
    • two public, one private
  • Fork management strategies - when pulling changes downstream
    • merging rebase
      • git-for-windows/git uses this proactively and regularly
      • fake merge + rebase
    • new branch
      • microsoft/git uses this
      • new branch from upstream major versions
      • merge previous changes to new branch
    • traditional merge
      • github/git uses this, conservatively, after a few point bug fix versions

Michael #4: tach

  • A Python tool to enforce a modular, decoupled package architecture.
  • tach allows you to define boundaries and control dependencies between your Python packages.
  • Each package can define its public interface.
  • If a package tries to import from another package that is not listed as a dependency, tach will report an error.
  • If a package tries to import from another package and does not use its public interface, with strict: true set, tach will report an error.
  • Zero runtime impact.




Joke: Evolution of smart products neither hosts nor alters podcast files. All content © its respective owners.