[Python-Dev] PyMapping_Check Bug?
Guido van Rossum
guido at python.org
Mon Aug 18 08:03:43 EDT 2003
> Are these OK, though:
>
> >>> operator.isMappingType(())
> True
> >>> operator.isMappingType([])
> True
> >>> operator.isMappingType("")
> True
These are because those types have all grown a mapping-style getitem
implementation in order to support extended slicing.
> 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.
Still, my suggestion is not to try to guess whether an object is a
sequence or a mapping. The two APIs are too similar, and becoming
more so in each release. Instead, you should have an explicit
indicator passed by the caller (maybe a keyword argument).
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev
mailing list