Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book

#460: Overlooked Python Typing

Published Mon, Dec 1, 2025, recorded Mon, Dec 1, 2025
0:00
00:24:28
Watch this episode on YouTube
Play on YouTube
Watch the live stream replay

About the show

Sponsored by us! Support our work through:

Connect with the hosts

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.

Brian #1: Advent of Code starts today

Michael #2: Django 6 is coming

  • Expected December 2025
  • Django 6.0 supports Python 3.12, 3.13, and 3.14
  • Built-in support for the Content Security Policy (CSP) standard is now available, making it easier to protect web applications against content injection attacks such as cross-site scripting (XSS).
  • The Django Template Language now supports template partials, making it easier to encapsulate and reuse small named fragments within a template file.
  • Django now includes a built-in Tasks framework for running code outside the HTTP request–response cycle. This enables offloading work, such as sending emails or processing data, to background workers.
  • Email handling in Django now uses Python’s modern email API, introduced in Python 3.6. This API, centered around the email.message.EmailMessage class

Brian #3: Advanced, Overlooked Python Typing

  • get_args, TypeGuard, TypeIs, and more goodies

Michael #4: codespell

  • Learned from this PR for the Talk Python book.
  • Fix common misspellings in text files.
  • It's designed primarily for checking misspelled words in source code (backslash escapes are skipped), but it can be used with other files as well.
  • It does not check for word membership in a complete dictionary, but instead looks for a set of common misspellings. Therefore it should catch errors like "adn", but it will not catch "adnasdfasdf".
  • It shouldn't generate false-positives when you use a niche term it doesn't know about.

Extras

Brian:

Michael:

  • Follow up on tach from Gerben Dekker:
    • tach has been unmaintained for a bit but is not anymore. It was the main product from Gauge which is a Y combinator startup that pivoted to something unrelated and abandoned tach. However, https://github.com/DetachHead forked it but now got access to the main repo and has committed to maintaining it.
    • ruff analyze graph is fully independent of tach - we actually started to look into alternatives for tach when it became unmaintained and then found ruff analyze graph.
    • For our use case, with just a bit of manipulation on top of ruff analyze graph we replaced our use of deptry (which was slower - and I try to be careful depending on one-man projects).
  • A Review of Michael Kennedy’s book, “Talk Python in Production” - Thanks Doug

Joke: NoaaS

Episode Transcript

Collapse transcript

00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:05 This is episode 460, recorded, unbelievably, December 1st.

00:12 I'm Michael Kennedy.

00:13 And I'm Brian Okken.

00:14 And this episode is brought to you by us, especially Black Friday things that we have on offer.

00:21 I don't know, it's been a great Black Friday for me.

00:23 A lot of people really interested in the stuff that I put together, hopefully for you as well, Brian.

00:28 Yeah, I kind of forgot about Black Friday.

00:30 Well, the Black Friday has been going good.

00:31 What I forgot about was Cyber Monday.

00:33 So I did add today so people can use Cyber Monday code for the course today.

00:41 But yeah, I just added that this morning.

00:44 Well, people can look for an email from me if they're signed up to the newsletters.

00:49 Is your stuff, what's yours through?

00:51 Is it through today?

00:53 I think I'm going to have it end just tomorrow morning.

00:57 So in case people are like, oh, no, I always get emails like, I missed it by an hour.

01:00 Or just let it go another day and then turn it off.

01:04 So if you're not watching this live, you're kind of SOL.

01:06 Sorry.

01:08 No, I mean, they can listen today.

01:10 Like, this is timely news.

01:12 People have got to stay on top of Python by saying can't let it accumulate.

01:16 No, it's fine if you listen backwards.

01:17 There's a lot of stuff that's not that timely.

01:19 But one of my topics certainly is.

01:21 Anyway, yeah, that's going good.

01:24 Subscribe to the newsletter.

01:25 Follow us on the socials.

01:27 Make sure to subscribe here on YouTube as well if you're interested in catching that.

01:32 We intend the podcast to be an audio podcast.

01:35 But while we're doing the live stream, we do put stuff up on the screen.

01:38 And sometimes it helps to see it, you know, even though we do our best to keep it audio friendly.

01:42 Yeah.

01:43 Speaking of putting stuff on the screen, what do you got for us, Brian?

01:47 Well, today is December 1st, and that means that it's the first day of Advent of Code.

