From b4ab387328528bef57c3497bf079891402242db1 Mon Sep 17 00:00:00 2001 From: DianaRatnikova Date: Fri, 19 May 2023 01:36:13 +0300 Subject: [PATCH 1/6] Pull request for level 1 --- level_1/1.py | 4 ++-- level_1/10.py | 4 ++-- level_1/2.py | 4 ++-- level_1/3.py | 6 +++--- level_1/4.py | 4 ++-- level_1/5.py | 4 ++-- level_1/6.py | 4 ++-- level_1/7.py | 4 ++-- level_1/8.py | 4 ++-- level_1/9.py | 4 ++-- 10 files changed, 21 insertions(+), 21 deletions(-) diff --git a/level_1/1.py b/level_1/1.py index 1813c9f..f04c730 100644 --- a/level_1/1.py +++ b/level_1/1.py @@ -1,7 +1,7 @@ -from constants import ___ +from constants import none_type -def is_user_banned(user_id: ___) -> ___: +def is_user_banned(user_id: int|none_type) -> bool: pass diff --git a/level_1/10.py b/level_1/10.py index d31d5d1..ebcfd12 100644 --- a/level_1/10.py +++ b/level_1/10.py @@ -1,9 +1,9 @@ import uuid -from constants import ___ +from constants import none_type -def stringify(value: ___) -> ___: +def stringify(value: none_type|str) -> str: pass diff --git a/level_1/2.py b/level_1/2.py index 8a2c1bf..9b905c4 100644 --- a/level_1/2.py +++ b/level_1/2.py @@ -1,7 +1,7 @@ -from constants import ___ +from constants import none_type -def is_adult(age: ___, country_name: ___) -> ___: +def is_adult(age: int, country_name: str) -> bool: pass diff --git a/level_1/3.py b/level_1/3.py index ae55bfd..a2b8af3 100644 --- a/level_1/3.py +++ b/level_1/3.py @@ -1,10 +1,10 @@ -from constants import ___ +from constants import none_type -def compose_full_name(first_name: ___, last_name: ___, middle_name: ___) -> ___: +def compose_full_name(first_name: str, last_name: str, middle_name: str|none_type) -> str: pass if __name__ == "__main__": - assert compose_full_name(first_name="John", last_name="Doe", middle_name=None) == "Doe John" + assert compose_full_name(first_name="John", last_name="Doe", middle_name=none_type) == "Doe John" assert compose_full_name(first_name="Ilya", last_name="Lebedev", middle_name="Alexeyevich") == "Lebedev Ilya Alexeyevich" diff --git a/level_1/4.py b/level_1/4.py index 4b4cbe5..d5aa067 100644 --- a/level_1/4.py +++ b/level_1/4.py @@ -1,9 +1,9 @@ import datetime -from constants import ___ +from constants import none_type -def calculate_age(date_of_birth: ___) -> ___: +def calculate_age(date_of_birth: datetime.date|none_type) -> int: pass diff --git a/level_1/5.py b/level_1/5.py index 0728530..bcaace6 100644 --- a/level_1/5.py +++ b/level_1/5.py @@ -1,7 +1,7 @@ -from constants import ___ +from constants import none_type -def is_correct_email(raw_email: ___) -> ___: +def is_correct_email(raw_email: str|none_type) -> bool: pass diff --git a/level_1/6.py b/level_1/6.py index 7cb57fc..f25c981 100644 --- a/level_1/6.py +++ b/level_1/6.py @@ -1,7 +1,7 @@ -from constants import ___ +from constants import none_type -def is_loan_amount_too_big(loan_amount_usd: ___, max_loan_amount_for_user_usd: ___) -> ___: +def is_loan_amount_too_big(loan_amount_usd: int, max_loan_amount_for_user_usd: int|none_type) -> bool: pass diff --git a/level_1/7.py b/level_1/7.py index 68c6890..56a3b31 100644 --- a/level_1/7.py +++ b/level_1/7.py @@ -1,7 +1,7 @@ -from constants import ___ +from constants import none_type -def send_email(header: ___, text_content: ___, send_to: ___) -> ___: +def send_email(header: str, text_content: str, send_to: str) -> none_type: pass diff --git a/level_1/8.py b/level_1/8.py index 8ba8083..24f3f2f 100644 --- a/level_1/8.py +++ b/level_1/8.py @@ -1,10 +1,10 @@ import decimal import uuid -from constants import ___ +from constants import none_type -def get_user_balance(user_id: ___) -> ___: +def get_user_balance(user_id: uuid.UUID) -> decimal.Decimal|none_type: pass diff --git a/level_1/9.py b/level_1/9.py index fb7fc80..9cbcff5 100644 --- a/level_1/9.py +++ b/level_1/9.py @@ -1,9 +1,9 @@ import uuid -from constants import ___ +from constants import none_type -def is_correct_int(raw_int: ___) -> ___: +def is_correct_int(raw_int: str|none_type -> bool: pass From b461c94ce189b772ba308ad7dd1c1c34b4a9f3ae Mon Sep 17 00:00:00 2001 From: DianaRatnikova Date: Sat, 27 May 2023 16:40:45 +0300 Subject: [PATCH 2/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20None=20=D0=B2=20level1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- level_1/1.py | 4 ++-- level_1/10.py | 4 +++- level_1/4.py | 4 ++-- level_1/5.py | 4 ++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/level_1/1.py b/level_1/1.py index f04c730..97ba86b 100644 --- a/level_1/1.py +++ b/level_1/1.py @@ -1,7 +1,7 @@ -from constants import none_type +from constants import ___ -def is_user_banned(user_id: int|none_type) -> bool: +def is_user_banned(user_id: int) -> bool: pass diff --git a/level_1/10.py b/level_1/10.py index ebcfd12..8ba9d07 100644 --- a/level_1/10.py +++ b/level_1/10.py @@ -1,9 +1,11 @@ import uuid from constants import none_type +from typing import Any -def stringify(value: none_type|str) -> str: +# сначала написала none_type|str, потому что хотела избежать Any +def stringify(value: Any) -> str: pass diff --git a/level_1/4.py b/level_1/4.py index d5aa067..4522ac4 100644 --- a/level_1/4.py +++ b/level_1/4.py @@ -1,9 +1,9 @@ import datetime -from constants import none_type +from constants import ___ -def calculate_age(date_of_birth: datetime.date|none_type) -> int: +def calculate_age(date_of_birth: datetime.date) -> int: pass diff --git a/level_1/5.py b/level_1/5.py index bcaace6..9b06931 100644 --- a/level_1/5.py +++ b/level_1/5.py @@ -1,7 +1,7 @@ -from constants import none_type +from constants import ___ -def is_correct_email(raw_email: str|none_type) -> bool: +def is_correct_email(raw_email: str) -> bool: pass From a7cb33982a8d6ef066a19229749c7f3e00db5e13 Mon Sep 17 00:00:00 2001 From: DianaRatnikova Date: Sat, 27 May 2023 16:41:14 +0300 Subject: [PATCH 3/6] Level2 is done --- level_2/1.py | 2 +- level_2/10.py | 2 +- level_2/2.py | 2 +- level_2/3.py | 4 ++-- level_2/4.py | 2 +- level_2/5.py | 2 +- level_2/6.py | 2 +- level_2/7.py | 2 +- level_2/8.py | 2 +- level_2/9.py | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/level_2/1.py b/level_2/1.py index c6ead64..f6ebd55 100644 --- a/level_2/1.py +++ b/level_2/1.py @@ -1,7 +1,7 @@ from constants import ___ -def get_avg_currency_rate(rates_history: ___) -> ___: +def get_avg_currency_rate(rates_history: list[float]) -> float: pass diff --git a/level_2/10.py b/level_2/10.py index 69f7bd0..7eb283d 100644 --- a/level_2/10.py +++ b/level_2/10.py @@ -1,7 +1,7 @@ from constants import ___ -def is_point_in_square(point: ___, left_upper_corner: ___, right_bottom_corner: ___) -> ___: +def is_point_in_square(point: tuple[int], left_upper_corner: tuple[int], right_bottom_corner: tuple[int]) -> bool: pass diff --git a/level_2/2.py b/level_2/2.py index e2ab2aa..e9d4a9b 100644 --- a/level_2/2.py +++ b/level_2/2.py @@ -1,7 +1,7 @@ from constants import ___ -def is_recovery_code_correct(code: ___, user_codes: ___) -> ___: +def is_recovery_code_correct(code: str, user_codes: list[str]) -> bool: pass diff --git a/level_2/3.py b/level_2/3.py index 8487e4b..c62a2c6 100644 --- a/level_2/3.py +++ b/level_2/3.py @@ -1,9 +1,9 @@ import decimal -from constants import ___ +from constants import none_type -def get_transaction_amount(transaction_id: ___, transactions_amounts_map: ___) -> ___: +def get_transaction_amount(transaction_id:int, transactions_amounts_map: dict{int, decimal.decimal}) -> dict{int, decimal.decimal}|none_type: pass diff --git a/level_2/4.py b/level_2/4.py index 791b2e0..93523a5 100644 --- a/level_2/4.py +++ b/level_2/4.py @@ -1,7 +1,7 @@ from constants import ___ -def ban_users(users_ids: ___) -> ___: +def ban_users(users_ids: set) -> int: pass diff --git a/level_2/5.py b/level_2/5.py index 2b0ce2d..b6b86f4 100644 --- a/level_2/5.py +++ b/level_2/5.py @@ -1,7 +1,7 @@ from constants import ___ -def get_current_user() -> ___: +def get_current_user() -> tuple[str, int, str]: pass diff --git a/level_2/6.py b/level_2/6.py index af117e9..3fb1d45 100644 --- a/level_2/6.py +++ b/level_2/6.py @@ -1,7 +1,7 @@ from constants import ___ -def is_name_male(name: ___, name_gender_map: ___) -> ___: +def is_name_male(name: StopIteration, name_gender_map: dict{str, bool}) -> bool: pass diff --git a/level_2/7.py b/level_2/7.py index f8f7f6f..3ddf258 100644 --- a/level_2/7.py +++ b/level_2/7.py @@ -1,7 +1,7 @@ from constants import ___ -def calculate_total_spent_for_user(user: ___) -> ___: +def calculate_total_spent_for_user(user: tuple(str,int,list[int])) -> int: pass diff --git a/level_2/8.py b/level_2/8.py index 1801197..5421e71 100644 --- a/level_2/8.py +++ b/level_2/8.py @@ -1,7 +1,7 @@ from constants import ___ -def calculate_total_spent_for_users(users_ids: ___, users_ids_to_users_map: ___) -> ___: +def calculate_total_spent_for_users(users_ids: set[int], users_ids_to_users_map: dict[int, set(str, int, list[int])]) -> int: pass diff --git a/level_2/9.py b/level_2/9.py index 693804a..9c35402 100644 --- a/level_2/9.py +++ b/level_2/9.py @@ -3,7 +3,7 @@ from constants import ___ -def parse_receipt(raw_receipt: ___) -> ___: +def parse_receipt(raw_receipt: str) -> tuple(int, datetime.datetime(), list[tuple[str, int, float]]): pass From 338df8ad6def8835214e4253914d54caf10e4764 Mon Sep 17 00:00:00 2001 From: DianaRatnikova Date: Sat, 27 May 2023 16:41:30 +0300 Subject: [PATCH 4/6] Level3 is done --- level_3/1.py | 3 ++- level_3/2.py | 3 ++- level_3/3.py | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/level_3/1.py b/level_3/1.py index 9578f5e..1e327f0 100644 --- a/level_3/1.py +++ b/level_3/1.py @@ -1,9 +1,10 @@ import decimal from constants import ___ +from typing import Mapping -def get_transaction_amount(transaction_id: ___, transactions_amounts_map: ___) -> ___: +def get_transaction_amount(transaction_id: int, transactions_amounts_map: Mapping[int, decimal.Decimal]) -> decimal.Decimal|None: # попробуйте использовать typing.Mapping: transactions_amounts_map по смыслу не должен меняться внутри функции pass diff --git a/level_3/2.py b/level_3/2.py index edde766..733c731 100644 --- a/level_3/2.py +++ b/level_3/2.py @@ -1,7 +1,8 @@ from constants import ___ +from typing import TypedDict -def calculate_total_spent_for_user(user: ___) -> ___: +def calculate_total_spent_for_user(user: TypedDict) -> int: # попробуй тут воспользовать typing.TypedDict pass diff --git a/level_3/3.py b/level_3/3.py index 50ed15a..611e2b3 100644 --- a/level_3/3.py +++ b/level_3/3.py @@ -1,7 +1,7 @@ from constants import ___ -def create_user(user_name: ___, user_age: ___, after_created: ___) -> ___: +def create_user(user_name: str, user_age: int, after_created: None) -> None: pass From 3f7db4a1494e89f0b745a49e9aca8ac38ab94766 Mon Sep 17 00:00:00 2001 From: DianaRatnikova Date: Wed, 31 May 2023 01:15:44 +0300 Subject: [PATCH 5/6] Added Typedict, corrected brackets --- .gitignore | 3 +++ constants.py | 2 +- level_1/2.py | 2 +- level_1/3.py | 2 +- level_1/9.py | 2 +- level_2/10.py | 3 ++- level_2/3.py | 2 +- level_2/4.py | 2 +- level_2/6.py | 3 ++- level_2/8.py | 2 +- level_2/9.py | 5 ++--- level_3/1.py | 2 +- level_3/2.py | 2 +- level_3/3.py | 5 +++-- typing_challenges | 1 + 15 files changed, 22 insertions(+), 16 deletions(-) create mode 100644 .gitignore create mode 160000 typing_challenges diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a9e484a --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +env/ +mypy_cache/ +typing_challenges/ \ No newline at end of file diff --git a/constants.py b/constants.py index 21b2c30..41b6957 100644 --- a/constants.py +++ b/constants.py @@ -1 +1 @@ -___ = None +none_type = ___ diff --git a/level_1/2.py b/level_1/2.py index 9b905c4..8558a13 100644 --- a/level_1/2.py +++ b/level_1/2.py @@ -1,4 +1,4 @@ -from constants import none_type +from constants import ___ def is_adult(age: int, country_name: str) -> bool: diff --git a/level_1/3.py b/level_1/3.py index a2b8af3..6def7ca 100644 --- a/level_1/3.py +++ b/level_1/3.py @@ -1,4 +1,4 @@ -from constants import none_type +from constants import __ def compose_full_name(first_name: str, last_name: str, middle_name: str|none_type) -> str: diff --git a/level_1/9.py b/level_1/9.py index 9cbcff5..9ab6d61 100644 --- a/level_1/9.py +++ b/level_1/9.py @@ -3,7 +3,7 @@ from constants import none_type -def is_correct_int(raw_int: str|none_type -> bool: +def is_correct_int(raw_int: str|none_type) -> bool: pass diff --git a/level_2/10.py b/level_2/10.py index 7eb283d..71d934f 100644 --- a/level_2/10.py +++ b/level_2/10.py @@ -1,7 +1,8 @@ from constants import ___ -def is_point_in_square(point: tuple[int], left_upper_corner: tuple[int], right_bottom_corner: tuple[int]) -> bool: + +def is_point_in_square(point: tuple[int, int], left_upper_corner: tuple[int, int], right_bottom_corner: tuple[int]) -> bool: pass diff --git a/level_2/3.py b/level_2/3.py index c62a2c6..140bd98 100644 --- a/level_2/3.py +++ b/level_2/3.py @@ -3,7 +3,7 @@ from constants import none_type -def get_transaction_amount(transaction_id:int, transactions_amounts_map: dict{int, decimal.decimal}) -> dict{int, decimal.decimal}|none_type: +def get_transaction_amount(transaction_id:int, transactions_amounts_map: dict[int, decimal.decimal]) -> dict{int, decimal.decimal}|none_type: pass diff --git a/level_2/4.py b/level_2/4.py index 93523a5..8136322 100644 --- a/level_2/4.py +++ b/level_2/4.py @@ -1,7 +1,7 @@ from constants import ___ -def ban_users(users_ids: set) -> int: +def ban_users(users_ids: set[int]) -> int: pass diff --git a/level_2/6.py b/level_2/6.py index 3fb1d45..2f466cb 100644 --- a/level_2/6.py +++ b/level_2/6.py @@ -1,10 +1,11 @@ from constants import ___ -def is_name_male(name: StopIteration, name_gender_map: dict{str, bool}) -> bool: +def is_name_male(name: str, name_gender_map: dict[str, bool]) -> bool: pass + if __name__ == "__main__": name_gender_map = { "John": True, diff --git a/level_2/8.py b/level_2/8.py index 5421e71..5eaa8ab 100644 --- a/level_2/8.py +++ b/level_2/8.py @@ -1,7 +1,7 @@ from constants import ___ -def calculate_total_spent_for_users(users_ids: set[int], users_ids_to_users_map: dict[int, set(str, int, list[int])]) -> int: +def calculate_total_spent_for_users(users_ids: set[int], users_ids_to_users_map: dict[int, tuple[str, int, list[int]]]) -> int: pass diff --git a/level_2/9.py b/level_2/9.py index 9c35402..104ba9d 100644 --- a/level_2/9.py +++ b/level_2/9.py @@ -1,12 +1,11 @@ import datetime - from constants import ___ -def parse_receipt(raw_receipt: str) -> tuple(int, datetime.datetime(), list[tuple[str, int, float]]): +def parse_receipt(raw_receipt: str) -> tuple[int, datetime.datetime, list[tuple[str, int, float]]]: pass - + if __name__ == "__main__": assert parse_receipt( raw_receipt="Кассовый чек 12 Продажа Позиции: ...", diff --git a/level_3/1.py b/level_3/1.py index 1e327f0..dd659f6 100644 --- a/level_3/1.py +++ b/level_3/1.py @@ -4,7 +4,7 @@ from typing import Mapping -def get_transaction_amount(transaction_id: int, transactions_amounts_map: Mapping[int, decimal.Decimal]) -> decimal.Decimal|None: +def get_transaction_amount(transaction_id: int, transactions_amounts_map: Mapping[int, decimal.Decimal]) -> decimal.Decimal | None: # попробуйте использовать typing.Mapping: transactions_amounts_map по смыслу не должен меняться внутри функции pass diff --git a/level_3/2.py b/level_3/2.py index 733c731..960c61d 100644 --- a/level_3/2.py +++ b/level_3/2.py @@ -2,7 +2,7 @@ from typing import TypedDict -def calculate_total_spent_for_user(user: TypedDict) -> int: +def calculate_total_spent_for_user(user: dict['name': str, "age": int, 'transactions_sums': list[int]]) -> int: # попробуй тут воспользовать typing.TypedDict pass diff --git a/level_3/3.py b/level_3/3.py index 611e2b3..d61a19e 100644 --- a/level_3/3.py +++ b/level_3/3.py @@ -1,10 +1,11 @@ from constants import ___ -def create_user(user_name: str, user_age: int, after_created: None) -> None: - pass +def create_user(user_name: str, user_age: int, after_created: function) -> None: + pass + def send_test_email(user_id: int) -> None: pass diff --git a/typing_challenges b/typing_challenges new file mode 160000 index 0000000..338df8a --- /dev/null +++ b/typing_challenges @@ -0,0 +1 @@ +Subproject commit 338df8ad6def8835214e4253914d54caf10e4764 From 56a931574077e838c07425c3b7d1531fae5f6a67 Mon Sep 17 00:00:00 2001 From: DianaRatnikova Date: Thu, 1 Jun 2023 01:34:33 +0300 Subject: [PATCH 6/6] =?UTF-8?q?=D0=9F=D0=BE=D0=B2=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=BE=20=D1=83=D0=B4=D0=B0=D0=BB=D1=8F=D1=8E=20none=5Ftype=20+?= =?UTF-8?q?=20=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=B8=D1=80=D1=83?= =?UTF-8?q?=D1=8E=20TypeDict?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- level_1/10.py | 3 +-- level_1/3.py | 6 +++--- level_1/6.py | 4 ++-- level_1/7.py | 4 ++-- level_1/8.py | 2 +- level_1/9.py | 4 ++-- level_2/3.py | 4 ++-- level_2/7.py | 2 +- level_2/9.py | 2 +- level_3/2.py | 15 ++++++++++++++- typing_challenges | 1 - 11 files changed, 29 insertions(+), 18 deletions(-) delete mode 160000 typing_challenges diff --git a/level_1/10.py b/level_1/10.py index 8ba9d07..a1e2527 100644 --- a/level_1/10.py +++ b/level_1/10.py @@ -1,10 +1,9 @@ import uuid -from constants import none_type +from constants import ___ from typing import Any -# сначала написала none_type|str, потому что хотела избежать Any def stringify(value: Any) -> str: pass diff --git a/level_1/3.py b/level_1/3.py index 6def7ca..d1a1a16 100644 --- a/level_1/3.py +++ b/level_1/3.py @@ -1,10 +1,10 @@ from constants import __ -def compose_full_name(first_name: str, last_name: str, middle_name: str|none_type) -> str: +def compose_full_name(first_name: str, last_name: str, middle_name: str | None) -> str: pass if __name__ == "__main__": - assert compose_full_name(first_name="John", last_name="Doe", middle_name=none_type) == "Doe John" - assert compose_full_name(first_name="Ilya", last_name="Lebedev", middle_name="Alexeyevich") == "Lebedev Ilya Alexeyevich" + assert compose_full_name(first_name = "John", last_name = "Doe", middle_name = None) == "Doe John" + assert compose_full_name(first_name = "Ilya", last_name = "Lebedev", middle_name = "Alexeyevich") == "Lebedev Ilya Alexeyevich" diff --git a/level_1/6.py b/level_1/6.py index f25c981..b4150fd 100644 --- a/level_1/6.py +++ b/level_1/6.py @@ -1,7 +1,7 @@ -from constants import none_type +from constants import ___ -def is_loan_amount_too_big(loan_amount_usd: int, max_loan_amount_for_user_usd: int|none_type) -> bool: +def is_loan_amount_too_big(loan_amount_usd: int, max_loan_amount_for_user_usd: int | None) -> bool: pass diff --git a/level_1/7.py b/level_1/7.py index 56a3b31..912fdc0 100644 --- a/level_1/7.py +++ b/level_1/7.py @@ -1,7 +1,7 @@ -from constants import none_type +from constants import ___ -def send_email(header: str, text_content: str, send_to: str) -> none_type: +def send_email(header: str, text_content: str, send_to: str) -> None: pass diff --git a/level_1/8.py b/level_1/8.py index 24f3f2f..8e7a17f 100644 --- a/level_1/8.py +++ b/level_1/8.py @@ -4,7 +4,7 @@ from constants import none_type -def get_user_balance(user_id: uuid.UUID) -> decimal.Decimal|none_type: +def get_user_balance(user_id: uuid.UUID) -> decimal.Decimal | None: pass diff --git a/level_1/9.py b/level_1/9.py index 9ab6d61..1f70d43 100644 --- a/level_1/9.py +++ b/level_1/9.py @@ -1,9 +1,9 @@ import uuid -from constants import none_type +from constants import ___ -def is_correct_int(raw_int: str|none_type) -> bool: +def is_correct_int(raw_int: str | None) -> bool: pass diff --git a/level_2/3.py b/level_2/3.py index 140bd98..1b98a7f 100644 --- a/level_2/3.py +++ b/level_2/3.py @@ -1,9 +1,9 @@ import decimal -from constants import none_type +from constants import __ -def get_transaction_amount(transaction_id:int, transactions_amounts_map: dict[int, decimal.decimal]) -> dict{int, decimal.decimal}|none_type: +def get_transaction_amount(transaction_id:int, transactions_amounts_map: dict[int, decimal.decimal]) -> dict[int, decimal.decimal] | None: pass diff --git a/level_2/7.py b/level_2/7.py index 3ddf258..1408a00 100644 --- a/level_2/7.py +++ b/level_2/7.py @@ -1,7 +1,7 @@ from constants import ___ -def calculate_total_spent_for_user(user: tuple(str,int,list[int])) -> int: +def calculate_total_spent_for_user(user: tuple[str, int, list[int]]) -> int: pass diff --git a/level_2/9.py b/level_2/9.py index 104ba9d..aef0e95 100644 --- a/level_2/9.py +++ b/level_2/9.py @@ -2,7 +2,7 @@ from constants import ___ -def parse_receipt(raw_receipt: str) -> tuple[int, datetime.datetime, list[tuple[str, int, float]]]: +def parse_receipt(raw_receipt: str) -> tuple[int, datetime.date, list[tuple[str, int, float]]]: pass diff --git a/level_3/2.py b/level_3/2.py index 960c61d..49cd03a 100644 --- a/level_3/2.py +++ b/level_3/2.py @@ -2,7 +2,13 @@ from typing import TypedDict -def calculate_total_spent_for_user(user: dict['name': str, "age": int, 'transactions_sums': list[int]]) -> int: +class User(TypedDict): + "name": str + "age": int + "transactions_sums": list[int] + + +def calculate_total_spent_for_user(user: User) -> int: # попробуй тут воспользовать typing.TypedDict pass @@ -15,3 +21,10 @@ def calculate_total_spent_for_user(user: dict['name': str, "age": int, 'transact "transactions_sums": [102, 15, 63, 12], }, ) == 192 + +# Вопрос: +# допустимо ли в аннотации типов указывать TypeDict следующими способами? +#def calculate_total_spent_for_user(user: TypedDict('User', 'name' = str, 'age' = int, 'transactions_sums' = list[int])) -> int: +#def calculate_total_spent_for_user(user: TypedDict('User', {'name': str, 'age': int, 'transactions_sums': list[int]})) -> int: + +# пока на основе документации понимаю, что оба варианта верны, и именно в таком виде, без квадратных скобок \ No newline at end of file diff --git a/typing_challenges b/typing_challenges deleted file mode 160000 index 338df8a..0000000 --- a/typing_challenges +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 338df8ad6def8835214e4253914d54caf10e4764