💡 Хотите, чтобы
print()
не мешал логике и при этом легко отключался или сохранялся в файл?Вместо того чтобы комментировать все
print()
в проде, подмените стандартный вывод через контекстный менеджер — и легко направляйте вывод в файл, /dev/null или даже буфер для последующей обработки.Это особенно полезно при отладке в прод-среде или при генерации логов без сторонних библиотек.
import sys
from contextlib import contextmanager
from io import StringIO
import os
@contextmanager
def capture_stdout(to_file=None, suppress=False):
original_stdout = sys.stdout
try:
if suppress:
sys.stdout = open(os.devnull, 'w')
elif to_file:
sys.stdout = open(to_file, 'w')
else:
buffer = StringIO()
sys.stdout = buffer
yield sys.stdout
finally:
sys.stdout.close() if sys.stdout not in (original_stdout, sys.__stdout__) else None
sys.stdout = original_stdout
# Пример использования:
with capture_stdout(suppress=True):
print("Этого вы не увидите")
with capture_stdout(to_file="output.log"):
print("А это уйдёт в файл")
with capture_stdout() as captured:
print("Это записано во внутренний буфер")
print("Буфер содержит:", captured.getvalue().strip())
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤7🔥4😁3
This media is not supported in your browser
VIEW IN TELEGRAM
🌐 BrowserOS — операционная система внутри браузера на базе AI
BrowserOS — это экспериментальный проект, превращающий браузер в полноценную AI‑среду с "живущими" агентами. По сути, это OS-слой внутри вкладки браузера, где ИИ-агенты могут взаимодействовать с интерфейсами как пользователи.
🧠 Основные идеи:
— Агент может кликать, печатать, читать и взаимодействовать с окнами внутри браузера
— Поддержка многозадачности: можно открыть несколько окон, как в реальной ОС
— Простое API для создания интерфейсов и запуска ИИ-агентов
— Можно подключать LLM и наделять их возможностью выполнять действия
📦 Особенности:
— UI построен на React
— Использует WebAssembly и Web Workers
— Позволяет тестировать и запускать агента в контролируемой "песочнице"
💡 Подходит для:
— Исследований в области AI-агентов
— Прототипирования мультимодальных систем
— Демонстрации взаимодействия LLM с интерфейсами
🔗 GitHub
@pythonl
BrowserOS — это экспериментальный проект, превращающий браузер в полноценную AI‑среду с "живущими" агентами. По сути, это OS-слой внутри вкладки браузера, где ИИ-агенты могут взаимодействовать с интерфейсами как пользователи.
🧠 Основные идеи:
— Агент может кликать, печатать, читать и взаимодействовать с окнами внутри браузера
— Поддержка многозадачности: можно открыть несколько окон, как в реальной ОС
— Простое API для создания интерфейсов и запуска ИИ-агентов
— Можно подключать LLM и наделять их возможностью выполнять действия
📦 Особенности:
— UI построен на React
— Использует WebAssembly и Web Workers
— Позволяет тестировать и запускать агента в контролируемой "песочнице"
💡 Подходит для:
— Исследований в области AI-агентов
— Прототипирования мультимодальных систем
— Демонстрации взаимодействия LLM с интерфейсами
🔗 GitHub
@pythonl
👍7❤6🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Многие проекты тянут за собой ненужные зависимости, особенно после десятков итераций.
С помощью vulture ты можешь найти неиспользуемый код и импорты — и легко вычистить проект от мусора.
Установка vulture
pip install vulture
Поиск неиспользуемого кода и импортов
vulture your_project/ > unused.txt
Пример: посмотреть, что не используется
cat unused.txt
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤6👍6
🔥 WaterCrawl — продвинутая платформа для веб-краулинга и подготовки данных под LLM
Если нужно собрать и структурировать контент с сайтов для ИИ — это мощный инструмент.
🧠 В основе:
— Django + Scrapy + Celery
— Асинхронный краулинг, API и UI
— Скриншоты, PDF, JS-рендер, SSE
🚀 Возможности:
— Быстрый запуск через Docker (`docker compose up`)
— Интеграции с Dify, n8n, Langflow
— Пакетная отправка запросов через REST API
— SDK для Python, Go, Node, PHP
⚙️ Репозитории
@pythonl
Если нужно собрать и структурировать контент с сайтов для ИИ — это мощный инструмент.
🧠 В основе:
— Django + Scrapy + Celery
— Асинхронный краулинг, API и UI
— Скриншоты, PDF, JS-рендер, SSE
🚀 Возможности:
— Быстрый запуск через Docker (`docker compose up`)
— Интеграции с Dify, n8n, Langflow
— Пакетная отправка запросов через REST API
— SDK для Python, Go, Node, PHP
⚙️ Репозитории
@pythonl
❤8👍4🔥3
Новость для тех, кто хочет строить карьеру в computer science
Яндекс Образование вместе с Неймарком и ФКН ВШЭ организуют студкемп в Нижнем Новгороде на тему компьютерного зрения.
🔹 Интенсивная теория: лекции и семинары от Яндекса, Неймарка, ФКН ВШЭ, личное общение со специалистами
🔹 Практическая часть: командные проекты и работа над навыками создания и внедрения компьютерного зрения в автономные системы и робототехнику.
Участие в студкемпе бесплатно, но есть отбор. Победителям организаторы оплатят дорогу и проживание. Регистрация до 14 августа, по ссылке.
Яндекс Образование вместе с Неймарком и ФКН ВШЭ организуют студкемп в Нижнем Новгороде на тему компьютерного зрения.
🔹 Интенсивная теория: лекции и семинары от Яндекса, Неймарка, ФКН ВШЭ, личное общение со специалистами
🔹 Практическая часть: командные проекты и работа над навыками создания и внедрения компьютерного зрения в автономные системы и робототехнику.
Участие в студкемпе бесплатно, но есть отбор. Победителям организаторы оплатят дорогу и проживание. Регистрация до 14 августа, по ссылке.
❤2😁1
🆕 В pyfonts — мощное обновление!
Теперь можно задать глобальный шрифт по умолчанию — и он применится ко всем текстам автоматически.
Больше не нужно вручную проставлять font в каждом элементе 🎯
Идеально для проектов с единой визуальной стилистикой — экономит кучу времени и кода.
🔥 Фичу реализовал John Gardner — спасибо!
Ждём фидбек, звёзды и предложения ✨
📦 GitHub: http://github.com/JosephBARBIERDARNAL/pyfonts
@pythonl
Теперь можно задать глобальный шрифт по умолчанию — и он применится ко всем текстам автоматически.
Больше не нужно вручную проставлять font в каждом элементе 🎯
Идеально для проектов с единой визуальной стилистикой — экономит кучу времени и кода.
🔥 Фичу реализовал John Gardner — спасибо!
Ждём фидбек, звёзды и предложения ✨
📦 GitHub: http://github.com/JosephBARBIERDARNAL/pyfonts
@pythonl
1🔥3❤2😢2
Чтобы получить все уникальные пары элементов из списка, вовсе не обязательно писать громоздкие вложенные циклы. Python предоставляет модуль itertools, который содержит готовые инструменты для таких задач.
Например, для списка
Функция combinations берёт на вход итерируемый объект и размер комбинации.
В нашем случае размер равен 2, поэтому мы получаем все возможные неупорядоченные пары без повторов.
Это решение не только короче, но и легче читается. Пользуйтесь библиотекой itertools, чтобы избавляться от рутины и писать более чистый код!
@pythonl
Например, для списка
features = ['price', 'size', 'rating']
можно написать так:
from itertools import combinations
pairs = list(combinations(features, 2))
print(pairs) # [('price', 'size'), ('price', 'rating'), ('size', 'rating')]
Функция combinations берёт на вход итерируемый объект и размер комбинации.
В нашем случае размер равен 2, поэтому мы получаем все возможные неупорядоченные пары без повторов.
Это решение не только короче, но и легче читается. Пользуйтесь библиотекой itertools, чтобы избавляться от рутины и писать более чистый код!
@pythonl
❤19👍4🔥2🤩2
Transfunctions — это инструмент для создания чистых, переиспользуемых и управляемых пайплайнов из функций. Подходит для задач, где нужно чётко контролировать каждый шаг выполнения.
Что такое транзакционные функции?
Это функции, которые:
• имеют чёткое начало и откат (rollback) — как в базах данных
• могут быть объединены в цепочки, где каждая часть знает, как отменить свои действия
• обрабатывают ошибки и контекст централизованно
• позволяют писать бизнес-логику без дублирования и хаоса
Что умеет Transfunctions:
• Объединение функций в контролируемые пайплайны
• Поддержка отката и логирования
• Контекстное выполнение (например, сессии, транзакции, данные)
• Минимум шаблонного кода
Подходит для ETL, финансовых операций, инфраструктурных обработчиков и сценариев с проверками и откатами.
pip install transfunctions
🔗 GitHub: https://github.com/pomponchik/transfunctions
#python #pipeline #transactions #opensource #architecture
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥3👍2🤩1
Forwarded from Machinelearning
LangExtract - опенсорсная python-библиотека с функцией легковесного интерфейса к LLM, которая превращает большие объемы текста в структурированные данные.
Каждая извлеченная сущность, будь то имя, дата или дозировка лекарства, привязывается к точным символьным смещениям в исходном тексте. Это дает полную прослеживаемость и верифицируемость результата, просто подсветив найденные данные в оригинальном документе. Больше никаких «откуда модель это взяла?».
Вы определяете желаемый формат вывода с помощью специального представления данных и даете модели несколько примеров . Используя эти примеры, LangExtract следует заданной схеме, задействуя механизм контролируемой генерации, который поддерживается в моделях Gemini. Это гарантирует, что на выходе вы всегда будете получать данные в консистентном, предсказуемом формате.
Библиотека умеет бить текст на чанки, которые обрабатываются параллельно в несколько проходов, каждый из которых фокусируется на более узком контексте.
Для наглядности библиотека умеет генерировать интерактивную и полностью автономную HTML-визуализацию. Это позволяет за считаные минуты перейти от сырого текста к визуальному представлению, где можно исследовать тысячи извлеченных аннотаций.
При этом LangExtract не замыкается на экосистеме Google: он поддерживает гибкую смену LLM-бэкендов, позволяя работать как с облачными моделями, так и с опенсорсными решениями, развернутыми локально.
Информация может быть как явной (извлеченной из текста), так и основанной на внутренних знаниях модели. Разумеется, точность таких выведенных данных сильно зависит от возможностей конкретной LLM и качества предоставленных примеров в промпте.
Изначально идеи, заложенные в LangExtract, были применены для извлечения информации из медицинских текстов. Библиотека отлично справляется с идентификацией лекарств, их дозировок и других атрибутов в клинических записях.
Чтобы продемонстрировать возможности инструмента в узкоспециализированной области, Google создал на Hugging Face интерактивное демо RadExtract. В нем показано, как LangExtract может обработать радиологический отчет, написанный свободным текстом, и автоматически преобразовать его ключевые выводы в структурированный формат, подсвечивая важные находки.
@ai_machinelearning_big_data
#AI #ML #LangExtract #Google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4👍3
⚡️ Ускорь проверку качества кода в 10 раз с помощью pre-commit!
В серьезных проектах чистота и стиль кода — но ручные проверки отнимают кучу времени, которое лучше потратить на анализ данных.
💡 Решение: автоматизируй всё с помощью pre-commit хуков — и пусть код проверяется сам перед каждым коммитом.
😬 Без pre-commit:
Вы коммитите код — всё выглядит нормально.
Но потом на ревью находят кучу мелочей:
✖️ Нет type hints
✖️ Форматирование пляшет
✖️ Отсутствует docstring
✖️ Импорты в разнобой
🤖 С pre-commit всё иначе:
Перед коммитом автоматически запускается
✅ Код отформатирован
✅ Стиль и правила соблюдены
✅ Меньше замечаний на ревью
💡 Один раз настроил — и больше не паришься с форматированием вручную.
Идеально для любого Python-проекта.
@pythonl
В серьезных проектах чистота и стиль кода — но ручные проверки отнимают кучу времени, которое лучше потратить на анализ данных.
💡 Решение: автоматизируй всё с помощью pre-commit хуков — и пусть код проверяется сам перед каждым коммитом.
😬 Без pre-commit:
Вы коммитите код — всё выглядит нормально.
Но потом на ревью находят кучу мелочей:
✖️ Нет type hints
✖️ Форматирование пляшет
✖️ Отсутствует docstring
✖️ Импорты в разнобой
🤖 С pre-commit всё иначе:
Перед коммитом автоматически запускается
ruff format
и ruff check
:✅ Код отформатирован
✅ Стиль и правила соблюдены
✅ Меньше замечаний на ревью
💡 Один раз настроил — и больше не паришься с форматированием вручную.
Идеально для любого Python-проекта.
@pythonl
❤13👍8🔥5
🚀 Kreuzberg — мощный фреймворк Document Intelligence для Python!
🔹 Извлекает текст, метаданные и структурированные данные из PDF, Office-документов, изображений и др.
🔹 Основан на проверенных open-source решениях: Pandoc, PDFium, Tesseract
🔹 Поддержка 18 форматов (PDF, DOCX, PPTX, HTML, изображения, таблицы и пр.)
🔹 Высокая производительность: 30+ документов/с, лёгкий runtime (≈360 МБ), установка 71 МБ
🔹 Открытый исходный код под MIT-лицензией, 2 000⭐ на GitHub
GitHub
Пример:
✨ Попробуйте: https://github.com/Goldziher/kreuzberg
@pythonl
#Python #OCR #DocumentIntelligence #OpenSource #Kreuzberg
🔹 Извлекает текст, метаданные и структурированные данные из PDF, Office-документов, изображений и др.
🔹 Основан на проверенных open-source решениях: Pandoc, PDFium, Tesseract
🔹 Поддержка 18 форматов (PDF, DOCX, PPTX, HTML, изображения, таблицы и пр.)
🔹 Высокая производительность: 30+ документов/с, лёгкий runtime (≈360 МБ), установка 71 МБ
🔹 Открытый исходный код под MIT-лицензией, 2 000⭐ на GitHub
GitHub
Пример:
from kreuzberg import extract_file
# In your async function
result = await extract_file("presentation.pptx")
print(result.content)
# Rich metadata extraction
print(f"Title: {result.metadata.title}")
print(f"Author: {result.metadata.author}")
print(f"Page count: {result.metadata.page_count}")
print(f"Created: {result.metadata.created_at}")
✨ Попробуйте: https://github.com/Goldziher/kreuzberg
@pythonl
#Python #OCR #DocumentIntelligence #OpenSource #Kreuzberg
🔥9❤5👍3