01:52 So I want to look to see how long this has been going on.

01:57 And I guess I don't.

01:58 I'll have to look harder.

01:59 I don't know how long this has been going on.

02:01 This is, so what this is, it's code puzzles that you can do in any language.

02:08 The intent is to do them in any language.

02:09 But of course, our listeners are probably doing them in Python.

02:12 Maybe Rust this year.

02:13 Who knows?

02:14 But this is from Eric.

02:16 Assembly as a stretch goal?

02:17 Come on.

02:17 Yeah.

02:20 This is from Eric Wassel.

02:22 And I really appreciate it.

02:24 This year's a couple changes.

02:26 There's no, let's see, there's 12 days.

02:28 And actually, I'm kind of grateful because I've never actually gotten through all 25.

02:34 And I might, or 24, or how many of them anywhere.

02:37 But so I'm kind of grateful for a shorter one.

02:40 So I can take a couple days to try them out.

02:42 I might try this year.

02:44 And there's, what are the other couple changes?

02:47 There's the global leaderboard has gone away for maintenance reasons.

02:52 So I do appreciate, it's one of the things is we should say thanks for people doing cool stuff.

02:57 So Adventic culture is cool.

02:59 It is sponsored.

03:00 There are some sponsors that have helped keep this going.

03:04 But one of the things I noticed this year, and maybe it's been there and I just haven't noticed,

03:08 is there's a swag page.

03:12 You can go look at some cool stuff and you can grab a mug or a shirt or something kind of fun.

03:20 One of the things I kind of like about it is it's not, the year isn't on there.

03:24 So this can be one that you can just, you can pull out and wear every year around Christmas.

03:30 Evergreen swag.

03:31 Yeah, I like it.

03:33 So fun thing.

03:34 I'd love to hear if other people are using or doing the Advent of Code this year.

03:40 Yeah, I'd like to hear about how it's going.

03:44 Another kind of associated with this, I saw this up on Reddit.

03:49 Somebody wrote a, I know there's been other helpers out there, but there is a Python project that is called Elf, which is a modern advent of code helper that fetches inputs, submits answers and tracks your progress.

04:03 So we're going to link to that as well.

04:05 Just saw this.

04:08 Oh, they've been working on it for a few months, getting ready for it.

04:11 That's cool.

04:12 So Elf is a command line interface to kind of play with the advent of code stuff.

04:17 So we'll link to that as well.

04:18 Yeah, very cool. The advent of code stuff is interesting, but I've never really put much time and energy into it personally. I just have so many projects that I have ideas for and I want to build and I can't even focus on them. So it's like, it is cool. I'm personally thankful for surviving Hocktoberfest without 10 PRs suggesting that I put a comma in my readme.

04:45 Did you get any?

04:46 No, I used to.

04:47 I used to get a bunch.

04:48 Like, hey, we've improved your readme.

04:50 And it's like, you're looking to do a PR is what you're looking to do.

04:54 You're just wasting my time.

04:56 But actually, no, maybe people put up rules around it or they just put up admonishment.

05:02 Like, please don't bother people like that.

05:04 But yeah, not this year.

05:05 Yeah, cool.

05:08 Let's talk about Django, huh?

05:10 That's what I want to cover next.

05:12 Yeah, Django.

05:13 And what's cool is Django is coming up with a major new release.

05:20 They're knocking out the versions pretty quickly.

05:23 And as I did point out at the opening, this is expected December 2025.

05:28 So I'm expecting this any moment now, Brian.

05:31 Okay.

05:31 Seriously, Django 6 has some really cool features, actually some genuinely useful ones.

05:36 The first thing I want to point out about it is how aggressive they are at saying no to older versions.

05:42 Like no old Python.

05:44 They only support Python 3.12 and above.

05:46 That's pretty hardcore, honestly.

05:49 Yeah, but it's an application.

05:51 So you get to decide.

05:53 It's not like if you're building on top of Django, you have to support backwards compatible stuff.

05:59 Yeah, but you may have a five-year-old Django app you want to upgrade that has some weird dependency

06:05 that goes up to 3.10.

06:06 You know what I mean?

06:07 And I'm not saying this is a bad thing.

06:10 I think this is awesome.

06:11 I think there's a lot of benefit that people are missing out.

06:15 Like when I did the year in review sort of thing, article at JetBrains earlier this year,

06:21 one of the areas I worked on and like sort of did a bunch of math

