python-black
python-black copied to clipboard
Logging?
Hey there,
I see lots of these messages in the sublime text console:
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
is there a way to control logging? thanks!
What version do you have installed? Try updating, by default logs will not be printed to the console.
Hey - thanks for the response, it's using v1.2.9; same as on package-control:
https://packagecontrol.io/packages/python-black
The logging is insane:
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
Traceback (most recent call last):
File "/Applications/Sublime Text.app/Contents/MacOS/Lib/python38/sublime_plugin.py", line 1697, in run_
return self.run(edit, **args)
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/commands.py", line 79, in run
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 260, in black_format
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 231, in format_by_import_black_package
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 205, in black_format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 246, in format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 256, in _format_str_once
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/parsing.py", line 100, in lib2to3_parse
python-black.python_black.lib.black.parsing.InvalidInput: Cannot parse: 23:4: avg_train_prep = sum(train_prep) / len(train_prep)
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
Traceback (most recent call last):
File "/Applications/Sublime Text.app/Contents/MacOS/Lib/python38/sublime_plugin.py", line 1697, in run_
return self.run(edit, **args)
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/commands.py", line 79, in run
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 260, in black_format
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 231, in format_by_import_black_package
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 205, in black_format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 246, in format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 256, in _format_str_once
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/parsing.py", line 100, in lib2to3_parse
python-black.python_black.lib.black.parsing.InvalidInput: Cannot parse: 23:4: avg_train_prep = sum(train_prep) / len(train_prep)
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
Traceback (most recent call last):
File "/Applications/Sublime Text.app/Contents/MacOS/Lib/python38/sublime_plugin.py", line 1697, in run_
return self.run(edit, **args)
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/commands.py", line 79, in run
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 260, in black_format
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 231, in format_by_import_black_package
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 205, in black_format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 246, in format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 256, in _format_str_once
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/parsing.py", line 100, in lib2to3_parse
python-black.python_black.lib.black.parsing.InvalidInput: Cannot parse: 23:4: avg_train_prep = sum(train_prep) / len(train_prep)
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
Traceback (most recent call last):
File "/Applications/Sublime Text.app/Contents/MacOS/Lib/python38/sublime_plugin.py", line 1697, in run_
return self.run(edit, **args)
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/commands.py", line 79, in run
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 260, in black_format
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 231, in format_by_import_black_package
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 205, in black_format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 246, in format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 256, in _format_str_once
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/parsing.py", line 100, in lib2to3_parse
python-black.python_black.lib.black.parsing.InvalidInput: Cannot parse: 23:4: avg_train_prep = sum(train_prep) / len(train_prep)
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
Traceback (most recent call last):
File "/Applications/Sublime Text.app/Contents/MacOS/Lib/python38/sublime_plugin.py", line 1697, in run_
return self.run(edit, **args)
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/commands.py", line 79, in run
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 260, in black_format
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 231, in format_by_import_black_package
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 205, in black_format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 246, in format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 256, in _format_str_once
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/parsing.py", line 100, in lib2to3_parse
python-black.python_black.lib.black.parsing.InvalidInput: Cannot parse: 23:4: avg_train_prep = sum(train_prep) / len(train_prep)
python-black.commands [INFO]: use smart mode: False
python-black.python_black.black [INFO]: configuration file used: None
python-black.python_black.black [INFO]: configuration used: {'target_version': [], 'line_length': 88, 'is_pyi': False, 'skip_source_first_line': False, 'skip_string_normalization': False, 'skip_magic_trailing_comma': False, 'include': '(\\.pyi?|\\.ipynb)$'}
Traceback (most recent call last):
File "/Applications/Sublime Text.app/Contents/MacOS/Lib/python38/sublime_plugin.py", line 1697, in run_
return self.run(edit, **args)
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/commands.py", line 79, in run
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 260, in black_format
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 231, in format_by_import_black_package
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/black.py", line 205, in black_format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 246, in format_str
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/__init__.py", line 256, in _format_str_once
File "/Users/vgoklani/Library/Application Support/Sublime Text/Installed Packages/python-black.sublime-package/python_black/lib/black/parsing.py", line 100, in lib2to3_parse
python-black.python_black.lib.black.parsing.InvalidInput: Cannot parse: 101:0: eval_ppl, eval_epoch_loss = evaluate(
This is strange, the logs only get printed in ST Console when log level is DEBUG, and log level is only DEBUG when this project is cloned into Packages directory.
https://github.com/thep0y/python-black/blob/f6dfee482f7b83461b46e9fc0f66006fa270e112/python_black/log.py#L120-L133
https://github.com/thep0y/python-black/blob/f6dfee482f7b83461b46e9fc0f66006fa270e112/python_black/log.py#L183-L184
In other words, when logs get printed to console, log level must be DEBUG, but there are no DEBUG level logs in your logs, which is really weird.
I installed python-black from package control, see the behavior in the video below, this is the expected behavior:
https://github.com/thep0y/python-black/assets/51874567/b35f5b58-4a31-4357-a739-26993d03917f
The logs get printed to ST Console only when log level is DEBUG
, which requires the package be cloned to Packages
directory. Installing from package control sets log level to INFO
by default, so no logs get printed to console.
The python logging module works with a hierarchy.
There is a root logger at the top which you dont control, and sublime is adding a stream handler there.
Your logger is further down the hierarchy, and it doesnt matter currently if you add a stream handler or not, because all your loggers propagate the message up to the root handler which will print it to the console.
See https://docs.python.org/3/library/logging.html#logger-objects
I found 2 problems with the logger code
def child_logger(name: str) -> logging.Logger:
"""Get a new child logger with `name`.
Args:
name (str): the name of child logger
Returns:
Logger: the instance of `logging.Logger`
"""
log = __logger.getChild(name.replace(f"{LOGGER_NAME}.", ""))
log.setLevel(__logger.level)
log.handlers = __logger.handlers
return log
Adding levels and handlers to child loggers is not necessary because your top logger named "python-black" already has all the handlers, and child loggers will always propagate messages until it finds a ancestor with a handler.
So simply remove
log.setLevel(__logger.level)
log.handlers = __logger.handlers
def get_logger():
logger = BlackLogger(LOGGER_NAME)
logger.propagate = False
On your top logger set propagate = False
so it never passes messages to the root logger which you don`t control.
Also you might want to explore this example here for a plugin
https://github.com/SublimeText/PackageDev/blob/master/_logging.py
This sets logging on the plugin_loaded()
signal, an it takes the logging level from the sublime settings, which allows your users to configure the logging level via sublime settings.
This would allow your users to supply debug info, without cloning the package.