[issue16671] logging.handlers.QueueListener sentinel should not be None

Andras Szalai report at bugs.python.org
Thu Dec 13 10:05:55 CET 2012


Andras Szalai added the comment:

What mislead me is:

The current code uses `is` and opposed to `==` which I assume is for the very specific reason to match identity and not value.

The sentinel starts with a _, which to a casual reader (me) suggests that it's a private implementation detail that I should not have to touch. (am I right on this?)

http://plumberjack.blogspot.co.uk/2010/09/improved-queuehandler-queuelistener.html

In the introduction of this very same class you are also mentioning that:

"... QueueListener is not even especially logging-specific: You can pass it as a handler any object that has a handle method which takes a single argument, and that method will be passed any non-sentinel object which appears on the queue."

also

"You should be able to paste QueueHandler and QueueListener into your own code..."

So suddenly logging in not the only documented use case.

And yes, I can override the sentinel in my subclass, yet it is named as `_sentinel`, which again suggests "do not touch" to me.

It's a tiny inconsistency that may never come up again for anyone else, but I just used a copy of the class and it came up for me. My tests caught it, I fixed it up for my own use-case, case closed.

So honestly it's not the end of the world, but neither is changing it to a safer default, like `{}` or even `self`.

I won't be bothering you with this issue anymore, so feel free to close it if you want.

----------
status: pending -> open

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue16671>
_______________________________________


More information about the Python-bugs-list mailing list