Closed 26af53de-f307-4809-a4a7-9d50203b0a97 closed 22 years ago
This is essentially the same problem as that reported in bug 494904 for pickle: deepcopy should treat instances of custom metaclasses the same way it treats instances of type 'type'. I've attached a provisional fix which is basically a copy of the patch made to pickle (it checks to see if the type of the thing being deepcopied is a subclass of type).
One question: it seems to me that the exception handling code is unnecessary both here and in the pickle module. In both cases, the first parameter to subclass is the result of a call to 'type' and the second is type 'type' itself, so it doesn't seem like there's any reason to worry about a TypeError.
Logged In: YES user_id=86307
I changed the patch so that issubclass is called before the attempt to access __deepcopy__ (to avoid unbound instance method problem methioned in 494904).
Logged In: YES user_id=6380
Thanks; I've checked this in. For the reason of the except clause, see python.org/sf/502085.
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields: ```python assignee = 'https://github.com/gvanrossum' closed_at =
created_at =
labels = ['library']
title = "deepcopy can't handle custom metaclasses"
updated_at =
user = 'https://bugs.python.org/glchapman'
```
bugs.python.org fields:
```python
activity =
actor = 'gvanrossum'
assignee = 'gvanrossum'
closed = True
closed_date = None
closer = None
components = ['Library (Lib)']
creation =
creator = 'glchapman'
dependencies = []
files = ['494', '495']
hgrepos = []
issue_num = 560794
keywords = []
message_count = 3.0
messages = ['10933', '10934', '10935']
nosy_count = 2.0
nosy_names = ['gvanrossum', 'glchapman']
pr_nums = []
priority = 'normal'
resolution = 'accepted'
stage = None
status = 'closed'
superseder = None
type = None
url = 'https://bugs.python.org/issue560794'
versions = ['Python 2.2']
```