From 6f491a6cae04828d61c722b1211122aa2b082260 Mon Sep 17 00:00:00 2001 From: thatguysimon Date: Sun, 18 Dec 2022 18:38:12 -0800 Subject: [PATCH] Explicitly mention the required usage of "memo" (#598) --- docs/providers/custom.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/providers/custom.rst b/docs/providers/custom.rst index 7838529c..a8ba5652 100644 --- a/docs/providers/custom.rst +++ b/docs/providers/custom.rst @@ -16,8 +16,8 @@ To create a custom provider you need to follow these rules: 1. New provider class should inherit :py:class:`Provider`. 2. You need to implement the ``Provider._provide()`` method. 3. You need to implement the ``Provider.__deepcopy__()`` method. It should return an - equivalent copy of a provider. All providers must be copied with a ``deepcopy()`` function - from the ``providers`` module. After the a new provider object is created use + equivalent copy of a provider. All providers must be copied with the ``deepcopy()`` function + from the ``providers`` module. It's essential to pass ``memo`` into ``deepcopy`` in order to keep the preconfigured ``args`` and ``kwargs`` of stored providers. After the a new provider object is created, use ``Provider._copy_overriding()`` method to copy all overriding providers. See the example below. 4. If new provider has a ``__init__()`` method, it should call the parent @@ -33,7 +33,7 @@ To create a custom provider you need to follow these rules: .. note:: 1. Prefer delegation over inheritance. If you choose between inheriting a ``Factory`` or inheriting a ``Provider`` and use ``Factory`` internally - the last is better. - 2. When create a new provider follow the ``Factory``-like injections style. Consistency matters. + 2. When creating a new provider follow the ``Factory``-like injections style. Consistency matters. 3. Use the ``__slots__`` attribute to make sure nothing could be attached to your provider. You will also save some memory.