From 0a440137898c61c3898cbaaab722127027304a26 Mon Sep 17 00:00:00 2001 From: Frost Ming Date: Fri, 19 Jan 2024 09:56:00 +0800 Subject: [PATCH 1/2] new challenge: NoReturn(advanced) Signed-off-by: Frost Ming --- challenges/advanced-noreturn/hints.md | 1 + challenges/advanced-noreturn/question.py | 21 +++++++++++++++++++++ challenges/advanced-noreturn/solution.py | 22 ++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 challenges/advanced-noreturn/hints.md create mode 100644 challenges/advanced-noreturn/question.py create mode 100644 challenges/advanced-noreturn/solution.py diff --git a/challenges/advanced-noreturn/hints.md b/challenges/advanced-noreturn/hints.md new file mode 100644 index 0000000..7c9e6be --- /dev/null +++ b/challenges/advanced-noreturn/hints.md @@ -0,0 +1 @@ +Check out [NoReturn](https://docs.python.org/3/library/typing.html#typing.NoReturn). diff --git a/challenges/advanced-noreturn/question.py b/challenges/advanced-noreturn/question.py new file mode 100644 index 0000000..20b29ae --- /dev/null +++ b/challenges/advanced-noreturn/question.py @@ -0,0 +1,21 @@ +""" +TODO: + +Please add type hints to the function `abort` to make the test pass. +""" + + +def abort(): + pass + + +## End of your code ## +from typing import assert_type + + +def main(arg: int | None) -> None: + if arg is None: + abort() + + print(arg + 42) + assert_type(arg, int) diff --git a/challenges/advanced-noreturn/solution.py b/challenges/advanced-noreturn/solution.py new file mode 100644 index 0000000..2b0cdde --- /dev/null +++ b/challenges/advanced-noreturn/solution.py @@ -0,0 +1,22 @@ +""" +TODO: + +Please add type hints to the function `abort` to make the test pass. +""" +from typing import NoReturn + + +def abort() -> NoReturn: + pass + + +## End of your code ## +from typing import assert_type + + +def main(arg: int | None) -> None: + if arg is None: + abort() + + print(arg + 42) + assert_type(arg, int) From 29efcd5a790b22aa03b13cc607d372a0ec63734e Mon Sep 17 00:00:00 2001 From: Frost Ming Date: Fri, 19 Jan 2024 09:59:19 +0800 Subject: [PATCH 2/2] fix tests Signed-off-by: Frost Ming --- challenges/advanced-noreturn/question.py | 2 +- challenges/advanced-noreturn/solution.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/challenges/advanced-noreturn/question.py b/challenges/advanced-noreturn/question.py index 20b29ae..002ef7f 100644 --- a/challenges/advanced-noreturn/question.py +++ b/challenges/advanced-noreturn/question.py @@ -6,7 +6,7 @@ def abort(): - pass + raise RuntimeError("abort") ## End of your code ## diff --git a/challenges/advanced-noreturn/solution.py b/challenges/advanced-noreturn/solution.py index 2b0cdde..1d7a5f7 100644 --- a/challenges/advanced-noreturn/solution.py +++ b/challenges/advanced-noreturn/solution.py @@ -7,7 +7,7 @@ def abort() -> NoReturn: - pass + raise RuntimeError("abort") ## End of your code ##