-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
encapsulate sys.stdout.flush() into logger, guard against None sys.stdout (ESPTOOL-1008) #1064
Conversation
👋 Hello brentpicasso, we appreciate your contribution to this project! 📘 Please review the project's Contributions Guide for key guidelines on code, documentation, testing, and more. Click to see more instructions ...
Review and merge process you can expect ...
|
Hi @brentpicasso, The usage of That means we can get rid of some of these calls in esptool completely (e.g. every Would you want to look into this, or do you want me to take over? It would be great if you could at least verify this works in your scenario. Thanks a lot! |
Hi radimkarnis - thanks for looking into it! I agree, making it even more simple would be best, so long at we don't try to access stdout is None. Yes, please take on finishing the issue, I think that would be best at this point. |
Thank you @radimkarnis for handling it! |
* docs: fix minor issues and improve vague statements * feat(esp32h21): Add Microsoft UF2 family ID * fix(logging): Avoid crashes when flushing if sys.stdout is not available Closes espressif#1064 Closes espressif#1063 * change(github): Add Github workflow for bot responses to issues * fix(elf2image): Print correct MMU page size in error message * fix(elf2image): Try to correct MMU page size if not specified This commit fixes issue with using elf2image command without --flash-mmu-page-size. In that case, app info segment might be incorrectly placed in the image. This is fixed by checking if app info segment is present and if so, use page size from it or from its alignment. Closes espressif#1062 * fix(elf2image): support --flash-mmu-page-config for all chips This commit fixes the issue where the `--flash-mmu-page-config` option did not work for chips that do not have configurable MMU page sizes. * fix(esptool): Fix efuse base address for esp32h21 * remove: Deprecate Python versions 3.7, 3.8 and 3.9 BREAKING CHANGE * docs(logger): Fix custom logger example code Closes espressif#1066 * feat(esp32h4): add ESP32H4 esptool support * feat(espefuse): Updates esp32h4 efuse table and fixes tests - Added esp32h4 efuse table - Fixed h4 test - Enabled some tests for p4 chip. * feat(esp32h4): update the ESP32H4StubLoader * change: fix issues reported by ruff linter * ci: update pre-commit hooks to the latest versions * feat(flash_attach): Encapsulate logic for flash attaching and configuration * refactor(cli_mode): Improve CLI mode workflow code * feat(cmds): Rework the public API to work as a Python module BREAKING CHANGE Closes espressif#208 * feat(cmds): Allow commands to output bytes, as well as write to a file * fix(lint): Correct type annotations issues reported by mypy * Tasmota changes * update manifest * Update build_esptool.yml * Update build_esptool.yml * docs(logger): Fix custom logger example code Closes espressif#1066 --------- Co-authored-by: Peter Dragun <[email protected]> Co-authored-by: Radim Karniš <[email protected]> Co-authored-by: Roland Dobai <[email protected]> Co-authored-by: Jaroslav Burian <[email protected]> Co-authored-by: Konstantin Kondrashov <[email protected]> Co-authored-by: Chen Jichang <[email protected]>
This change fixes the following bug(s):
fix(esptool/all) : Encapsulates sys.stdout.flush() in logger, with a guard if stdout is not valid (e.g. None)
Resolves #1063
We are using esptool to flash firmware in the context of our app.
This app runs on Kivy, and built with Pyinstaller. On windows, it appears that sys.stdout is not available (sys.stdout is None)
Under these conditions, esptool will crash when sys.stdout.flush() is called
What is the Expected Behaviour?
esptool should guard against this condition and not crash if sys.stdout is not available.
Encapsulates sys.stdout.flush() in logger, with a guard if stdout is not valid (e.g. None)