• #374 Climbing the Python Web Mountain

  • Mar 11 2024
  • Length: 33 mins
  • Podcast
#374 Climbing the Python Web Mountain cover art

#374 Climbing the Python Web Mountain

  • Summary

  • Topics covered in this episode: 6 ways to improve the architecture of your Python project (using import-linter)MountaineerWhy Python's Integer Division FloorsHatchetExtrasJokeWatch on YouTube About the show Sponsored by ScoutAPM: pythonbytes.fm/scout Connect with the hosts Michael: @mkennedy@fosstodon.orgBrian: @brianokken@fosstodon.orgShow: @pythonbytes@fosstodon.org Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 11am PT. Older video versions available there too. Brian #1: 6 ways to improve the architecture of your Python project (using import-linter) PigleiUsing import-linter to define architectural layerscheck to make sure imports don’t violate (import from upper layers)can also check for more contracts, such as forbidden - disallow a specific from/to import independence - list of modules that shouldn’t import from each otherFixing violations a process introduced to set exceptions for each violation in a config filethen fix violations 1 at a time (nice approach)use the whole team if you canCommon methods for fixing dependency issues Merging and splitting modulesDependency Injection, including using protocols to keep type hints without the need to import just for typesUse simpler dependency typesDelaying function implementations module global methods set by caller, or adding a simple plugin/callback systemConfiguration driven Setting import statements in a config file and using import_string() at runtimeReplace function calls with event-driven approaches Michael #2: Mountaineer Mountaineer is a batteries-included web framework for Python and React.Mountaineer focuses on developer productivity above all else, with production speed a close second. 📝 Typehints up and down the stack: frontend, backend, and database🎙️ Trivially easy client[HTML_REMOVED]server communication, data binding, and function calling🌎 Optimized server rendering for better accessibility and SEO🏹 Static analysis of web pages for strong validation: link validity, data access, etc.🤩 Skip the API or Node.js server just to serve frontend clients Brian #3: Why Python's Integer Division Floors Guido van RossumInteger division always floors (toward negative infinity) instead of truncating. (C truncates)5//2 → 2-5//2 → -35//-2 → -3Reason, For nice mathematical relationships with // and % (modulo).a//b = quotient (q), a%b = remainder (r)such that b*q + r = a, and 0 <= r < b This works for both positive and negative a valuesFor negative b, the second rule has to change to 0 >= r > b If you truncate (like C does), you have to use abs(r) for the first rule to work.Theory of why C doesn’t do it this way: Probably a hardware limitation at the time when C was designed, due to “sign + magnitude” integers instead of modern two’s compliment integers. Michael #4: Hatchet Hatchet is a distributed, fault-tolerant task queue which replaces traditional message brokers and pub/sub systems. It’s built to solve problems like concurrency, fairness, and durabilityConcurrency, Fairness, and Rate limiting: Enable FIFO, LIFO, Round Robin, and Priority Queues with built-in strategies to avoid common pitfalls.Architected for Resiliency: Customizable retry policies and built-in error handling to recover from transient failures. Extras Brian: Charlie Marsh on uv in PythonTest episode 216 Michael: Build An Audio AI App Course [free!]Rock Solid Python with Python Typing CourseCoolio Joke: Breaking Prod
    Show more Show less

What listeners say about #374 Climbing the Python Web Mountain

Average Customer Ratings

Reviews - Please select the tabs below to change the source of reviews.