Закрыл тестовое задание, решил не халтурить

⚡ Speed Measurer — CLI-утилита для замера скорости интернета Пока основные проекты в заморозке, решил закрыть небольшую задачу, но сделать её по-взрослому. Что делает утилита: Принимает URL → делает 10 последовательных HTTP-запросов → считает среднее время, объём и скорость в МБ/с. Всё в консоли, с прогресс-баром и цветным выводом. Что внутри (главное): • Только стандартная библиотека Python — без requests, без rich, без tqdm. Требование было явным, и это оказалось интереснее, чем тащить зависимости • Потоковое чтение ответа чанками по 64 КБ вместо загрузки всего файла в память — защита от MemoryError на больших файлах • Обработка 7 сценариев ошибок: пустой URL, схема, таймаут, DNS, HTTP 4xx/5xx, Ctrl+C, полный провал запросов • Модульная структура: cli / core / report / config / exceptions — каждый модуль за свою зону • 28 unit-тестов на unittest.mock (без реальных сетевых запросов) • Ruff + Black через pyproject.toml, per-file-ignores с обоснованием • ANSI-цвета и прогресс-бар руками — без внешних зависимостей Что понял в процессе: Стандартная библиотека покрывает гораздо больше, чем кажется. urllib.request + argparse + dataclasses + unittest — этого хватает, чтобы сделать нормальный инструмент, если думать о деталях. А ещё — тесты без сети пишутся сложнее, чем кажется: пришлось разбираться с side_effect для потокового чтения, чтобы мок не зацикливался на первом чанке. Репозиторий: https://github.com/Bogdan-95/internet-speed-measurer #python #backend #cli #stdlib #unittest #ruff #black #petproject

Закрыл тестовое задание, решил не халтурить | Сетка — социальная сеть от hh.ru