17 KiB
CircuitPython Weekly Meeting for February 5th, 2024
Video is available on YouTube.
Join here for the chat all week: http://adafru.it/discord.
The CircuitPython Weekly Meeting normally is held at 2pm US 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 for use with standard calendar applications and can also be viewed in your browser.
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 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. The canonical URL for the podcast version is https://adafruit-podcasts.s3.amazonaws.com/circuitpython_weekly_meeting/audio-podcast.xml which you may be able to enter directly into compatible podcast apps.
02:38 Community News
02:41 CircuitPython 9.0.0 Beta 0 Released
CircuitPython 9.0.0-beta.0, a beta release for 9.0.0, is now available and is the new unstable release. This release has known bugs that will be addressed before 9.0.0 final - Adafruit Blog and the release page - GitHub.
Notable changes to 9.0.0:
- New split-heap internal dynamic storage mechanism.
- Merge updates from MicroPython v1.19.1, v1.20.0, and v1.21.0.
- Espressif: update to ESP-IDF v5.1.2.
- Reorganize and split displayio. 8.x.x naming structure is available in 9.x.x, but will be removed in 10.0.0.
- CIRCUITPY drives now mount on Android.
- Increased file capacity on CIRCUITPY drives <= 128kB.
- Further USB host support, on i.MX and RP2040.
- Make SD cards available over web workflow.
- Remove 8.x.x deprecations: displayio.*.show(), I2CPeripheral renamed to I2CTarget.
- Add jpegio JPEG decoder support.
- Add bitmapfilter image manipulation.
- Add repl.py, which runs just before the REPL starts up.
- Add OrderedDict.move_to_end().
- Add synthio.Synthesizer.note_state.
- Add warnings module, similar to what is in CPython.
- Add locale.getlocale().
- Add I2S MCLK support on Espressif.
- Add mDNS TXT record support.
- Add synthio.Note .loop_start and .loop_end properties.
- Allow signed amplitude in synthio.
- HID can wake up sleeping host computer.
- Allow specifying protocol for raw sockets.
- Add codeop.compile_command(). ###03:08 #CircuitPython2024 Responses Summarized Scott Shawcroft shares all of the responses to the #CircuitPython2024 campaign - Adafruit Blog.
03:17 A Video Player in a VHS Tape
A fun mini-project to cram a Raspberry Pi-based composite video player/recorder inside a VHS cassette. The build uses a Raspberry Pi 3 A+ controlled by Python - hackster.io, GitHub and YouTube.
03:36 Newsletter Details
The Python on Microcontrollers Weekly Newsletter is a CircuitPython-community-run newsletter emailed every Monday. The complete archives are here. 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 and submit a pull request with the changes. You may also or email cpnews@adafruit.com, or tag a post with #CircuitPython on Mastodon, Bluesky, or X (formerly known as Twitter),.
04:14 State of CircuitPython, Libraries and Blinka
This report contains information from the previous seven days. Any changes (PRs merged, etc.) made today are not included in this report.
04:32 Overall
- 21 pull requests merged
- 14 authors - scirelli, jepler, rjauquet, michalpokusa, vladak, ilikecake, ladyada, FoamyGuy, michaelstoops, tedder, weblate, eightycc, dhalbert, justmobilize
- 8 reviewers - makermelissa, caternuson, jepler, brentru, tannewt, FoamyGuy, jedgarpark, dhalbert
- 34 closed issues by 13 people, 23 opened by 20 people
05:10 Core (Scott read)
- 9 pull requests merged
- 4 authors - weblate, eightycc, jepler, dhalbert
- 3 reviewers - tannewt, jepler, dhalbert
- 29 open pull requests
- https://github.com/adafruit/circuitpython/pull/6555 (Open 580 days) (draft)
- https://github.com/adafruit/circuitpython/pull/7440 (Open 390 days)
- https://github.com/adafruit/circuitpython/pull/7618 (Open 350 days)
- https://github.com/adafruit/circuitpython/pull/7675 (Open 338 days) (draft)
- https://github.com/adafruit/circuitpython/pull/7811 (Open 312 days) (draft)
- https://github.com/adafruit/circuitpython/pull/7997 (Open 262 days)
- https://github.com/adafruit/circuitpython/pull/7996 (Open 262 days)
- https://github.com/adafruit/circuitpython/pull/8033 (Open 255 days) (draft)
- https://github.com/adafruit/circuitpython/pull/8100 (Open 228 days) (draft)
- https://github.com/adafruit/circuitpython/pull/8233 (Open 190 days) (draft)
- https://github.com/adafruit/circuitpython/pull/8349 (Open 158 days) (draft)
- https://github.com/adafruit/circuitpython/pull/8457 (Open 125 days) (draft)
- https://github.com/adafruit/circuitpython/pull/8647 (Open 75 days) (draft)
- https://github.com/adafruit/circuitpython/pull/8713 (Open 55 days)
- https://github.com/adafruit/circuitpython/pull/8783 (Open 32 days)
- https://github.com/adafruit/circuitpython/pull/8796 (Open 22 days)
- https://github.com/adafruit/circuitpython/pull/8798 (Open 21 days) (draft)
- https://github.com/adafruit/circuitpython/pull/8808 (Open 18 days)
- https://github.com/adafruit/circuitpython/pull/8816 (Open 15 days)
- https://github.com/adafruit/circuitpython/pull/8820 (Open 13 days) (draft)
- https://github.com/adafruit/circuitpython/pull/8834 (Open 11 days)
- https://github.com/adafruit/circuitpython/pull/8855 (Open 7 days) (draft)
- https://github.com/adafruit/circuitpython/pull/8862 (Open 5 days)
- https://github.com/adafruit/circuitpython/pull/8870 (Open 4 days)
- https://github.com/adafruit/circuitpython/pull/8869 (Open 4 days)
- https://github.com/adafruit/circuitpython/pull/8868 (Open 4 days)
- https://github.com/adafruit/circuitpython/pull/8880 (Open 1 days)
- https://github.com/adafruit/circuitpython/pull/8878 (Open 1 days)
- https://github.com/adafruit/circuitpython/pull/8882 (Open 0 days)
- 17 closed issues by 4 people, 10 opened by 8 people
- 680 open issues
- 8 active milestones
- 10.0.0: 2 open issues
- 8.2.x: 0 open issues
- 9.0.0: 42 open issues
- 9.x.x: 10 open issues
- Libraries: 24 open issues
- Long term: 580 open issues
- Support: 13 open issues
- Third-party: 11 open issues
- 1 issues not assigned a milestone
06:19 Libraries
- 11 pull requests merged
- 10 authors - scirelli, jepler, rjauquet, michalpokusa, vladak, ilikecake, ladyada, FoamyGuy, tedder, justmobilize
- 7 reviewers - caternuson, jepler, jedgarpark, brentru, tannewt, dhalbert, FoamyGuy
- Merged pull requests: * https://github.com/adafruit/Adafruit_CircuitPython_Wiznet5k/pull/125 (Days open: 217) * https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/184 (Days open: 81) * https://github.com/adafruit/Adafruit_CircuitPython_Requests/pull/152 (Days open: 7) * https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/199 (Days open: 4) * https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer/pull/76 (Days open: 4) * https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/200 (Days open: 2) * https://github.com/adafruit/Adafruit_CircuitPython_FocalTouch/pull/32 (Days open: 2) * https://github.com/adafruit/Adafruit_CircuitPython_PyCamera/pull/22 (Days open: 2) * https://github.com/adafruit/Adafruit_CircuitPython_seesaw/pull/129 (Days open: 1) * https://github.com/adafruit/Adafruit_CircuitPython_PyCamera/pull/23 (Days open: 1) * https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer/pull/78 (Days open: 1)
- 49 open pull requests (Oldest: 536, Newest: 1)
- 13 closed issues by 7 people, 13 opened by 12 people
- 731 open issues
- 19 good first issues
- https://circuitpython.org/contributing
Library PyPI Weekly Download Stats
- Total Library Stats
- 133283 PyPI downloads over 324 libraries
- Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 8801
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 8704
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 3046
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1548
- Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1329
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1206
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1193
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1125
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1118
- Adafruit CircuitPython ServoKit (adafruit-circuitpython-servokit): 1096
Library updates in the last seven days:
10:10 Blinka (Scott read)
- 1 pull requests merged
- 1 authors - michaelstoops
- 1 reviewers - makermelissa
- 6 open pull requests
- https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 850 days)
- https://github.com/adafruit/Adafruit_Blinka_bleio/pull/65 (Open 68 days)
- https://github.com/adafruit/Adafruit_Blinka/pull/749 (Open 61 days)
- https://github.com/adafruit/Adafruit_Blinka/pull/766 (Open 38 days) (draft)
- https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/335 (Open 38 days) (draft)
- https://github.com/adafruit/Adafruit_Blinka/pull/773 (Open 28 days)
- 4 closed issues by 3 people, 0 opened by 0 people
- 81 open issues
- PyPI downloads in the last week: 12343
- Piwheels Downloads in the last month: 10414 Number of supported boards: 129
11:16 Hug reports
11:33 @Liz (host)
- Group hug
11:40 @DJDevon3
- @TheaFlowers (Winterbloom) for a neat demo of her new Neptune eurorack module.
- @FoamyGuy, @Justin, @Elpekenin, @Bear, and @Deshipu for a lively discussion about stubs in discord. Was fun to watch you all go back & forth with ideas.
- @Tannewt for the Deep Dive this week that covered a wide variety of topics and bugs.
12:07 @foamyguy
- @jepler for creating and sharing a minimal file editor for circuitpython. It’s a really neat project and stretches the boundaries of what I thought was possible with the circuitpython terminal
- @Justin for making a utility that builds device specific board stub files and testing out a branch that adds them to the circuitpython-stubs
- Group hug
12:58 @jerryn
- @foamyguy for the quick fix(es) to bitmaptools for the SMS Scrolling demo.
- Group hug!
13:21 @Justin
- Double hugs for @FoamyGuy - one for testing and merging a requests fix and the second for opening up a PR to CircuitPython for generating stubs for all the boards based on a script I wrote
13:46 @tannewt
- Hug to everyone who did #CircuitPython2024. It is exciting to see ambition grow.
- LLVM embedded folks for entertaining my ideas in the meeting.
- @jerryn for the 9.0 testing
- @foamyguy for the usb host testing
14:26 @Tyeth
- Big Hug for @tannewt, both generally in life, and specifically for the parallel display work on the LilyGo T-DisplayS3… Not only was it greatly educational, you’ve rekindled a tiny circuitpython flame in me.
14:47 Status Updates
15:11 @Liz (host)
- I went through Learn Guides that use SD cards and added warnings about needing a directory for the sd card to mount to as of CP 9 beta 0. I also wrote up a quick page in the MEMENTO product guide on how to manually add the directory to your CIRCUITPY drive.
- I’m starting a new project with the Qualia that required setting up PlatformIO, so at the end of last week I got that sorted out and have been acquainting myself with the Arduino GFX library.
15:48 @DJDevon3
- Finished designing a prototype PCB for a featherwing adapter to an ST7796S SPI display. I’ve already written the driver and have been using it for some displayio testing. Tracking down an issue with the driver init sequence where soft reload causes the board to reload twice. The featherwing adapter and driver should work with any feather and circuit python. After watching FoamyGuy use Cookie Cutter last week I doubt I have the skills for contributing the driver to the community bundle.
- Started redesigning an enclosure for the Adafruit TFT Featherwing that uses magnets instead of screws to hold it together. Working on an ST7796S display enclosure that will work in the same way.
- Still working on a treasure box project with the ST7796S display, ST7796S Featherwing, 3D printing, and Circuit Python requests with the Fitbit API.
16:50 @eightycc (text only)
- Got through the night with no flooding, but the power is out here in Mendocino county.
- Making progress on _bleio, albeit slowly.
- Updated MAIN to the latest cyw43-driver plus some local patches awaiting integration upstream.
17:10 @foamyguy
- Working on text editor “cyberdeck” project. Created a makeshift visible cursor from a label that is layered on top of the existing Terminal view. Tweaks and fixes for backspace handling from the USB Host keyboard. Guide in the works
- Confirmed an issue with SMS Scroller project stemming from bitmaptools blit argument validation. Created a fix, but realized while writing a test that the fix wasn’t correct, so made further adjustments to it. (First time creating a test in the core repo with .exp results file. Another hug to Jeff for pointing me toward that)
- Submitted a PR that adds @Justins device specific board def builder to the circuitpython-stubs build process and created a command that can be used to set your environment to a specific device with stub file that includes more relevant details.
- Tested a fix for Requests library that deals with a recent change made to the handling of duplicated headers
19:59 @Justin
- Doing some work on some helpful things that I’ll be curious to see if people want. The first is a “time helper” that wraps all the common ways to get time (rtc, adafruit-io, ntp, etc) and the second is a config package that will merge multiple configs to help set defaults (for example what pins to use for airlift). Both of these are to help use the same code across different boards.
- Did some small updates to ConnectionManager and made sure the Request and MiniMQTT branches were up to date with main. Trying to figure out if I should just start writing tests or not
- Was curious, and using a ESP32S3 TFT, running 8.2.9 I was able to open 3 SSL sessions before it raised an error. On 9.0.0-beta.0 I got 4…
22:19 @tannewt
- A number of open PRs with fixes for 9.0.0.
- Updating pulseio, frequencyio, rotaryio, countio and neopixel_write to IDF 5 APIs in order to fix bugs (and move to APIs.)
- PulseIn will be switched to pausing reception when the buffer is full.
- Ari has an ear infection and hurt leg so I may be out some this week. Tuesday-Thursday are my “on call” days if he stays home or comes home early from daycare.
- No progress on LLVM noxip stuff but it isn’t urgent. Folks in meeting were curious to see the working prototype but unsure if it’d be worth upstreaming. They are pretty cautious in general.
- Wrapped up #CircuitPython2024: https://blog.adafruit.com/2024/02/01/thank-you-for-circuitpython2024/
25:49 In The Weeds
- 26:07 @tannewt Remove context manager functionality of core classes? Allows for something like:
with pulseio.PulseIn(...) as p: p.whatever()
calls deinit automatically
- Removing it would save enter and exit entries in locals dicts and the corresponding functions.
- Via Tyeth: Probably don’t want to remove all of them: https://github.com/search?q=%22with+pulseio%22&type=code
- TODO tannewt: guesstimate size savings to decide if it is worth pursuing.