Python Bytes - #437 Python Language Summit 2025 Highlights

Episode Date: June 23, 2025

Topics covered in this episode: * The Python Language Summit 2025* Fixing Python Properties * complexipy* * juvio* Extras Joke Watch on YouTube About the show Sponsored by Posit: pythonbytes.fm/...connect Connect with the hosts Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky) Brian: @brianokken@fosstodon.org / @brianokken.bsky.social Show: @pythonbytes@fosstodon.org / @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: The Python Language Summit 2025 Write up by Seth Michael Larson How can we make breaking changes less painful?: talk by Itamar Oren An Uncontentious Talk about Contention: talk by Mark Shannon State of Free-Threaded Python: talk by Matt Page Fearless Concurrency: talk by Matthew Parkinson, Tobias Wrigstad, and Fridtjof Stoldt Challenges of the Steering Council: talk by Eric Snow Updates from the Python Docs Editorial Board: talk by Mariatta PEP 772 - Packaging Governance Process: talk by Barry Warsaw and Pradyun Gedam Python on Mobile - Next Steps: talk by Russell Keith-Magee What do Python core developers want from Rust?: talk by David Hewitt Upstreaming the Pyodide JS FFI: talk by Hood Chatham Lightning Talks: talks by Martin DeMello, Mark Shannon, Noah Kim, Gregory Smith, Guido van Rossum, Pablo Galindo Salgado, and Lysandros Nikolaou Brian #2: Fixing Python Properties Will McGugan “Python properties work well with type checkers such Mypy and friends. … The type of your property is taken from the getter only. Even if your setter accepts different types, the type checker will complain on assignment.” Will describes a way to get around this and make type checkers happy. He replaces @property with a descriptor. It’s a cool technique. I also like the way Will is allowing different ways to use a property such that it’s more convenient for the user. This is a cool deverloper usability trick. Brian #3: complexipy Calculates the cognitive complexity of Python files, written in Rust. Based on the cognitive complexity measurement described in a white paper by Sonar Cognitive complexity builds on the idea of cyclomatic complexity. Cyclomatic complexity was intended to measure the “testability and maintainability” of the control flow of a module. Sonar argues that it’s fine for testability, but doesn’t do well with measuring the “maintainability” part. So they came up with a new measure. Cognitive complexity is intended to reflects the relative difficulty of understanding, and therefore of maintaining methods, classes, and applications. complexipy essentially does that, but also has a really nice color output. Note: at the very least, you should be using “cyclomatic complexity” try with ruff check --select C901 But also try complexipy. Great for understanding which functions might be ripe for refactoring, adding more documentation, surrounding with more tests, etc. Michael #4: juvio uv kernel for Jupyter ⚙️ Automatic Environment Setup: When the notebook is opened, Juvio installs the dependencies automatically in an ephemeral virtual environment (using uv), ensuring that the notebook runs with the correct versions of the packages and Python 📁 Git-Friendly Format: Notebooks are converted on the fly to a script-style format using # %% markers, making diffs and version control painless Why Use Juvio? No additional lock or requirements files are needed Guaranteed reproducibility Cleaner Git diffs Powered By uv – ultra-fast Python package management PEP 723 – Python inline dependency standards Extras Brian: Test & Code in slow mode currently. But will be back with some awesome interviews. Joke: The 0.1x Engineer via Balázs Also StormTrooper vlog BIGFOOT VLOG - ATTACKED BY WENDIGO!

