Холивар: запускать все тесты — или только нужные
Вопрос для питонистов: что лучше — полный прогон тестов при каждом пуше или выборочный запуск только нужных?
⚡️ Сторонники выборочного запуска говорят:
— «Мы изменили одну функцию в
— CI отрабатывает за 5 минут, а не за 40
— Меньше простаивания разработчиков в ожидании билдов
— Логи чище, меньше случайных падений
🐢 Сторонники полного прогона отвечают:
— «Вчера просто поправили формат даты в
— Легче отлавливать неожиданные регрессии
— Нет сюрпризов после релиза
— CI — это страховка, а не ускоритель
Вот, например, кто-то предложил использовать Snob — инструмент, который экономит время и деньги, анализируя граф зависимостей Python-проекта и выбирая для запуска только те тесты, которые реально затронуты изменениями в коде.
📌 Что делает Snob:
— Отбрасывает ~99% тестов, не связанных с изменениями
— Ускоряет разработку и снижает стоимость CI
— Работает на основе статических импортов, а не предсказаний
— Не заменяет полный регрессионный прогон, но сильно помогает при разработке больших кодовых баз
⚠️ Чего Snob не делает:
— Не ловит динамические импорты, сайд-эффекты во время выполнения и другие неявные зависимости
💬 А теперь вопрос — вы бы доверили такому инструменту свой пайплайн, или всё-таки только полный прогон даёт спокойствие?
Библиотека питониста #междусобойчик
Вопрос для питонистов: что лучше — полный прогон тестов при каждом пуше или выборочный запуск только нужных?
⚡️ Сторонники выборочного запуска говорят:
— «Мы изменили одну функцию в
utils.py
— зачем нам прогонять тесты на API, авторизацию и экспорт в Excel?»— CI отрабатывает за 5 минут, а не за 40
— Меньше простаивания разработчиков в ожидании билдов
— Логи чище, меньше случайных падений
🐢 Сторонники полного прогона отвечают:
— «Вчера просто поправили формат даты в
utils.py
, и тихо умер отчёт в аналитике — в тестах API это бы поймали»— Легче отлавливать неожиданные регрессии
— Нет сюрпризов после релиза
— CI — это страховка, а не ускоритель
Вот, например, кто-то предложил использовать Snob — инструмент, который экономит время и деньги, анализируя граф зависимостей Python-проекта и выбирая для запуска только те тесты, которые реально затронуты изменениями в коде.
📌 Что делает Snob:
— Отбрасывает ~99% тестов, не связанных с изменениями
— Ускоряет разработку и снижает стоимость CI
— Работает на основе статических импортов, а не предсказаний
— Не заменяет полный регрессионный прогон, но сильно помогает при разработке больших кодовых баз
⚠️ Чего Snob не делает:
— Не ловит динамические импорты, сайд-эффекты во время выполнения и другие неявные зависимости
💬 А теперь вопрос — вы бы доверили такому инструменту свой пайплайн, или всё-таки только полный прогон даёт спокойствие?
Библиотека питониста #междусобойчик
❤8👍1
🧐 Зоопарк моделей в ML: с чего начать?
Открываешь статью по машинному обучению — и в тебя летят слова: трансформеры, бустинги, SVM, регрессии.
Кажется, придётся учить всё это, иначе в ML не пустят.
Хорошая новость: 90% задач можно закрыть 2–3 классическими методами. Разберёшь их — уже сможешь собирать работающие проекты. А хайповые названия подождут.
Важно: не распыляйся на всё подряд. Начни с базового — это фундамент, на котором держится остальное.
👉 Успей попасть на курс «ML для старта в Data Science»
Открываешь статью по машинному обучению — и в тебя летят слова: трансформеры, бустинги, SVM, регрессии.
Кажется, придётся учить всё это, иначе в ML не пустят.
Хорошая новость: 90% задач можно закрыть 2–3 классическими методами. Разберёшь их — уже сможешь собирать работающие проекты. А хайповые названия подождут.
Важно: не распыляйся на всё подряд. Начни с базового — это фундамент, на котором держится остальное.
👉 Успей попасть на курс «ML для старта в Data Science»
👍1
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
👍7❤2❤🔥1
👍 Важные обновления популярных библиотек
— pydantic-ai / pydantic-ai-slim / pydantic-evals / pydantic-graph 0.6.0 — развитие AI-интеграций на базе Pydantic.
— torch 2.8.0, torchvision 0.23.0, torchaudio 2.8.0 — крупное обновление PyTorch-стека.
— sagemaker 2.250.0 — новая версия фреймворка для ML на AWS.
— memray 1.18.0 — профайлер памяти для Python.
— locust 2.38.0 — нагрузочное тестирование.
— redis 6.3.0 — Python-клиент Redis.
— openai 1.99.0 — доступ к API OpenAI, включая GPT-5.
— hypothesis 6.137.0 — property-based тестирование.
— accelerate 1.10.0 — ускорение обучения моделей.
— sentence-transformers 5.1.0 — эмбеддинги и семантический поиск.
— deepdiff 8.6.0 — сравнение сложных Python-структур.
🔥 Опыт других
— Python: генераторные функции
— Как я заменил кучу флагов двумя словарями в Python
— 15 типичных ошибок начинающих автоматизаторов (и как их избежать)
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2
Forwarded from Библиотека задач по Data Science | тесты, код, задания
Backend Python/Django — от 3000 до 6000 $, удалёнка
Python Developer — до 170 000 ₽, удалёнка
Odoo/Python разработчик — до 200 000 ₽, удалёнка
Архитектор в AI проектах, удалёнка
Backend Lead (Python/Go), удалёнка
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3😁3
В реальном мире строки редко совпадают «под копирку».
Например:
"aPpLe iPhone® 14 Pro Max"
"iphone 14 pro max"
Вопрос — чем сравнивать? Ответ зависит от того, что именно вы хотите поймать.
Идеален как первый шаг: убрать мусор, стандартизировать формат.
import re
def clean(t):
t = t.lower()
t = re.sub(r"[®™©]", "", t)
return re.sub(r"\s+", " ", t).strip()
clean("iPhone® 14 Pro Max")
# 'iphone 14 pro max'
Умеет считать похожесть на уровне символов. Отлично для быстрого «на коленке».
from difflib import SequenceMatcher
SequenceMatcher(None, "iphone 14 pro max", "i phone 14 pro max").ratio()
# 0.97
Оптимизированный под скорость и адекватнее реагирует на перестановку слов.
from rapidfuzz import fuzz
fuzz.WRatio("apple iphone 14 pro max", "iphone 14 pro max apple")
# 95
Нейросети, которые понимают значение, а не только текстовый паттерн.
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
m = SentenceTransformer('all-MiniLM-L6-v2')
cosine_similarity(
[m.encode("wireless headphones")],
[m.encode("bluetooth earbuds")]
)[0][0]
# 0.75
—
re
→ всегда первым шагом—
difflib
→ мелкие задачи без зависимостей—
RapidFuzz
→ продакшн, большие объёмы, сложные текстовые вариации—
Sentence Transformers
→ смысл важнее скорости, есть GPU#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍4🔥2
Офлайн-митап Peer To Beer x Точка Банк: приходите слушать доклады и делиться своими историями
🍉 15 августа в Москве пройдёт митап для Python и Go-разработчиков. В программе доклады, открытый микрофон и нетворкинг-активности, которые организаторы подготовили вместе с Точка Банк — так что знакомства будут нескучными и позволят не только весело провести вечер, но и получше узнать друг друга.
🐤 Доклады
Юрий Маркин, Х5. Тернистый путь из Python в Golang
Сурен Хоренян, ВК Реклама. А правда, что Golang быстрее Python?
🐥 Открытый микрофон
Рассказывайте любую историю из любой сферы за 3 минуты: весёлую, странную, полезную. Приз достаётся тому, кому громче аплодируют.
‼️ Нетворкинг и тематические настолки
Будут знакомства, но нестандартные. Возможно, придётся жестами показывать прокси-сервер.
🥳 Регистрация
После регистрации анкета пройдёт модерацию — собирают специалистов со схожим опытом, чтобы на нетворкинге всем было интересно.
📅 Когда: 15 августа, пятница. Старт регистрации в 19:00
📍Место: спот в районе станции метро Чистые пруды, детали отправят после подтверждения регистрации
Приходите, чтобы август запомнился не только арбузами и песнями Стрыкало.
Регистрируйтесь в боте @peertobeer_bot
🍉 15 августа в Москве пройдёт митап для Python и Go-разработчиков. В программе доклады, открытый микрофон и нетворкинг-активности, которые организаторы подготовили вместе с Точка Банк — так что знакомства будут нескучными и позволят не только весело провести вечер, но и получше узнать друг друга.
Юрий Маркин, Х5. Тернистый путь из Python в Golang
Поделюсь личным опытом работы с Golang, разбирая как его сильные стороны, так и аспекты, которые можно улучшить. Обсудим минимализм в дизайне, особенности defer, работу с горутинами и многое другое, с акцентом на баланс между плюсами и минусами.
Сурен Хоренян, ВК Реклама. А правда, что Golang быстрее Python?
Расскажу свой опыт работы с Go, и почему с высоты многолетнего опыта на Python мне выглядит странным большое внимание к Go в мире веб-разработки.
Рассказывайте любую историю из любой сферы за 3 минуты: весёлую, странную, полезную. Приз достаётся тому, кому громче аплодируют.
Будут знакомства, но нестандартные. Возможно, придётся жестами показывать прокси-сервер.
После регистрации анкета пройдёт модерацию — собирают специалистов со схожим опытом, чтобы на нетворкинге всем было интересно.
📅 Когда: 15 августа, пятница. Старт регистрации в 19:00
📍Место: спот в районе станции метро Чистые пруды, детали отправят после подтверждения регистрации
Приходите, чтобы август запомнился не только арбузами и песнями Стрыкало.
Регистрируйтесь в боте @peertobeer_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Представьте: приходите на собеседование, называете сумму, а рекрутер сразу отвечает: «Хорошо, без проблем».
Звучит приятно? Не всегда. Часто это значит, что вы только что продешевили.
Чтобы не занижать себе цену:
📌 Полный разбор с примерами тут: https://proglib.io/sh/qJDGQMk2Hg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1