[issue19016] autospecced namedtuples should be truthy by default

2020-07-27 Thread Karthikeyan Singaravelan


Change by Karthikeyan Singaravelan :


--
nosy: +xtreak

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19016] autospecced namedtuples should be truthy by default

2013-09-27 Thread Roundup Robot

Roundup Robot added the comment:

New changeset ac19ff225280 by Eli Bendersky in branch 'default':
Fix .hgtouch to list the dependencies for auto-generated AST code correctly.
http://hg.python.org/cpython/rev/ac19ff225280

--
nosy: +python-dev

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



[issue19016] autospecced namedtuples should be truthy by default

2013-09-27 Thread Eli Bendersky

Changes by Eli Bendersky eli...@gmail.com:


--
Removed message: http://bugs.python.org/msg198484

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



[issue19016] autospecced namedtuples should be truthy by default

2013-09-27 Thread Michael Foord

Michael Foord added the comment:

I dislike adding namedtuple specific code to mock. How many different types 
should we special case here and in other places?

--

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



[issue19016] autospecced namedtuples should be truthy by default

2013-09-26 Thread Shawn Krisman

Shawn Krisman added the comment:

This fix is actually backwards compatible. This is a more powerful patch too 
because not only does it provide a better default for truthiness, but it also 
provides a better default for length. I also fixed a spelling mistake involving 
the word calculate.

--
Added file: http://bugs.python.org/file31875/namedtuple_truthiness_2.patch

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



[issue19016] autospecced namedtuples should be truthy by default

2013-09-16 Thread Michael Foord

Michael Foord added the comment:

The problem is that the change you're proposing is backwards incompatible. Code 
using MagicMock and objects with length will break.

--
assignee:  - michael.foord
versions: +Python 3.4 -Python 3.5

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



[issue19016] autospecced namedtuples should be truthy by default

2013-09-16 Thread Shawn Krisman

Shawn Krisman added the comment:

Yeah in my head I was thinking it would affect relatively few people who 
depended on the change, but it's definitely hard to prove that!

How about a change that special cases namedtuple?

--

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



[issue19016] autospecced namedtuples should be truthy by default

2013-09-14 Thread Shawn Krisman

New submission from Shawn Krisman:

import mock
from collections import namedtuple

Foo = namedtuple('Foo', bar)
mock_foo = mock.create_autospec(Foo)

if mock_foo:
print('the namedtuple is truthy')
else:
print('the namedtuple is not truthy')


The expected behavior is that it should print the namedtuple is truthy. 
Instead it prints the namedtuple is not truthy. Almost all namedtuples are 
truthy, the exception being the nearly useless namedtuple with 0 fields. The 
problem stems from the fact that tuples have a __len__ defined which is what is 
used derive truthiness. MagicMocks define __len__ to be zero by default. 
Workarounds to the problem are very difficult because you cannot simply define 
__len__ to be a nonzero number and have the mock work correctly. 


In general MagicMock has defaults that encourage the mocks to be very truthy 
all around:

__bool__ -- True
__int__ -- 1
__complex__ -- 1j
__float__ -- 1.0
__index__ -- 1

So it was interesting to me to find out that __len__ was defined to be 0. The 
fix that I am proposing is to make 1 the new default for __len__. I believe 
this is a more useful default in general because an instance of a class with a 
__len__ attribute will likely be truthy far more often then not.


There are of course backwards compatibility issues to consider here, however I 
don't think many people are assuming this behavior. Certainly nobody in the 
python code base.

--
components: Library (Lib)
files: namedtuple_truthiness.patch
keywords: patch
messages: 197698
nosy: michael.foord, skrisman
priority: normal
severity: normal
status: open
title: autospecced namedtuples should be truthy by default
type: behavior
versions: Python 3.5
Added file: http://bugs.python.org/file31755/namedtuple_truthiness.patch

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