I don't normally release new versions so quickly, but v51 has some important bug fixes. It also has a ton of code quality improvements that will hopefully limit code style regressions in the future.
Style consistency
20 years ago I worked on a codebase where we had strong automated checking of many things. Fast forward to now and it has never been easier to build custom linting tools that will do the same. Humbug now has a style_checker tool that enforces code styling and Python implementation specifics. It's implemented as a pylint extension.
Armed with this tool I was also able to build a throw-away script that fixed the 1000+ issues flagged by the new linter. 20 years ago this would have taken many engineers weeks to do the same!
Farewell aiohttp
aiohttp has been a core dependency since Humbug started, one of only 4 such dependencies outside of the Python standard library. Today I replaced this with a custom HTTP client.
I have slightly mixed feelings about this as aiohttp has been very useful, but the new approach is much more in keeping with Humbug's implementation philosophy. It also offers scope for more HTTP client tools in the future.
Humbug v51
New features:
- Added feature to close all tabs in a column from the tab label context menu.
Bug fixes:
- Resolved a problem with image previews on Windows.
- Resolved a problem with the sidebar breadcrumb folders now always unlatching a folder correctly.
- Resolved a problem where bullet lists were not always correctly extracted from docx files.
- Resolved a problem in the generation of Markdown code blocks from docx files.
- Resolved a problem with hyperlinks when converting docx files to Markdown.
- Resolved a performance issue with scrolling Markdown documents that contain images.
- Resolved a problem with column splitters not moving correctly.
Internal structure changes:
- Removed aiohttp and replaced it with a new built-in HTTP client.
- Added
style_checkerto augmentpylintwith Humbug style checking. - Extended
mypyandpylintchecking to thetoolsdirectory. - Updated code to use modern type hinting for Python (e.g.
list, notList,tuplenotTuple, andtype1 | type2notUnion[type1, type2]). - Reduced logging level for
qasyncto info, from debug to reduce noise in log files.