[Python-3000] Nix dict.copy()

James Y Knight foom at fuhm.net
Sun Feb 10 02:52:41 CET 2008


On Feb 9, 2008, at 8:27 PM, Brett Cannon wrote:

> On Feb 8, 2008 5:03 PM, Guido van Rossum <guido at python.org> wrote:
>> On Feb 8, 2008 4:51 PM, Raymond Hettinger <python at rcn.com> wrote:
>>> I recommend dropping the dict.copy() method from Py3.0.
>>>
>>> * We can already write:  newd = copy.copy(d).
>>> * We can also write:     newd = dict(d)
>>> * Both of those approaches also work for most other containers.
>>> * The collections.Mapping ABC does not support copy().
>>> * copy() is not a universal feature of mapping like objects
>>> * Lists do not have a copy() method.
>>> * If we drop dict.copy(), I'll can also drop set.copy() which is  
>>> unneeded.
>>>
>>> Let's make the basic APIs as clean and parallel as possible.
>>
>> Makes sense.  I request that you also implement the transitional  
>> code:
>> either a fixer for 2to3 or (perhaps more realistically) a warning to
>> dict.copy() when -3 is given.
>
> +1 on the warning over the fixer. Since 2to3 can't do it perfectly I
> think it would be better to let users deal with it directly.

Has anyone thought of making a execution-informed converter? If you  
have a comprehensive test suite, it seems that it ought be possible to  
use the actual execution of the test suite, under a trace hook  
perhaps, or something of that sort, to inform the converter and allow  
it to correctly make changes like this.

James


More information about the Python-3000 mailing list