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

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