Episodes
-
Topics covered in this episode:
NumFOCUS concernsleaping pytest debugger llmExtra, Extra, Extra,PyPI has completed its first security auditExtrasJokeWatch on YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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.
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: NumFOCUS concerns
Suggested by Pamphile RoyWrite up of the current challenges faced by NumFOCUS, by Paul Ivanov (one of the OG of Scientific Python: Jupyter, Matplotlib, etc.)Struggling to meet the needs of sponsored and affiliated projects.In February, NumFOCUS announced it is moving in a new direction.NumFOCUS initiated an effort to run an election for open board seats and proposed changing its governance structure.Some projects are considering and actively pursuing alternative venues for fiscal sponsorship.Quite a bit more detail and discussion in the article.NumFOCUS covers a lot of projectsNumPy, Matplotlib, pandas, Jupyter, SciPy, Astropy, Bokeh, Dask, Conda, and so many more.Michael #2: leaping pytest debugger llm
You can ask Leaping questions like:Why am I not hitting function x?Why was variable y set to this value?What was the value of variable x at this point?What changes can I make to this code to make this test pass?Brian #3: Extra, Extra, Extra,
2024 Developer Summit Also suggested by Pamphile, related to Scientific PythonThe Second Scientific Python Developer Summit , June 3-5, Seattle, WALots of great work came out of the First Summit in 2023pytest-regex - Use regexs to specify tests to runCame out of the ’23 summitI’m not sure if I’m super happy about this or a little afraid that I probably could use this.Still, cool that it’s here.Cool short example of using __init__ and __call__ to hand-roll a decorator.ruff got fasterMichael #4: PyPI has completed its first security audit
Trail of Bits spent a total of 10 engineer-weeks of effort identifying issues, presenting those findings to the PyPI team, and assisting us as we remediated the findings.Scope: The audit was focused on "Warehouse", the open-source codebase that powers pypi.orgAs a result of the audit, Trail of Bits detailed 29 different advisories discovered across both codebases. When evaluating severity level of each advisory, 14 were categorized as "informational", 6 as "low", 8 as "medium" and zero as "high".Extras
Brian:
pytest course community to try out Podia Communities.Anyone have a podia community running strong now? If so, let me know through Mastodon: @[email protected] to join the community when it’s up and running?Same. Or join our our friends of the show list, and read our newsletter. I’ll be sure to drop a note in there when it’s ready.Michael:
VS Code AMA @ Talk Python [video]Gunicorn CVETalk submissions are now open for both remote and in-person talks at the 2024 PyConZA? The conference will be held on 3 and 4 October 2024 in Cape Town, South Africa. Details are on za.pycon.org.FlaskCon 2024 will be happening Friday, May 17 inside PyCon US 2024. Call for proposals are now live!Joke: Debugging with your eyes
-
Topics covered in this episode:
How to Set Up Pre-Commit Hooks A step-by-step guide to installing and configuring pre-commit hooks on your project.difftasticQuartoconstableExtrasJokeWatch on YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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.
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: How to Set Up Pre-Commit Hooks A step-by-step guide to installing and configuring pre-commit hooks on your project.
by Stefanie MolinPre-commit hooks are code checks that run as part of the “pre-commit” stage of the git commit process. If any of these checks fail, git aborts the commitSometimes, we need to bypass the hooks temporarily. For these instances, we can pass the --no-verify option when we run git commitBrian #2: difftastic
Found this a couple years ago, but really using it a lot now.Excellent structurally diff tool that compares code based on syntax, not line by line.Michael #3: Quarto
via Mathias JohanssonAn open-source scientific and technical publishing systemTransforming a notebook into a pdf / HTML / MS Word / ePub with minimal effort, or even all formats at once.Author using Jupyter notebooks or with plain text markdown in your favorite editor.Write using Pandoc markdown, including equations, citations, crossrefs, figure panels, callouts, advanced layout, and more.Brian #4: constable
“inserts print statements directly into the AST at runtime ““If you find yourself aimlessly adding print statements while debugging your code, this is for you. !”Add decorators like @constable.trace('a', 'b') to functions and you’ll get nice output showing when and how a and b changed.see also icecream for another fun debugging with print project.Extras
Brian:
pointers being added to the standard libraryA couple weeks old, but still worth coveringGuido’s take on adding this, "Why the hell not?"Michael:
Python 3.12.3 is outJoke: Hugo SciFi Award
-
Episodes manquant?
-
Topics covered in this episode:
pacemaker - For controlling time per iteration loop in Python.PyPI suspends new user registration to block malware campaignPython Project-Local Virtualenv Management ReduxPython Edge Workers at CloudflareExtrasJokeWatch on YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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.
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: pacemaker - For controlling time per iteration loop in Python.
Brandon RohrerGood example of a small bit of code made into a small package.With speedups to dependencies, like with uv, for example, I think we’ll see more small projects.Cool stuffGreat README, including quirks that need to be understood by users. “If the pacemaker experiences a delay, it will allow faster iterations to try to catch up. Heads up: because of this, any individual iteration might end up being much shorter than suggested by the pacemaker's target rate.”Nice use of time.monotonic()deltas are guaranteed to never go back in time regardless of what adjustments are made to the system clock.Watch out forpip install pacemaker-liteNOT pacemakerpacemaker is taken by a package named PaceMaker with a repo named pace-maker, that hasn’t been updated in 3 years. Not sure if it’s alive. No tests (yet). I’m sure they’re coming. ;)Seriously though, Brandon says this is “a glorified snippet”. And I love the use of packaging to encapsulate shared code. Realistically, small snippet like packages have functionality that’s probably going to be tested by end user code.And even if there are tests, users should test the functionality they are depending on.Michael #2: PyPI suspends new user registration to block malware campaign
Incident Report for Python InfrastructurePyPi Is Under Attack: Project Creation and User Registration Suspended — Here’s the detailsI hate medium, but it’s the best details I’ve found so farBrian #3: Python Project-Local Virtualenv Management Redux
HynekConcise writeup of how Hynek uses various tools for dealing with environmentsCovers (paren notes are from Brian)In project .venv directoriesdirenv for handling .envrc files per project (time for me to try this again)uv for pip and pip-compile functionalityInstalling Python via python.orgUsing a .python-version-default file (I’ll need to play with this a bit)Works with GH Action setup-python. (ok. that’s cool)Some fish shell scriptingBonus tip on using requires-python in .pyproject.toml and extracting it in GH actions to be able to get the python exe name, and then be able to pass it to Docker and reference it in a Dockerfile. (very cool)Michael #4: Python Edge Workers at Cloudflare
What are edge workers?Based on workers using Pyodide and WebAssemblyThis new support for Python is different from how Workers have historically supported languages beyond JavaScript — in this case, we have directly integrated a Python implementation into workerd, the open-source Workers runtime.Python Workers can import a subset of popular Python packages including FastAPI, Langchain, numpyCheck out the examples repo.Extras
Michael:
LPython follow up from Brian SkinnFeatured on Python Bytes badgeA little downtime, thanks for the understandingWe were rocking a 99.98% uptime until then. :)Joke:
C++ is not safe for people under 18Baseball joke -
Topics covered in this episode:
justpathxz back doorLPythondramaticExtrasJokeWatch on YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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.
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: justpath
Inspect and refine PATH environment variable on both Windows and Linux.Raw, count, duplicates, invalids, corrections, excellent stuff.Check out the videoBrian #2: xz back door
In case you kinda heard about this, but not really.Very short version: A Microsoft engineer noticed a performance problem with ssh and tracked it to a particular version update of xz.Further investigations found a multi-year installation of a fairly complex back door into the xz by a new-ish contributor. But still contributing over several years. First commit in early 2022.The problem is caught. But if it had succeeded, it would have been bad.Part of the issue of how this happened is due to having one primary maintainer on a very widely used tool included in tons-o-Linux distributions.Some useful articlesEverything I Know About the XZ Backdoor - Evan Boehs - recommended readDon’t think your affected? Think again if you use homebrew, for example:Update and upgrade Homebrew and xz versionsNotesOpen source maintenance burnout is realLots of open source projects are maintained by unpaid individuals for long periods of time.Multi-year sneakiness and social bullying is pretty hard to defend against.Handing off projects to another primary maintainer has to be doable.But now I think we need better tools to vet contributors. Maybe? Or would that just suppress contributions?One option to help with burnout: JGMM, Just Give Maintainers Money: Software Needs To Be More Expensive - GlyphMichael #3: LPython
LPython aggressively optimizes type-annotated Python code. It has several backends, including LLVM, C, C++, and WASM. LPython’s primary tenet is speed.Play with the wasm version here: dev.lpython.orgStill in alpha, so keep that in mind.Brian #4: dramatic
Trey HunnerMore drama in the software world. This time in the Python. Actually, this is just a fun utility to make your Python output more dramatic.More fun output with terminaltexteffectssuggested by AllanExtras
Brian:
Textual how has a new inline feature in the new release.Michael:
My keynote talk is out: The State of Python in 2024Have you browsed your github feed lately?3.10, 3.9, 3.8 security updatesJoke: Definition of terms
-
Topics covered in this episode:
🤖 On Robots.txtniquestsEvery dunder method in PythonLockboxExtrasJokeWatch on YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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: 🤖 On Robots.txt
Jeff Triplett“In theory, this file helps control what search engines and AI scrapers are allowed to visit, but I need more confidence in its effectiveness in the post-AI apocalyptic world.”Resources to get startedBlock the Bots that Feed “AI” Models by Scraping Your WebsiteGo ahead and block AI web crawlersDark VisitorsDjangoAdd robots.txt to a Django websiteHow to add a robots.txt to your Django siteHugoHugo robots.txtPodcast questions:Should content creators block AI from our work?Should’t we set up a standard way to do this?I still haven’t found a way to block GitHub repositories. Is there a way?Licensing is one thing (not easy), but I don’t think any bots respect any protocol for repos.Michael #2: niquests
Requests but with HTTP/3, HTTP/2, Multiplexed Connections, System CAs, Certificate Revocation, DNS over HTTPS / TLS / QUIC or UDP, Async, DNSSEC, and (much) pain removed!Niquests is a simple, yet elegant, HTTP library. It is a drop-in replacement for Requests, which is under feature freeze.See why you should switch: Read about 10 reasons whyBrian #3: Every dunder method in Python
Trey HunnerSure, there’s __repr__(), __str__(), and __init__(), but how about dunder methods for:Equality and hashabilityOrderabilityType conversions and formattingContext managersContainers and collectionsCallabilityArithmetic operators… and so much more … even a cheat sheet.Michael #4: Lockbox
Lockbox is a forward proxy for making third party API calls.Why? Automation or workflow platforms like Zapier and IFTTT allow "webhook" actions for interacting with third party APIs.They require you to provide your third party API keys so they can act on your behalf. You are trusting them to keep your API keys safe, and that they do not misuse them.How Lockbox helps: When a workflow platform needs to make a third party API call on your behalf, it makes a Lockbox API call instead. Lockbox makes the call to the third party API, and returns the result to the workflow platform.Extras
Brian:
Django: Join the community on Mastodon - Adam JohnsonNo maintenance intended - Sent in from Kim van WykMichael:
US sues AppleGood video on pluses and minusesThe hot water just the day before [and this one]https://9to5mac.com/2024/03/25/app-store-proposals-rejected/ PyPI Support Specialist jobVS Code AMA, please submit your question here PyData Eindhoven 2024 has a date and open CFPJoke: Windows Certified
-
Topics covered in this episode:
pycountryDoes Python have pointers?ingestrMake your terminal niceExtrasJokeWatch on YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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.
Michael #1: pycountry
A Python library to access ISO country, subdivision, language, currency and script definitions and their translations.pycountry provides the ISO databases for the standards:639-3 Languages3166 Codes for representation of names of countries and their subdivisions3166-1 Countries3166-3 Deleted countries3166-2 Subdivisions of countries4217 Currencies15924 ScriptsBrian #2: Does Python have pointers?
Ned BatchelderTurns out, this is really the description of “what’s a variable in Python?” that helps to make sense of the “variables as names” model in Python, especially for people coming from languages that use pointers a lot.You can use id() to find out what a variable points toYou just can’t do the reverse of access it given an id.There’s no “dereference” operator.See also Python Names and Values, also by NedShould be required reading/viewing for all Python curriculum.Michael #3: ingestr
ingestr is a command-line application that allows ingesting or copying data from any source into any destination database.Works on both MongoDB and Postgres and many more. incremental loading: append, merge or delete+insertBrian #4: Make your terminal nice
David LordDavid’s switched to Fish and StarshipI tried switching to Fish several times, and I guess I’m good with zsh.Although I admire the brave comic sans motto: “Finally, a command line shell for the 90s”But I’m finally ready for Starship, and it takes almost no time to set upPlus it’s fast. (Has it always been Rust?)Extras
Brian:
Doing some groundwork for a SaaS project, using SaaS PegasusI just talked with Cory from Pegasus for an upcoming PythonTest episodeI haven’t decided whether to save up SaaS episodes for one big series, or spread them out.But mostly I’m excited to get my project started.Michael:
Excellent video about “cloud exit”uv - The Next Evolution in Python Packages?Python 3.13 a5Target’s Open Source Fund via Pat DeckerJoke: Anti-social engineer
-
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 YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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 violationsa 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 issuesMerging and splitting modulesDependency Injection, including using protocols to keep type hints without the need to import just for typesUse simpler dependency typesDelaying function implementationsmodule global methods set by caller, or adding a simple plugin/callback systemConfiguration drivenSetting import statements in a config file and using import_string() at runtimeReplace function calls with event-driven approachesMichael #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 clientsBrian #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 216Michael:
Build An Audio AI App Course [free!]Rock Solid Python with Python Typing CourseCoolioJoke: Breaking Prod
-
Topics covered in this episode:
zoxideSmart CLIs with TyperPython recommended officially by the US GovernmentTextual tutorials at Mouse vs PythonExtrasJokeWatch on YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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.
Michael #1: zoxide
zoxide is a smarter cd command, inspired by z and autojump.It remembers which directories you use most frequently, so you can "jump" to them in just a few keystrokes.zoxide works on all major shells and platforms.Brian #2: Smart CLIs with Typer
Rahul PaiLots of TILs here, even though I’ve been using Typer for years.Examples ofAuto-detection of arguments and types based on type hintsHelp text is a smidge clunkierPrompting for missing arguments Defaulting to an enviromental variable for missing argsPrint help if no args givenExplicit app and subcommands with a comparison to argparseReusable commands with result_callback Several topics covered in comparison with argparseSee also Testing argparse ApplicationsMichael #3: Python recommended officially by the US Government
The US government explicitly recommends memory safe languages.Python is one of themThe comparison to big tech by Samuel is interestingBrian #4: Textual tutorials at Mouse vs Python
Mike DriscollMost recently Creating a Modal Dialog For Your TUIs in TextualTextualize already has some pretty great documentation at textual.textualize.ioBut it’s cool to see some different tutorials on it.Extras
Brian:
Is UV the FUTURE of Python PACKAGING? 🐍📦 - HynekNice context on how uv fits into all of the existing packaging challenges and some hope for the future.venmo feed is public by defaultMichael:
ngrok Python SDKDjangonauts on Talk PythonMaybe just a new case and battery for your phone?Joke: Ship it!
-
Topics covered in this episode:
uv: Python packaging in RustjptermEverything You Can Do with Python's textwrap ModuleHTML FirstExtrasJokeWatch on YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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.
First, we are likely skipping next week folks. I’ll be at PyCon Philippines.
Brian #1: uv: Python packaging in Rust
Suggested by Collin Sullivan“uv is designed as a drop-in replacement for pip and pip-tools”Intended to support the pip and pip-tools APIs, just use uv pip instead.Oh yeah, also replaces venv and virtualenv.And it’s super zippy, as you would expect.I’m still getting used to ituv pip venv didn’t have --prompt at first. But that’s fixed. should get released soon.first thing I trieduv pip install ./ and uv pip install pytest second. worked awesomeuv pip list third thing I triednot there either, but uv pip freeze is similar.Issue already filedSeriously, I’m excited about this. It’s just that it seems I wasn’t the target workflow for this.See alsotox-uv - speed up tox with uv[rye](https://lucumr.pocoo.org/2024/2/15/rye-grows-with-uv/) from Armin Ronacher, will be supported by Astral- MK: Switched to this for dev. It’s excellent.For some reason, doesn’t work on Docker?From HenryMichael #2: jpterm
via David Brochartjpterm is a JupyterLab-like environment running in the terminal. What sets jpterm apart is that it builds on the shoulders of giants, one of which is Textual.It is designed similarly to JupyterLab, where everything is a plugin.Brian #3: Everything You Can Do with Python's textwrap Module
Martin HeinzNice quick demo of one of my favorite builtin modules.Featuresshorten text and insert placeholderswrap can split lines to the same lengthbut can also just split a string into equal chunks for batch processingTextWrapper class does all sorts of fancy stuff.dedent is my fave. Awesome for including a multiline string in a test function as an expected outcome.Michael #4: HTML First
HTML First is a set of guidelines for making it easier, faster and more maintainable to build web softwarePrinciplesLeveraging the default capabilities of modern web browsers.Leveraging the extreme simplicity of HTML's attribute syntax.Leveraging the web's ViewSource affordance.PracticesPrefer Vanilla approachesUse HTML attributes for styling and behaviourUse libraries that leverage HTML attributesAvoid Build StepsPrefer Naked HTMLBe View-Source FriendlyExtras
Brian:
pytest 8.0.1 released. Fixes the parametrization order reversal I mentioned a couple episodes ago, plus some other fixes. Learn about dependency injection from HynekIf you want to jump into some Rust to help speed up Python tools, maybe check out yarr.fyiI just interviewed Nicole, the creator, for Python Test, and this looks pretty coolHer episode should come out in a couple of weeks.Ramping up more interviews for Python People. So please let me know if you’d like to be on the show or if you have suggestions for people you’d like me to interview.Also, I know this is weird, some people are still on X, and not like “didn’t close their account when they left”, but actually still using it. This is ironically a reverse of X-Files. “I don’t want to believe”. However, I’ve left my account open for those folks. I check it like twice a month. But eventually I’ll see it if you DM me. But really, there are easier ways to reach me.Michael:
PyData Pittsburg CFPWyden: Data Broker Used Abortion Clinic Visitor Location Data To Help Send Targeted Misinformation To Vulnerable WomenSciPy 2024 - Call for ProposalsJoke: Yeti tumbler
-
Topics covered in this episode:
AppleCrateOne way to package Python code right nowFlask8 but why?Extra, Extra, ExtraExtrasJokeWatch on YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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.
Michael #1: AppleCrate
By Rhet Turnbull (from Building macOS Apps episode)AppleCrate is a tool for creating native macOS installers for your command line tools. It's useful for creating installers for command line tools written in any language. Tools written in interpreted languages like Python will need to be first processed with a tool like pyinstaller to create a standalone executable.AppleCrate uses Jinja2 templates to generate the files required for the installer. This allows you to use template variables in your files or command line parameters to customize the installer.Brian #2: One way to package Python code right now
Ned BatchelderAn example repo with all the parts for packageA lot of discussion and what to think about in the README (unfortunately rst and not md, but we can’t have everything)Includespyproject.tomldev-requirements.txtREADME.rstMakefileLICENSE.txt.bitignore.editorconfigsee https://editorconfig.orgShout out to to Packaging Python Projects on python.org, which is pretty goodMichael #3: Flask8 but why?
Ihor Kalnytskyi: Something I really like about #ruff, a new tool for both linting and formatting in the #python ecosystem. You can literally pick any lint rule it supports and see both reasoning and examples.Ruff supports over 700 lint rules, many of which are inspired by popular tools like Flake8, isort, pyupgrade, and others.Brian #4: Extra, Extra, Extra
Flat.app kinda like trello, etc. but a very simple interface that makes it pretty easy to usetosdr.orgTerms of Service; Didn’t ReadKind of a wikipeda way to summarize the terms of service of different web services, and give them ratings/gradesWhy I writeI talked about blogging more last episode. Here’s a cool write-up by Sheena O'Connellreasonsto rememberto refine my thinkingto impactto get through hard timesto connectThree pytest Features You Will LoveHelen Scott at JetBrains/PyCharmFixtures, Markers, ParametrizePlus shoutouts to my course and bookExtras
Brian:
Wikipedia List of common misconceptions - just for funEar Trumpet Labs (a Potland Company) Edwina mic - just something on my wish listMichael
Mozilla MonitorPython 3.12.2Upgraded all the Python apps (11 of them) in about 2 minutes and one commandGot a Vision Pro? Try the Talk Python Courses appGreat video event: Data Doodling with Martina PuglieseJoke: Free Tier
-
Topics covered in this episode:
DokkuSummary of Major Changes Between Python VersionsHow to check Internet Speed via Terminal? speedtest-cliBlogs: We all should blog moreExtrasJokeWatch on YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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.
Michael #1: Dokku
An open source PAAS alternative to Heroku.Dokku helps you build and manage the lifecycle of applications from building to scaling.Powered by Docker, you can install Dokku on any hardware.Once it's set up on a host, you can push Heroku-compatible applications to it via Git. Rich plug in architecture.Brian #2: Summary of Major Changes Between Python Versions
Nicholas HairsChanges between versions & Tools & utilities to help with switchingHopefully you’re already at least at 3.8, but come on, 3.11 & 3.12 are so fun!Useful thingspyupgrade can automatically upgrade code base(However, I frequently just upgrade and run tests and let my old code be as-is until it bugs me. - Brian)black checks pyproject.toml requires-python setting and uses version specific rules.Versions (way more highlights listed in the article)3.8 Assignment expressions := walrusf"{variable=}" now works3.9 Typing has built in generics like dict[], so no more from typing import DictDict union operatorStrings can removeprefix and removesuffix3.10Structural pattern matching match/caseTyping: Union using pipe |Dataclasses support slots=True and kw_only=True3.11tomllib included as a standard TOMP parserException groupsException Notes add_note()Typing: A Self typeStar unpacking expressions allowed in for statements: for x in *a, *b:3.12f-strings can re-use quotesTyping: better type parameter syntaxTyping: @override decorator ensures a method being overridden by a child class actually exists.Michael #3: How to check Internet Speed via Terminal? speedtest-cli
Command line interface for testing internet bandwidth using speedtest.netJust pipx install speedtest-cliHas a Python API tooBrian #4: Blogs: We all should blog more
Jeff Triplett is attempting one post per day in FebruaryFeb 1: Choosing the Right Python and Django Versions for Your ProjectsFeb 2: My First MacWhich also links to a quite interesting Personal: Default Apps 2023Feb 3: What’s Your Go-to Comfort Media? [rough cut]Feb 4: The Django apps I actually use (rough cut)Feb 5: How to test with Django and pytest fixturesNeed ideas? Check out Build an idea bank and never run out of blog ideasNot using AI? Thanks. We appreciate that.Maybe tag it as Not By AIExtras
Brian:
If upgrading to pytest 8, be aware that running individual tests with parametrization will result in a reverse order. It shouldn’t matter. You shouldn’t be depending on test order.But it was surprising to me.Issue has been loggedMichael:
Orbstack follow upJoke: White Lies
-
Topics covered in this episode:
Granianpytest 8 is hereAssorted Docker GoodiesNew GitHub Copilot Research Finds 'Downward Pressure on Code Quality'ExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/369 -
Topics covered in this episode:
Syntax Error #11: Debugging Pythonumami and umami-analyticspytest-suite-timeoutListmonk and (py) listmonkExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/368 -
Topics covered in this episode:
Leaving the cloudPEP 723 - Inline script metadataFlet for Androidharlequin: The SQL IDE for Your Terminal.ExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/367 -
Topics covered in this episode:
Python 3.13 gets a JITUniDep - Unified Conda and Pip Dependency ManagementDon’t Start Pull Requests from Your Main Branchinstld: The simplest package managementExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/366 -
Topics covered in this episode:
* Hatch v1.8*svcs: A Flexible Service Locator for PythonSteering Council 2024 Term Election ResultsPython protocols. When to use them in your projects to abstract and decouplingExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/365 -
Topics covered in this episode:
A Python/Django Advent calendarDropbase helps you build internal web apps with PythonReal-world match/caseExtra, extra, extra, so many extras!ExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/364 -
Topics covered in this episode:
Fixit 2: Meta’s next-generation auto-fixing linterFastUIMail list / newsletter conversationCLIs from type hintsExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/363 -
Topics covered in this episode:
Habits of great software engineersFlask 3.0Build Conway's Game of Life With Pythonpolars businessExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/362 -
Topics covered in this episode:
The many shapes and sizes of keyboardsappeal - a CLI framework from Larry HastingsGraphinate: Data to GraphsA Disorganized List of Maintainer TasksExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/361 - Montre plus