Include memo in the documented signature of copy.deepcopy()

* Include memo in the documented signature of copy.deepcopy()

The memo argument is mentioned lower on the doc page under writing a
`__deepcopy__` method, but is not included in the documented function signature.
This makes it easy to miss, and can lead to incorrect/buggy implementations of
`__deepcopy__` -- which is exatly what just happpend to me!
(cherry picked from commit 0200928e8d)

Co-authored-by: Stephan Hoyer <shoyer@gmail.com>
This commit is contained in:
Miss Islington (bot) 2018-11-01 14:35:17 -07:00 committed by GitHub
parent d69f015ba5
commit b9c48a73bc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -22,7 +22,7 @@ Interface summary:
Return a shallow copy of *x*.
.. function:: deepcopy(x)
.. function:: deepcopy(x[, memo])
Return a deep copy of *x*.
@ -52,7 +52,7 @@ copy operations:
The :func:`deepcopy` function avoids these problems by:
* keeping a "memo" dictionary of objects already copied during the current
* keeping a ``memo`` dictionary of objects already copied during the current
copying pass; and
* letting user-defined classes override the copying operation or the set of
@ -82,7 +82,7 @@ In order for a class to define its own copy implementation, it can define
special methods :meth:`__copy__` and :meth:`__deepcopy__`. The former is called
to implement the shallow copy operation; no additional arguments are passed.
The latter is called to implement the deep copy operation; it is passed one
argument, the memo dictionary. If the :meth:`__deepcopy__` implementation needs
argument, the ``memo`` dictionary. If the :meth:`__deepcopy__` implementation needs
to make a deep copy of a component, it should call the :func:`deepcopy` function
with the component as first argument and the memo dictionary as second argument.