06:25 and like predictions or stats on or whatever was this what version of Python are people running on?

06:32 And a huge bunch of people are still running on 310 or older.

06:36 And your code is so much faster and uses less memory and just so much better.

06:40 Like forget the new features that you get to use.

06:43 Just literally it's like 50% faster or something just by changing what version of Python you're running on.

06:50 And this sort of encourages the Python people who also Django

06:53 to ride at the further out on the edge of that wave, I suppose,

06:57 which is really good because, yeah, it definitely helps.

07:01 So 5.2 is the last one to support, 3.10 and 3.11.

07:04 So they dropped two years worth of Python in one year.

07:06 Pretty good.

07:08 So features, content security policy.

07:11 We all do not love our cross-site scripting and other badnesses.

07:15 So it comes now with a built-in support for the content security policy standard.

07:21 So that's cool.

07:23 Avoid CSS or XSS and those kinds of things.

07:26 Just install it and configure it.

07:28 Basically, it sets some headers, which then tell the web browsers how they're allowed to behave, cross-site, and that kind of thing.

07:34 Another one, I feel like this one probably has Carlton Gibson fingerprints on it here,

07:40 is they now have template partials.

07:43 This is super cool.

07:44 So I'm really surprised how much HTMX, the JavaScript where you run in framework,

07:51 where you write no JavaScript sort of thing, is how popular it has become in Django.

07:56 It's featured in a lot of talks and stuff.

07:59 And one of the things that you really, really need to focus on

08:02 when you're doing that kind of programming is how do I take portions of my page and then return them

08:08 from server-side code. And you can end up with lots of duplication or other weirdnesses. So this

08:14 basically addresses that if you want to return a fragment of a page, then you can say, I know here's

08:19 the whole page, the whole template of HTML markup with a Django syntax. But in this view, when somebody

08:27 makes this request, I want to return just this portion of it.

08:30 And you can even do things like, is the request coming in a regular request?

08:35 We'll return the whole page.

08:36 No, is it an HTMLX partial request?

08:38 Then just return the partial.

08:40 So this is really, really valuable and basically makes those kinds of frameworks that exchange

08:44 partial bits of HTML, regardless of whether it's HTML, nicer.

08:48 That's pretty cool.

08:48 Yeah.

08:49 Another really nice one is a background tasks.

08:52 So just a thread that cruises around in the background that you can throw stuff at.

08:57 way more useful than you would think.

09:00 Sometimes you want to process something that takes a little bit longer,

09:04 but you don't want to block up the request response.

09:07 Like, hey, I want to sign up for your newsletter.

09:09 If you want to send them a welcome to my newsletter or whatever email, you could on that request block

09:16 and let it sit there and spin, fire up your email API, connect, send,

09:21 wait for that actually to send, get a response back and then say, welcome, we've sent you an email, right?

09:26 That's one way, but that makes your code potentially slow.

09:30 It'd be nice to go instantly, hey, thanks for signing up.

09:34 You're on the newsletter.

09:36 And then kick off a task to the background, like send that person an email.

09:40 For one email, it's not that big of a deal.

09:41 If you've got to send a lot or do a bunch of stuff, it can time out your web requests.

09:46 You get normally 20 seconds or something like that.

09:48 And if it takes longer than that, it's a problem.

09:50 Of course, people are going to be freaked out and reload or whatever as well.

09:54 But anyway, this is like a real simple way so you don't have to run other servers and message queues

10:00 and all that kind of stuff.

10:01 You just put it in the background of your app and let it go.

10:03 It's not as durable, but it's great.

10:05 Almost every app needs some sort of background task.

10:07 So this is awesome that it's included now.

10:10 It's cool that it's included, absolutely.

10:12 Speaking of email, email handling in Django now uses the Python's modern API introduced in 3.6

10:18 using email.message.emailmessage.

10:20 Super cool.

10:21 Easier to send that way.

10:22 and then a bunch of minor features that I'm not going to go into.

10:25 Anyway, that's a pretty big set of releases or features for a year.

10:30 Yeah.

10:30 Yeah, so now we have to see how many people are going to update

10:34 all of their Django books and tutorials and everything, Django 6.

10:41 It's both an opportunity and a bit of a challenge.

10:44 Yeah.

10:45 So Django's not a-- that isn't just a year, though, is it?

10:50 Doesn't there is the release cycle like a year and a half or two years or something like that?

