Request for package: micropython-enum
I would like micropython to have support for IntEnum class. Base Enum would be nice to have, although just bare IntEnum would be enough in my opinion.
RFC: Move forums to GitHub Discussions
The forums continue to run well on phpbb and I am hesitant to mess with something that is working, but there are definitely a few things I'd like to improve. We looked at migrating to Discourse, which I think would be an overall improvement over phpbb, but recently GitHub have added "Discussions" support, and I think this might be a better direction.
- Keep everything in one place (GitHub) for code, issues, PRs, and now discussion.
- Much more modern editing (including emoji response, threads, accepted answer, etc) and markup tools (code formatting, etc).
- Many users already have GitHub accounts, whereas current creating a forum.micropython.org account is an extra step (also it's not possible for new users to create new threads on the existing forum until they reply to some other threads).
- Better support for notifications and subscriptions.
- Don't need to run/maintain our own server.
The modern editing/markup tools are a big factor for me. It may sound a bit trivial but the emoji response would be really nice just to judge engagement, and the accepted answer feature would make it easier for people to make use of previous threads. There's also category support (just like phpbb) but also tagging.
Downsides:
- There's no automatic way to import history, so we'd need to leave the current forum running in read-only mode. (FWIW, this was also an issue with moving to Discourse, there's a phpbb importer but it had issues). There is a huge wealth of information in the forums. (It looks like it should be possible to use the GitHub API to import thread content, although all the posts would be from a robot account but we could annotate the message text with the original author).
- No way to import users, so people would need to create GitHub accounts to post/reply (this is really no different to the current forum, so this really only impacts the (small number of?) people who have forum accounts but not GitHub accounts).
- More dependence on a third-party service (GitHub).
Here's some example projects currently using GitHub notifications:
- https://github.com/home-assistant/frontend/discussions/
- https://github.com/nodejs/node/discussions
- https://github.com/faster-cpython/ideas/discussions
More info here: https://docs.github.com/en/discussions
I propose that we could create an organisation-level discussion (conceptually, spanning micropython and micropython-lib).
Keen to hear what people think! cc @peterhinch @robert-hh @davehylands @stinos @kevinkk525 @mcauser @mattytrentini @scruss @projectgus (and @dpgeorge )
Enums are especially useful when it comes to static type-checking. So it would be great if the implementation of this enum type allowed type-checking via mypy. This means all values need to be an instance of the defined enum-type.
I'm also interested by enum in MicroPython.
In the meantime, I found here this workaround:
for type-checking, I'm using the following trick:
This workaround is excellent! I combined it with const for my purposes:
+1 for a real implementation of this
But when have been imported getting "Unresolved attribute reference" warning.
The cpython implementation is surprisingly very complicated and relies heavily on metaclasses which aren't supported in micropython:
https://github.com/python/cpython/blob/f585ed19ad00f78ed99ba44be5e333c056076160/Lib/enum.py#L1051
As such any micropython implementation will need to be completely custom really, at which point we need to clearly define which aspects of Enum we want to support first, before figuring out how to implement them!
There are a number of limitations when subclassing builtins in micropython, especially
intbecause behind the scenes it's particularly optimised. Eg. https://docs.micropython.org/en/latest/genrst/builtin_types.html#no-int-conversion-for-int-derived-types-available+1 for an implementation of this as well.
docs/library/enum.rst: Add Enum class. #16842
Implementation in:
micropython-lib/python-stdlib/enum/enum.py: Add Enum class. #980