 Hello everyone. This is the Circuit Python Weekly for August 16th, 2021. 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. Circuit Python 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 them and Circuit Python, consider purchasing hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join anytime by going to adafru.it-discord. We hold the meeting in the Circuit Python Dev Text Channel and the Circuit Python Voice Channel. This meeting typically happens on Mondays at 2 p.m. Eastern, 11 a.m. Pacific, although we move it when there is a U.S. holiday. There is an online calendar giving the dates for the meeting, so please check that out or add it to your calendar app. The meeting is recorded. We record audio from the Voice Channel and video of the Text Channel. If you'd rather not have your voice recorded, you are still welcome to participate. We will post up the video of this meeting on YouTube and then release the audio as a podcast. If you find the podcast is not available on your favorite podcast service, please let us know. There's a note stock to accompany the meeting and recording. If you're watching or listening after the fact, it should be down in the information about this video. If you wish to participate but can't make it to the meeting, that's where you can leave your hug reports and status updates, and we can read them during the meeting. I'll be adding timestamps to the notes document so that after the fact, you can follow along and skip to the parts that interest you the most. The meeting tends to run 60 to 90 minutes, so that gives you the option to skip around. And a friendly reminder, if you want to skip in and out of the meeting when it's live, that's fine too. It doesn't disrupt anything. A link to the notes document for the next meeting is posted to the CircuitPythonDev channel, so to leave your notes, check the pin messages to find the latest notes document. Now as to how the meeting will go, it is grouped into five parts. The second or the first part, this is not a part. The first part is community news where we take a look at all things CircuitPython and Python on hardware and give you a preview of the Python on microcontrollers newsletter. After that is the state of CircuitPython, the libraries and Blinka, where we look at the statistics of the whole project. The third part is hug reports where we go in around Robin and give everyone a chance to highlight the good things that folks are doing and take time to recognize the awesome folks in our community. Getting close to the end, the fourth part is status updates. It is also around Robin where we invite everyone to let us know what they've been up to since we last got together and what they hope to do within the next, we can tell the next meeting. And then the final part, if we need it, is called in the weeds. If we have any items that need a longer discussion than fits within status updates, this is where we do it. If you have a topic, please add it to the notes document in order and we will get to them as they come. And with that, I will head on to the community news section. As usual, Ann has an outstanding newsletter cooking up and I picked just a few of the top things that appealed to me, but there's a lot more. So first up, CircuitPython 700 Alpha 6 has been released. It's relatively stable but contains a number of issues still to be addressed for 700. The Python APIs it presents may change. In the notes doc, you'll find a list of notable additions since version 6.3 and you can also read more on the Adafruit blog. Next up, Hackaday, DigiKey and Adafruit are hosting what is called the Halloween Hack Fest. Join Hackaday, DigiKey and Adafruit for a Halloween themed contest. They want to see your crazy, creepy, ghostly, spooky, and awesome projects. More info at the link that FomyGuy is kindly adding to the discord as we go. Then the next one that made me go, wow, I didn't know CircuitPython could do that was this super cool looking game called Star Roids. It runs in CircuitPython and on at least six different microcontroller boards and it is by our very own Todd Kurt also known as Todd Bot. Alright, continuing with the community project theme, the molecularist posted on Hackaday a tree of life branches out with a twist and it's a light up sculpture with 3D printed parts and it just looked so good. Alright, next, a detailed undergraduate course on microcontrollers and electronics from the Dyson School of Design Engineering. Link to the Imperial College website for that one. Breadboarding is the itsy bitsy to cramped for your style. The new M4 breadstick spreads the pins out to cover the length of a breadboard. On the Adafruit forums, a community member offered a pixel model of the Raspberry Pi Pico sized for display on the Adafruit Macro Pad with a great little classic Mac looking title bar on it, I just love it. And last item, a macro keypad for the VIM editor with Adafruit Macro Pad and CircuitPython is up on the Adafruit blog. I am a lifelong VIM user so if you ever have trouble remembering those longer reader codes, just chuck them on the Macro Pad, it will be great. Alright, the CircuitPython Weekly newsletter is a community run newsletter emailed every Tuesday. You may subscribe at adafruitdaily.com. The complete archives are available at adafruitdaily.com slash category slash CircuitPython. We highlight the latest Python on hardware related news from around the web including CircuitPython, Python and MicroPython developments. To contribute your own news or project, you can edit the draft on GitHub and submit a poll request with the changes. You can also tag a tweet with hashtag CircuitPython on Twitter or email cpnews at adafruit.com. Send in your own projects, your friends projects, your enemies project if you're on Twitter. Yeah, because we want to let people know what's going on with CircuitPython. And with that, we will head to the next section, the state of CircuitPython, the libraries and Blinka. We've got our lovely Adabot who does a survey of the activity over the past week and summarizes it for us here. So first overall, covering all of the CircuitPython core libraries and Blinka, we had 47 poll requests merged from 26 authors. That's two Baker's dozens. Let's see, I know there is someone new in here. Oh, so many names. A.J. Lennon seems like a new name. Eddie Spinal. And there was someone I worked with on a poll request into the core to fix the font file. I don't recall their name. So anyway, thanks to all of them, especially new or newer authors, it's with you that we continue to make our environment better. Moving on to reviewers who check everything off and check everything out and make sure we're putting in the right changes. We had 13 of them, so the Baker's dozens theme continues. Thanks particularly to the kitty, which is Ann, for picking up more reviews within the learn system, which I believe is counted in this number and why they're shown up here. And of course, to the regular suspects. Issues-wise, we had 41 closed issues by 18 people and 21 open by 19 people. So great numbers on participation. And also it's nice to see the issues number trending down slightly across the projects. And next, I will let Scott tell us about the statistics on the core. Hey, thanks Jeff. Okay, so the stats for the core, we had 28 poll requests merged from 18 different authors. So thank you to all of our authors. That's a, I think maybe our highest number of authors in a single week. So thank you everybody for contributing to the CircuitPython core. We had eight reviewers of those 18 authors is work. So thank you to all of our reviewers. You make it possible to have an ever-growing number of people contribute and author stuff into CircuitPython. We have 10 open poll requests. The oldest is 23 days old, so not too bad. And then we have three that are marked as zero days old. So a lot of new stuff coming in and a lot of the, it's getting processed and merged pretty quickly or closed pretty quickly. So keep it up everybody. It's really awesome to see our poll request numbers being pretty high, but also not, they're not sitting around a long time. So awesome. Thank you to all of our reviewers who helped making that happen. Issues-wise, we had 30 closed issues by 10 people and 10 opened by nine people. We're not down 20, which is amazing. We are at 423 open issues, which is probably a local minima for us so far. So we are actively troubleshooting issues. The way that we keep track of what issues we're kind of prioritizing is through the milestones. We have six active milestones. We have 24 open issues for 7.00, which is kind of our metric for when we can do a release candidate for the stable release. So we're going to, you'll see hopefully that number go down this week as well. We're going to really focus on getting 7.00 out the door because it's been a while and there's a lot of really good stuff in 7.00 that's not in 6.3. We have five issues not assigned to milestones. So these are things that have come in, tend to be over the weekend that we'll have to take a look at and decide, are they urgent? Are they bad? Do they need to go in 7.00 or can we move them elsewhere? So that's where we're at on milestones. As I alluded to, overall we're working to get 7.00 out the door and hopefully you'll see us close a bunch of issues. So please keep trying the alpha or hopefully soon beta for 7.00. Let us know if there's anything that you think is urgent and important to fix for 7.00 so that we can make 7.00 as stable as possible. So that's it for me for the core. Thank you, Scott. Next I will hand it to Ketney for the libraries assuming that the construction noise is not too bad right now. No, they seem to have stopped moving. So this section applies to all of the Adafruit Circuit Python libraries which is everything that starts with Adafruit underscore as well as the bundle and the community bundle and a couple other extras. We had 19 pull requests merged by 10 authors, one of whom I want to highlight. I worked with them to get their first pull request into Circuit Python which is a Pendley. And they went through getting everything set up because they wanted to possibly or not possibly to continue to contribute. So it was excellent to work with them and help them get their first PR in. And then we had nine reviewers. And that leaves us with 45 open pull requests. We had 11 closed issues by 9 people and 11 open by 10 people. So we are net even this week with 338 open issues. If you're interested in contributing to Circuit Python on the Python side of things, you'll find all of this information and more including open pull requests and open issues. You can search the issues by label. We need to do a little better with curating our good first issues but there's also bug in enhancement if you're looking for something a little more complicated. Find something that interests you. Let us know you want to work on it. You can also get started with reviewing. Take a look at the open PRs. If you have the hardware, test it. Let us know that you did. If you don't have the hardware and you want to review it for syntax or spelling, that sort of thing, feel free to do so and leave us a comment. And once you're comfortable with that, we can talk about leveling you up to joining our review team. In the last seven days, new libraries were Adafruit Circuit Python Ducky and a number of updated libraries that I will not read off. In terms of the libraries right now, we're going through and updating, still working on updating everything for breaking changes all the example code that involves anything that changed in Circuit Python 7 or in a couple of the major libraries that we have. And once we get through all that, everything will be all set and we'll be ready to go for Circuit Python 7. So if you have a PR that's open and you're waiting on us, please let us know. I know that there's a lot that are open that we just need to go through, probably in close. But that's something that right now we're working and getting 7 out the door, like I said. So priorities are elsewhere. But anyway, feel free to let us know if you are waiting on us for anything with your pull requests. That's what I've got. Thank you, Katny. And last up for this section, maker Melissa will walk us through what's up with Blinka. So Blinka would be our Circuit Python compatibility later for Michael Conrad's very high and other simple board computers this week. We had zero pull request merge and there are currently three open pull requests. There have been zero close issues by zero people and zero open by zero. We're living in net F60 open issues. We had 8,735 wheels downloads in the last month and we're currently supporting 75 boards. So overall, no activity. That's it. I think it's quiet because it works. I guess that's a good thing. Also, apparently a shortage of new boards to add, which it's just as well. Who needs to support 76 boards, right? Yeah. All right. Well, next up is hug reports. Hug reports is kind of an anecdote to bug reports in which we like to focus on what the people in the community around us are doing to support one another and improve the software. So this is done as a round robin. I will start and then go in alphabetical order through the notes document. If I happen to skip you, please let me know and I will circle back and otherwise I will just head through things. And if I need to read your notes, please note that in the notes document. So anyway, I have a group hug and then a hug, especially for Ketney. I hope you can stay sane during the construction at your apartment. And Scott, a hug for you for helping split up the meeting dates for the next month or so while Ketney finds a less conducive atmosphere to hosting the meeting. All right. And with that, I will pass the baton to Jerry. Thanks, everybody. And I have a group hug to everybody. Thanks. All right. And what do you have for us, Ketney? I have to scroll. That's what I have for you. All right. So I have a hug report for Foamy Guy for a prompt response to a feature request for the CircuitPython dynamic screenshot generator. One of our internal folks, this was the first time that she had dealt with them and had an initial impression that the screenshots were a little bit confusing just based on file indentation and that sort of thing. And that was the end of last week and that's already been fixed. So that's amazing. I think K-Much was involved, but definitely Foamy Guy and Warrior of Wire for fixing the vector IO to work with display rotation as well as adding some other fancy things to it that make it work a lot better. The display rotation was the bug that I had to Jeff for finding a bug with and subsequently updating Piland on the Adafruit Learning System Guides repository and to Scott and Jeff for taking over the meetings for the next few weeks to deal with the brain rattling construction going on outside my window. All right. Thanks, Ketney. Hang in there. Next up, Melissa. I'm giving you a hug report to Brent for working with me and giving the NPM generator for a letter snapper finish and a group type of remnants. All right. And I have notes from Mark, also known as Gambler, who thanks me and Dan for the discussion on duplicate object checking. And next we go to Scott. Hello. Hug report to Dan H for sticking with audio debugging even though it's a slog. Glad you found some things and made it a lot better. And second up, hug reports to Todd Bot for Star Roids. It's very cool to see what CirclePython can do. And hug report also to all the folks that kind of picked up Display.io from me and kept making it better and teaching people how to use it because I definitely didn't get it all the way. So it's cool to see folks take advantage of it. All right. At the top of the alphabet, I have notes from C Grover who sends a group hug and also a hug to Todd Bot for the nostalgic and inspiring Star Roids code. Fantastic object physics and smooth animation. Then from Charles, I have a group hug and that brings us to Dan. All right. Thanks. So thanks to Lady Aida who last week made some final suggestions about audio debugging which got me to the finish line on figuring that out. Thanks previously to Scott who I've already thanked for several discussions about the audio debugging. Thanks to Cadney and Phil B who tested the audio fixes and they seem to be in good shape. And thanks to MicroDev, one who fixed a code reload crash very quickly, which was pretty obscure fix, but it works. Thanks. OK. All right. Then I have notes from David Glaud who has a hug for Todd Bot for the Star Roids game. Check out the notes document for the diuresis over the eye to inform us as to the pronunciation. And then a hug to me for trying to fix the progress bar on MagTag which affects a vaccination tracker. Learn guide. Stay tuned. I hope I can do it. All right. And rounding out the section is Foamy Guy. All right. Thanks, Jeff. First up, a user on Discord HEM has been, I've spotted a couple of times, they jumped in to help folks in the help with Circle Python Room. So that's always great to see newer folks jumping in to help. To you, Jeff, for a couple of different pointers that you gave me this week, some stuff in the core and also in CPythonOS.Walk. I definitely appreciate all of that. To Mark Gambler for some reviewing and really thoughtful feedback on my PR in the core for Bitmap Tools, a new function in there. To Neeradoc, I'm a little behind the times on this one. I think this happened a while ago, but I definitely appreciate it nonetheless. Neeradoc added support for multiple bundles inside Circle so that it can find the community bundle. And then recently we added the Circle Python org bundle as well. And it was super easy because of the work that they did. And then my last one, I did want to just give a shout out to the user Liltex on GitHub. I believe they made their first contribution to the libraries. They added some new functionality in the Pi Badger library to set some colors on text, which was really nice. So thank you to all those folks. All right, thank you. So next we go to status updates. We really love to know what you're up to working with Circle Python or electronics or retiling your kitchen floor, whatever it is. Although if it's not super Circle Python related, don't go into too much detail. So, but for the most part, we invite you to tell us what you've been up to in the past week or if it's been longer since you've been able to join us for whatever period of time. And then what you have set up to accomplish this week. No pressure, just sharing what we're up to. So I will lead off and we will go in the same round, Robin fashion. Last week I helped start the process of modernizing Pilant in the learn repo. I looked into some messages which sounded scary but didn't cause the CI to fail. And it turns out, yes, they were scary. They were hiding a bunch of Pilant problems. And so this became a good opportunity to update to the same version of Pilant that we're using on the bulk of the libraries. So that is now happening on all new guide code, but we marked all of the old guides that had problems with a skip marker. Dylan is going to take on some of the work to modernize the old guides. But if you have an old guide and are motivated to fix it up or a guide you're interested in and are motivated to fix it up, you are welcome to find those files and fix it up themselves in pull request. That would be a huge help. There are about 150 guides or 150 folders of code that were affected. A new guide of mine went live on the learn system. It covers how to use the QR code library in Circuit Python called QRIO. And the version of Circuit that supports install-auto was released. When you use auto, it looks for the libraries that are included in your code.py and just installs those. It kind of leverages what I learned from the screenshot maker library about using the find imports module in Python. I added in the core a check for the version number of a program called code format. No, of a program called Uncrustify, which is used by code format. 0.69 is really easy to install on Ubuntu, but it doesn't work like we need it to. So now you'll get an error if you don't have 0.71 or newer. It's easy to install 0.71 if you use a PPA on Ubuntu. It's easy to install 0.72 if you're on the stable version of Debian. This is documented, or ask us if you're having trouble with it. I started on pull request for enhanced argument parsing, which is a core feature to save code space and also improve some error checking. But I'll put it on hold for now. And although it wasn't reflected in the statistics, I thought it was last week that I added the PCF 8563 real-time clock driver to the bundle, but maybe I'm off by a week. And anyway, this week is shifting gears to focus on bug squashing for version 7. The first bug I've fixed, the first bug I've picked up, which I don't have any traction on yet, is a problem that occurs when you import both the progress bar library and the magtag library and initiate a Wi-Fi connection. And not a lot about it makes sense yet, and I'm trying to reproduce it on a bug on a board where I can use a debug header instead of just guessing or maybe using a debug UART. So hopefully I'll be able to move on from that bug to other bugs, but in any case, the focus is on helping with that effort to get 7.0 ready for a beta release. And with that, we'll move on to Jerry. Hi, well, as I told you last week, I got a new 3D printer, so most of my time was spent there. But one thing I did accomplish was getting the ESP32 OV2640 webcam demo working on the cell rover, which needs the rover because it needs the big PS RAM, but it works great. And so that's kind of nice because it's a much smaller footprint than the big Kaluga board, but I did it without a display, so it just pumps it over to AIO. That's kind of fun, and I'll try later, probably today or tomorrow, probably to do the QR demo as well. I was going to ask if you think it's worth putting them into the library as examples. It's really the identical code to what you've got in there already. The only thing different is specifying the pins because they're not predefined in the pinout. Kenny, do you want to offer an opinion about that? Run that by me one more time? I've got most of it except for the what about the pinout? The only difference between this example and the existing example is the pinouts because they have different names on the cellular board. They just use the generic IO number pins rather than the descriptive name pinouts that are in the Kaluga board. I'm wondering if it's worth an extra example or just anybody who really wants to do it could figure this out. How gnarly is the pin set up? How many lines of code is it? There's like 14 pins or something? Yeah, you specify a tuple with eight pins in it and then about make there a total of 16 pins that can be defined. Okay. I'm not sure. Why don't we leave it out and if anybody runs across it, we can answer it and add it and if it looks like it's useful. Yeah, that sounds like an excellent plan. My bias would be to put it in. I think more examples are always better and the pin naming of the cello is going to be the more common case than the Kaluga naming. Having that example would be good for other boards because other boards also tend to do the IO naming. Okay, I'll get the QR one working as well. I'll try and when they're both ready I'll submit a PR with them. Great, thank you, Jerry. Okay. Next up is Katny. All right. Last week, I tested the PR to update Vector IO and work with rotation, display rotation. I updated my macro pad code so FidgetMode is enabled by default and requires being manually disabled and is re-enabled after a customizable delay which defaults to 15 seconds. This works a lot better because FidgetMode isn't great when you have to remember to turn it on. I worked through a gnarly CI failure on the learn repo that turned out to be due to a three month old branch. Pro tip, always get pull before getting started with your code. Prepped for and co-hosted show and tell if I can type. Merged a few PRs related to updating Pilant in the Adafruit Learning System guides repo. This was a long time coming and I'm very excited about it. Updated all the files still called main.py on learn to code.py and started the mcp9601 guide. This week, going to finish the mcp9601 guide add mp3playback to the macro pad library do a new guide on circuit python mp3playback on rp2040 which is going to include a new template for mp3playback on circuit python in general. And then once I have the hardware in hand and all the rest of that is done I'll be starting the scd40 slash 41 guide. They're pretty much exactly the same thing. Circuit Python doesn't support the extras on the 41 so in circuit python they're identical. So the pinouts are the same etc etc so the guide is just happens to encompass both because we're carrying both because we have no idea which one we'll be able to get. And in the rest of my world this building is under construction they're redoing the side of the building. There's a lift shaft attached to my balcony that traverses the entire 21 floors and sounds like thunder every time it moves. And then there's the sound of removing brick. I'm sure they can and will find something else with which to make lots of noise. That's what I've got. That sounds awful, Katny. Our thoughts and prayers are with you. But next up is Melissa. So last week I finished up the MacBookPad RPC and Home Assistant guide I finished up my changes to the Websterial ESP tool and NPM Generator I added missing boards to CircuitPython.org I started trying to re-skin the CircuitPython code editor but ran into too many difficulties getting intestines and stuff. So I'll try and get some help with that. I worked on some issues with the Adafruit EarthWano EPD library and the missing example and some miscellaneous GitHub and guide updates I did. This week I'm hopefully getting the re-skinning going and then getting the fixes and other stuff I moved into my new office. That's it. Alright, next up at the end of the alphabet is Scott. Hello On Friday I tweaked the Bealee broadcast levels when broadcasting publicly I raised them up a bit to make it easier to get things going. On Thursday I started debugging USB on the IMX RT and I'm waiting for Beagle 480 coming tomorrow hopefully make it easier to debug. It looks like CircuitPython's running okay but all the USB stuff is not working so something's weird there. This week I need to get Xcode going for iOS 15 so I can test out the latest Glider code. I'll be expanding the Bealee file transfer API to get a better support for the iOS file mechanics and we'll be looking into file system Unicode handling too. I've got to figure out how that will not work or will work or whatever I'll be looking at that and I'll give Melissa a hand on the code so lots of Bealee support one major bug to look at and some Bealee transfer API stuff too. Alright, back up at the top of the alphabet I have notes from Ann who says I have assumed review responsibility for most of the learning system PRs if there's an Adafruit learning system PR please add user the kitty me as a reviewer. Thank you to everyone submitting newsletter content. If you're working on or see or smell a Python on hardware project or news send to cpnews at adafruit.com or tag me on social media or tag CircuitPython. Also replacing print head parts and bought a new print surface for the Prusa Mark II S3D printer I got from Noa and Pedro. Next up notes from Seagrover First, finally got around to completing a portable indoor air quality monitor using the SCD-30 breakout and CircuitPython. The extreme heat and smoky sights for the perfect motivation canceling any and all outdoor projects. The primary implementation was targeted for the large pygamer but the code was built to adapt to multiple boards including the clue funhouse and entire PyPortal family. Next up, ported the AMG-8833 thermal camera to the Game Duino Dazzler with a feather M4 running CircuitPython. Graphic speed increased about 4x. Wow. Still learning how to fully manipulate the Game Duino graphics and bitmap primitives but making progress. And last, the new string car featherwing board should arrive from Mark today. Stencils arrived last week and I've been sitting on the desk loudly complaining about having nothing to do. And next we will go to Dan. Okay, so after weeks of working on it, I'm saying so here, I believe I fixed the RP2040 audio issues. It plays nicely at a variety of speeds without crackling and there is a click beginning at the end sometimes, but that's not really the problem. That's a whole separate thing and we'll work on that in a different way. There's an issue about that. Because of the code that I fixed is similar to some code that's in SAMD51 implementation and I'll look at seeing if I can apply the same kind of fix to that code as well. I finished the PR which is now under review to allow multiple report IDs in a report descriptor in HID. And that is sort of a step toward supporting some much more complicated devices. I've tested this fix and because of how it works I had to change the API in an incompatible way. So this change since we introduced the HID custom HID devices in 7.0 it doesn't really matter we don't have to be backward compatible with anything. But this is the last change to the API that we were planning for 7.0 or incompatible change. We might add some stuff. And so we can start moving on to the beta releases from the alpha releases. Also in conjunction with this I'm debugging an issue that somebody is seeing with using a Japanese keyboard. I released alpha 6 of 7.0 last Wednesday. There probably will be another release relatively soon. And I'm continuing to work knocking down the remaining 7.0 issues with the rest of the core team Scott and Jeff. Okay. All right. And I just want to add to that I tested out Dan's audio code on the RP2040 after it was merged. And I found that it can actually play MP3s at like 16 and 32 kilobits per second if you want to try that out and let us know I was really excited to see that happen. Anyway, I now have notes from David Cloud who is lurking. David has been upgrading a few boards to alpha 6, playing the Star Roids game on PyGamer trying but failing to run it on the micro game 10. There's not enough memory. And getting a micro bit version 2 not tested with circuit python yet. All right. And once again foamy guy gets to round out the status updates. Alrighty. So last week I did some cleanup in the circuit python org bundle to get the releases running. The bundle existed but it was not making the releases yet automatically in CI. There was a few things to fix there. So I did that and I got that added to circuit so that it will check there when it's installing libraries. I went out of order a little bit but I did also last week I cleaned up the code I added some input validation and I got a PR submitted for an update in bitmap tools to add a boundary fill function. So I was excited about that. That's really the first real thing I've done inside the core. So that was fun. I made a few tweaks on the Star Roids game to get it running on the PPU M4 which has a little bit different hardware than some of the other devices. I modified the screenshot tool, the generator, to include subdirectories, the first level of subdirectories, and a couple other small fixes. For this week I am getting back into the circuit python org bundle to move the dial widget over and that's also the only widget we have that uses vector.io so I'm planning to update that to use the new API that was just released recently and then I'm also going to make a repo for this arc gauge widget that one of the community members made and add the rest of the widgets. There's some other widgets that exist they have repos but they haven't been added to the bundle yet so I'm planning to do that this week as well and that's what I have. Thank you. Alright and with that we will transition to the last section of the meeting called in the weeds. This is the chance for longer form discussion. Anything that is just kind of too lengthy for status updates where you want to get interaction from a variety of community members. So we've got one topic today and I will pass it to Mark to introduce it if you're available. Yep I am back. Hello. So this came about when we were discussing checking for duplicate pins and key matrix and then between a discussion between Jeff Dan and myself on discord the idea that it should be a more generic check and how to go about that came up. We had actually sort of delved into why sort of the digital IO objects don't check some of this but then that gets into more of if you start reserving pins then you have to and you hit a duplicate then you have to unroll all the reserved pins so it's more of an exception handling situation. So I did up some code that would check an argument list in the coming from Python and just raise an exception if there's any duplicates. There's a slight twist in key matrix that actually has two different argument lists that needs to check. So while I'm not the idea of writing check and then the sort of like check underscore 2 I don't think there would ever be a case where you would be checking 3, 4, 5 lists that I can think of so I don't really want it. I'm not sure if it's worth sort of the time to make it more generic and potentially more complicated versus just writing the two functions. So really what I was just wanting to get from some people is do they think this is a good idea and if so I can rework the PR to switch it to sort of this method as opposed to what before was just a key matrix specific method. So I know that RGB matrix would benefit from this when it comes to the actual RGB pins so I would like it to be usable from outside of keypad. As far as validating other kinds of things the code that you've written it says if obj1 equals equals obj2 and that's working in c with mpobjt objects. So that is testing whether that's equivalent to using the python is operator so when it comes to comparing ints in python there's no guarantee that if you compute the number one one way and if you computed another that you get the same object according to is and so it might not work for checking other kinds of objects which result from calculation instead of just being the one and only pin5 object that exists in the world. So I'm not sure about supporting other kinds of objects but pins but I definitely see a use for pins that is outside of keypad code. Yeah and I can always switch it to work with pins only there's already the isPin function I can grab that from there but if it makes sense to people then yeah I can write it up like that and it's available because it's in arg checks and it can be called from any any function or any sort of constructor function really. There are a lot of other places we could call this like just even to see that two pins aren't the same say when you're grading an SPI object or something I mean usually it sort of catches that anyway but for other reasons but I haven't found what Jeff said we can gradually apply it to other places as we want to Yeah that's sort of what I was thinking I would I'll get it working for the keypad stuff and then yeah if it's more generic then sort of as opportunity arises it's easy enough to add elsewhere Yeah I think that makes perfect sense but these APIs are internal to CircuitPython so we can change them when we need to and all we need to do is change all of the places that use it so if they turn out to be two or three or five places but we decide we want this to work differently it is not hard to do it's not a monumental effort we don't have to coordinate it with a major release or do it in 100 different repos so I think it's better to get something that's going to improve the status quo and that we believe can be built on than trying to make it the most perfect Alright that sounds good then I'll rename it to be more pin specific and work on getting a PR, modifying the PR for that then Alright thanks Mark Thanks Alright and that is the only topic we had for in the weeds so I am ready to wrap up the meeting um this has been the CircuitPython weekly meeting for August 16th 2021 thank you to everyone who participated and if you're listening in after the fact thanks for checking in on how we're doing if you want to support Adafruit and CircuitPython and those of us that work on CircuitPython consider purchasing from the Adafruit shop at Adafruit.com the video of this meeting will be released on 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 next Monday as usual at 2pm eastern 11am pacific that's August the 23rd the meeting is held on the Adafruit Discord server 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 CircuitPythonista's role on Discord if you'd like to participate by speaking you also need to be added to the role in any case we hope to see all of you next week thanks to everybody