10:54 Let's see.

10:55 I feel like, where's the release?

10:57 Here we go.

10:58 It's yearly.

10:59 Yeah, it's yearly.

11:00 Okay.

11:00 Well, yeah.

11:01 Hold on.

11:02 It depends on what you call.

11:03 Like, what is the version bump?

11:05 There is a release every year, but it's not always a major version bump.

11:09 Like, 6 is coming, but then 6.1 and 6.2 are planned.

11:12 And I think 6.2 might be the LTS.

11:15 Yeah.

11:15 So it bumps between LTSs.

11:17 And the LTSs are on a three-year cycle.

11:20 long-term support so you're not forced to keep rolling to get security fixes and stuff yeah

11:24 yeah and i think that's because of some deprecation uh stuff and everything so

11:29 all right cool gotta love advancements in django yep um okay well i um i'm gonna look take a look

11:36 at some typing stuff how's that sound i love typing let's do it um so there's a there's an article

11:42 um called advanced overlooked python typing and there's some goodies in here that i didn't know

11:48 about, which is cool.

11:49 So I was slow to come on board with typing, but I like all of the extra.

11:54 I'm kind of a fan now.

11:56 Plus, it only takes having one package that's kind of popular

12:00 that people will demand that you--

12:02 so anyway, so some cool extra things if you possibly may not have known about.

12:09 The first I'll jump into is--

12:12 oh, there's a disclaimer here that it says that it's looking at modern stuff.

12:16 So Python 312 or 313 or newer for some of this stuff.

12:22 So assert never.

12:23 I didn't know this was a thing.

12:25 So let's say you've got a match case thing like switches.

12:31 And you've got your catch all at the end.

12:33 And you want to never hit that.

12:36 Usually I'll throw an assert there or something just in case.

12:40 But there's an assert never.

12:42 That comes from typing.

12:44 Didn't know that was there.

12:45 that you can make sure that this default case has never hit,

12:49 or if you have other cases that should never be hit.

12:51 Throw that in there.

12:52 That's cool.

12:53 Didn't know that existed.

12:55 There's getArgs.

12:56 And the idea around getArgs is, oh, this is a little small,

13:00 so I'm going to see if I can make this a little bigger.

13:04 The idea around getArgs is, so if you've got,

13:10 like here we've got frozen sets to have literals.

13:13 There's literals before, but you kind of had to have a duplication of all the actual literals for typing for different things.

13:22 And that's in a set of literals, and that's sort of a pain.

13:25 So instead of that, you can do get args, which creates essentially a set of literals for types, for things that are in something.

13:37 So you kind of have to see the code here to understand that.

13:40 It helps with keeping it in line so that when you create an extra element in your set, it automatically gets an extra type.

13:51 TypeGuard we've covered before.

13:53 I think we've covered it.

13:55 It gets you the exact type-narrowing logic.

13:59 I haven't used TypeGuard a lot, but there's sort of a pickier version.

14:04 Type is a stricter and more prophesied type-narrowing than TypeGuard.

14:09 by enabling bidirectional narrowing.

14:11 Okay, so kind of fun with type is.

14:14 Anyway, some extra, oh, we've got unpacking and concatenation for callables.

14:22 Oh, callable with dot, dot.

14:23 Anyway, a lot of goodies for if you want to like really get into some of the nitty gritty

14:28 and some of the extra fun things with typing.

14:30 This is a fun article.

14:31 Yeah, very nice.

14:32 I actually have an interesting one to add to that is no return.

14:37 Oh, really?

14:38 Okay.

14:39 So you can go to a function and you can say arrow, I mean, goes to int,

14:43 goes to stir, goes to optional customer, whatever.

14:47 You can even say it returns none, which is literally it returns none.

14:51 But no return is, it's not like a void.

14:54 It's different.

14:55 It basically says the only way that this function exits is through an exception.

15:00 There's no way out of it.

15:01 So you might have a while application is still running.

15:05 And then in some case, if it decides it needs to stop, it raises an aborted, task aborted exception.

15:11 And it's like, while true, if exit, raise task aborted.

15:14 Like there's no regular way out.

15:16 The only way out is through an exception than this.

15:20 So you might think, why would I ever do that?

15:22 Well, some of the web frameworks, when you do a redirect, the way they do the redirect is they raise an HTTP redirect sort of exception type thing,

