Search
Write a publication
Pull to refresh

Comments 8

Полезно, +. Не раскрыта тема с doctests в комментарии. Это, пожалуй, самый простой способ мягко заставить делать комменты по настоящему самообновляемыми. Код просто не соберётся, если сборка начинается с прогона doctest. В некоторых сферах, например, в DataScience c их Jupyter-блокнотами и кавалерийским кодингом в стиле "Ща..." - доктесты оказались Соломоновым решением для наведения порядка. Экспортируемые в модули udf с доктестами просто открывают новую страницу культуры программирования в компаниях, и хорошо что эта тема усиливается сабжем.

Это оно и есть. Docstring-строки ниже имён функций в py-, md-, ipynb-, txt-файлах выполняются и валидируют свой вывод с указанным ниже. Это обязывает кодера изменив функцию, скажем, добавив в нее новый аргумент - изменить и ее докттест в докстринге, что является довольно ненавязчивым насилием. Если он этого не сделает - доктест зафэйлится, и код в прод не уйдет, а автодокументация не обновится на нерабочую.

Нет никаких других аато-способов поддерживать актуальность кода + комментариев и документации одновременно. Это киллер-фича Python и в DS-кругах она почитается за великое благо.

Это киллер-фича Python и в DS-кругах она почитается за великое благо.

С тем, что киллер фича согласен. А вот тесты еще не во все уголки DS доползли.

"Специфика отрасли", имхо 80% DS/ML-проектов, отчетов, рисерчей - идут через неделю в корзину или просто существуют невостребованно, потому что их слишком празднично анонсировали и быстро зарелизили.

Автоматизация это хорошо. Есть CI и тесты, код аккуратный.

Репозиторий с хуком, который не использует хуки это подозрительно.

Такая проверка в одиночку бесполезна. Обычно используют что-то крупное и к нему добавляют плагинов и просто скрипты. Было бы хорошо посмотреть, что из этого уже есть в ruff flake8 pylint. И может быть даже законтрибьютить в один из этих проектов. Без форматера и глобального линтера, ревью это ад.

Код аккуратный, но мне кажется регулярки это опасно. Закомментированный код с комментами может сломать их. (в ruff и flake8 есть на это управа https://docs.astral.sh/ruff/rules/#eradicate-era).

В выводе нет номера строки. IDE умеет читать пути в выводе на консоль и можно будет кликом перейти в нужное место. В GitHub есть аннотации, cпециально отформатированные логи превращаются в комментарии к коду. Даже не надо в лог CI глядеть.

Проверил ваш код, очевидно, что это не работает:

$ cat ~/1.py 
print('''\
#hello#
''')
$ python3 python_checker.py ~/1.py 
…1.py:2: error: The red line should start with an uppercase letter: #hello#
Sign up to leave a comment.

Articles