 Hello, everyone. This is the Circuit Python Weekly for March 18, 2024. It's the time of week where we get together to talk about all things Circuit Python. I'm Jeff, and I'm sponsored by Adafruit to work on Circuit Python, which is a version of Python designed to run on tidying computers known as microcontrollers. Circuit Python development is sponsored primarily by Adafruit, so one great support folks like me who get to work on Circuit Python is to buy your hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join anytime by going to adafruit.it-slash-discord. Although there's stuff going on 24-7 in a bunch of channels, we hold this meeting in the Circuit Python Dev Text Channel and the Circuit Python Voice Channel. This meeting typically happens on Mondays at 2 p.m. U.S. Eastern, 11 a.m. U.S. Pacific, except when it coincides with the U.S. Holiday. In the notes document, there's a link to a calendar you can view online or add to your favorite calendar app. We also send notifications about upcoming messages via Discord. If you'd like to receive these notifications, ask us to add you to the Circuit Python East's Discord role. There is a notes document that accompanies the meeting and recording. Before the meeting, you can add to this document your notes. And once we post up this video and podcast, we will have a link to the finished notes document along with timestamps so you can switch, skip to the parts of the meeting that interest you the most. The meeting tends to run 30 to 60 minutes, so we find it's valuable to have that option. Then after the meeting, we'll post a link to the next meeting's notes so that any time during the week you can add your hug reports or status updates. And as always, if you wish to participate but can't attend, you can also add your notes to the document at any time and we'll read through them when we get there. Okay, so the structure of this meeting, we've got five parts. We'll cover community news, the state of Circuit Python, the libraries in Blinka, and we'll open it up to the community to give us hug reports, status updates, and finally discuss any topics that are in the weeds. And with that, I would love to tell you about some items from the newsletter. I picked just a couple of items from the community newsletter put together by our very own Anberraela every week. First off, the headline story, Circuit Python 9.0.0 release candidate one released. This is a release candidate for 900 final. The release is believed to be stable and is meant for testing before the final release of version 9.0.0. And there is a link to the full list of new and updated items in the blog as well as the release notes. Second up, I picked the next story as the project of the week, an uptime indicator. A Pac-Man ghost light serves as an indicator for uptime kuma, a self-hosted monitoring tool. An ESP32C3 monitors and displays status with colored Neopixel LEDs. After prototyping with Circuit Python on a Raspberry Pi Pico W, and there are some links to Reddit and GitHub. And then the last item I picked out is custom flight sim controllers with Circuit Python and a Moby flight. And there is a link to an Adafruit Playground. This was our featured story from the Adafruit Playground, a place where you can put up information about your projects made with Circuit Python or not made with Adafruit parts or not. It's a great way to share your stuff and you don't have to administer a website or anything like that. It's free when you have an Adafruit account, so check that out. And now about the newsletter itself. The Python on Microcontrollers Weekly newsletter is a Circuit Python community-run newsletter emailed every Monday. The complete archives are at adafruitdaily.com slash category slash Circuit Python. The newsletter highlights the latest Python on hardware-related news from around the web, including Circuit Python, Python, and MicroPython. I called it a community-run newsletter, and we love to get submissions from the community. You can do that in several ways. You can submit either your own project or somebody else's by editing the draft on GitHub and submitting a poll request. You can also email cpnews at adafruit.com. We also try to follow the hashtag Circuit Python on Mastodon, Blue Sky, or X, formerly known as Twitter. And that wraps it up for the newsletter, but a big hug report to Anbi for putting it together every week. Thanks so much. Next, we move on to sort of a numbers-based overview of the health of the whole project, called the State of Circuit Python, the Libraries, and Blinka. Our friend AdaBot gathers information from approximately the previous seven days up to the early hours of the morning eastern time. So that means a lot of stuff. If you did something today after the sun came up, it's probably not in this report. Overall, across the whole project, we saw 29 poll requests merged from 21 authors, which is an enormous number. Some names that I don't recognize are Goots, G-U-U-T-Z, Leland Sint, Gens, T. Komoda, and Anonymous Cowhead. There's a fun name. And I also want to thank the six reviewers. Those look like they're all Adafruit people, but if you want to hear a little bit more about reviewing and helping out with the project that way, Tia will be telling us about that in a few minutes. But now I'm going to ask Scott to tell us about the core. All right. Thank you, Jeff. Okay. So for numbers for the core, we had 18 poll requests merged from 12 different authors, which is awesome. So less frequent folks. ADCC, Gens, Tuk, Komoda, James Dinao, Goots, Billy, T, Andy Bing, and Lady Ada are all infrequent contributors. So thanks to them. We had three reviewers, including infrequent reviewer and maker Melissa. So thanks to Melissa for doing some reviews in the core. We have 24 open poll requests. So we're just under the 25, which is great. And a few of those we should be able to get through as well. We had 29 closed issues by five people and six opened by five people. So we're net down a lot. And I think that's thanks to Dan going through some old issues. We have a total of 656 open issues. We have nine active milestones. We use milestones to prioritize the work for eight different funded folks. So if there's other things that maybe I've marked long term, feel free to work on that. We're happy to help you work on it. But it's not a priority for us eight different funded folks. We have zero open issues for A2X. We have two open issues for 9.0. Those are probably tracking issues. And then we have three open issues for 9.0X. Those are the top of mind issues right now because we're trying to get 9.0 out the door and we'll talk about that in the weeds later. We have two open issues for 10.0 and we have 21 open issues for 9XX. Things that we kind of like to do in this 9.0 series or this 9X series over the next few months maybe. We have one issue not assigned to milestones. So we'll have to take a look at that. Otherwise, that's it for the core. Thank you, Scott. Next up, Tim, we'll tell us about the libraries. All right. Thanks, Jeff. This section will cover all of the Python-level Adafruit libraries, which are all found on GitHub under names like Adafruit underscore, circuitpython underscore, and then the name of whatever library it is. These things are typically either like driver libraries for specific pieces of hardware or higher-level helper libraries that make it easier for you to create your project without worrying about as many of the low-level details. Across all those libraries this week, we had eight pull requests merged by eight authors. The name in there that stuck out to me as perhaps newer or less frequent contributor was Leland Sint. So thanks to them and thanks to our other more frequent contributors or folks with names that are more familiar to me, at least. We had five reviewers this week, mostly the usual folks, but thanks to Scott, Dan, Tectric, Liz, and myself for reviews this week of the eight pulled, eight merged pull requests, rather. The oldest one was 15 days, and the newest ones were just one day, so mostly on the newer side this week. That leaves us after the week with 55 open pull requests. The oldest one is 571 days. The newest one is one day. Over the past seven days, we had six issues that were closed by five different people and six new issues opened by five people, so net equal there on issues. That leaves us with 740 open issues, of which there are 19 of them that are labeled good first issues, which you can find over at circuitpython.org slash contributing, which is where you should head if you are interested in contributing to Circuit Python on the Python side of things. On that page, you'll find a list of open PRs and a list of open issues. If you're looking to contribute, that's a great place to start. If you're interested in reviewing, you can check out the list of open PRs. Take a look at the code. If you've got the hardware for it, you can test it out. Otherwise, just look at the syntax, the spelling, et cetera. Leave a comment letting us know that you looked at it, and once you're comfortable doing that, we can get you leveled up to the official review team. If you are interested in actually getting your hands dirty to do some coding, you can look at the list of open issues. There is a drop-down there to sort by labels on those issues. So if you're looking for those good first issues, you can filter based on that or one of a number of other labels. Once you find an issue you want to work on, you can go and write the code for it, create a PR, and get that submitted in GitHub. If you need help with any of that sort of stuff, we've got guides about contributing to Circuit Python using Git and GitHub, as well as a lively community here on the Discord of folks who are more than willing to help you out. So if that is something that you want to do, but you feel like you need help with that, please check out the guides. Come join us on the Discord. There are plenty of folks that would love to help you get spun up so that you can contribute. In terms of the library PyPI stats for the week, we had 117,506 PyPI downloads over the past, excuse me, over the 325 total libraries that there are. The top 10 list is here in the note stock if you'd like to take a look through that and the updated libraries. In the past seven days, it lists here as OAuth 2 and Template Engine, although it does occur to me that the list of merged PRs includes a few others, which probably got releases as well. So I don't know if those stats are accurate now that I'm saying them out loud, but that's what we've got for libraries this week. Thanks. Thank you. And to round out this section, Melissa, can you give us a rundown of the numbers on Blinka? Yeah. Blinka is our circuit Python compatibility layer for micro-Python, Raspberry Pi, and other single board computers. And this week, we had three pull requests by two authors and one reviewer. There are currently six up and pull requests amongst all the repositories. There were two closed issues by one person and zero opened. They're leaving a net of 83 open issues. There were 12,496 Pi PI downloads in the last week, 11,775 Pi wheels downloads in the last month, and the stats were 129 boards, but I actually added three last week, so it should be 132. And that's it. Thank you, Melissa. And thanks again, Tim and Scott. And now it's time for everybody who is interested to participate with the round robin section known as Hug Reports. 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 everyone a chance to participate. And of course, if you're text only or have to miss the meeting, I'll read your notes when I get to them in the list. All right, so I will start and then the next couple of people are Dan and DJ Devon. I have a group hug and I also want to give a hug to Scott for a quick chat before the meeting. It turns out we have a shared interest in choral music and got to chat a little bit about that. And also a hug for a dishepe for a neat PNG decoder that is in the stage library. It's limited to 16-color bitmaps, so it can't just grab PNGs from the Internet or whatever, but it is still a cool showcase of what you can do with circuit Python. And all right, Dan, what do you have this week? All right, so thanks to Praxis Code for noticing USB host pin power problem on TNC. That's fixed for 9.0 for Final. Thanks to Jerry for noticing a typo when trying to disable ESP camera on the Matrix Portal S3. That's fixed. And thanks to TaylorU, ADCC, and TAC for fixing a tricky RP2040 serial USB bug which disconnects in certain cases. That's fixed for 9.0 for Final. I love a lot of looking at USB traces and understanding the details of USB hardware. And thanks to Jeff and Scott for the past few weeks fixes to 9.0 which have brought it to Final after there being dozens of bugs. So thank you guys very much. Okay. Thanks, Dan. And next up is DJ Devin3. Hi. Thank you. I have a lot of people to thank this week because it's been a busy week. Thank you to the developers for the 9.0 RC1 release this week or a hug to the developers. A hug to Brent Rebell for the encouragement to continue investigating the ATEC crypto chip bug which I'll go into later. A hug to FOMI Guy for help with getting pre-commit commands to work with GitHub Desktop. A hug to Dan H to get branch management and a bunch of excellent advice which I promptly ignored and then took to the advice and improved my life. A hug to Anecdata for Python interesting syntax discussions. A hug to P Raya on GitHub for making myself and reviewers aware of a year old commit that was approved but never merged. It was a minor syntax PR update and it was just never merged. A hug to Justin and Dan H for holding my hand, walking me through get issues on a Sunday night. And a hug to FOMI Guy for reviewing 4 of 11 Adafruit Request PRs I submitted over the weekend. There are a total of 12 I promise and I got 11 done but I swear it will end at 12. Thank you. We love big numbers though so I think it's fine. I'll read notes from David and then after that we will go to FOMI Guy. David writes A hug to FOMI Guy, C Darius and James J Nadal for contributing to support the M5 stack card pewter and its keyboard. A hug to Retired Wizard for supporting the card pewter in PIDAS and card pewter rebel. One for Dan H and Tanud for review and support to integrate the card pewter and soon the multiplexed key matrix keyboard in 9.0 and to me for all the keyboard upgrades to the USB Learn Guides and Tim you're up next and then it is Jerry. Alright thanks my hard reports for this week thanks to Thatch for looking into some low level USB host stuff that is related to some issues I filed on GitHub echoing what some other folks have said thanks to C Darius James J Nadal Retired Wizard and also David Glauda all for sharing and working on things related to the card pewter it's been really amazing to see the capabilities for circuit python on it evolve so quickly thanks to Dan and all the contributors who contribute anything to 9.0 for the new release candidate coming out on GitHub user thanks to Pinkava J on GitHub for submitting several improvements to the Wisnet 5K library over the last couple of weeks and finally thanks to DG Devon 3 and the Anecdata for updating and adding examples in requests and NTP libraries for the new connection manager thanks I need to look at that NTP example alright Justin is on deck but Jerry you're up now Thanks yeah it's a group hug and thanks everybody for everything you do good to see you as well Justin and then Liz just a quick hug for both Dan and Anecdata for trying to help me work through an M4 matrix project I have at home Google changed her SSL and I spent most of the week trying to see if I could work again and now shove that off to the side and had to use a feather wing and an S3 to actually get this project back but go on thank you Liz and then Melissa hello so how to Melissa for reviewing my PR to the HT16K33 Circuit Python library and a group hug thank you and maker Melissa then I have some notes to read I just had a group hug for everyone alright good to see you as well I've got notes from Retired Wizard to read and then we will round out the interaction by hearing from Scott Retired Wizard writes a hug to Fumiguy for his M5 stack card pewter streams a hug to David Glode for working on the card pewter key number mappings for C. Darius's Demux key matrix PR and a late hug for C. Darius and James J. Nadeau for their original work on card pewter PRs one for Sean the IT guy for re-sparking my interest in the cheap yellow display devices and that data fruit for great products and fostering this great community you want to play us out Scott yeah happy to I have a quick hug for Penguinist for testing Circuit Python on the H2 and discovering that it was no longer working and filing an issue which we fixed right yes oh good alright well it was great hearing what you looked at the community and saw that was going on but now we are going to do status updates which is the time for you to tell us what you are up to so take a few moments and let us know what you've been doing during the last week or since the last time we had a chance to catch up and what you'll be working on in the next week or in the near future I'll start and then we'll go down the notes document just like we did for hug reports and give everybody what you need to know but for now I just want to fess up that I haven't been working on Circuit Python much my main work is still on the Adafruit Floppy library which works with Arduino but this will eventually tie back to Circuit Python because we've improved how MFM decoding works and we've got some other changes in there and we'll bring those in via a sub module and improve how some of these things work in 202040 which is the microcontroller that is on the upcoming Floppy product a wrinkle is that I updated MFM decoding so that it works by storing the entire track in flux form and this is kind of a challenge to make work in Circuit Python without an incompatible API change I'll try but just be aware that that may be coming down the road if I can't deal with some memory allocation issues and yeah that's what I'm working on it will be Floppy for the foreseeable future I feel like a thing that I hope to get back to is there's a PR that I have out there that is close to the finish line and it is about enabling SSL on the WizNet Ethernet boards and just as soon as I can get time to work on that that is something I will be getting back to but now enough excuses about why I didn't get a lot done let's hear from Dan and then DJ Devin 3 alright so last Thursday I released Circuit Python 9.00 release candidate 1 after release candidate 0 and there's just been one fix since then which is just a typo and a pin name there's no reason to have an RC2 for such a fix so you're talking about maybe releasing 9.00 final maybe today or tomorrow we'll discuss it in the weeds so hold on to your hats ok that's very cool Dan I'm still looking forward to that release alright we have DJ Devin 3 and then I have some notes to read thank you this week I made some progress investigating a bug with the Adafruit Atex 608 crypto module the serial number gets randomly truncated which causes the ensuing certificate process to fail with the CRC mismatch error I originally picked up this project because someone was having an issue with the chip and discord and just wanted some help and I was like yeah sure I'll give it a shot little did I know there's a 3 year old bug report on it with the same issue so I'm not sure if this has worked in 3 years but I was able to get it to create a public certificate with all zeros as the serial number and that is actually progress and one of the neatest features about this chip is that it can avoid an I2C scan as part of its security most people will believe that they've bricked the chip when they can no longer detect the I2C device and then just give up especially since it does have a bug in circuit python that makes it unusable currently anyway it will return the error no such device and you must send it a specific frequency to wake it up and then you can access the I2C address it's a sneaky little chip I figured that out after hundreds of iterations and refused to believe it was dead and just kept on going with determination and figured it out by brute force this week I also helped discord user riven warden attempt to get rocket launch dot live api working on a pi portal after helping with their issue I dove straight into creating an adafruit request example with connection manager and that should make a nice addition to the api examples and after getting my feet wet with connection manager and adafruit request I dove straight into updating all of the adafruit request api examples with connection manager and I almost got all of them done in a weekend I got 11 out of 12 done currently working on twitter which has changed their api obviously as everyone knows to be more like fit bits so as long as you have an idea of like how fitbit google api works then you should be able to refactor all of your previous oauth one scripts from twitter to work with the new twitter so that's what I'll be working on today and tomorrow I was getting that done and I'm sure I'll be able to get it done so that's what I've been doing that is a lot thank you I'll read notes from David and then we'll go to foamy guy David writes m5 stack card computer week m5 stack card computer thanks to foamy guy streams and ordered one created the board description for circuit python org tested the multiplexed key matrix keyboard contribution using an artifact and created the key id to usb hid key code matrix for the card computer keyboard and in the notes document there is a link to a github guest or gist if you pronounce it that way for that code and next up we've got foamy guy jerry alright thanks jiff last week I cleaned up some code and finally submitted a PR for an outlined label class I actually created a while ago but ended up setting down and getting distracted by other stuff for a while so it was nice to actually get that finished up and submitted it extends bitmap label so it basically works the same as bitmap label but it gives you additional settings for the color and stroke size of an outline it uses a bunch of blit operations like one per pixel of your font bitmap so I don't think it's terribly efficient but I did test it on some small and medium size fonts and they still rendered pretty much instantly so I think as long as you don't go too giant it should be okay I started trying to use bitmap labels the bitmap on them specifically as the overlay in the pie camera library it sort of works it lets you do it it doesn't crash but the resulting photo doesn't look right the label colors and location are wrong I think I need to dive back in the color spaces to figure out what's up with the colors and then also figure out where what went wrong with the location but I will get back to that I think later on this week I kept working on this card pewter messenger server app that I started last week or the week before it's coming along pretty nicely I have it now to where messaging works correctly both sending and receiving from the handset to the webpage back and forth and I also have a little basic menu built out now that uses page layout to swap between four different screens the next steps that I have in mind for it are implementing a conversation screen to be able to look back through the history of a conversation adding some control number shortcuts right now you have to go back to the menu in order to go to a different page I think it would be nice to just jump from page to page control number and then adding after that is trying to add public key cryptography for the messages that get sent across the network and some other kind of encryption AES perhaps for data that is stored on the SD card and then one that I tacked on at the end late but I also intend to do is update it to work with the newer demuxed keypad module from the core a couple other things that I have in mind to get started on this week is working on a Simon style game that will use arcade buttons and a grove featherwing for easy solderless connections although I got a solder to the buttons anyway that will be the second in my sort of line of cardboard arcade games so I'm excited about that I have been reviewing library PRs today so far started with NTP requests in Wisnet but I have a couple others lined up after those and then outside of CircuitPython for the week I've been trying to design and 3D print some parts that can be used with cabinet locks to make a physical sort of safe like box that can be used to demonstrate the fundamental concepts of public key cryptography especially for folks who kind of are tangible or visual learners I think it will be a neat assistant for that so that's what I have been up to, thanks cool idea using cabinet locks within your 3D print I would love to see some pictures of that when it is done but now we have Jerry and then Justin thanks excuse me I have been experimenting with async.io lots to learn but trying to incorporate that into the RFM 9x69 combined library and having some good results and still trying to convince myself that it actually helps but so far it is working but lots to learn and also playing a lot with the OV5640 cameras and one of the things I meant to do a while ago and never got around to just play with manually focusing the autofocus modules so that's back on track now hopefully get that this week and oh yeah I made my first PC board actually a couple weeks ago I'm using it quite a bit now so that was a big breakthrough for me to actually make one. It's just a crude adapter to connect the OV5640 boards to a feather so a little OV feather wing and I was having a lot of problems when I tried to use jumper wires so long wires were causing some problems with the with the cameras so I put a link into my board it's crude it was just a cut and paste from a feather proto board I probably should have spent a lot more time on the silk screen but I just wanted something to try and it works so having fun with that. All right, Kudos for sharing your design thanks so much for that and yeah the link is in the notes document and I think that means that anybody can order a couple copies of that board from Osh Park I understand how that works all right anyway and then Liz, hi again. Yeah as I mentioned earlier I ended up spending a lot of my Circuit Python dev time trying to work on my personal project and thanks to all those people that tried to help me see if we could get the ESP32 spy working with Google still not at this point so we'll probably bring that back up again at some point but since I was on discord a lot because of that I really focused on trying to help out as many as I could this week so always feels good to get someone passed a hump at whatever they're trying to work on Thanks, all right we have Liz and then Melissa Hey I added a quick fix to the HT16K33 library for the buy color 8x8 matrices previously when you would call Shift the colors would flip-flops so red would turn green, green would turn red the culprit was a misplaced bit and I was looking into this because I'd like to try coding up a snake game at some point in one of these matrices and then for project work I wrote some code to control an Elgato key light with an ESP32S3 reverse TFT with Cirque of Python the code sends HTTP requests via the Elgato API this would be a learn guide should be out later this week and I'm also working on quick learn guides for the new PyCalBels are in the shop there's one with just a 2x20 headers and there's one terminal blocks and there's a doubler that also has battery support so I think folks will like using those further projects and that's what they're working on Thank you, alright we have Melissa whoops we have Melissa and then Scott again we'll round out the section Hello, so I fixed a bug in the Cirque of Python code editor that wasn't allowing folders to be downloaded finished my learn guide for using web work flow of the py camera and I added some new boards to CirqueofPython.org I worked on going through learn guide feedback and I worked on trying to figure out a big issue with some code that displays the Wayland desktop on the snake-eyed spawned displays and so I'm just going to continue on the same stuff Thank you and now with a last minute update we are ready for Scott Thanks, Jeff, yeah I forgot to say that I fixed an issue with Cirque of Python 9 on the ESP32-H2 our NeoPixel was crashing and this is the bug I was referring to from Penguinist yep, we were clocking clocking the RMT for the NeoPixels at the rate that the H2 couldn't do so I fixed that I spent a lot of time last week looking at Hancho which is a build system that's all Python it's really interesting, I did a lot of work trying to get Cirque of Python moved over I'm still working on that in the background but it can't be my top priority because it's a lot of work the Cirque of Python build system is quite complicated so it's interesting and I want to kind of keep along with what Austin, the author of Hancho is doing but it's not going to be my primary focus going forwards what I am looking to do is work on USB host feathering support this is something that is a long time coming because the feathering itself came out in the fall I think because I was busy didn't have a chance to do it tiny USB has support so hopefully won't be too hard but I'm planning on picking that up this week and then any other 90 urgent bugs that come up I will be interrupted buying and get those fixed and then after USB host feathering stuff is checked in I want to update the IDF to 5.2.1 which just came out because I kind of am planning to do ESP BLE support after that and I just want to start with the latest the latest stable IDF for that one and that will be kind of like part of 9.1 probably will be include the IDF 5.2 update so that's what I'm doing thanks Scott I'm really interested in having a chance to use the USB host feather wing I think it would be really cool just for making all in one style devices if it especially if it works on the RP2040 with the DVI feather wing but anyway alright that rounds out status updates and we do have a couple of items for in the weeds this is the opportunity for long form discussions mostly what people have identified ahead of time although sometimes it can come out of things that we talk about during status updates and once again I will just take these in document order so we're going to talk to FOMI guy and then to tie it and then to Scott so take it away FOMI guy alright thanks Jeff I just wanted to chat about iSort there's an open PR in the cookie cutter repo where there was a little bit of discussion a week or two ago about this it's basically a proposal for adding a new step to pre-commit that runs this iSort tool on the code which can change the order that the imports are in generally or I should say more specifically the questions in my mind are how do we want to like nuts and bolts how do we actually want to make the change to the libraries so we want to do a PR for every repo or do we want to is it like okay just to do direct commits to main and then my assumption would be that we would do like a release sweep after that with Adabot is there any reason that that assumption is wrong or anything what kind of timeline if we do want to do that would we want to do it over it makes sense to me to kind of do it pretty soon here with 9.0 since it's like it's not a huge change in that the functionality doesn't really change but it is a large change in the sense that it requires touching a lot of libraries and then on the topic of touching a lot of libraries if we're going to be doing that anyway is there anything else that we might want to do at the same time there was a note added here by Justin which was something that I saw as well some talk over the weekend and discord about a configuration change to the line endings inside of Git I know one of the other topics on the actual PR itself too was potentially looking at a different code formatter I think called rough maybe instead of black but yeah if anybody knows of anything else that we've talked about or that they've thought about that might be good to do to all the libraries if we are going to be going through them anyway then it would be a great time to do it so those are kind of my thoughts and questions I had a question if we add iSort do you have to is that a change you have to make to every library if you don't change the iSort order right away but only when the next time the library has a PR oh interesting like could we add it like there's no this change doesn't change anything except you know it doesn't improve the libraries in any way right so if you just make it if it's made in something that's a build tool that's not part of each repo then only when we do when somebody makes a PR to the library then it will iSort those things and it'll get fixed at that time yeah that's a good thought I hadn't considered is like if we update the pre-commit config now but not change the not change the actual code although I do think it will make the actions um it will make it hub show the tip of the main branch is not building which is not ideal we'd like people to come and see a green check mark instead of a red X yeah I just want to chime in about rough in several of my personal projects I have switched to using rough and it replaced the use of black and I sort and pilot and it's faster um so I thought that was really cool I don't know rough is kind of opinionated so like there are some things that it may think are are good style in python 3.11 that turn out not to work on circuit python so I would check whether it is compatible produces code that still works on circuit python like I think in particular um it's really opinionated about using f strings and uh we we don't fully maybe we do fully use that now I'm not sure but anyway we'd want to I think do some pilot checks to make sure it doesn't mess things up in a circuit python in a compatible way but it's one tool instead of three and it's faster which doesn't make a big difference but over time it can make a cumulative difference but we would also have to like reformat a bunch of our libraries because it's slightly different than pilot and what it wants and so forth right yeah which we would be doing with the eye sort anyway although rough it may make more substantial changes certainly that is cool though that it replaces the other three I didn't realize that it was not just the formatter like black I am actually um that sounds pretty good to me to replace the three of those with one one thing personally have you found in your usage of it um that it's like relatively configurable kind of like black so like theoretically if there are things where it produces code that is incompatible we could maybe configure it to skip those checks or is it pretty rigid uh or do you not know necessarily I don't want to commit to anything while I can't like develop information in the middle of this uh my impression is like pilot is super configurable you can turn on and off each individual warning and black as a code formatting tool it has only a few things that you can adjust and I believe that rough goes more toward the black end of things where we have one way that people should do it rather than the configurable way but I would have to check on that because I didn't actually tune those things for my projects I just made my project fit with what rough um required I'll try rough lets you turn off things like oh there are too many variables and stuff okay micro pythons which to rough a number of months ago and didn't have much trouble oh that is a really good data point Dan yeah so uh also by the way f-strings are turned on for everything so there's no there are no builds without f-strings so I think that using the model of what micro python did and we might even look at their rough settings probably the way to go because that will make it compatible with upstream in various ways okay I will dig around a little bit see if I can find their settings and then start applying it just locally to libraries and kind of see what shakes out as far as changes and I'll get those modified libraries onto devices make sure everything is still running there and I'll report back on that thread um how everything goes but um all of this sounds positive to me so I would say I'm you know pending the outcome of that kind of stuff I would say I'm relatively in favor of uh of changing over yeah I'd switch to rough with our micro python update but if we want to do it sooner that's fine too okay yeah and it can always be separate uh on the core in the libraries as well so if we do swap the libraries in cookie cutter now um it sounds like whenever micro python gets merged in again we may just pick it up automatically depending on how it's set up but uh in the core that is I have some usability opinions on this uh after you know the 12 PRs that I've been going through this weekend and there's been a big change in how I used to submit things and now the new way that I have to do it um I've never had a problem with black like I would just run black and then submit and it worked every time now I run black and then I have to run pilot and then I have to you know try and get I sort you know all sorted out the way that it wants and then I have to do pilot manually and then figure out the pilot issues and pilot I think as as mentioned has actually become much more strict with requiring f-strings for things that it never required before like I have a date time formatter uh you know struct formatting time that's always been um it's always used the dot format you know whatever the regular Python dot format now it required me to change it to f-strings so I had a lot of changes to make this weekend it wasn't just you know the regular stuff I it was forcing me to use f-strings for everything yeah yeah it's so that's just I think I mean I think that those kinds of frustrations I think will probably just pop up naturally no matter which system we go forward with it whether it's pilot or rough just as they update their like quote-unquote what is correct in their system as they make changes then it's like old code on our side will have to change to make it happy one thing I would mention though it sounds like you're doing all of them separately pre-commit is really the tool that's designed to solve that particular problem I think it sounds like I didn't follow everything but it sounds like you have trouble getting pre-commit running if I were you I would be working towards trying to figure out how to get maybe like a separate instance of get for windows installed separate from your desktop one um and trying to figure out how to get pre-commit running because that pre-commit will basically do all of those things for you and as far as I understand it with iSort it should also behave like black does in that when you run pre-commit it makes the changes for you so if you run it the first time and it fails and then you just run it immediately again it should succeed because it made the changes for you yeah something's got to be messed up because nothing like black black will format for me but pilot does not yeah pilot won't right that's expected yeah and because pilot can't really because there's not right but if I pre-commit pilot fails you have to run pilot manually to figure out where pilot is failing and then run you know it's this it's for you yeah when you when you run pre-commit if it fails for pilot it should tell you it should print out like failed for pilot on this line for this reason yeah it's all line ending like a thousand two thousand line ending errors I see okay well that's a different issue that's your next that's your next issue right yes and I appreciate all the help that everyone's been giving me there's I'm not ignoring your advice it's just I got issues right yeah and you were talking about running pilot manually and I believe when when pre-commit runs pilot in a cookie cutter to repo it passes some flags there to find in the pre-commit config.yaml file and I'm pretty sure one of those is to turn off this particular diagnostic about f-strings so if you are not running it with the same flags and if you're not of course running the same version of pilot those are two reasons that your pilot would be more exacting than the real one but I also think that kind of debugging your get set up is not what we need to do right now so if you're content I think we can move on from that the versions that I'm running I checked from the Gamble on the repo and made sure that all of my versions are exactly the same in fact I had to downgrade I sort from like something in order to get that to function on the same way that the repo wants it so I had to do a lot of customizations and it thinks yeah that's just maybe it's just me no but there's also pilot RC there are initializations that are different for the libraries if you just run it without initialization files it'll get in trouble yeah after all these PRs I'm probably just going to wipe everything and just re fork everything yeah I end up re reclining stuff a bunch as well to fix issues when I get tired of fighting with git so I can definitely relate to that in terms of swapping so it sounds like we'll check out rough and it sounds like rough actually does the same thing that I sort does in addition to some other stuff so if we did want to adopt Rust then effectively we would not really adopt I sort is that a correct understanding on my part I believe so it's all in one so yeah okay so I will check that out and leave some leave like what I find in a comment on that PR I would still be interested if we do look to do that is there any opinions on like how mechanically we do it like PRs or direct commits just and I see your offering to help in the GitHub I definitely appreciate that do we like how do we think about moving forward with that either PR each of the libraries and then run through and do all the reviews and everything or just make the commits directly try to figure out some way I don't think the adabot patch tool I don't think necessarily can work for this because it can really only modify files that are the same across all the repos like the files that existing cookie cutter essentially whereas either I sort or rough either one it's going to end up making changes to the code files which obviously are different in each repo so I don't know that there's a way to automate it with adabot but there could be a way to automate it with some other tool if we're okay with that and then just committing to main but I wanted to get thoughts on that I'm happy with any automatically performed fixes to just go directly to main I would review some of them you know but I wouldn't necessarily go through the pull request process yeah we've done that before when they were massive when there was something all the libraries we yeah and there's mechanism and adabot to do that okay I'll have to dig around further I think there is yeah okay alright I will I think that covers that we'd stop it then I'll check out rough and leave some comments there and we'll go from there well there was some question about line endings but I don't know if you really yeah that's good good call yeah if there's any I mean generally speaking any kind of configurations we would want to we would want to change be it pre-commit or get or anything else the line ending ones definitely amongst them I would say I don't necessarily have much to add to the specifics of that choice because I don't fully understand it when I was using get on windows I just took the default whatever it tells you in the installer is the defaults and then since then I've switched to Linux and it doesn't ask you or it's different or why do we see what rough does with line endings because maybe it does something clever yeah that's a good point too yeah I think the goal would be to make sure that it doesn't matter and nothing fails when you run Lintine locally but then it always commits with just plain line feeds like that's the problem right now is that the Lintine requires line feeds then depending on how you check it out if you're checking on windows it changes the defaults to control line feeds so then the Lintine fails so we can either do that with get attributes to fix that or potentially depending on rough says so right or people who are using windows can also make not just get attributes but they can change it global that force it's it mainly is an issue about their their editors whether their editors are can deal with bare line feeds or not I'll try to test on windows as well I do have access to a windows machine so I'll try to run through the same process of like running rough on a library and seeing what it spits out alright so I'm done I I'm exhausted my ideas mind feeds yeah well yeah I agree with Justin the key is to make sure that a DOS format file is not committed but if somebody has a DOS format working file that's different and that should be fine if we can make it fine but yeah we don't want people you know I opened it in my editor and it changed every line and then I open it in she opened it in her editor and it changed every line and that's just not a good road to go down does anybody know what walk we is just moving on to the next item because if you do I'd love for you to read Tyath's thing instead of me because I don't know what it is I guess I do yeah I know what it is I've used it a couple of times I can't say I have super in depth knowledge but walk we it's like a I don't know if emulator is the exact correct term so I apologize if I'm misusing the term emulator technically speaking but it's basically an emulator for microcontrollers the one that they had back when I used it was the Raspberry Pi Pico so it runs in your computer like I think it was in the browser you load up a web page you know kind of like code that circuit python dot com or whatever when you're coding your circuit python device except there's no device the device is actually emulated and you can run micro Python and circuit Python code and I think they have some Arduino stuff as well although I was less interested in that side so I don't know for sure Tyath says about it here how's USB host support it was a bit less functional than hoped MSC this was a 9.1 thing or likely to squeeze into 9.0 I'm not sure if this question is about that's not what I wanted specifically okay I gotcha should I just answer that so I think they ran into issues with the library so I don't think it's necessarily a circuit python core issue it's the problem is that like all of the class support is done from python for usb host except for except for keyboards right now so I it's not right to think that it's a 9.0 or 9.1 thing because it's more of a more of a library issue than a core issue as far as I can tell we are trying to circle back to it you know the usb de feathering stuff will probably have the same issue um yeah it also depends on our prioritization for learn guides and things but yeah I don't think I don't think it's a core issue from what I remember when I saw it cool a couple other things mentioned here on the walkway front tithe did some testing on 9.0 rc1 on walkway this weekend using the online virtual simulator via ci testing ESP32 went into safe mode possibly simulator related the s2 and s3 worked well the c3 had simulation error being fixed by eurish there's a link here probably to a github issue or something like that I'm guessing um c6 and h2 to come give walkway a try if you haven't already and if you want to test ci then ping me for an api token you can use so yeah that sounds really cool actually I totally did not realize I'm assuming s2 s3 I'm assuming these are all you know esp32 variants so it sounds like since the last time I looked at this they have added a whole new port because I think it was rp2040 to the best of my recollection so that's really cool to see that they've got some new devices I can say i for one and definitely looking forward to playing around with it you can do some really cool stuff I think I will mention is Tektrick here I think Tektrick was looking into this a little bit tithe so you might you might reach out to them and see just kind of pick their brain and see see what they came up with I don't know how far along it got but I'm pretty sure not too long ago this was something that Tektrick brought up as well using specifically using walkway with ci in order to run tests and stuff like that against the simulators which I also think would be really really cool if we could get it worked out yeah and I think I think Tektrick's goal was to measure library size with it too yeah ram usage would be another cool one I know we always have folks running in tissues would be cool to have some stats to be able to throw throw out there stats and stuff well I learned what walkway is so this whole meeting was worth it but let's move on to the next item and I will just prefix this by saying yes before handing it off to Scott to tell us what the question was so the question is are we ready for 9.0 Dan's done two release candidates RC1 was done on Thursday I think Dan and I don't think we've seen any major issues crop up over the weekend with that that's right and so the only our 9-0-0 final would be the same except for this one extra commit that fixes one boards a typo and a pin name so I don't see any reason to have an option for that I just merged the control C thing you did too okay you think that's safe? I think it's fine okay I mean let's also preface this with that we fully expect to have to do a 9-0-1 yeah and so the sooner we get it out this week the more time we have before we have weekend so I can do that I can basically do the release tonight from this afternoon and so maybe I'll go ahead with that anybody have concern? going once going twice going three times shipped I will not turn off the 8 bundles yet we don't usually turn that off until we're ready to start doing 10 pre-releases I think so there's a bunch of things about changing the defaults to be 9 and there's something about the screenshot generator I have a checklist in an issue so I'll do all that stuff and I'll make the 9 final release and publicize it and then we'll get plenty of things and I will also branch 9 so any 9-0 fixes will go into a branch so if you see something that you want to fix in 9-0-0 and later submit those PRs not to main but to the branch moving it over into main easier we tend to merge 9-0-x into main not the reverse any fixes you want out before a 9-1 need to go in 9-0-x great thank you to Dan for running the releases and thanks to everybody who's fixed bugs and found bugs and done all that it's very exciting to it's been just over a year since circuit python 8 so this is going to be great I appreciate it we had a lot of bugs and it was only a month or two ago and we had a lot of bugs and thanks to everybody who worked for those especially Scott I think it's pretty easy to say that 9 is better than 8 at this point too I agree with that I was more worried a month ago and now I'm not I'm sure we'll find something and we'll fix it and it'll be fine alright so watch for it everybody alright well with that exciting news and just past the one hour mark we are ready to wrap up the meeting this has been the circuit python weekly meeting for March 18th 2024 thank you to everybody who participated if you want to support Adafruit and circuit python and those of us that work on circuit python considering purchasing from the Adafruit shop at adafruit.com the video of this meeting will be released on youtube at youtube.com 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 as usual at 2pm eastern 11am pacific on march 25th the meeting is held on the adafruit discord which you can join anytime by going to adafruit.it slash discord to be notified about the meeting and any changes to the time or day you can ask to be added to the circuit python easter's role on discord we hope to see you all next week thanks everybody