15:30 which is more likely to just like make it get all the way out right away rather than if you forget

15:36 to say return redirect, right? Something like that. So you'd put a no return there. Isn't that a weird

15:40 one? Yeah. Yeah. So I would have expected like one of the commenters, I thought no return was

15:47 equivalent to return none. So if you don't have a return, that's not what it means. I'm like, oh,

15:54 this is a really cool way to say it only returns none ever, which is the case if you never, if you

15:59 don't say the keyword return, it still returns none.

16:01 But no, this says the only way it gets out is through exceptions.

16:07 Yeah, it was weird, right?

16:08 Timing module, annotate functions that never return normally.

16:11 I wanted a void.

16:14 Where's my void?

16:15 You know what I mean?

16:16 There's nothing coming out of this.

16:17 This is not it, but this is something else in that realm

16:21 of advanced type.

16:21 Yeah, and those things do exist.

16:23 So yeah, interesting.

16:25 They sure do.

16:26 So you know what else exists is misspellings.

16:29 So I got on my Talk Python in production book, Christian Klaus was kind enough to send me a message saying,

16:34 hey, you know, so you may have some misspellings.

16:38 And he sent me this thing, right?

16:40 As a PR.

16:41 However, it says fixed typos discovered by code spell,

16:46 all one word, code spell.

16:47 - Okay. - Wait, what is this code spell?

16:49 Well, code spell is a tool that checks for common misspellings in source code.

16:55 It works on other files as well, but it especially works on different types of source files

17:01 'cause it ignores backslash escapes and other things that are common in code.

17:07 But it's not a spell checker.

17:09 It's a misspelling finder, let's say.

17:12 So what it does is it goes and it says, I'm gonna look for words that are commonly misspelled.

17:17 Like in my example, what two things had I misspelled.

17:20 I had FOM instead of from, F-O-M.

17:23 had plausible with able instead of able on it. Right. So it looks for common misspellings. It

17:29 doesn't look for words. It doesn't know because those are super annoying. You're like, here's

17:34 723 misspellings. Like, no, those are acronyms. You know what I mean? Yeah. like that is a

17:40 library I'm importing. It's not misspelled. If I change it, it doesn't work. Right. Like that

17:45 kind of stuff. So what this does is it looks for like common misspellings, like ADN or, TEH

17:51 or what, you know, stuff like that.

17:53 Anyway, there's not a whole lot more to say about it other than it's pretty cool, it's configurable,

17:56 you can like put words that are, you know, learn the spelling equivalents

18:00 and put other types of config files and whatnot.

18:04 Oh, this is cool.

18:05 Yeah, you can even put it into a pyproject.toml in settings if you wish.

18:09 Cool.

18:09 Yeah, it's got 2.3,000, 2,300 GitHub stars.

18:13 So yeah, pretty popular actually.

18:15 As somebody that uses a code editor exclusively for all of my text writing needs.

18:22 This will be good.

18:23 Yeah, indeed.

18:24 I think Christian even set it up as a pre-commit hook.

18:28 Oh, that's a good idea.

18:29 Which is kind of interesting because it's apparently pretty fast.

18:32 I think this is the one we were talking about.

18:34 Yeah, it has like, there's something about pre-commit

18:36 like right there in the last commit.

18:38 So I'm guessing it does something with that.

18:40 All right.

18:40 How are you feeling on your extras?

18:42 I got a few extras.

18:44 Okay.

18:45 Yeah, go for it.

18:46 Okay.

18:47 Let's see.

18:47 I'll start with Hatch.

18:50 So Hatch 1.16 came out.

18:54 So some exciting features of Hatch.

18:59 So for Hatch backends and Hatch itself, what do we got?

19:04 We got dependency groups and there are workspaces.

19:08 So workspaces allow you to, like if you have a monorepo and you have a bunch of different projects within a monorepo,

19:14 this might help with that.

19:16 And then there's one, this is interesting.

19:19 It supports software bill of materials now.

19:22 So that's going to be, that's becoming a growing thing.

19:25 So update to Hatch and another update on a different project we talked about last week.

19:32 Was it last week?

19:32 We talked about in one of the things we talked about was Zensical.

19:37 And a listener over on Mastodon, Fasodon said, one of the things we forgot to mention is Zensical is a replacement for MakeDocs

19:46 plus, what was it, material theme?

19:49 And also one of the things they talked about was MakeDocs doesn't seem like it's been maintained

