
Переиспользование небольших Python‑функций между проектами без переписывания
Автор делится способом вынести небольшие функции в отдельный пакет, чтобы использовать их в разных проектах без повторного деплоя.
В статье на Habr ML рассказывается о типичной проблеме: небольшие, но часто используемые функции копируются из проекта в проект, меняются «под себя», а затем появляются баги и дублирование кода. Пример – функция, преобразующая строку суммы вроде "1 234,50 ₽" в число 1234.5. Автор использовал её в парсере банковских выписок, импортёре заказов, отчёте для бухгалтерии и в нескольких скриптах, каждый раз слегка меняя реализацию.
Чтобы избавиться от этого хаоса, предлагается вынести функцию в отдельный Python‑пакет. Основные шаги:
- Создать репозиторий (можно приватный) с чистой библиотекой, включающей типизацию и юнит‑тесты.
- Управлять зависимостями через Poetry или pip‑tools, задавая семантическое версионирование.
- Публиковать пакет в внутренний PyPI (или использовать Git‑URL) и подключать его в проектах через
pip install. - Автоматизировать CI/CD, чтобы каждый релиз проходил проверку тестов и линтеров.
- При необходимости использовать
importlib.metadataдля динамического получения версии пакета.
Такой подход позволяет менять реализацию в одном месте, а все проекты получают обновления без переписывания кода и без нового деплоя. Кроме того, наличие тестов и типовых аннотаций повышает надёжность и упрощает onboarding новых разработчиков.
Ссылка на оригинал: https://habr.com/ru/articles/1058256/
Для AI‑разработчиков и студентов курсов такой способ упрощает прототипирование и ускоряет интеграцию общих утилит. Он снижает технический долг, но требует дисциплины в управлении версиями и тестами, иначе изменения могут сломать зависимые сервисы.


