[Python-Dev] PyMapping_Check Bug?
Bernhard Herzog
bh at intevation.de
Mon Aug 18 13:28:21 EDT 2003
Guido van Rossum <guido at python.org> writes:
> I don't see this. operator.isMappingType() maps directly to
> PyMapping_Check(); and I tried this:
>
> >>> import operator
> >>> operator.isMappingType(str)
> False
> >>> class C(object): pass
> ...
> >>> operator.isMappingType(C)
> False
> >>> operator.isMappingType(C())
> False
> >>> operator.isMappingType({})
> True
> >>>
>
> Looks okay to me. :-)
Are these OK, though:
>>> operator.isMappingType(())
True
>>> operator.isMappingType([])
True
>>> operator.isMappingType("")
True
In Python 2.2:
>>> operator.isMappingType(())
0
>>> operator.isMappingType([])
0
>>> operator.isMappingType("")
0
I just found out that this change is the cause for a Bug in my shapelib
bindings which at one point try to determine whether a method argument
is a dictionary like object by testing whether PyMapping_Check returns
true and that assume it's a sequence otherwise.
As a work-around it seems I can use isSequenceType/PySequence_Check to
effectively turn the test around and determine whether the object is a
sequence and assume it's a mapping otherwise.
Bernhard
--
Intevation GmbH http://intevation.de/
Sketch http://sketch.sourceforge.net/
Thuban http://thuban.intevation.org/
More information about the Python-Dev
mailing list