19:55 since the middle of 2024.

19:57 So there's a link in here to, is MakeDocs still maintained?

20:02 And I scrolled.

20:04 It's an interesting read, but I kind of think the answer is maybe-ish,

20:11 but maybe not.

20:15 So if you always have to, you always have to split that difference of like,

20:19 it could just be done, you know, certain things are just,

20:22 they really don't need more and they're supposed to be simple,

20:24 but I feel like MK docs is something that could continually take on new

20:28 variations and features and updates.

20:30 Yeah.

20:32 So not even to say no, we're not longer being maintained.

20:36 Is this the, anyway, interesting read if you're curious and want to depend on that,

20:40 but I think I'll be, I'll be checking out Zensical as well.

20:43 Right.

20:43 And as you pointed out last week, you said, for sure that it's a rewrite.

20:49 Zensical is not just building on MKDocs.

20:52 It's just the people that were working on material for MKDocs

20:55 are now building a completely from scratch documentation thing, right?

20:59 Yeah, it's backwards compatible if you used MKDocs before,

21:03 but it is something completely different.

21:05 All right.

21:07 All right.

21:07 How about, do you have any extras?

21:09 Or something completely different?

21:10 I do.

21:10 Let's go back to, was it last week or week before?

21:13 I talked about TAC, T-A-C-H, and how it creates one of those basically architectural layered

21:21 graphs that let you show which parts of your app depend upon which other parts of your app,

21:25 that kind of thing.

21:26 And it was pointed out that, hey, hey, that thing looks kind of unmaintained.

21:31 Well, Gerber Decker sent me a message and says, TAC has been unmaintained for a bit,

21:37 but it's not anymore.

21:39 It was the main project of Gage, which is a Y Combinator startup that pivoted to something

21:43 unrelated and based on AI, surprise, surprise. And they abandoned TAC. However, detached head from

21:49 GitHub forked it and now has access to the main repo and has committed to maintaining it. So it's

21:54 back. Also rough analyzed graph. It is fully independent of TAC. And they actually looked

21:58 into using that as an alternative once it became unmaintained. But yeah, anyway, that's

22:04 TAC is back. TAC is back. TAC is back. Also quick shout out to Doug Farrell and thanks. He wrote a

22:13 Review my book and yeah, very nice. So I linked over to that if people are interested. Thank you, Doug for writing that

22:20 TLDR says recommended so appreciate that. All right Are we ready to joke about something? Yeah. Okay, so you've heard of

22:29 Platform as a service PA AS you've heard about infrastructure as a service IAS or IAAS DB as a service DB as

22:39 A-A-S.

22:40 Sometimes, though, your productivity just demands that you stay focused and you just say no.

22:46 Right, Brian?

22:47 Yeah.

22:48 So I present to you no as a service.

22:53 So this is an API that will simply return a random but realistic excuse for saying no.

22:59 So you can turn it down and stop.

23:01 Oh, nice.

23:02 Yeah.

23:03 Built by humans, excuses, and humor.

23:05 This project is sponsored by Git Ads.

23:08 Git Ads.

23:08 I don't know what that is.

23:09 but anyway so if you pull it up it's um n-a-a-s i think it's n-o-a-s but you know whatever it's

23:16 that's not the domain they got and you just get a little bit of json reason i'm finding an invisible

23:21 dragon at home it's taking longer than expected or not my circus not my monkey so definitely not

23:26 my act to perform cinderella left one shoe here and i need to help her find it instead of going out

23:31 I would come, but I'm trying this new thing where I just don't.

23:38 So if you need to integrate no for whatever reason into your application,

23:43 well, here's the API right here.

23:44 You get a JSON response.

23:45 It is built as an API.

23:47 This is great.

23:48 You can just query it.

23:50 Yeah, we're going to get probably an MCP built over as well.

23:52 So you can integrate into your AI workflow as well.

23:55 I mean, it's going to be powerful.

23:58 Why use a constant when you can call an API?

24:01 guy exactly anyway I thought no as a service is a pretty good joke I I love this last one I would

24:07 come but I'm trying this new thing where I just don't exactly I my favorite is I can't make it

24:14 because I don't want to exactly no don't want to all right well uh fun episode as always thank

24:23 you everyone for listening thanks thanks Brian thank you thanks all yeah bye


Want to go deeper? Check our projects




Subscribe to Python Bytes