This commit allows for logging handlers to be added to the root logger
and then used by non-root loggers that don't have their own handlers.
It also adds the (CPython-compatible) handlers argument
to logging.basicConfig() to ease this initialization:
import logging
sh = logging.StreamHandler()
fh = logging.FileHandler("my.log", mode="a")
logging.basicConfig(handlers=[sh, fh])
root_logger = logging.getLogger() # uses sh and fh
another_logger = logging.getLogger("another") # inherits handlers
It also adds the Logger.removeHandler() method and avoids repeated handler
addition.
It also adds the flush() method to StreamHandler and its subclasses.
It also correctly calls the superclass constructor from the StreamHandler
constructor and uses a default formatter if a Handler has none
set (as in PR #710).
Signed-off-by: Ned Konz <ned@productcreationstudio.com>
The packages in this directory aim to provide compatible implementations of
modules from the Python Standard Library, with the goal of allowing existing
Python code to run un-modified on MicroPython.
Implementation
Many packages are implemented in pure Python, often based on the original
CPython implementation. (e.g. collections.defaultdict)
Some packages are based on or extend from the built-in "micro" modules in the
MicroPython firmware, providing additional functionality that didn't need to
be written in C (e.g. collections, socket, struct).
Future plans (ideas for contributors):
Add README.md to each library explaining compatibility and limitations.