Transcript
Discussion (0)
Starting point is 00:00:00 Hello and welcome to Python Bytes where we deliver Python news and headlines directly to your earbuds. This is episode 437. I can't believe that recorded June 23rd, 2025 and I am Brian Ocken. And I'm Michael Kennedy. And this episode is sponsored by Posit. So check out that section later in the episode. We really appreciate it. If you'd like to send us items or comment on the show, you can reach all of us. The links to our socials on Blue Sky and Mastodon are in the show notes, so check those out.
Starting point is 00:00:33 And if you'd like to sometime join us live or at least watch the show even later, since they're all up later, you can head over to pythonbytes.fm slash live and find out where all the videos are or a schedule to watch us. Um, we, or hang out with us. We, um, we do watch the chat and sometimes take questions from there. There are extra comments and that is Mondays at 10 a.m.
Starting point is 00:00:57 Usually 10 a.m. Pacific time. Also finally, um, please, um, please go over to pythonbytes.fm and sign up for the newsletter. We're putting a lot of work into this to try to make this a useful resource for you, not just the links to the topics, but some of the background information. And it's just more than just the show notes. So check it out. And they won't know until they subscribe, right?
Starting point is 00:01:21 Yeah, you just I mean, you can always delete it. Like we don't sell that sell your name or anything or spam you. So, might as well sign up and try it. Speaking of, I guess Python stuff, Michael, do you want to kick us off with the first topic? I have a meta topic, a topic of topics, if you will. The Python Language Summit was held at PyCon this year back in May, I guess May 14th in Pittsburgh, Pennsylvania.
Starting point is 00:01:47 However, why are we talking about this now? Because Seth Michael Larson, who is the, I don't know, title exam, I messed it up, sorry Seth, security developer in residence at the PSF for Python, was the official note taker, blogger, eyes of the community sort of thing. And they just, it just published on June 12th, the Python language summit 2025 write up,
Starting point is 00:02:11 which is a write up of the whole event and the 10 or so talks that were given there. So you get some really interesting looks into where the core developers are focusing, what they're considering for the future. Most of the stuff is forward looking, or at least if it's not 100% forward looking, it's like, hey, we should be doing this.
Starting point is 00:02:30 It's talking about problems that need to be solved in the future, you know? So I actually interviewed Seth over at TalkPython. This will be out in a couple of weeks. The live stream like ours is also available here at the links on TalkPython. So people can't wait for the edited version they can check that out but just to give you a sense of what was out there some of the topics included how do we make breaking changes less painful that was itamar orin from
Starting point is 00:02:58 meta talked about like when you move from say python 311 to 313 or something like that like what broke you know when you have millions of lines of Python like meta does and that's executing at scale, you know, maybe minor things that might seem minor inconsequential to the rest of us. Like all of a sudden, that 5% performance change here made a big difference one way or the other, like that kind of stuff, right?
Starting point is 00:03:19 And it's, it talks about non-obvious problems. Like for example, if you want to learn about something that was taken out, there's a problem because part of a standard library was removed. Well, the documentation was also removed. So it's like, how do you find the thing that was documented? But it's no longer there. You can go back in history to the different versions
Starting point is 00:03:41 of Python docs. But the default is latest, which no longer, which are basically 404s, which is weird. So like that kind of stuff, right? And then. That's a decent idea, just to like leave it in for versions and say, hey, this is going on. Just make the background like red or yellow or something.
Starting point is 00:03:57 Go, this thing is dead. If you're viewing it, stop viewing it. It's gonna hurt your eyes. Um, the next, there was a whole series, I would say a third of this entire conversation was on async IO threading concurrency, crazy ideas about how do we deal with, what can we do to make it obvious at runtime that you're running into threading problems.
Starting point is 00:04:19 Because just last week, Brian, you talked about this, the experimental tag came off of the free-threaded Python, so now it's really free-threaded, it's truly free. But there's a lot of, like, well, what are the consequences of that, and how do we build for that, and what can we do to make this easier? And I'll put that in quotes.
Starting point is 00:04:35 So there was an uncontentious talk about contention by Mark Shannon, which is like concurrency, what can we do to make things more immutable so that we can share them more easily and so on There's the state of free threaded Python by Matt page fearless concurrency by three folks Matthew Tobias and free job anything else on threading Sort of not really but you know out of ten talks. That's quite a bit
Starting point is 00:04:58 Yeah, there was some docs updates by Marietta the challenges of the steering council Like basically how has it been going the last couple years now that we have a steering council and not a BDFL? And that was by Eric Snow. It's pretty interesting, like, hey good news things are still working, not great news. Stuff led by a committee of volunteers goes slower than one person just goes, sounds good, surprise. Some packaging stuff by Barry Warsaw and Praetium Gidham. Python on mobile by Russell Keith McGee. So this is interesting in that heps 730 and 738 have been completed and Russell went in front of all the core devs and said after many years this year I can say
Starting point is 00:05:36 that Python on mobile is there. How about that? Now that doesn't mean all the tooling, front-end frameworks, UI frameworks, all that kind of stuff are there for building Python apps, but CPython is now a tier three supported platform, which means the core developers as part of the continuous integration and everything of Python itself, make sure that it also builds on iOS and Android. That's what that means.
Starting point is 00:06:00 Still good news. Yeah, I'm looking forward to the time where, I mean, I know that everybody is, but it'd be cool if I could just open up PS Code or PyCharm and write a iPhone app. I would probably practice my backflip, see if I could do a backflip if that happened. That would be so awesome.
Starting point is 00:06:17 It'd be so good. Yeah, it would be so good. That and JavaScript front-end, like Python, PyScript front- ends. Let's go. I'm here for both of them. Speaking of which, there is an update on Pyodide and the JavaScript FFI, the language bindings that allow PyScript or Pyodide, actually specifically Pyodide, to talk to the JavaScript stuff. So from Python front end stuff, you can actually interact with JavaScript directly rather than indirectly,
Starting point is 00:06:45 a little bit more clearly. And most importantly, there's slight variations in how you do this in MicroPython and PyOdied, which means you can't use interoperable code between the two in PyOdied PyScript world, which is weird. And this is about trying to solve that, amongst other things. And then finally, what do core developers want from Rust? Do people want Rust? Do they not want Rust? And if you're looking for native,
Starting point is 00:07:11 probably the biggest piece of news here is that our best estimate is somewhere between a quarter and a third of all native code being uploaded to PyPI for new projects is based on Rust. That's pretty big. It is pretty big. Yeah. Yeah. Yeah. All right. So I think either check out the blog post
Starting point is 00:07:29 or listen to the episode I did with Seth. This is good stuff to track. OK, nice. All right, well, I'm going to change gears completely and just talk about zooming on one thing about Python, and that is Python properties. So Will McCougan wrote an article called fixing Python properties.
Starting point is 00:07:52 And I just thought it was an interesting take on how to get around some type checking quirks. So it starts off with talking about basically the properties are awesome and the type checkers are fine with properties. However, the type of a property is taken from the getter method. And I guess that makes sense. But there really are two, there's getter and setter. So if those types don't match, your type checker is not going to like it. And so he walks through a, and I'm like, well, why, why would you want different types for your getter and setter? And he walks through a and I'm like, well, why, why would you want different types
Starting point is 00:08:25 for your good or insetter? And he walks through a padding dimension example, which is I think, I mean, he's doing textual. So a decent, um, just an example of he wanted to be able to just have somebody be able to say, Hey, um, for my padding, if there's, there's really four values, but kind of like with CSS, if you provide one value, it's applied. I don't remember all the rules. It's applied everywhere. If you apply two set two paddings, it'll apply to like the,
Starting point is 00:08:58 distribute them appropriately just like CSS. And so you can do basically one value, two values, or just an integer, a tuple of events of just two values, or you can provide four. And all of this should just work. And it does with Python, you can make it work with like some, you know, with your code checking for all of those things. But with type checkers, it'll say you're doing something wrong. And he said, I could make it like type check better, but just like kind of destroy the user experience. But instead, he provides instead of doing properties, so he just like rips out the idea of the property. In the first example, he's using the property, the decorator. But he uses what he calls a descriptor, which is, I don't know if this is a real thing.
Starting point is 00:09:50 Like he talks about it as if it's like a programming construct, but I'm not familiar with it. Anyway. Yeah, I think it's part of Python, like an advanced get adder, set adder sort of thing. It's a class that has has it's just a class that defines both a get and a set method. So that's the your descriptor class. And he uses that instead of instead of a property. And that is all it takes to to be able to make it work without without PIPI or without type checkers freaking out. So that's just it. Oh, an update. Somebody, Peter pointed out an issue.
Starting point is 00:10:29 Okay, well, I haven't read that part, but. You know one of the problems with typing all over them, like, and his thing says, look, it might be fine in MyPy, but then in VS code, the PyLance validator understands this differently and gives you an error. One of the things that drives me utterly crazy is like you've got these different tooling and they all have a slight variation of like,
Starting point is 00:10:52 that's fine or like actually no, that's not fine. And we've got Ty and you've mentioned Pyrefly coming as well which are gonna be other ones, probably have slightly different defaults. And so when you say I fixed it, like what did you fix it for? Exactly. For all of them? Did you fix it from your editor?
Starting point is 00:11:09 Did you fix it for this CI? Like there's a lot of variations and it drives me crazy. And it's especially so I just have like a couple small packages that I maintain and I have like, you know, like PyTouch check is now type, has type hints around it and that's helpful, but it's a little bit of a quirky thing. And it doesn't, it works fine on MyPy, but it doesn't work on some of the others. And I've had people-
Starting point is 00:11:37 Like PyWrite or something, yeah. Yeah, about that. And like, well, use MyPy. I don't know. But you can't really, if it's a dependent library, you really want to use that for everything. So- Yeah, exactly. I don't know. You can't really, if it's a dependent library, you really want to use that for everything. So yeah, exactly. It's, it is, it is a mess. I've had some stuff like that. It's like, this thing doesn't work right on pirate. Like, okay, help me understand why I care about that.
Starting point is 00:11:55 But they're like, you know, if I use it in this, this setup, I'm gonna just get like errors. And it wasn't something super mild. It was for one of my web things and basically the library was used as a decorator so anything they decorate now gets like invalidated in terms of its type. I wonder if that's something now that I probably for libraries we should be testing against multiple type checkers not just one. Probably it's super annoying but yeah probably. And then here's the most annoying part of it was though I think it was pyrite is like pyrite was giving errors that now the flask View method doesn't match the type or something. Hmm, but flask doesn't flask was fine with it and
Starting point is 00:12:37 Nobody ever ever ever Directly calls those functions only flask to calls it and so like here's some functions nobody calls them it's affecting nobody because they don't No one even sees the type information flasks that flask is fine But I still have to like do really complicated typing information to get the type checkers To stop giving the one like are you serious? It's not getting easier because we're getting more type checkers Well, I thought all this was supposed to just be kind of invisible and we just, we just get benefit and no cost, but.
Starting point is 00:13:09 Till you get an issue about it. Now I appreciate the people found the issues because I did fix it, but it was, it was like a couple of hours of really complex type juggling. Oh, you're a nicer person than me. For something over equal. Yeah. Well, First thing that nobody, yeah, well. I did the classic, yeah, I don't use Pyright, but I'd accept a pull request. Yeah, exactly. One other thing, so rolling back just a tiny bit, properties, if I had to say, somebody said,
Starting point is 00:13:39 Michael, what is the clumsiest, most non-intuitive, less than ideal, less readable, or just a bad part of Python, the language properties. It's so bad. I could have like in separate files, maybe it made me as separate parts of files, I could say over here is a getter and then somewhere else there's some weird setter and like what is the setter dot something like just the the at setter dot variable name of a thing i've defined before it's just so chunky weird and like the typing is messed like
Starting point is 00:14:13 if you look at the way c sharp does this i'd probably other languages as well it is so nice you just public int property name you have a getter and you have a setter right in there i know that you could create separate classes for descriptors like Will was talking about. I think there might be maybe different performance profiles for those property versus a descriptor. But I would really like to see Python clean up. It doesn't have to be what C sharp does, but something where like they go together. They're obvious. You're not defining it twice, etc. Etc. Etc. It'd be nice. Wouldn't it be nice Brian? Wouldn't it be nice? You know what is nice though our sponsor this week Posit. Super excited
Starting point is 00:14:52 Let me tell you about what they're offering everyone So this episode is brought to you by the nice folks at Posit. So Posit originally They came out of the R space, right? They made R studio and they made some other things, but they really have been putting a lot of effort into Python these days, right? They've created Posit Connect, awesome way to run and host your data science stuff.
Starting point is 00:15:15 They've made Shiny for Python, which is like a reactive notebook like Marymo or a little bit like Jupyter notebooks and stuff. So they're doing awesome stuff. So I'm really, really happy have them sponsor in the show. Today I want to focus on data science workloads and how to host them. So you have dashboards, reports, plots, interactive web apps, all the way to custom Flask or Django apps. They have a service called PositConnect and
Starting point is 00:15:40 PositConnect makes it easy for data scientists to share work they built with Python. So if you got a Streamlet app, a dashboard, Plotly, interactive plots, FastAPI, Quarto, just connect it to there and their service will maintain it and connect automatically, hosts it, updates it for you and so on. So you can even have it update reports on a schedule. So if you host a dashboard, you can have it rerun the data science stuff that computes the graphs and does the summaries like on a cron job sort of thing on a schedule. So no reason to explain to stakeholders why the dashboard or plot stopped updating last
Starting point is 00:16:15 week. You just set it up, pause it, connect, got it going. So you can focus on your data science, work and leverage your skill set while connect makes you look good, keeping your code running and private with connect You get a private URL on your connect server ensuring that your asset is continuously available to your shareholders you can control which users have access to that asset and Just like connect handle all your DevOps for you. You can share your work. Keep doing what you do best So if you work on a data science team, you owe it to you and your org to check out PositConnect. Just visit pythonbytes.fm slash connect
Starting point is 00:16:49 and get a three month free trial and see if it's a good fit. That's pythonbytes.fm slash connect. The link is in your podcast player show notes right at the top. Thank you for deposit for supporting Python Bytes. Yes, thank you. Mm-hmm, and a rewrite. All right, well, next I want to talk about some complexity
Starting point is 00:17:09 in your code and complexipy. It's C-O-M-P-L-E-X-I-P-Y. This is a project that's new to me. And actually, looking at the repo, it looks kind of new. It's modified in the last weeks. So, uh, I'm really kind of enjoying it. So what is complexify? So, um, it's an extremely fast python. It's a, I'm quoting here, an extremely fast python library to calculate the cognitive complexity of python files. And it's written in Rust. Just like you said, a lot of PyPI stuff going up that's written in Rust lately or written parts of it in Rust. Looks like
Starting point is 00:17:49 45% Rust, 23 Python. Anyway, this reminded me that I should be paying attention to complexity. So I'm glad this came out. So what is cognitive complexity? Well, it's kind of like cyclomatic complexity. Do you remember cyclomatic complexity? Kind of. I'm going to include a link to the Wikipedia page, but you can look. But so I remember it from Flake 8. So Flake 8 had cyclomatic complexities and using the McCabe, I don't know, the McCabe test around it. But it would just sort of, I never used McCabe directly, I just used it with Flake8. And now actually I'm using it with Rough, which is kind of cool, I just recently realized this, that you can pass in the rule C901 and you can check, do a complexity check on with rough, with your
Starting point is 00:18:46 rough tests. So that's super awesome. Um, and so this is, uh, so this is kind of fun. Uh, but what are we looking at for cognitive complexity? Well, there's a, um, I should have linked to, there's a link within here of the white paper. There's a white paper and you kind of have to, the white paper comes from a sonar source. They do Sonar cube. If anybody's familiar with that, it's a static analysis stuff. And I read the white paper and I skimmed it really, but it's a things it's it's similar. So it's actually a really easy read talking about how the idea around it is not just like giving you a number for your entire source code of how complex stuff is and where the problems are, but really looking at everything.
Starting point is 00:19:32 So there's more loops, more structs, more everything. It's really a little bit different take looking at really the maintainability. So there's a discussion in the white paper talking about that that cyclobatic complexity was intended to make it to measure how testable and maintainable and the testable part comes from that the testability like if you have multiple branches you have to test all the branches. So more branches means more tests. That it does well, but the authors of the white paper don't really believe that
Starting point is 00:20:11 that it does measures maintainability as well. So this is another attempt. And I think it does pretty good. And plus it's super fast and the output is great. So I ran it on a couple of the, I ran both the rough version of the McCabe test and then this against my code, some of my code. And it came up with the same hotspots. And so I'm gonna look at what the output looks like. Wish this was in color, cause it's in color when you're doing it on the command line
Starting point is 00:20:43 and the colors really help. Cause it does like zero means like there's no problem here. It's not a complex code. And then the numbers go up and there's, I think there's levels that you can set, but it's, there's the defaults are fine of, you know, yellow and red for things that you really wanna care about. And then by default it lists,
Starting point is 00:21:03 like you pointed at a directory and it'll list out everything. You can just tell it to just let you can have it just list the problem parts too. But it is kind of nice to just see the whole thing if you've got not too, too large of a project. If you have a huge project, definitely just look at the problem parts. The reason why I I'm really like excited about this again, Oh, it talks about the analysis here in the, in the read me even me even that's nice and you can output it to a CSV file or whatever but I just like I did it on the command line because I the why why would i use this not just as a pass fail within CI which is a good idea to do a pass fail and see what i to know is the areas of my code that probably
Starting point is 00:21:45 might need refactor to be less complex but if they're already where it is clean as they can be or they're that bit of code that you have that the person that wrote it is gone and you're not sure how to touch it. Those are the areas to really throw some unit tests around or some subsystem tests around those areas are a good thing. Anyway, think about, remember complexity and I like the idea of not just of thinking of cognitive or maintainability complexity. This is a really cool idea.
Starting point is 00:22:20 I like it. I am an absolute junkie for this stuff. I love it so much. So I'm glad glad you pointed out Christian down the audience says great radon radon is really slow So cognitive complexity is the last thing preventing me from dropping flex eight like eight very cool and I Used to I mean what I say used to I'm talking like years ago, use this tool called Code Rush, which was amazing. I've still not seen anything as great for an editor add-on
Starting point is 00:22:50 as it did, even to this day. So good. One of the things it did though, is it had maintenance complexity, cyclomatic complexity, and I don't know if it had this cognitive, but it had like line count was an option. And next to every, in your editor, next to every function or type in like a class or something,
Starting point is 00:23:07 it would have the, you could choose, like do you want the maintenance complexity or the cyclomatic complexity, just sort of ambiently buy your things that you, and you could be like, or you can run an analysis to say these are the seven that are like over some sort of threshold. You say like, I don't want it over 75
Starting point is 00:23:22 for my maintenance complexity, whatever that means. Yes, if people know about that, extensions like that for PyCharm and other editors, shoot us a, put a comment on the YouTube channel, on the YouTube video or, and mention that somewhere, something like that. I'll have to try it out because Complexify does have a VS Code extension.
Starting point is 00:23:40 I don't know how it looks though, so we'll have to check it out. Yeah, does that just output it in the terminal? Or does it actually overlay it like code lens. Yeah, it'd be cool if it was a little overlay so Pat is spreading fake news Pat Decker has a hot hands who's been on the shows as Michael volunteers a creative VS code extension So I just heard We're gonna edit that section out we'll just move right along here No, it's fun. OK.
Starting point is 00:24:06 I want to talk more data science stuff. Let's talk Juvio. J-U-V-I-O? I don't know. How would you say it, Brian? Every one of these needs like a little pronounce. How do I pronounce this button? Hoov.
Starting point is 00:24:18 Juvio. Is it Spanish? I don't know. So Juvio is a reproducible dependency aware, get-friendly Jupyter notebook. All that sounds interesting and there's a lot of things that say that, but what is, for me, what is, how do I think of this? And it is in the name. It's a Jupyter notebook sort of environment that is based on UV. So one of the things I find super clunky about Jupyter notebooks, and JupyterLab, and Jupyter, is you can create a virtual environment. You can install Jupyter notebooks and Jupyter Lab and Jupyter is you can create a virtual environment, you can install Jupyter, you run it and then you have to somehow go
Starting point is 00:24:48 and independently outside of Jupyter register your kernel to find that virtual environment so then you can use that thing. It's just like what? Okay so Juvio allows you to basically run commands in your notebook to install things right. You can actually use the script thing from UV where you say script requires this version of Python, these versions of the dependencies, and then when you open it up, Juvio installs the dependencies automatically in an ephemeral virtual environment using UV. All of that, I'm loving. How cool is that? So you just put in, you know, this is what this notebook
Starting point is 00:25:25 depends upon, even the version of Python, and if that version of Python is not on your machine, UV will download it and then create a virtual environment for you, that is awesome. That is awesome. Yeah, it's also Git friendly, so notebooks are converted on the fly to script style format, which is where you have the hash, then percent then percent percent so if you open it up in
Starting point is 00:25:45 like PyCharm or VS Code it has like cell type behavior. This one is for the Brave. It is an early beta. It's better than early alpha I suppose but an early beta so check it out. But yeah, pretty nice. You can enable it as a extension. That's how you basically set it up. That reminds me like a little bit of a tangent, but you know that with UV, you can put those little script things at the top of your file to do your dependencies just in the file?
Starting point is 00:26:13 Yeah, that's the same thing here, by the way. Yeah, I've just realized I've been going through using some of the stuff that I've built over the last many years at work. And some of the stuff, I had been, they had been little tiny little packages and I realized that they're just, they don't need to be packages with this.
Starting point is 00:26:32 They just have a couple of dependencies and a single file script. And now they're back to just single file scripts again. That's cool. It's awesome. You just say UV run the script and it looks at that and says, all right, what do we need? Do we need Python?
Starting point is 00:26:44 What version of Python? What dependencies? And once it it looks at that and says all right. What do we need? Do we need Python? What version Python? What dependencies? And once it's cached that stuff once right once UV has cached that once is it's basically instant. Yeah, it's cool Yeah, yeah, super cool. So yeah, that's it's pretty much it if that sounds interesting to you check it out Let us know what you think but somehow making Jupiter notebooks work Automatically with ephemeral environments in pythons managed by UV speaks to me, I like it. Yeah. Oh, and Pat Decker suggests again,
Starting point is 00:27:11 alias py equals UV run. Perfect, so you can just pie your, doesn't work on Windows because there's already a pie, but alias itself doesn't work. So you know what? You have to create a batch file or something, I don't know. I guess.
Starting point is 00:27:24 I've been using bash on windows for decades, but yeah. You are such a rebel. So one quick extra for me is that testing code is not dead, but it looks like it. So testing code, the last episode of it came out, um, May 7th and checks calendar it's June 23rd. What's up there? What's up is kind of some life. Um, there's a lot going on outside of my day job and Python bytes that is pushing these out, but I have some great interviews already in the,
Starting point is 00:27:58 like ready. Um, they just need edited. So, um, stay tuned. There will be great stuff out. I just interviewed Sebastian Ramirez recently and there's some, some great interviews coming up. So stick with it. Be patient with me, please. Anyway, we'll be back. But I do, I never let Python Bites drop. It's weekly no matter what, because of Michael. Python B bites is awesome. Yeah, do you have any extras? I? Thought no, but I just realized I'll throw something out there. Okay, so later this week up in Washington almost in Canada There's the largest off-road motorcycle rally in the North America
Starting point is 00:28:37 I believe the tour tech rally which is like 1,500 people going to this campground and doing like joint rides and stuff I'm gonna be there from Thursday to Sunday if people are there Shoot me at the text come say hi or go riding together something like that. All right, it's in plain Washington. It's not fancy Yeah, you know it's like this is like basic camping. What can you put on your motorcycle and then camp from it for four days? Okay, it's gonna be very plain. It's actually right by the Leavenworth, which I think is kind of a cool place. Oh, yeah That's it for my days. It's gonna be very plain. It's actually right by Leavenworth, which I think is kind of a cool place. Cool, oh yeah. That's it for my extra. So shall we do a trio of jokes?
Starting point is 00:29:10 Sure. All right, so someone sent this in, and I'm so sorry I forgot who sent it in, but I found it in multiple places, and it was really great that they did. Programmers are human. I think we've covered stuff from him before. This amazing German guy who does really good jokes. I think we talked about the from him before. This amazing German guy does really
Starting point is 00:29:25 good jokes. Like I think we talked about the vibe coding one one time. Yeah. Remember that senior engineer tries vibe coding. That was so good. So he's back with the interview with the 0.1 X you've heard the 10 X engineer like the 0.1 X engineer full. I found the full episode. The 10th. What do you think of it? This was hilarious. I found the full episode. The 10th episode. What do you think of it? This was hilarious. I immediately, as soon as I watched this, I texted you also and said, have you seen this? Like yeah, I watched it half an hour ago. It's so good. We're not going to play it because I don't know, like, it's someone else's YouTube work. We'll let them have it. But it is so good. It is certainly five minutes of time well spent.
Starting point is 00:30:05 So we'll link to the YouTube video. It's got awesome comments like, yeah, the last stable release? Yeah, that was before I joined the company, wasn't it? Stuff like that. Or, my job at the company is to optimize the file size of the readme. Yeah, yeah, or there's some, I've forgotten a lot of them,
Starting point is 00:30:25 but there's some really good, good, good one-liners to. You want some sweet one-liners? Yeah, here we go. This is it. And totally unrelated, I have two more, not related to this, but I think Python relevant is Google came out with VO3, which is a way to make full film AI content,
Starting point is 00:30:46 not just images, but it's images, voice, movie, it's insane. And so I've stumbled across this. Now, before you click on this and before you visit it, I must warn you, this is like kryptonite to your YouTube feed, so if you watch this, it will take days to get anything normal on your YouTube feed again. I don't know why, do it in incognito, just trust me. Don't make the mistake me and my daughter made she's like dad
Starting point is 00:31:09 I got it literally got a text dad. You've destroyed my YouTube feed so there's a couple of Video a couple of channels and there's like multiple ones of these but I'll link to a couple that are really good There's a Bigfoot and a Yeti channel and all all these are like vlogs, like the day of the, like in the day of the life of, like Bigfoot and so on. And oh my goodness, is this so funny? And it is incredibly good.
Starting point is 00:31:36 So you can only make eight second clips, right? With this video thing. So what they do is they just make clip after clip after clip as like little segments in like the vlog of the life You know and it's if you haven't seen this I think you'll be surprised if you there's the the Yeti Bigfoot one Which is real good
Starting point is 00:31:51 And then there's also the day in the life of a stormtrooper adventures of Dave and Greg these these are so funny And you know they're made with Python somewhere along the way because of all the AI stuff and the VO and and whatnot, but Just remember Incognito or you don't blame me. Yeah, I'll probably just use the Python Python account to watch these. Yeah, exactly. Yeah, please. We'll have nothing. We'll have nothing but these things in there. Now it's really funny and it's just one more AI thing in this world that we live in that is just a weird time, but it's super creative too. Like people really are being creative with it.
Starting point is 00:32:27 So it's fun. Okay, and I gotta just say that like, you know, wherever you stand on AI, stuff like being able to make movies around with like Stormtrooper costumes and stuff, that is out of the realm of most people's budget. But the ability, I'm sure it's not, it sure it's fairly time consuming
Starting point is 00:32:46 to put these things together, but now it is in the realm of like somebody that just, just has some good writing, some good sense of humor to be able to put these things together. So that's good. Yeah. There's definitely good writing here. It's, it's, you've got to do the script and stuff, but comments are like, this is better content than Disney has done the last few years. It's really funny. So I mean, it's surprisingly well done. And the AI is, we live in weird times, right? That's all I can say. Well, an eight second clips. I mean, I mean, pay attention to the last action movie you ever you've watched that doesn't stick with the same camera angle for more than a few
Starting point is 00:33:21 seconds anyway. So yeah, yeah, it doesn't seem that out of place. All right, there's your jokes. Seriously, relevant joke, check out the 0.1x engineer. That's amazing. Yeah, definitely. Over lunch, maybe grab the logs. But try really one and you don't do it on your regular account. Yeah, all right.
Starting point is 00:33:41 Well, that's it for today. Wonderful episode with you again, Michael. Thank you. Yes. Thank you as well. And before we sign out, this is not something we've been doing lately, Brian, but maybe we should more. I just want to encourage people who are watching the YouTube channel here,
Starting point is 00:33:55 either live or in the future at some point, please subscribe to the channel, like the video, help us spread the word. Yeah. I guess we don't like do call to action too much, but like the videos, that would be great. But I also, we can grow the podcast more, share it with a friend. If you've got some new interns starting, say,
Starting point is 00:34:16 hey, you should keep up on Python much more, you should check out this podcast. It's staying up on Python and easy mode. You've got a car rider, you're mowing the lawn, you're doing the dishes, hit play, it's all good. Get to later. Bye.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.