# CircuitPython Weekly for May 16, 2022
Here is the notes document for next Monday’s CircuitPython Weekly meeting. It is at the normal time of 11am Pacific / 2pm Eastern here on Discord. Everyone is encouraged to attend! Please add your hug reports and status updates even if you’ll be attending the meeting - it’s super helpful! If you are unable to attend but would still like to include updates, feel free to include them in the notes and we’ll read them off during the meeting. Hope to see you there! @circuitpythonistas


Welcome to the CircuitPython Weekly meeting notes! Feel free to add your Hug Reports and Status Updates early. During the meeting, we go through them as a round robin sorted by username. If you can’t make the meeting and would still like to participate, add your notes with a “(missing meeting)” after your username and we’ll read them off for you. 


Add any longer-form discussion topics or general questions you have to the “In the weeds” section. 


Thanks! We hope to see you in the meeting!


Tim is hosting.


Video is available [on YouTube](https://youtu.be/lvgmQF7CNo4).


Join here for the chat all week: http://adafru.it/discord.


The CircuitPython Weekly happens normally at 2pm ET/11am PT on Mondays. Check the #circuitpython channel on Discord for notices of change in time and links to past meetings. Meeting times are also available in [iCal format](https://raw.githubusercontent.com/adafruit/adafruit-circuitpython-weekly-meeting/master/meeting.ical) for use with standard calendar applications and can also be viewed [in your browser](https://open-web-calendar.herokuapp.com/calendar.html?url=https%3A%2F%2Fraw.githubusercontent.com%2Fadafruit%2Fadafruit-circuitpython-weekly-meeting%2Fmain%2Fmeeting.ical&title=CircuitPython%20Meeting%20Schedule&tab=agenda&tabs=month&tabs=agenda).


If you want to be able to participate in the meeting by speaking, you will need to be added to the @circuitpythonistas role on Discord. Please ask any one of the moderators or admins to add you if you’d like to join.


CircuitPython development is sponsored by Adafruit. Please support them by purchasing hardware from https://adafruit.com.


Reminders: Podcast available on most services. Let us know if we’re missing some.
## Community News
The Raspberry Pi Pico Learning Path
Now, thanks to our brand-new and free Introduction to Raspberry Pi Pico learning path, young coders can easily join in and make their own cool Pico projects! This free learning path has six guided projects to help kids to independently develop their coding skills, and their skills in physical computing and electronics. https://www.raspberrypi.org/blog/kids-coding-electronics-raspberry-pi-pico-free-learning-resource/


PyCon US 2022 Highlights
PyCon US 2022 Highlights: Eric Matthes provides personal highlights from this year’s event
https://ehmatthes.com/blog/pycon_2022_highlights/


Provide the Micro:bit Educational Foundation Your Feedback
The Micro:bit Educational Foundation recently released a beta version of the new micro:bit Python Editor and they would like to hear about experience using it -
We would like teachers to help us test and improve the new micro:bit Python editor by using it with your students and help shape the future of learning text-based coding with the creativity of physical computing. If you are a teacher and are interested in teaching Python with the BBC micro:bit, we would welcome your feedback. Fill out our short form to apply to join the user study. https://form.jotform.com/221313264750346


Pico Dual Circle Displays
  

Two GC9A01 round TFT LCDs being driven by CircuitPython on a Raspberry Pi Pico, battery powered with an Adafruit QT Py BFF https://twitter.com/todbot/status/1524482667919552513


Smart Cooler Monitor Using Circuit Playground Express and CircuitPython
  

https://blog.adafruit.com/2022/05/16/smart-cooler-monitor-using-circuit-playground-express/




### Newsletter Details
The CircuitPython Weekly Newsletter is a CircuitPython community-run newsletter emailed every Tuesday. The complete [archives are here](https://www.adafruitdaily.com/category/circuitpython/). It highlights the latest Python on hardware related news from around the web including CircuitPython, Python and MicroPython developments. 
To contribute your own news or project, edit next week's draft [on GitHub](https://github.com/adafruit/circuitpython-weekly-newsletter/tree/gh-pages/_drafts) and [submit a pull request](https://help.github.com/articles/editing-files-in-your-repository/) with the changes. You may also tag a tweet with #CircuitPython on Twitter, or email cpnews@adafruit.com.
## 06:33 State of CircuitPython, Libraries and Blinka
### 07:00 Overall
* 37 pull requests merged
  * 24 authors - rsbohn, tekktrik, jcerise, jepler, ryanskeith, ktkinsey37, Neradoc, bergdahl, deshipu, makermelissa, kattni, davclark, wtuemura, TG-Techie, matt-land, todbot, tannewt, BigTuna94, weblate, SimonVail, wlcx, waiweng83, FoamyGuy, dhalbert
  * 7 reviewers - TheKitty, tannewt, jepler, makermelissa, FoamyGuy, dhalbert, kattni
* 30 closed issues by 9 people, 23 opened by 17 people


### 08:25 Core
* 21 pull requests merged
  * 15 authors - wtuemura, tekktrik, TG-Techie, todbot, jepler, tannewt, weblate, SimonVail, Neradoc, bergdahl, deshipu, wlcx, waiweng83, BigTuna94, dhalbert
  * 4 reviewers - tannewt, jepler, dhalbert, kattni
* 13 open pull requests
  * https://github.com/adafruit/circuitpython/pull/5352 (Open 242 days)
  * https://github.com/adafruit/circuitpython/pull/5491 (Open 206 days)
  * https://github.com/adafruit/circuitpython/pull/5999 (Open 95 days)
  * https://github.com/adafruit/circuitpython/pull/6037 (Open 89 days)
  * https://github.com/adafruit/circuitpython/pull/6119 (Open 71 days)
  * https://github.com/adafruit/circuitpython/pull/6217 (Open 44 days)
  * https://github.com/adafruit/circuitpython/pull/6247 (Open 40 days)
  * https://github.com/adafruit/circuitpython/pull/6256 (Open 39 days)
  * https://github.com/adafruit/circuitpython/pull/6346 (Open 12 days)
  * https://github.com/adafruit/circuitpython/pull/6349 (Open 11 days)
  * https://github.com/adafruit/circuitpython/pull/6363 (Open 8 days)
  * https://github.com/adafruit/circuitpython/pull/6383 (Open 4 days)
  * https://github.com/adafruit/circuitpython/pull/6397 (Open 1 days)
* 19 closed issues by 4 people, 8 opened by 7 people
* 511 open issues
  * https://github.com/adafruit/circuitpython/issues
* 7 active milestones
  * 7.2.x: 0 open issues
  * 7.3.0: 0 open issues
  * 7.x.x: 35 open issues
  * 8.0.0: 12 open issues
  * Libraries: 20 open issues
  * Long term: 449 open issues
  * Support: 0 open issues
  * -5 issues not assigned a milestone


* Core download stats available at https://circuitpython.org/stats


### 10:26 Libraries
* 14 pull requests merged
  * 9 authors - rsbohn, jcerise, matt-land, jepler, ryanskeith, ktkinsey37, FoamyGuy, dhalbert, kattni
  * 6 reviewers - kattni, makermelissa, TheKitty, tannewt, jepler, FoamyGuy
  * Merged pull requests:
    * https://github.com/adafruit/Adafruit_CircuitPython_ESP32S2TFT/pull/6 (Days open: 22)
    * https://github.com/adafruit/Adafruit_CircuitPython_RFM9x/pull/73 (Days open: 7)
    * https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground/pull/116 (Days open: 6)
    * https://github.com/adafruit/Adafruit_CircuitPython_JWT/pull/11 (Days open: 6)
    * https://github.com/adafruit/Adafruit_CircuitPython_ImageLoad/pull/60 (Days open: 5)
    * https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_Layout/pull/70 (Days open: 3)
    * https://github.com/adafruit/Adafruit_CircuitPython_PIOASM/pull/47 (Days open: 2)
    * https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/380 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_VL53L1X/pull/6 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_MCP9600/pull/20 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Simple_Text_Display/pull/12 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_PIOASM/pull/49 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_PIOASM/pull/48 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_Layout/pull/72 (Days open: 1)
  * 30 open pull requests (Oldest: 594, Newest: 1)
* 11 closed issues by 6 people, 15 opened by 12 people
  * 644 open issues
  * 191 good first issues
* https://circuitpython.org/contributing
Library updates in the last seven days:
**New Libraries**
 * [Adafruit_CircuitPython_floppy](https://github.com/adafruit/Adafruit_CircuitPython_floppy)
**Updated Libraries**
 * [Adafruit_CircuitPython_RFM9x](https://github.com/adafruit/Adafruit_CircuitPython_RFM9x)
 * [Adafruit_CircuitPython_VL53L1X](https://github.com/adafruit/Adafruit_CircuitPython_VL53L1X)
 * [Adafruit_CircuitPython_MCP9600](https://github.com/adafruit/Adafruit_CircuitPython_MCP9600)
 * [Adafruit_CircuitPython_BNO055](https://github.com/adafruit/Adafruit_CircuitPython_BNO055)
 * [Adafruit_CircuitPython_JWT](https://github.com/adafruit/Adafruit_CircuitPython_JWT)
 * [Adafruit_CircuitPython_ImageLoad](https://github.com/adafruit/Adafruit_CircuitPython_ImageLoad)
 * [Adafruit_CircuitPython_PIOASM](https://github.com/adafruit/Adafruit_CircuitPython_PIOASM)
 * [Adafruit_CircuitPython_DisplayIO_Layout](https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_Layout)
 * [Adafruit_Blinka_bleio](https://github.com/adafruit/Adafruit_Blinka_bleio)
 * [Adafruit_Blinka_Displayio](https://github.com/adafruit/Adafruit_Blinka_Displayio)


### 13:17 Blinka
* 2 pull requests merged
  * 2 authors - makermelissa, davclark
  * 3 reviewers - FoamyGuy, kattni, makermelissa
* 6 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka/pull/417 (Open 460 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/496 (Open 294 days)
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 220 days)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/201 (Open 160 days)
  * https://github.com/adafruit/Adafruit_Blinka_Displayio/pull/91 (Open 1 days)
  * https://github.com/adafruit/Adafruit_Blinka_Displayio/pull/90 (Open 1 days)
* 0 closed issues by 0 people, 0 opened by 0 people
* 77 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* Piwheels Downloads in the last month: 9511
Number of supported boards: 88




## Hug reports


@foamyguy (host)
* @Paulsk for trying out the new TabLayout and making a PR to share a more advanced example with I2C sensor hotplugging capability
* @neradoc for sharing a trove of permissively licensed font files from another project
* @aioue for posting steps to test a PR in a comment that folks with less experience could find in the future
* @danh for new CircuitPython beta release
* pt and Ladyada for showing some neat geodes and fancy mineral specimens on desk of Ladyada


16:23 @danh
* @tannewt on his return for a good talk on CircuitPython updates and priorities, and for some immediate bug fixes
* @Neradoc for adding frozen module listings to circuitpython.org and readthedocs
* @Neradoc for noticing a possible build issue about supporting alternative flash chips for a particular board
* @tekktrik for making substantial documentation improvements
* Welcome back @TG-Techie, pushing the boundaries on core language semantics


@jepler (not present)
* @kattni  thanks for help adding a library to the bundle, and knowing the cause and solution of the other 3 problems I encountered while you were working with me


18:12 @kattni
* @tekktrik for applying patches to the libraries and updating cookiecutter over the weekend!
* @deshipu, @tannewt, @danh for helping me far more deeply understand mpy files.
* @tekktrik for helping me make a style decision on a guide.
* @danh for RC0.
* Everyone I missed… because I know I missed something.
* Group hug!


19:03 @MakerMelissa
* Group Hug


@Mark(Gamblor) [ probably not here / may have to go during meeting ] 
* Group Hug


19:33 @PaulCutler
* @todbot for help this weekend using requests to help me download an image from my webserver
* @Liz Clark for being a guest on the latest episode of The CircuitPython Show


19:56 @tammymakesthings (not attending) 
* @kattni for a great chat last week
* @foamyguy for the Deep Dives and other live streams, from which I always learn something
* Group hug to the community for being awesome!


20:15 @tannewt
* @kattni for all of the PyLeap testing and bug filing.
* @trev for letting me know of the reload issue.


20:40 @tekktrik (text-only, if present)
* @kattni for helping me roll out the bundle library patch for pre-commit file this weekend - 0 botched patches ( that I’ve found (✿˵ゝᵕ •˵) )
* @kattni again for offering to teach me how to use Adabot for future patches this week
* @foamyguy for helping to review some PRs I’ve been working on, as well as helping move some from PyCon forward
* Group hug!


21:15 @TG-Techie#5402 
* @kattni, for the warm welcome back and fielding my questions (about below)
* @jepler and @danh, for the swift response to my makefile PR
* @danh for adding __future__.annotations support
* A hug for whoever added ParallelDisplay in displayio
* @the community, Both for continuing to be awesome and for the upgrades in tooling
## 22:31 Status Updates
23:04 @foamyguy
* Last week
   * Hardware testing for PRs: EMC2101 Fan Driver and RFM9x Radios
   * Trying out @Paulsk’s advanced TabLayout example on PyPortal with different sensors
   * Starting a new project similar to PyPortal Interface learn guide using many new features that have been added to displayio since it was originally authored.The goal being more understandable code and easier to re-purpose into peoples own projects. Ultimately hoping to implement an Asyncio version as well
   * A pair of PRs to bring Blinka_DisplayIO APIs in line with some newer features that have been added to core displayio
* This week
   * Complete the remaining touch-ups needed on the last few PRs that were submitted during pycon
   * Test and review the advanced tablayout example PR
   * Look into an oddity with Blinka_DisplayIO and bitmap_labels
   * Try to wrap up testing around hidden vectorio shapes and make any needed adjustments


25:59 @danh
* Released CircuitPython 7.3.0-rc.0. Know of one possible fix for one board, but hoping for 7.3.0 final soon.
* Reproduced an ESP32-S3 I2C issue in a simple ESP-IDF example, and submitted it to Espressif. We originally noticed it in CircuitPython.
* Will be working on WiFi issues and also the CircuitPython port testing library I started. Also we still have plenty of 7.x.x bugs left to investigate and fix.


28:01 @jepler (not present)
* Last week:
   * Finished up enhancements to the PIO guide
   * Published the adafruit circuitpython floppy library into the bundle & readthedocs
* This week: I’m in Paris, France!




28:26 @jerryn
* Back from 10 days without internet - it was bliss …
* Just heads up that I will be greatly reducing my presence on both Discord and the Forums going forward. I had a lot of time to reflect on life’s priorities recently and need to focus my attention elsewhere. I’ll be around and will remain an active user of CircuitPython but will devoting much less time to monitoring Discord or the Forums.  I will also likely not be attending these meetings regularly. This is a fantastic community. Thank you for all you have given me.


30:07 @kattni
* Last week:
   * Taught Liz how to create Fritzing objects.
   * Proofed Liz’s first Fritzing on her own - well done!
   * Started and am probably 75% through the Library File Types guide page
   * Finished guide feedback
   * Tested PyLeap for PyLeap and CircuitPython updates.
* This week:
   * Finish up the Library File Types guide page
   * New guide documenting how to add a new project to PyLeap
   * Continue testing PyLeap
   * Pick arbitrary Fritzing objects for Liz to create to ensure she’s solid on the process
   * New guide on using Markdown and various tools to make an excellent GitHub profile page
   * Create GitHub repo for I2C Address Guide, and put all the data in Markdown on GitHub, and then embed it into Learn, so folks can make PRs with new addresses that are currently only being requested via guide feedback.


32:45 @MakerMelissa:
* Last Week:
   * Wrote a guide on using Runestone to edit CircuitPython code on iOS devices
   * Worked on the 2.7” eInk guide which will be the last revamped guide
* This week:
   * Finish up eInk guide
   * Deprecate the more generalized eInk guide
   * Start working through guide feedback for guides I worked on, but weren’t under my name


33:35 @PaulCutler
* Last week:
   * Finished editing 3 more podcast episodes and have episodes planned out to the end of September.
   * Completed my personal PyPortal project - the PyPortal automatically refreshes a record album’s cover art after being selected on my website


34:17 @tammymakesthings (not attending)
* Didn’t get anything I was hoping for done last week because of work and personal conflicts :-(
* This week: hoping to get back to my regular [live stream](https://twitch.tv/tammymakesthings) cadence, work on my displayio card deck library, try to do a couple more PR reviews, and get my project list organized so I can be a bit more focused.


34:56 @tannewt
* Last week:
   * First week back. Caught up on e-mail. Gave up on chats.
   * Two fixes for BLE workflow. The reload rework in 7.2 broke it. Now we keep BLE active through the wait period.
   * Working to switch NTP library to actually NTP. May need to change get_time() on ESP32SPI.
   * Hacked on script to convert Arm Development Studio (ADS) files to SVD to use in GDB. https://github.com/tannewt/ads2svd
* This week:
   * Wrap up NTP library changes.
   * Starting on web workflow prerequisites. Secret management is first up before changing the lifetime of the WiFi connection.
   * Probably mimicking the dotenv python library that stores secrets in a .env file.
   * https://github.com/theskumar/python-dotenv


39:44 @tekktrik (text-only, if present)
* Last week:
   * Wrote and deployed script for patching .pre-commit-config.yaml in the bundle libraries, as well as the cookiecutter
   * Added more documentation to the core relating to linking to Learn guides and other resources for modules
   * Worked on making MAX7219 BCDDigits chainable - harder than I thought and still WIP
* This week:
   * Learning to use Adabot with @kattni
   * Many more infrastructure files need to be patched across the libraries, so going to try to plan that out and start writing scripts if Adabot can’t do it
   * Still working on refactoring the ATECC library - had a small hiccup with receiving the wrong part
   * Looking at writing a dataclass-like or attrs-like library for adding similar out-of-the-box functionality to classes via decorators and “fields”
   * Maybe the following week - looking at adafruit-logging differences from CPython logging to see if moving some things around would be helpful - thanks @askpatrick for offering to help test!




41:16 @TG-Techie#5402
Lask Year: (Please excuse the length)
* Returned from the pit of darkness College. Highlights: writing C for school and finally learning how to study 
* Trying typed python and now I’m  hook on / enamored with typed python
* Helped a Senior Design Project team get CP running on their atsamd51(j19) board which didn’t have flash… (they had trouble using atmel’s asf4)
Last Week:
* Continued trying to make “tg_gui”, an easy-to-use GUI framework for cpython and CP
* Made first changes to CP core (lots of fun) to add __class_getitem__ (See in the weeds)
Next Week:
* Remove the hacks added for “tg_gui” to make typing work on both
* Q: grouping documentation PRs 
* Q: which python version does/should CP support for typing?
   lowest common denominator 3.8 or fewest imports 3.10/latest?
* Running pre-commit on main re-formats 30 files (EX: github compare tree)


## 54:02 In The Weeds


54:06 @TG-Techie#5402    –    importing TYPE_CHECKING
Importing TYPE_CHECKING with “try/except”s erases its type, from Literal[True] to bool, 
Circuitpython could provide a facility similar to TYPE_CHECKING with a different module/name. 
   * Provides more specific promise / maybe clearer? 
(ex? `from micropython import ANNOTATION_ONLY`)
      * Allows constant replacement without over-writing TYPE_CHECKING as discussed


59:32 @TG-Techie#5402    –    supporting Protocol[T] and Generic[T]
Is there interest in adding minimal support for `Protocol` and  `Generic/TypeVar`?
These two features do not fit in type-hints and can require large type stubs
      1. I think, there is a low overhead solution to provide these features in providing 
      2. Maybe this is a Discussion for later or a PR?
      3. Example impl(s.) on a fork of CP for __class_getitem__ or [] passthrough
      4. Is this a feature worth adding? I’d argue yes
     As a case study, the gui code is complex enough where I could not reliably hack around it using decorators/etc. Type-stubs are error prone and, in many cases, difficult to maintain


01:04:01 @aioue on Discord (Tom) (attending, but can’t talk due to work commitments)
        
{ Tim, please skip section if this is the wrong place to talk about this (and apologies) }


PyPortals are amazing devices - great screens, wifi, speaker, sensors, microSD slot, and more, all built in. They deserve to be even more popular!


To support this, I have created an issue on circuitpython-org github, regarding the learn.adafruit.com website.


https://github.com/adafruit/circuitpython-org/issues/954


My proposal is simply adding tag categories for PyPortals on the learn site, just like Circuit Playground and its variants have. I believe this would make PyPortals even more popular and approachable as they would be easier to discover and learn about.


Happy to support the effort any way I can.




01:09:36 @tekktrik: (probably text-only if present)


Related to https://github.com/adafruit/Adafruit_CircuitPython_EMC2101/pull/23:


        This EMC2101 fan driver has a few different configurations as to what can be done with it - e.g., it can be used either with a tachometer, or the same pin can be used as an interrupt.  So these uses conflict with each other, but are both valid use cases.  This PR aims to add the latter functionality, but it means the examples (which work with simple fans that may not even use a tachometer) no longer work.


        The heart of the problem is basic functionality does less status register checks because it doesn’t use (or need) that functionality, whereas the new behavior raises exceptions because it does expect that functionality and it not being there should be considered a problem.  To me, the driver has two varying “configurations”.


        @foamyguy and I were wondering what the best way to add this functionality should be while preserving current “functionality” (tolerant of simple setups).  On-stream, @foamyguy suggested using `__init__()` keywords.  The library also currently has multiple classes that differentiate between basic functionality for low-memory boards, and more advanced functionality like a lookup table intended for boards without serious memory constraints.


01:14:14 @tannewt
        Should be branch 7.3.x and call main 8.0.x? MicroPython 1.19 will require a major version so if we switch to 8.x now we may want a quick 9.x with the 1.19 merge.


Verdict: Wait for 1.19 to go to 8.x
## Wrap-Up