 Hello, everyone. This is the Circuit Python Weekly Meeting for August 8th, 2022. It's the time of week where we get together to talk about all things Circuit Python. I'm Jeff, and Adafruit sponsors me to work on Circuit Python, which is a version of Python designed to run on tiny computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit, so if you want to support me, Adafruit, and Circuit Python, consider purchasing your hardware from adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join anytime by going to adafruit.it.discord. And that link should also be in the doobly-doo. We hold the meeting in the Circuit Python DevTex Channel and the Circuit Python Voice Channel. The meeting typically happens on Mondays at 2pm Eastern, 11am Pacific, except when it coincides with a US holiday. In the notes document, there is a link to a calendar you can view online or add to your favorite calendar app. We also send notifications about upcoming meetings via Discord to receive these notifications or to participate in the meeting, ask us to add you to the Circuit Python East Discord role. As I mentioned, there's a note stock to accompany this meeting and its recording. The document contains timestamps to go with the video, so you can use the document to help you skip to the parts of the meeting that interest you the most. And after each meeting, then we post the upcoming meetings and notes to the Circuit Python DevChannel on the Adafruit Discord, which is where you add your notes anytime during the week. It's actually a great idea. I did not do that this week. A great idea to add your notes throughout the week, so you remember to report on what you've been doing, who you want to thank, and hug reports, and so forth. Anyway, so the structure of this meeting, we've got five parts. After this is community news, where we take a preview of the Python on Microcontrollers newsletter. It's all thanks Circuit Python and Python on Hardware in the community and beyond. The second part is the state of Circuit Python, the libraries, and Blinka, a statistical overview of the entire project, a chance to look at the project by the numbers separate from what we're up to individually. Next up is the fun part starts. That is hug reports. Hug reports is an opportunity to highlight the good things folks are doing and to take the time to recognize the awesome folks in our community. The fourth part is status updates. It's an opportunity to sync up on what we've been up to. You can take a couple of minutes and talk about what you've been doing in the week since the last meeting, as well as what you hope to do or work on until the next meeting. And stuff outside of Circuit Python is always welcome. We like to understand a little bit more about the people we're working with. So if you have an anecdote or something that's going on that you want to share just in your life, please feel free to do that according to your comfort level. Anyway, the fifth part, which we don't always have, but I think we have some items today, is called in the weeds. This is the time for a long-term discussion, excuse me, a long-form discussion, something that doesn't fit within status updates. Please add that to the notes document as soon as you can and we just take those in the order that they've been added. And that covers how the meeting will go. And so with that, I will tell you about community news. First up, the Web workflow, we have started to enable that for the ESP32 family of microcontrollers in Circuit Python. Of all the great microcontrollers on the market today, ESP32, the original, NoSuffix, has been left out of Circuit Python due to not having native USB, which is what allows it to act like a flash drive for code. Scott and Dan just merged in the Web workflow for Circuit Python 800 Alpha and ESP32, which means that it's now incredibly easy to start working with chips like the ESP32, which have excellent Wi-Fi networking, but do not have USB mass storage. And there's a link to the Adafruit blog on there. Next up, we of course are still very much looking forward to Circuit Python Day, August 19th, which is next Friday. It's been designated the snakiest day of the year. The day highlights all things Circuit Python and Python on hardware. There is a blog post that maybe Katni can link us to with the schedule and the schedule will also be there within the newsletter. So a great reason to subscribe to the newsletter to get the schedule this week. Next up, I believe the person's Discord username is Lee has been talking about extending Circuit Python the Fibonacci Adventure before actually contributing to Circuit Python Lee Atkinson thought to try a toy extension. A non-hardware related Fibonacci generator for the Raspberry Pi Pico. The process is excellent for learning the methodologies on how to add to Circuit Python. And then a community project, the baby monitor haptic mod adding a motor driver and BLE to a VTEC baby monitor to enable alternative outputs like haptic feedback with Circuit Python. And there's a link to hackaday.io in the note stock. So in case you haven't gathered or heard this before, the Circuit Python weekly newsletter is a Circuit Python community run newsletter emailed every Tuesday. The complete archives are on adafruitdaily.com slash category slash Circuit Python. And adafruitdaily.com is also where you need to head to sign up. It highlights the latest Python on hardware related news from around the web including Circuit Python, Python and MicroPython developments. And as Ann would tell you, we keep this all completely separate from any adafruit account you may have and we do not spam you. We just use your email address that you submit on adafruitdaily for one thing only and that is the newsletters that you want. But also I said it was community run. So we depend on your contributions, whether it is a project that you did yourself, one you saw go by and you wanna make sure it's recognized because it's super cool. You can edit next week's draft on GitHub and submit a pull request with the changes. And if GitHub is not your speed, you can also tag a tweet with hashtag Circuit Python on Twitter or email cpnews at adafruit.com. And a big shout out to Ann. Thanks for doing the newsletter. We know you were up to stuff this weekend and this weekend and we appreciate that it is still gonna come out on time and chock full of stuff. All right, turning to the next section. We've got the state of Circuit Python, the libraries and Blanka. And Scott, give me a signal in the channel if you need me to do the core section for you. Otherwise, I'll hand it off to you in a minute. Anyway, overall, and just to note, these results are one day old. So apologies if this makes me misrecognizing someone's contribution. There was just an error on the overnight run of the stats gathering, but I could take the one from Sunday instead. So across the whole project, we had 19 pull requests merged from 13 authors and a couple of names that I didn't recognize are IRONM and you are FDVW, who I learned is called River Wang. So thank you for your contributions to Circuit Python. We had five reviewers, thanks to those people who get have officially recognized as reviewers and also for everyone who comments on pull requests with feedback, helpful feedback of any kind. That's what enables us to continue making high quality changes to Circuit Python and the libraries. And the last overall number is issues. We had 17 closed issues by 17 people, by seven people and 22 open by 19 people. So net we are up five issues, but what's most heartening to see is just the large amount of activity by the community. So thank you for that. And next, I will ask Scott to tell you what is going on in the core of Circuit Python. Take it away. Hello, can you hear me okay? Yes. Awesome. Okay, so for the core, we had 17 pull requests merged from 12 different authors, which is quite a lot. So thank you to all of our authors. We had five reviewers, also a couple more than we normally have. So thank you to those extra reviewers. We have 19 open pull requests. The oldest is 325 days old. I think I actually just fixed it though. So I actually should take a look at that myself. A good reminder, if you have boards, there's a lot of these pull requests are for additional testing on board. So please take a look at those. Otherwise, thank you to everyone who's getting pull requests in. Issues-wise for the core, we had 15 closed by five people and 12 opens by nine people. So we're net down three, which is good. For a total of 556 open issues, we have five active milestones. 51 open issues on 8.0. I think it's down to 48, which is good. And those are the ones that we're kind of gearing up. The eight different funded folks are gearing up and looking at. Hopefully this week we'll see a lot of those closed. We track milestones as a way to know what issues we've triaged. And it doesn't look like there are any not assigned to milestones, but I will double check today anyway. And that's the numbers for the core. All right, thank you, Scott. And next, I will ask Catney to tell us about the libraries of which there are 300. Yes. So this applies to all of the Adafruit Circuit Python libraries. That's everything that starts with Adafruit underscore circuit Python underscore, as well as a few extras, including the community bundle and our cookie cutter. Across all of those repositories, we had two pull requests merged by two different authors and two different reviewers. And that leaves us with 27 open pull requests. There are two closed issues by two people and 10 open by 10 people, leaving us with 667 open issues. 177 of those are good first issues. If you're interested in contributing to Circuit Python on the Python side of things, check out circuitpython.org slash contributing. You'll find all of this information and more, including a list of the open pull requests. So if you'd like to help out reviewing, you can check those out. And a list of open issues. If you're new to everything, good first issue is a great place to start. We have a guide on contributing to Circuit Python using Git and GitHub, and we're always available on Discord to help out. In terms of updated libraries in the last seven days, there were three updated libraries and no new libraries. So that's, oh, and as Jeff pointed out, we have reached 300 Adafruit Circuit Python libraries. The number that is usually in the newsletter is a combination of the community libraries and the Adafruit Circuit Python libraries. So that number is 361 at the moment, but 300 of those are specifically written by Adafruit and all the folks that have helped out with that. So thank you to everyone who contributed to that to get us to this point. That's what I've got. Thanks, Kenny. And Melissa, I know that Blinka isn't what you're really spending your day-to-day time on at the moment, but would you like to tell us the stats of Blinka, please? Yeah, so for, let me find it in the page here. Blinka is our Circuit Python compatibility layer for Raspberry Pi and other single board computers as well as MicroPython. And this week we had zero pull requests merged. There are currently four open pull requests. There were zero closed issues and zero open issues, leaving a net of 79 open issues. There were 9,553 PiWheels downloads in the last month and there are currently 89 supported boards. So this week really not any activity. Don't let that scare you off from trying out Blinka because it's nice solid software. It's so close to done, which is one of the reasons it has relatively low activity. Exactly. Was somebody else gonna say something or have I heard another voice? All right, well moving on to our first round robin sections. The first one is called Hug Reports. And let me just make sure I'm saying the right stuff. Hug Reports is a chance to highlight folks in the Circuit Python community and beyond for doing awesome things. I'll start and then we'll go down the list alphabetically to give everybody a chance to participate. If your text only are missing the meeting, I will read off your notes for you as I get through the list. All right, so first up for me, a group hug. For me last week kind of turned into a vortex where I was largely alone with the camera project and I didn't interact a whole lot with you folks in Discord. And yeah, I'm happy to be hopefully emerging from that a little bit right now. And also, speaking of Camera World, a hug to Tenuit for leaving me what looks like a very useful review on that poll request at the camera. Next up, I have notes from C Grover, whose text only, but has a long overdue hug to Ketney for graciously and enthusiastically helping with a local pre-commit issue for the community bundle that I was convinced was not local. Congratulations to Ann and Amy and a group hug to the team and community. And next up is Dan, go ahead please. Okay, thank you. Okay, thanks to you, Jeff, for exploring the edges of Async.io and finding issues over this weekend. Thanks to Eva, who we gave her a bunch of guide cleanup to do, and she's started to work on that. A lot of things like mentions of like this doesn't work with CircuitPython 4 and stuff like that, things that we need to update. And Mazel-Talk to Ann and Amy on their wedding. That, great, okay, that's it. All right, and next I have a couple folks to read notes from. David Glaude, whose text only writes creation to Ann Engineer for a Twitter trending wedding, which has almost a tongue twister. A hug for Lady Aida and Tenuit for giving me a reason to try time travel and tell the younger me to acquire an Odroid Go. Again, another one for Scott Tenuit for an old style deep dive stream. To me and also to Dan H for sure, for trying to have CircuitPython also on the first generation Feather ESP32S2. Dan and I have been trading that one off. So you definitely owe thanks to both of us. And I would say largely to Dan just in my personal opinion. Anyway, next up, a homie guy had to miss the meeting today but has a group hug as well as a hug for Scott for doing the deep dive stream last week and helping with troubleshooting the ESP32S3. And next up is Catney. Hey, so my first one is congratulations to Ann and Amy as everyone else has also said. But as many congratulations as possible is the best. An equally long overdue hug to C Grover for persevering through a GitHub and Git issue, the pre-commit one they were saying earlier. To Eva for zooming through a ton of learn related tasks to make guides better for everyone. I come up with things for her to do and she gets through them very, very quickly. So we have had to dig around and find more things to do and she has been zooming through all of those as well but they're all well-needed updates. Hug to everyone who's been giving me CircuitPython Day events or descriptions for events so I could get a schedule going and a group hug. All right, thank you, Catney. Next up is Kmatch. Thanks, Jeff. First congratulatory hug to Ann for getting hitched and thanks for sharing photos. The two of y'all look like you're really both over the moon, so to speak. Thanks to FOMA guy for organizing and selecting the HackTablet winners and to Karyl, thanks for to Lady8NPT for the surprise unboxing on Ask an Engineer and for handling shipping of the items for the giveaway. And lastly, thanks to all the folks that submitted to the HackTablet drawing and especially to the winners, can't wait to see what y'all do with these and it's not too late. There'll be two more up for grabs so feel free to keep submitting. Okay, thanks. All right, thanks Kmatch. Feel free to drop a link about how to submit your entry right into the text chat for those who haven't seen it yet. All right, next up, Liz, also known as BlitzCityDIY writes, a hug for Tectric for kindly reviewing and assisting with my first PR for a Circuit Python library, yay, and a hug to Catney for her work so far in planning Circuit Python Day. And next up is Makar Melissa. Hello, first step, I want to give a congratulations to Ann and Amy and also a great hug to everyone else. All right, thank you, Melissa. Now I've got a couple to read off. First Mark, also known as Gambler, writes, a hug for Retired Wizard and Tenuit for helping me get the web workflow going and a group hug. Paul Cutler, whose text only today has a hug for Catney for all the Circuit Python Day planning as well as a group hug. And then Tammy makes things, has a hug for Catney for the Circuit Python Day planning and a group hug. I can't quite make out what the typo is there so somebody should fix the typo in her name because I just can't quite do that right this second. All right, Scott, you are up next. Hello, okay, so first, a hug report to PhoneGuy for hosting DTIYs now and letting me guest host. A hug report to Retired Wizard for more web workflow testing, keeping me very busy. A hug report to Catney for squeezing me into the Circuit Python Day schedule and a hug report to Maker Melissa for the temporary redirect suggestion for the CircuitPython.local redirect. All right, thank you. And to round out the section, I will read the notes from Tech Trick. Who has a hug for Catney for all the work planning Circuit Python Day? A hug for Liz for their first library contribution as well as a group hug. And that rounds out a hug reports except I feel bad now that I did not specifically call out and so congratulations on your happy day. I wish it worked out for me to make it but it was not to be. And with that, we will move on to status updates. Status updates is our time to sync up on what we're doing. I'll start and then just like before, we'll go through the list alphabetically. Now, when I call on you, take a couple of minutes to talk about what you've been doing since the last meeting as well as what you'll be doing until the next meeting. This is also an opportunity to provide quick trip, quick tips and tricks relevant to what people are working on but if a discussion looks like it will be longer than just a moment, we will move it to the end of each section. And with that, so last week, I worked on the ESP32 camera which is open as a pull request but there are some finishing touches to go on there. This week, I hope to do that on Tuesday and Wednesday then I'm out on a vacation from Thursday until next Thursday inclusive and I realized as I was writing these status updates I also need to do a little circuit python day prep so I may have to squeeze that in while I'm on vacation, I'm not sure. Yeah, and that's what I'm up to and then I will read notes from C Grover who's text only. C Grover has finished the conceptual and coding portions of the coffee scale learning guide need to incorporate the physical build chapter before putting a bow on it. After spending a couple of hours punching the proverbial paper bag, I successfully deployed a TCA 9548A I2C multiplexer STEMIQT board for a dual load cell project. As a result, I developed a draft TCA 9548A theory of operation document for folks like me. The draft TOO could be used to supplement existing multiplexer documentation. Now that the weather's promising to be cooler for at least a few hours each morning, I'm determined to sequester out in the workshop to finish two 114th scale retro TV console cabinets. That resemble my dad's prized 1960s RCA behemoth. The tiny cabinets are sized to fit a 2.4 inch TFT feather wing and RP2040 feather. No 3D printing or CNC, although CAD was used in the design phase. So it sounds like a woodworking project there. And next up is Dan. Okay, thanks. So last week I got, I worked on playing ESP32 builds some more and I got builds that have no PS RAM support working. There was some problem with the way that things were enabled and disabled in the ESP IDF. So I did the Huzzah 32 board as a sample. That's a feather or the, I'm assuming the feather Huzzah 32. And if other people would like to clone that and copy it in for some other board, change the pin definitions, that kind of thing, that would be great. You can add more boards now. I did a whole bunch of reviews and now I'm going back to reducing the number of 800 bugs. We have like 48 open issues for 800 right now. And I'm continuing to look at various issues that people have with the ESP32 SPI network support, MQTT and things that having to do it if we request kind of just keeping track of some open forum threads and issues. All right, thanks. All right, next up I have a couple of folks to read notes from. David Glaude writes, I took my pie gamer with me on vacation and texted the octopus game from Fumiguy and reported on my findings to him. And Fumiguy writes, still out of town, back to normal schedule on Wednesday of this week. Tinkering with size and memory metrics have created an actions task to print the size of an MPY file and the strings within it. Thinking about ways to do on-device memory size testing. And finally, diving further into dot-clock display module this week and attempting to troubleshoot a current hard fault. And next up is Kenny. Jeff. Yes. Last week I published the PCF 8574 guide and created a schedule for Circuit Python Day finally. And it was a short week, so that was pretty much all I got done. Today so far I created a separate blog post with the Circuit Python Day schedule, updated circuitpython.org for the Circuit Python Day banner on it to link to that and went through all of my miscellaneous tasks and consolidated them in my list. This week, all of the miscellaneous and there are many miscellaneous. I need to QA a bunch of templates that Eva did for feathers that didn't have them and then continue work on Circuit Python Day plans once I'm done with the miscellaneous. I'm gonna be learning to use the Nordic PPK2. And then once I've got that figured out, add low-power templates to the feathers from which they are missing. And in terms of the basement project, long story short, part one was completed by the deadline. The end of last week was a mad scramble, but we managed to finish everything that we wanted done. And part two will begin in September. That's what I've got. All right, and next up is K-Match. Thanks, Jeff. So this week, I worked on the touchscreen inputs and looked at using an iterate pin. So I reduced the amount of time spent polling for touch events, which I was previously doing my I2C. Seems a lot faster and leaves a lot more room for drawing. But now things move too fast and move a lot between refreshes. So I need to better understand how to control the animation speed versus the actual refresh rate. And next was work and finding a dead end on my bowling training aid, but that's progress. I tested several time of flight distant sensors and none are either sensitive enough or fast enough to reliably catch a 15 mile per hour bowling ball passing in 30 milliseconds. So, but actually in the process of doing that, I realized that these sensors actually give signal qualities response that actually goes a long way in weeding out junk data. Okay, and this week, I'm gonna procure some ultrasonic distant sensors and temperature and humidity sensors so I can calculate the speed of sound and air and try again. So the reflection time for a distance of one meter is about five milliseconds, which is a two meter round trip. So that may actually work. And in fact, relative to infrared time of flight sensors, it's probably less susceptible to the ambient conditions, particularly the variations in lighting and the bowling ball colors. So we'll see how that goes. Thanks. Thank you, a deceptively difficult project, I think it turns out. All right, next up is maker Melissa. Hello, last week it was a short week for me because it's out sick a couple of days. And I mostly been working on code.circuitbython.org changes to add web workflow. I finished revising the various dialogues and got the serial terminal working with web workflow. I also have it reading and writing as well as listing directories that have that working. And I got maker and delete added, but I haven't tested that yet. This week I'm gonna finish up adding web workflow at a macro level. This will allow me to at least test bugs and web workflow while Scott is available. And then after that, I'll start working on the myriad of miscellaneous things that need to be wrapped up before a PR can be submitted. And there'll also be lots of testing and debugging. I'm also gonna need, I'm gonna start working on prepping for my live stream for circuit Python day. And that's it for me. Thank you. Next up, I've got notes to read from Tammy Makes Things. Last week she did some thinking about circuit Python day and writes, I'd like to join in any group activities going on and also do a circuit Python day to which stream of my own. But last week I was buried with work for my day job. This week she plans to iron out what exactly she's gonna do for circuit Python day and is still buried with work from day job so don't know what else yet. And next up is Scott. Hello, okay. Logistic stuff, I'm out on Friday this week. We're going on vacation or for the weekend. Thursday next week I'll also be out watching Ari. Friday is my last day for, Friday next week is my last day in a while. I'll be taking 12 weeks of paternity leave. So if you do have stuff you wanna talk to me about, please let me know so that we can talk about that before I'm on leave. And then last week it really was a smattering of bug fixes. So I'm glad I'm able to read this off because it's a long list. I added BLE and execution status to the title bar. I switched to a temporary redirect for circuitpython.local that shouldn't be cached at Melissa's suggestion. So thank you, Melissa. I fixed the S2 and S3 USB with the latest web workflow changes. Forget how I broke it, but I did break it. I fixed pasting a bunch of characters to the C3. I fixed the SD card showing through the web workflow. No, it won't. It'll always be the circuitpy drive. I enabled web workflow on the ESP32 and added the QDPY ESP32 and the OdraGo to circuitpython as well. I made the ESP32 pin never reset happen at runtime based on the module, just like the IDF determines the pins. I saved some space on the SAMD21, like 750 bytes or more by using basically my copy of live GCC. I just like literally copied it off of my installation and put it in the repo and linked to it. And it looks like it's working. I added a UID line to bootout.txt which enables devices like Thawney to read the circuitpy drive, get the unique ID and then read the unique ID over serial to match the two up, which will be cool. I fixed the BLE workflow, which had been broken when I changed some of the workflow stuff for the web, so now BLE workflow works again. I removed the enable and disable auto reload functions on Supervisor in favor of Supervisor.Runtime.AutoReload. Asterisk, this is a breaking change. It's what the oldest PR actually is trying to do. The advantage of doing Supervisor.Runtime.AutoReload is that you can read the state of it, not only set the state. So it's a pretty advanced API, so I just removed the old version. So hopefully it doesn't cause too much trouble but just let's be aware of that, that that's happening. I tweaked the title bar and the scroll area by making the scroll but area kind of like shift underneath the title bar so that the bottom line of the scroll area is complete. And then there's a number of things on my radar that I haven't opened in tabs, but for this week, Dan had the idea of instead of showing the error type, adding the error file name. So I'm gonna take a look at that. And then there's a number of other bugs around web workflow that I'm going in title bar that I'll look at this week too. So similar to Dan looking at the 80 list and really trying to hack it down. I think we have a goal of doing at least another alpha, if not beta for Circuit Python Day for 8.0. So I think that's a good goal. Get as many bugs down as we can and then we'll do another alpha or beta release. I think the difference between the two will be if we expect breaking changes still, we should do an alpha. If not, we can do it as a beta, but that's it for me. All right, and then Tectric, are you able to speak for this one or would you like me to go ahead and read you out? I will take that as go ahead and read. So last week, Tectric was on vacation. Not much got done except soaking up the sun. This week, Tectric plans to move all the libraries from setup.py to pyproject.toml and catch up on some things I missed last week, including touching up some new libraries and some PRs and issues I was tagged in. And that is it for status updates. Thank you everybody. We love hearing what you're all up to and it's also nice to have the chance to be on the talking side too. All right, and with that, we are gonna head to the in the weeds section. I'm just not sure whether we are gonna do this now. So it says Tectric who is likely not present, but if Tectric is out, Katnick can read. Okay, Katnick can read and talk about it. That's what I'm doing. I read it now. Go ahead. All right, thanks, Joe. So it would be helpful to have a small one. I'm just gonna read what was written here and then explain it. It'd be helpful to have a small window of time free of merges to the libraries so things don't get lost during the move to pyproject.toml since it will be pushed to main branches. This evening at 9 p.m. Eastern works for Tectric and I think it would normally be unlikely to have merges during that time anyway. But if we could set 9 p.m. to midnight and give Tectric that time to get everything switched over, that would be great. I wanted to mention it in this meeting because I wanted Tectric to mention in this meeting because pretty much everybody who does merges on the libraries is present here. So starting at 9 p.m. Eastern to midnight Eastern, please avoid doing merges on the libraries and then feel free to start again tomorrow. And that is pretty much all this is about. All right. Does anybody have a question or comment about that? Catney? Yep. Catney? Yeah. Are you going to do some kind of a guide as to what goes into pyproject.toml? Yeah. Had not thought about it. That's something that Tectric would have to do because he's the one that put the heart into learning it. I can look into it. Will the cookie cutter be doing the right thing after this change? Yes. Okay. Oh, good. That's why we're concerned. Because I was thinking about creating a possible library and I didn't want to get caught not doing it the right way. Yep. Okay. Thanks, Charles. Thank you for info. All right. So that's, yeah, that sums that up. All right. Keith asks in the text chat. Go ahead. Will you need a couple of folks on standby to help if something goes awry? That's up to Tectric if he wants folks around. So I will let him answer. All right. He said he's good to go. And I think that sums everything up. We'll look into a guide and cookie cutter will definitely be doing the right thing. Yeah. I haven't learned pyproject.toml really either. So I mean, it's a great opportunity to just learn a little more if that's the kind of thing you're interested in. So. Yeah, for sure. And it turned out to be a lot simpler than we thought it would be because everyone made it sound like it was complicated. So we just assumed it was. And then it turned out it really wasn't as complicated as everyone seemed to feel like it was. So that was a good find in this whole situation. But I will update the notes and I think that's good to go. Okay. Thank you, Catney and Tectric for doing that work. Catney, one of my reasonings for being interested in it is I have a big project that I'm working on that I'd like to not have to use set. It created several libraries of which I do not want to create set up.pys. And it sounds like the pyproject.toml might be an interesting alternative. Yeah, it turns out that set up.py has been sort of deprecated for a while, but a lot of folks still use it. And the pyproject.toml is the new. It's not that new, but the new-ish way of doing it. So... That's good to know. Thank you very much. Yep. This makes it worth learning. Well, let's wrap this up. This has been the Circuit Python weekly meeting for August 8th, 2022. I wanna thank everybody who participated. If you want to support Adafruit and Circuit Python and those of us that work on Circuit Python, consider purchasing from the Adafruit shop at adafruit.com. And if you're outside the U.S., check out the resellers link at the bottom of that page. The video of this meeting will be released on YouTube at youtube.com slash Adafruit, and the podcast will be available on major podcast services. It will also be featured in the Python for Microcontrollers newsletter. Visit adafruitdaily.com to subscribe. The next meeting will be held on Monday, as usual, at 2 p.m. Eastern, 11 a.m. Pacific, and I believe that makes it August the 15th. The meeting is held on the Adafruit Discord, which you can join by going to adafruit.it slash discord. To be notified about the meeting and any changes to the time or day, you can be asked to be added to the Circuit Pythonistas role on Discord. And with that, we hope to see you all next week. Thanks, everyone. Thanks, everyone.