← До списку лабораторних по Python
Повний опис / сценарій лабораторної:
Meta: навчитися описувати типи у функціях і класах та перевіряти їх mypy.
Krok 1. Встановити mypy у віртуальному середовищі.
Komandi: cd ~/python_lab1; source .venv/bin/activate; pip install mypy
Krok 2. Створити файл src/app/types18.py.
Komanda: cd src; printf "from typing import Iterable
def avg(values: Iterable[float]) -> float:
total = 0.0
count = 0
for v in values:
total += v
count += 1
if count == 0:
raise ValueError("empty iterable")
return total / count
" > app/types18.py
Krok 3. Запустити mypy на цьому файлі.
Komанда: mypy app/types18.py
Krok 4. Навмисно порушити типи, викликавши avg з некоректними аргументами у додатковому файлі.
Komanda: printf "from app.types18 import avg
print(avg([1, 2, 3]))
print(avg(["a", "b"]))
" > app/types18_use.py
Krok 5. Запустити mypy на всьому пакеті app.
Komанда: mypy app
Poyasnennya: mypy повинен показати помилку для другого виклику.
Krok 6. Виправити код або додати налаштування mypy щоб дозволити частинну типізацію.
Krok 7. Створити файл mypy.ini з базовою конфігурацією.
Komanda: cd ..; printf "[mypy]
python_version = 3.11
ignore_missing_imports = True
" > mypy.ini
Krok 8. Повторно запустити mypy і переконатися що конфігурація застосувалась.
Komанда: cd src; mypy app
Krok 9. Занотувати плюси і мінуси статичної перевірки типів у Python проєктах.
Krok 10. Mini zvit.
Zavdannya: опиши які модулі у реальному сервісі ти б почав покривати type hints у першу чергу.