Українська
Підсумки
Висновки
Імпортований пакет і дистрибутив – різні поняття: sdist містить джерела для збирання, а wheel – готові файли для встановлення, але не самодостатній виконуваний файл. pyproject.toml описує метадані, залежності, точку входу та спосіб збирання без шляхів до середовища автора. Структура src/ і встановлення зібраного wheel у чисте середовище виявляють відсутні модулі й ресурси, які приховує редагований режим. Lock-файл допомагає повторити середовище, а оновлення залежностей є окремою перевіреною зміною. Узагальнені типи пов’язують вхід і вихід, а Protocol задає структурний контракт без успадкування. Анотації, TypedDict і cast не перевіряють зовнішні дані під час виконання, тому валідація залишається обов’язковою. pytest, mypy і Ruff перевіряють різні властивості коду, а CI повторює ці перевірки в чистому середовищі. PyInstaller збирає виконуваний застосунок, який перевіряють на цільовій системі та з іншого робочого каталогу.
Питання для самоперевірки
- Чим імпортований пакет відрізняється від дистрибутива?
- Чому wheel не тотожний виконуваному файлу?
- Які залежності належать до
build-system, runtime та dev? - Яку помилку допомагає виявити структура
src/? - Як працює точка входу з
[project.scripts]? - Що означає обмеження
~=2.4і навіщо потрібен lock-файл? - Чому редаговане встановлення не замінює перевірку wheel?
- Чим
--onedirвідрізняється від--onefileу PyInstaller? - Як параметр типу пов’язує вхід і вихід функції?
- Чим структурний
Protocolвідрізняється від базового класу? - Чому
TypedDictтаcastне перевіряють зовнішні дані? - Як
**Pзберігає параметри функції в декораторі? - Що перевіряють mypy, Ruff та pytest?
- Чому зелений статус CI не є дозволом на публікацію?
- Як перевірити ресурси зібраного GUI-застосунку?
Офіційні джерела: https://packaging.python.org/en/latest/guides/writing-pyproject-toml/, https://docs.python.org/3.14/library/typing.html, https://mypy.readthedocs.io/en/stable/, https://docs.astral.sh/ruff/, https://docs.astral.sh/uv/guides/projects/, https://pyinstaller.org/en/stable/runtime-information.html.