[Python-3000] Warning about future-unsafe usage patterns in Python 2.x e.g. dict.keys().sort()

Brian Quinlan brian at sweetapp.com
Mon Aug 28 11:35:39 CEST 2006


It is my understanding that, in Python 3000, certain functions and 
methods that currently return lists will return some sort of view type 
(e.g. dict.values()) or an iterator (e.g. zip). So certain usage 
patterns will no longer be supported e.g. d.keys().sort().

The attached patch, which is a diff against the subversion "trunk" of 
Python 2.x, tries to warn the user about these kind of future-unsafe 
usage patterns. It works by storing the type that the list will become 
in the future, at creation time, and checking to see if called list 
functions will be supported by that type in the future.

Currently the patch if very incomplete and the idea itself may be 
flawed. But I thought it was interesting to run against my own code to 
see what potential problems it has. Example:

...
Type "help", "copyright", "credits" or "license" for more information.
 >>> d = {"apple" : "sweet", "orange" : "tangy"}
 >>> "juicy" in d.values()
False
 >>> d.keys().sort()
__main__:1: DeprecationWarning: dictionary view will not support sort
 >>> "a" in zip([1,2,3,4], "abcd")
__main__:1: DeprecationWarning: iterator will not support contains
False

Cheers,
Brian
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: warn_list_usage.diff
Url: http://mail.python.org/pipermail/python-3000/attachments/20060828/8f08a2a7/attachment-0001.diff 


More information about the Python-3000 mailing list