Python Bytes - #308 Conference season is heating up
Episode Date: November 1, 2022Topics covered in this episode: It’s PyCon US 2023 CFP time Any.io How to propose a winning conference talk Sanic release adds background workers Extras Joke See the full show notes for this e...pisode on the website at pythonbytes.fm/308
Transcript
Discussion (0)
Hey, Brian.
Hey.
I see that you've come wielding a staff of mighty power.
I was cleaning my office and I found the Python staff.
So I'm like, I'm bringing this out for the show.
Yeah.
That was when we used to go to conferences.
Do you remember that?
Like people, they'd all get together.
I think they might be making a comeback.
I think so.
I think I might be attending some conferences in the future.
Awesome.
So am I.
I'm looking forward to it.
Before we get to our topics, I also want to say thank you to new sponsor this week, or not totally new, but new for recent times,
Compiler, the podcast from Red Hat. So awesome to have the support from Red Hat. We're going to be
telling you more about them later, but Brian, let's just mix it up. Let's make it different.
This is episode 308, recorded November 1st, 2022. I'm Michael Kennedy.
And I'm Brian Atkin.
Let's do it.
I did want to talk about PyCon.
Yeah, so PyCon is coming up.
So when is it?
I wrote this down even so I could remember.
It's April 19th to the 23rd.
But we bring up PyCon US because the site just launched recently.
So pretty excited about that.
Linking to a blog post about the site launch and the call for proposals.
So again, it's going to be, let's just hop over to the big one.
It's kind of a cool look to it now.
It's an homage to some of the old ones.
Because there's, what's the 20th anniversary special? So it's some of the old ones uh because there's um what's the 20th anniversary special
so it's some of the old pictures so you can oh i see so it's a bunch of tiles and the different
tiles are actually like the hero image or whatever yeah from that year or bits of it or something so
yeah um it's it's it looks cool um so pycon us is going to be April 19th through the 23rd.
Well, that's when the talks are.
It's longer.
So there's tutorials ahead of time, and then there's hack days or whatever you call those afterwards.
So if you can stay longer, awesome.
But the talk part is the 19th through the 23rd.
Salt Lake City, the site looks great.
The call for proposals is up.
And that's really kind of what I wanted to highlight is so people start thinking about your talks.
And, of course, yeah, we've got some more information about talks coming up later in the show.
But the deadlines, what are the deadlines?
So we've got the CFP just opened, just opened the 18th.
And then it's through December 9thth so um but don't wait until
december get those get those in early um so anyway yeah excellent i think i'm gonna submit some
because i kind of think i want to go to python this year uh i didn't go last year are you what
do you have you thought about it yet michael yeah i've definitely thought about it i'm very much
considering going you know for me it's like, is TalkPython going to
get a booth and have like a bunch of presence there? In which case going to the conference
means hanging out at the booth for three days, which is kind of awesome, but also it's like not
exactly a conference. Or maybe I'll go low key and submit a talk and then just like cruise around
the halls. I haven't decided, right? Do a bunch of podcast recording live there, right? So there's,
there's trade-offs to both obviously. So I I got to think about what I might want to do. Yeah. I think I'm going to submit
some talks, but one of the things I wanted to bring up with submitting talks is to not,
to do it because it's a good experience to submit a talk. Even if you don't get the talk,
it's the process of going through that submittal process. I think it's, it's, uh, it's a growing, a growth
experience, even if, even if it gets rejected and don't feel bad because tons of people submit
talks and they can't accept all of them, obviously. So yeah. Yeah. Anyway. Cool. Cool. Well, yeah,
that'd be exciting. I actually want to do a bit of bookkeeping before we move on. Oh yeah. It's
a good idea for people who typically attend our live stream recording, which we really appreciate that.
That's awesome.
We see a bunch of familiar faces in the chat already out here.
And we do that live on YouTube.
And then we polish it up and send it out to the world over the audio channels.
So I think you can get a lot out of the video version.
That said, we're moving the video version, right?
We are. And it's my fault.
So I've got a periodic meeting that happens in my day job and it happens at noon on Tuesdays.
And that's when we usually used to record. So we're just shifting it a little bit. So we're
going to do 11 a.m. on Tuesdays. Exactly. Just an hour earlier on Tuesdays. So I want to
encourage people to go to
pythonbyte.fm slash YouTube
and it'll take you over to our channel.
If you subscribe and get notified,
you'll just get a pop-up when
we're streaming live. And if you've got time, you can drop in.
You don't have to plan too much about it. So anyway,
encourage people to be part of the YouTube
experience here because we put
a lot of stuff on the screen and it makes it even a little bit cooler, I think. And while we're bookkeeping,
and it's 11, if you can make it 11 a.m. on Tuesdays, maybe you want to be on the show. So
reach out if you'd like to be a guest host. We still do those. Yeah, exactly. I do. I wonder
if I got anything to talk about. Let's see. How about Any.io? Any.io is a framework that lets you build async things.
And when you first hear about it, it looks like it's kind of for making network libraries. Like
if you were making a low-level network app and you wanted it to be concurrent and asynchronous,
like, well, you could use Any.io, which would be cool. And it has the ability to be, how did Alex,
the creator of it, put it? Something like a framework that goes above the async IO frameworks. So it doesn't, like,
if you think of Trio or Curio, those are replacements for async IO. Whereas any IO
will run on top and integrate with async IO, or it will run on top of and integrate with Trio.
So you can kind of add it into whatever you're doing, which I think
is pretty sweet. But I think its little elevator pitch or whatever here sells it a bit short. So I
just wanted to talk about some awesome building blocks that people can use from any IO that I
think would make them make it really fun. All right. So one of the 3.11 features actually is
this idea of task groups. And they also have this concept of task groups
over, they had it originally in Trio, and then it comes over here about these groups. And what you
can do is you can basically create a task group, do a bunch of work on them, and then when it exits
that width block, it's all finished. So if you're not ready to go to 3.11, but you want to have
task groups, here's one way to get it. So that's one thing that's kind of cool. It supports
cancellation and timeout, which is important, especially as a group of related things. But
one of the things I want to touch on here that's pretty cool is the synchronization primitives.
Remember a few weeks ago, Guido wrote that article about people at a table and semaphores and stuff?
Yeah. Yeah. So yeah, exactly. So there's a couple, a couple of those types of primitives weeks ago guido wrote that article about people at a table and semaphores and stuff yeah yeah so
yeah exactly so there's a couple couple of those types of primitives here that are really neat so
they've got events which allow you to just run up to a point and wait until some other async io
thing comes along and says now go and these are similar to the events that are built into the
standard library but they're
not reentrant and they have a little bit, they claim to have a better way of presenting
a race condition and a little bit closer to Trio.
So there's those.
And one of the ones over here that's cool is capacity limiters.
I think I did talk about this one before.
So you can go over here and just say, I want to only do, in this case, the example says create a capacity of a number of two.
I only want to do two things at a time.
But yeah.
Then let's see.
Another one is this working with threads.
Pretty awesome.
So you can, given some function
that is just a regular function,
you can turn it into async,
but actually have it execute on a background thread
with two thread.
I'll give it that.
And then you can await it just like other things that mix into your async IO world.
You can also do it in reverse.
If you're over in a thread and you need to run it on the async event loop, you can also push it.
You can say from thread and to thread, right?
The to thread is the, I believe the one that, no, the from thread will push it back, back
to the async event loop, which is cool.
Let's see.
Also subprocesses are pretty awesome.
So you can do,
like you have this idea of running your code in a thread
because it's not async,
but you want it to be kind of concurrent and mix it in.
You can do the same thing with subprocess.
And this is super cool.
So you can say just run process
and then it becomes something that's a task
that you can await along with your other things. Nice. Which things nice sweet and then you can even go as far as to open the process
and then like asynchronously work with it so here's an example of where you open some process
and then you create a text receive stream from its standard out and you just cruise around and
read from it while it's running awaiting all the time wow that's neat right yeah so it just it grabs it while it's printing out so yeah so basically what i think it does is
it creates a stream that you can await and then it's just listening for process messages to come
to come through and then it you know like the task kind of partially completes right because
it's a an async for loop so you asynchronously wait for an item to come in
and then it kicks it one time around the loop
and then it waits again.
And yeah, it's pretty cool how it juggles that.
And then finally here, the file support.
So you can now, instead of saying open,
you just say in the IO.open file,
but you can async await it.
You know, it's crazy.
Async with await. There's a lot of crazy stuff happening. But then you can awaitync await it. You know, it's crazy. Async with await is a lot of crazy stuff
happening, but then you can await the reads and so on. Now there's not actual asynchronous behavior
in Python. So how does it manage this? Basically it creates a wrapper that uses threads that does
the file IO, and then it just sort of coordinates the communication of the IO back and forth on the
threads. As soon as it comes back from IO, which should release the GIL because it's off doing its own thing in the OS.
So it should be pretty good anyway.
It looks like maybe I haven't used this, but it looks like it makes things like subprocesses and threads and normal async and await all kind of look the same.
Yeah, exactly.
It's like a unifying API across the different
scenarios, which is really cool. Once you kind of wrap it, you're like, oh, there's just a bunch
of tasks. I just call a wait on them. Good to go. Nice. And then possibly it wouldn't be too much
if you had to change your mind and have something be a sub-process or a thread. Instead, it might
not wreak havoc on your design too much yeah exactly you
almost don't even have to worry about it as long as the long as the parameters are um can be passed
right they've got to be a little bowl to go across and to go across the wire there but as long as
they can be passed the process as well as to a thread then like you just get a task back that
talks to you it's cool i'll definitely take a look at this.
Just before I move off of this,
I just want to say also,
I interviewed Alex Grunholm over on TalkPython.
When was that?
September.
Actually released it in October, though.
So effectively October,
or a couple of weeks ago.
And people can check that out
if they want to dive deep into it and hear.
Nice.
Anyway, I feel like,
yeah, yeah, thanks. I do just feel like NEIO sells itself a bit short say no it's like a network library
and like oh i don't need a network library but no there's like all these little cool building
blocks in there pretty cool um have you used it is it uh pretty nice to use i've not used it
i'm still working on on getting my interesting projects more async capable you you know, before, like, for example,
getting some of the web stuff in the front
and it can be more async and so on.
Then I can start bringing these fun ideas in
and more Unreal projects.
Back to your topic real quick.
Brandon in the audience says,
if one was looking at submitting to PyCon,
what's the difference between a tutorial versus a talk?
Time?
What else, Brian?
Hands-on exercises?
Right, so tutorials are, what, like three hours hours or something i can't remember how long they're um and uh and okay so
they're three hours they're also at a different time so they're like not on the same day before
or something i mean yeah i think they're like two or three days before i can't remember how many
days before they they run them i shouldn't look this up yeah but they're before the conference
so you have to,
you have more hotel tickets to get for instance,
but since it's three hours and a talk is what,
like 25 minutes or something.
Um,
since there are more work to prepare for a tutorial,
you get paid for them. You get a little,
a little stipend,
but also people have to pay to talk,
go to the tutorial.
So,
you know,
um,
but I think there are cool things. I know a handful of the people we know do,
like to do tutorials if they can.
Yeah. I think it's also a lot more guiding people through hands-on coding than
it is. I'm here to like present.
Yeah. It's not a three hour. It shouldn't be a three hour presentation.
It's like we're going to present something and then have exercises for people
to work on. People bring their laptops in and stuff like that yeah it's good um but then there's also
uh one of the things that people forget about is posters posters are also pretty cool um on the
last day of the con sunday um i think it's on sunday they uh have the posters up and posters
in the job fair right yeah i think so the job fair and the posters at the same time. And it really literally is a poster.
So if you get one of the poster spots,
you get a section where you get to have your poster up
and you can describe whatever you want on there.
Hopefully it's fairly entertaining to look at and read.
And then you get to hang out.
So let's say you've got a project
you want to talk to people about.
It's not really a presentation.
You have your poster up and you just hang out there and then people come around and ask you questions.
Yeah. That's pretty neat. Absolutely. Yeah. Yeah. If you want to have a chance to just have
a conversation around something you're working on, but not go all in on a talk. I tried to submit a
keynote once. It turns out you can't do it. Oh, are they, did they ask people or something?
Keynotes are invite only, Michael. You can't submit a keynote. I'm like, well,
I'm submitting one. You can turn it down if you want. They did. It's all right. Okay. Now
I want to tell you about one more thing. Awesome. One awesome thing before we move on, Brian,
I'll tell you about compiler podcasts from Red Hat. So super cool to have Red Hat come along
and supporting the show. And, you know, like pretty much everyone listening, you and I, we're fans of podcasts.
And so it's awesome to have this compiler from Red Hat
supporting the show.
Really, really good show that they have themselves.
It's very highly edited and polished.
So that's excellent.
If you want to stay on top of tech
without dedicating tons of time to it,
you can listen to the compiler.
They present different perspectives and topics
and insights from the tech industry,
free from jargon and judgment. If They want to discover where technology is headed beyond
the headlines and create a place for new IT professionals to learn, grow, and thrive.
They help people break through barriers and challenges, turning code into community at
all the levels of the enterprise. One recent interesting episode is the one about the great
stack debate. I love, love, love talking about, talking to people about their architecture and the trade-offs and choices that they made and
what the costs and challenges and, you know, it's smiled and frowns that result from that.
So you can definitely check out the great stack debate. That's a fun one. They answer the question
of whether software is like an onion or like it's lasagna or whether it's some other more
complicated dish. So you can check that.
That's a lot of fun.
And it's actually- Yeah, go ahead.
Looks like the most recent one's about testing too.
I better check that out.
Yeah, you got to get in there.
They have a whole series on the compiler,
the compiler series on software stacks.
And I guess testing is an important part of that.
That's awesome.
Yeah, so learn about compiler
at pythonbytes.fm slash compiler.
The link is in your podcast player show notes.
I know you could just search for Compiler and sign up,
but follow the link and click on your podcast player there
and subscribe that way.
It would really help us let them know
that you heard about them from us.
So thanks to Compiler for keeping this show going strong.
All right, Brian, what's next?
Well, I was going to talk about conference talks.
So some more. So I think everybody should try because I actually I was terrified to do my first talk and I think it was a good experience. So Reuven Lerner, Reuven Lerner, friend of the show and all around awesome guy, wrote an article called How to propose a winning conference talk. So we're linking to
that and what there's a lot of, there's a lot of articles on how to do a talk. And what I like,
what I really like about this is it's short. Um, um, there's a, there's a few things that he
focuses on. Uh, one of the, the first is like coming up with ideas and, um, he like part of
his audience is also other trainers. So, um, but I think that more people are trainers than you realize.
So maybe you're, maybe you actually teach people like Reuven does, or, you know, you
have a training gig, but you could teach mentor or lead or coach in other ways, just by being
the resident Python guy or girl or woman or whatever at your company. And when people come to
you and ask questions. So one of the, some of those things are to come up with a list of things
to talk about. Uh, what questions do people ask you all the time? Um, those are great things to
write talks about maybe, uh, what knowledge, what knowledge do you think people should have that
they just don't know to ask about? Um, also great topics. And then also, where do you see that people just don't seem to get it? And so somehow they're not getting some
concept. They don't quite get it from whatever they've sought out. Those are also great things.
And if, and if that, if you're still stumped, he says, well, check out stack overflow. What
kind of questions come up there all the time? Those are, those are good things to maybe give
a talk about.
Hey, I got a cheat code for people listening.
Okay.
What awesome thing did you hear about on Python Bytes that was like new to you?
And there's not a talk at the conference.
I'm serious.
Yeah, exactly.
You know, rewind a handful of episodes and go through and go, that sounds interesting.
And, you know, spend a few hours researching it and come up with a talk.
Why not?
Right, right. It's interesting to me. I want to learn it. And, you know, spend a few hours researching it and come up with a talk. Why not? Right, right.
It's interesting to me.
I want to learn it.
And then I could present it.
You know, you could test drive these things also at smaller regional conferences. You could test drive them at meetups.
You could test drive them as like a YouTube video that you post somewhere or even a blog
post you write.
Like there's a bunch of, let me take a shot at it and then build some confidence and then
submit it to Pycon us or europe or
whatever yeah um he goes on to talk about uh using um uh using an outline um and to in a lot even if
you don't go for a talk maybe i don't remember if i think pycon us does ask for this but some don't
but even if it's not asked for uh come up with an outline with times. And that part
freaked me out. I'm like, how do I do that? But his example is fairly not scary. It's kind of
the bullet points of the sort of stuff you're going to talk about and how long you intend to
talk about it. And this is actually really important. I when I when I finally embraced
this and went, I got to think about this. Um,
and I kind of do this hand in hand with this, the next step, the next step he said is you don't just
need, um, an outline, you need a summary and you kind of need a short summary and a long summary
possibly. Um, and that's, and you should include, I can't remember where we write this, wrote this
down, but you should include, what is it?
The value that people get, what benefit they'll get from your talk and what knowledge they'll
get, what they'll have when they leave your talk and how will that help them?
And think about those.
And that while you're putting through your outline together too, as to where you want
to spend your time and, you know, be paying attention that you do want to have some wrap
up time possibly, and you might want some introduction time. So include that and think
about those times. And then you've got just these little tiny one or two minutes, one or two or
three or four minute segments that you've got to come up with words for. And that's actually a lot
easier to deal with than thinking I got to come up with 25 minutes.
Right.
Yeah.
Like an example here, it says generate warnings.
Two minutes.
Could you spend two minutes talking about generating warnings?
I imagine you could.
Yeah.
And if it's important, put throw throw some time into it.
But the one of the things I wanted to highlight on this, I really like this write up.
He also a couple more
things. One is submit the same talk to multiple conferences. You can do that and you don't even
have, it doesn't even have to be new. You could have already submitted, presented it somewhere
and it might already be on YouTube. And you're like, really? I can do that? Yes, really. You
can do that. Some people give talks at multiple conferences, and it's fine. You don't have to come up with a brand new talk for every conference.
The other thing is the list of topics. My mistake the first time I gave a talk was I did this. I
went, what are all the things I'd like to talk about? And then I crammed them all into one talk.
This is not what you want to do. You want to pick like, you know, one focused thing
so that you can go at a reasonably comfortable pace. You don't want to be talking a hundred
miles an hour. People can't keep up with you. There are some people I'm don't get me wrong.
There's some people that can talk really fast and pack a lot of information and they're really good
about it. And it's still entertaining, but I think the average person would be better at trying to go
at a little slower pace.
Yeah.
Yeah.
I totally agree about that.
And, you know, that could be your, like, you could come up with that list of all the things
you want to talk about.
And then that could be the source for two or three talks.
Yeah.
Yeah.
God, this is too, this is kind of like, this all stuff seems to be about fixtures.
So let's do like five things that are awesome about fixtures you didn't know.
And here's like why you should care about structuring your, I don't know, whatever.
And if they get rejected, but from every conference that you submitted to, you're still one because you did all that work.
Just turn it into like a blog post or a YouTube video or something.
Yeah, absolutely.
A bunch of good feedback from the audience.
John out there says a great place to give a talk is at the user group.
Kind of matched exactly the same time I said that.
So definitely agree in there.
Brandon says,
give it a lunch and learn at your company.
Great idea.
Yeah, that's a really good idea.
And casual viewer number three
says my team has a show and tell
like meeting on Fridays,
a show off stuff people can talk about
that'd be impactful.
Also a good place.
Yeah, a lot of good ideas. If the venue doesn't exist, you may well be able to create it.
And you might get, you might get promoted because of it. Cause you're like, Oh,
people will know that you're the expert in the company that they didn't know before.
It's good. That's right. That's right. All right. I want to come back to something that I know we
talked about before, but a feature of it. So we talked about Sanic when it came out,
there was Sanic and Gepronto and a couple other things.
This, I believe, predates FastAPI even.
And it was one of the very first high performance
async frameworks for Python.
Very cool.
I hadn't really been tracking it that much lately,
but if you drop over by the GitHub,
github.com slash sanic-org, go to Sanic,
16,000 stars, 1,500 forks. It's going
really strong. I, I totally did not, I've not been tracking it well enough. So this is,
this is really fantastic. So cool way to build asynchronous web apps in Python. It's,
it claims to be unopinionated and flexible. It is the plastic that you build your APIs
and your web apps out of as you like,
rather than being very structured
in the way you put stuff together.
So if you're looking for that good,
it's, like I said, super fast.
That was its original selling point
and apparently used by millions of people,
which is pretty awesome.
So what I want to point out here is not Sanic exactly,
but rather a new feature that was
shared with us by Felix.
And Felix pointed out that Adam, one of the maintainers, just added this concept of a
worker manager into the new version of Sanic.
So if you want to run background work, like I want to send an email or I want to send and do other like lots of processing or computational work in the background, it's going to block up not just a single request, but it's going to block up potentially the whole web server.
You get a bunch of things that are querying tons of data or doing a bunch of computation, then all of a sudden or even calling other APIs, potentially that could log up the server, especially if it can't be done asynchronously.
So they added this concept
of kind of like a lightweight Celery type of thing
where you can push the work off to it
and have it run in the background and manage that.
Okay.
Step four is just an API inside of Sanic
and it starts a sub process that hangs around
and does that background work for you.
So it's like, you don't have to manage another server.
You don't have to set up Celery or Redis
and then some worker mechanism
to process the messages coming out of there.
You just kick the work over to this worker manager
and off it goes.
Yeah.
That's pretty cool.
Pretty cool, huh?
Yeah.
Yeah, and the way that it works is
basically you can hook into some lifetime events.
Like you can use a decorator app
dot before server start.
And you can go make sure that there's a queue
that can be used for the communication across that.
And then you can handle on request.
And then when a request comes in,
you can like push work over to it.
Yeah.
Anyway, you can even get it to do
like some cool little printout
of like the status of what the workers are up to
and so on.
So anyway anyway pretty neat
uh if you need to run asynchronous work and you're looking at a web framework you know maybe check
out sanic it's got this this cool feature and it's got a lot of nice async and await features as well
cool nice all right uh that's it for our main items isn't it i guess it is yeah uh before we
move off this real quick casual viewer says Viewer says FastAPI is something similar
called Background Task.
Okay, good to know.
Yeah, and you can also build those on your own
using like multi-processing or something.
Or any IO.
Or any IO, for sure.
One of the real challenges of all of those
like roll your own things are
usually what happens is you farm out your web server.
So for example, on TalkP on talk python training i think we
have eight worker processes that are cruising around waiting and like as far as they're concerned
they are the website right and if all those things start kicking off background work and they start
starting their own processes it'll be like why are there 17 worker processes cruising around i
don't know what's going on so yeah it's kind of cool to have something that's a little more
structured uh like that all right uh extras you said you got some extras tell us about them
uh well stuck on the presentation thing um but uh i ran across this uh article called create
presentations with from jupiter notebooks and um i just wanted to link to it if you if you're
thinking about doing a presentation and you want to possibly just use your Jupyter notebook, apparently it's built in.
I didn't know that it was just built in.
So this just walks through the built-in features of how to.
So you've got a Jupyter notebook.
You can even do some Markdown.
You can do Markdown Jupyter anyway.
But there's ways to have both code and Markdown together with this, um, uh, with iPython display markdown,
which is cool. Um, and then it, it goes through a couple more examples of things, but then there's
this, uh, dropdown. You can just say view, uh, view cell toolbar slideshow, and then you select,
um, you select slide for each of your, uh, little cells and they become slides in your presentation.
And then you can use the built-in NB convert to convert it to a presentation.
So just got an HTML presentation right there.
So that's pretty neat.
You can say slide.
You can say it's a sub slide, a fragment.
You could skip and you could even make it notes just for like a presentation view.
That's pretty flexible per cell in Jupyter.
That's awesome.
And then there's ways to either show it by default, it shows the code, but you can have it hide the code apparently.
And then if you want to be able to, instead of doing the command line thing, if you want to toggle back and forth while you're developing it, they're recommending using the rise extension and i tried i'm like is it really this easy and so i tried it out and sure
enough um it's just i just went through some of the examples and it's really pretty cool and with
rise we got like these examples and then you can just with rise you can just select this little
this little uh icon here it looks like a. And it just enters into slideshow mode.
Oh, nice.
Within it.
What happens if you hit space in that mode?
Does it automatically take you from one to one?
Okay, cool.
Very nice.
And you can do the arrows back and forth and stuff.
So it doesn't look as good as the actual presentation at the output.
But especially if you're trying to toggle back and forth to see, you kind of, it doesn't look as good as the, the actual presentation at the output, but especially
if you're trying to like kind of toggle back and forth to see, isn't it like, is my, uh, is my
stuff too big? Like right now I would totally alter this because it, it looks too, it doesn't
look good right now. Um, but that's kind of what you do with slideshows is you sort of work, work
with them until they look good. But anyway, so this something i wanted to share it was just this um if you want to try using jupiter for
your presentation here's a link kind of maybe take a look at this article um the other thing
i wanted to point out as an extra is uh um what python pi test as 7.2 pi test 7.2, PyTest 7.2 released, I don't normally like, I mean, I'm personally,
I'm like ready to try every new release that comes out.
But why I'm bringing this up is there's a couple of things that bit us at work.
And I want to, if they might bite you, the PyLibrary is now separated from PyTest.
So you don't get the PyLibrary by default when you import, when you're installing PyTest. So you don't get the PyLibrary by default when you're installing PyTest.
So if you are using the PyLibrary,
you just have to make that one of your own requirements.
You were cheating and not stating it as a requirement
because it'll always be there, we know.
I don't think we were using it at all,
but I think we may have declared like PyPath
or something like that.
Yeah, whatever.
A couple more things that I think we may have declared like, like PyPath or something like that. Yeah. Whatever. A couple more things that I think is neat.
A few releases ago,
I added the test paths so that you can add import path to your,
for where,
like where your source code is.
And for this release,
they added a shell style wildcard support.
So that's pretty cool.
And there's a whole bunch of cool features.
So yeah, check out PyTest if you're up for it.
Oh, one of the things I'm really glad, they deprecated nodes.
I can't remember where it's listed here.
But they're not using, so setup, that's just the keywords setup and teardown.
You could define functions.
You were able to define functions setup and te tear down, and those were run automatically, but those were run automatically
because they were part of the nose support. So even if you don't know what nose is, if you're
using those, those are deprecated. So stop using those. Um, there's other ways to, to do set up and
tear down with PyTest. And so check that out if you're using that. And I'm, and then the first
edition of the PyTest book, I actually talked out if you're using that. And the first edition of the PyTest book,
I actually talked about setup and teardown.
And luckily in the second edition, I took those out.
So yeah.
Very good, you saw that coming.
Awesome.
Awesome.
Cool.
Bit of follow-up on your Jupyter item here.
Henry Schreiner says,
you can also use this in labs in JupyterLab,
not the old notebook.
So if you want to use RISE live editable presentationsupiter lab not the old notebook so if you want to use rise
live editable presentations that still requires the old notebook same okay okay so you can use
jupiter lab for presentations too awesome yeah yeah very cool and then also brandon points out
that background task from when we credited fast api may actually come from starlet for those of
you don't know fast api is a layer on top of Starlet. So a lot of times what people perceive
as a FastAPI feature is actually a Starlet feature.
And it also, Henry says,
it also now, the notebooks now warn you
if you return from a test,
sorry, now also warns you
if you return from a PyTest function,
this would be an error in PyTest 8.
Okay.
Yeah.
Well, yeah, apparently some people were like returning true or false from their test functions term from a pytest function this would be an error in pytest eight okay yeah well yeah apparently
some people were like returning true or false from their test functions and and wanting that to like
indicate whether a test passed or failed don't do that don't you just parse the print statements
no it's an exception if an exception happens that's a failure so of course all right i got
a few extras and we'll bust out some jokes these are
quick rich the colorizing formatting awesome 2e foundation is great now available on piescript
so rich uh yeah you just you can just do rich things and just you know print the stuff all out
and guess what it now comes out as like colorized output and HTML, I guess.
I'm not sure where the destination is going to land, but it says REPL.
So I'm guessing maybe it prints out in the REPL there.
Anyway, there's a bunch of notes on how to use Rich in PyScript.
So if you like PyScript and you're tracking that project and you like Rich, put them together.
Also, we talked about YouTube videos and you could make a talk.
You could just make a video. So I did a Python 3.11 in 100 seconds video that I released yesterday, the day before.
I think it was yesterday, actually.
Anyway, people can check that out if they've got 100 seconds to spare and they want to
know what's cool about Python 3.11 and why it's neat.
That's fun.
Links in the show notes there.
All right.
Ready for some jokes?
Yes.
Okay.
So here's one. It's titled Laughter in Linux, but there. All right. Ready for some jokes? Yes. Okay. So here's one. It's
titled Laughter in Linux, but it's about Windows. So you might have to go back a ways for people to
get this joke, but let's see. I know you spend some time in Windows, Brian. Let me see what you
think about this. So here's like a sort of a karate master type of scenario. And like sensei says,
just time for you to look inward and start asking yourself the big
question what happened to the a and b drive because it's all you see right we're doing
things to make that noise pretty much if it's not a c drive it makes noise it's my understanding
from my history some of them make that uh sort of a disky noise other like a cd seeking noise
but there's always a noise associated with a non-C drive.
I know that's not always true, but it's fun.
All right, other one.
This one is not about OSs and disks,
but rather databases, and it's dating advice.
So here's a woman talking to a clearly nerdy programmer type,
and it says, what do you need for a good relationship?
The guy looks at her, obviously primary keys.
Primary keys.
Yeah.
So bad.
Anyway, that's what I got.
Dude from the IT crowd.
Okay.
Yeah.
Yeah.
I need to watch more TV to fully catch the memes, don't I?
So.
Yeah.
Cool.
All right.
Well, always fun to have you here and do the show.
Definitely. Thanks. And thanks everybody for showing up an hour early. I really appreciate right. Well, always fun to have you here. Thanks.
And thanks everybody for showing up an hour early.
I really appreciate it.
Yeah, absolutely.
Try to be the, we'll try to stick to that time for a while and I guess we'll let you know if we don't.
All right.
See y'all later.
Thanks.