Closed ChrisHills463 closed 5 months ago
Hi @ChrisHills463 - Thank you for writing in with this suggestion! Your point about improving usability seems reasonable to me, but I'll defer to @WilliamBergamin or @seratch on tradeoffs regarding making a change like this.
We have resolved the same issue with next function this way: https://github.com/slackapi/bolt-python/pull/394
Adding an alias in the similar way should be a reasonable solution for this need. No breaking change at all.
We have resolved the same issue with next function this way: #394
Adding an alias in the similar way should be a reasonable solution for this need. No breaking change at all.
Thanks for the feedback! I think that there is a slight difference in that unlike next
, logger
is not a Python built-in but rather a common convention, which is why I think it should be renamed to logger_
since when an author refers to logger
they are likely thinking that they are referring to their local module variable rather than that of the (decorated) function.
Yeah, there is a difference, but we never bring breaking changes to this SDK (considering the number of existing apps for enterprise companies). Thus, the only option we can think of is to add an alias to support your use case.
Yeah, there is a difference, but we never bring breaking changes to this SDK (considering the number of existing apps for enterprise companies). Thus, the only option we can think of is to add an alias to support your use case.
Understood, but adding an alias would be pointless because the original logger
is already overwritten at this point, so I think at this point there is no alternative to the author using a name other than logger
, or providing their own alias to it.
Just to clarify, bolt-python's keyword argument injection mechanism adds arguments only when you give the name in the argument list (see https://github.com/slackapi/bolt-python/blob/main/slack_bolt/kwargs_injection/utils.py to learn how it works).
Therefore, when you have logger
outside the listener function and you give only logger_
in the listener method's argument list, you can use both the global logger
and bolt's logger as logger_
within the listener function. If this does not work for your use case, we may not add such change because we've never received this feedback from other developers.
Just to clarify, bolt-python's keyword argument injection mechanism adds arguments only when you give the name in the argument list (see https://github.com/slackapi/bolt-python/blob/main/slack_bolt/kwargs_injection/utils.py to learn how it works).
Therefore, when you have
logger
outside the listener function and you give onlylogger_
in the listener method's argument list, you can use both the globallogger
and bolt's logger aslogger_
within the listener function. If this does not work for your use case, we may not add such change because we've never received this feedback from other developers.
Thank you for the clarification! This has cleared up my misunderstanding.
It is common practice to define a variable called
logger
in a script. However, theslack_bolt.kwargs_injection.args.Args
function used as a decorator also defineslogger
, so if you want to call your normal logger in your script you have to give it a different name. It can also be unexpected behaviour, as the author may think they are calling thelogger
from their module, but actually they are calling a different logger instance altogether.I understand this would be a breaking change, but I think it would improve usability.
Category (place an
x
in each of the[ ]
)Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.