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

2012-12-13 Thread Andras Szalai

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 rep...@bugs.python.org
http://bugs.python.org/issue16671
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



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

2012-12-13 Thread Vinay Sajip

Vinay Sajip added the comment:

 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?)

Python is a language for consenting adults, so nothing is off-limits, except 
that you need to know what you are doing when you make changes to internal 
attributes, and may not get support from the original author if something 
breaks. However, notice that I set it up as a class value which could be 
overridden at an instance level, rather than hard-coding None into the sentinel 
test. So, it *was* intended to be changed if needed, but it's more appropriate 
for a subclass to do that than a user of the class (not that a user is 
*forbidden* - that couldn't be enforced, anyway).

--
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue16671
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



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

2012-12-12 Thread Andras Szalai

New submission from Andras Szalai:

In the class `logging.handlers.QueueListener` the `_sentinel` is `None`.

But
 a = None
 b = None
 a is b
True

Because of this, the QueueListener stops if it receives a `None`.
Were the sentinel a proper instance, like:
_sentinel = {}

This would not happen.

--
messages: 177385
nosy: Andras.Szalai
priority: normal
severity: normal
status: open
title: logging.handlers.QueueListener sentinel should not be None
type: behavior
versions: Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue16671
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



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

2012-12-12 Thread Antoine Pitrou

Changes by Antoine Pitrou pit...@free.fr:


--
nosy: +vinay.sajip

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue16671
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



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

2012-12-12 Thread Vinay Sajip

Vinay Sajip added the comment:

Why do you think None is a valid value to send for normal operation? Since the 
queue is only meant for sending logging events (records), it seems reasonable 
to send None as a sentinel - it should never be seen during operation.

The QueueListener is *supposed* to stop if it sees a None, so don't send those 
over the queue - just send logging events - until you want to shut the listener 
down.

You can of course set the sentinel to whatever you want, in your own code, and 
then send that. The default value of None seems OK to me.

So I don't believe this is a valid issue - marking as such and as pending, and 
I will close this shortly unless you come back with some more information.

--
assignee:  - vinay.sajip
resolution:  - invalid
status: open - pending
versions:  -Python 3.1

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue16671
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com