From f3f8689c8204531c43aa9478853edbaea28f2074 Mon Sep 17 00:00:00 2001 From: Anton Agestam Date: Tue, 6 Jul 2021 17:06:43 +0200 Subject: [PATCH 1/4] Document special meaning of ... in overloads --- docs/source/more_types.rst | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/source/more_types.rst b/docs/source/more_types.rst index 16ec058f6d67..d6f0b2eb833d 100644 --- a/docs/source/more_types.rst +++ b/docs/source/more_types.rst @@ -295,6 +295,25 @@ return type by using overloads like so: subtypes, you can use a :ref:`value restriction `. +Sometimes default values of function arguments don't have an effect on its +overload. In these cases it is best practice to only specify them once in the +function signature and use `...` ellipsis as a placeholder for the defaults in +the overloads: + +.. code-block:: python + + from typing import overload + + class M: ... + + @overload + def get_model(model_or_pk: M, flag: bool = ...) -> M: ... + @overload + def get_model(model_or_pk: int, flag: bool = ...) -> M | None: ... + + def get_model(model_or_pk: int | M, flag: bool = True) -> M | None: + ... + Runtime behavior ---------------- From c6d6daaad4a698d58cb62dd667d4e401fe512909 Mon Sep 17 00:00:00 2001 From: Anton Agestam Date: Tue, 6 Jul 2021 17:22:37 +0200 Subject: [PATCH 2/4] fixup! Document special meaning of ... in overloads Fix formatting --- docs/source/more_types.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/more_types.rst b/docs/source/more_types.rst index d6f0b2eb833d..a4d60e5b554b 100644 --- a/docs/source/more_types.rst +++ b/docs/source/more_types.rst @@ -297,8 +297,8 @@ return type by using overloads like so: Sometimes default values of function arguments don't have an effect on its overload. In these cases it is best practice to only specify them once in the -function signature and use `...` ellipsis as a placeholder for the defaults in -the overloads: +function signature and use ``...`` ellipsis as a placeholder for the defaults +in the overloads: .. code-block:: python From 165e27aea9bf4158559ec0e09a86f6442218b3c0 Mon Sep 17 00:00:00 2001 From: Anton Agestam Date: Wed, 7 Jul 2021 09:49:42 +0200 Subject: [PATCH 3/4] fixup! Document special meaning of ... in overloads --- docs/source/more_types.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/source/more_types.rst b/docs/source/more_types.rst index a4d60e5b554b..b9925c2ac1fe 100644 --- a/docs/source/more_types.rst +++ b/docs/source/more_types.rst @@ -295,10 +295,10 @@ return type by using overloads like so: subtypes, you can use a :ref:`value restriction `. -Sometimes default values of function arguments don't have an effect on its -overload. In these cases it is best practice to only specify them once in the -function signature and use ``...`` ellipsis as a placeholder for the defaults -in the overloads: +The default values of a function's arguments don't affect its signature, only +the absence or presence of a default value does. So in order to reduce +redundancy in definitions it's possible to replace default values in +overload definitions with `...` as a placeholder. .. code-block:: python From 35ed274a5998313ba6c2e73a2d30925ab2358142 Mon Sep 17 00:00:00 2001 From: Anton Agestam Date: Wed, 7 Jul 2021 09:50:37 +0200 Subject: [PATCH 4/4] fixup! Document special meaning of ... in overloads --- docs/source/more_types.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/more_types.rst b/docs/source/more_types.rst index b9925c2ac1fe..ba969e62b9a3 100644 --- a/docs/source/more_types.rst +++ b/docs/source/more_types.rst @@ -297,8 +297,8 @@ return type by using overloads like so: The default values of a function's arguments don't affect its signature, only the absence or presence of a default value does. So in order to reduce -redundancy in definitions it's possible to replace default values in -overload definitions with `...` as a placeholder. +redundancy it's possible to replace default values in overload definitions with +`...` as a placeholder. .. code-block:: python