Если вы часто открываете Python REPL — чтобы быстро протестировать идею, посчитать что-то, проверить фрагмент кода или преподавать Python — эти модификации могут серьёзно улучшить ваш опыт.
Начиная с Python 3.13, REPL поддерживает кастомные горячие клавиши, а с Python 3.14 — настройку подсветки синтаксиса.
Используя переменную окружения
PYTHONSTARTUP
, можно сделать так, чтобы при запуске REPL автоматически выполнялся код из файла (например, ~/.startup.py
):export PYTHONSTARTUP=$HOME/.startup.py
💡 Можно использовать библиотеку pyrepl-hacks, чтобы кастомизировать поведение REPL
Клавиатурные шорткаты:
_repl.bind("Home", "home") # В начало блока
_repl.bind("End", "end") # В конец блока
_repl.bind("Alt+M", "move-to-indentation") # В начало строки без пробелов
_repl.bind("Shift+Tab", "dedent") # Уменьшить отступ
_repl.bind("Alt+Up", "move-line-up") # Поднять строку
_repl.bind("Alt+Down", "move-line-down") # Опустить строку
_repl.bind_to_insert("Ctrl+N", "[2, 3, 5, 8]") # Быстрая вставка чисел
_repl.bind_to_insert("Ctrl+F", '["apple", "banana", "pear"]') # Быстрая вставка строк
Настройка цветовой схемы (пример для Solarized Light):
_repl.update_theme(
keyword="green",
builtin="blue",
comment="intense blue",
string="cyan",
number="cyan",
definition="blue",
soft_keyword="bold green",
op="intense green",
)
_pyrepl
и _colorize
.PYTHONSTARTUP
и вернуть REPL в дефолтное состояние.💡 Фишка с sys.path
Чтобы
pyrepl-hacks
работал во всех окружениях, автор добавляет путь к нему напрямую:from pathlib import Path
import sys
sys.path.append(str(Path.home() / ".pyhacks"))
Пример кастомной команды:
import pyrepl_hacks as _repl
@_repl.bind("Ctrl+X Ctrl+R", with_event=True)
def subprocess_run(reader, event_name, event):
reader.insert("import subprocess\n")
code = 'subprocess.run("", shell=True)'
reader.insert(code)
Теперь комбинация
Ctrl+X Ctrl+R
автоматически вставит шаблон вызова subprocess.run()
.💡 Зачем всё это
pyrepl-hacks
— просто красивая обёртка над внутренними модулями Python, которая делает эти хаки чище и проще.Попробуйте:
pip install pyrepl-hacks
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁37😢4👍2💯2❤1
На чём вы держите свои виртуальные среды, скрипты и ночные сессии с Jupyter?
Расскажите в комментариях:
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3💯2
This media is not supported in your browser
VIEW IN TELEGRAM
Python митап от Авито 27 октября в Москве! ☄️
Вечером 27 октября вас ждут в офисе на Лесной, чтобы обсудить:
➡️ кейс оптимизации GC в Python от Саши Федосеева, backend-инженера из команды Main Page Tech Авито;
➡️ как mypy укрощает Python в большой компании вместе с Сергеем Яхницким из Яндекса.
После докладов, как и сказали выше, вместе с участниками спикеры обсудят, подходит ли Python для запуска больших нагруженных решений в формате круглого стола.
Для тех, кто не успевает вырваться из офиса или дома, будет онлайн-трансляция.
Так что не откладывайте, регистрируйтесь и зовите коллег — все подробности по ссылке.
Вечером 27 октября вас ждут в офисе на Лесной, чтобы обсудить:
После докладов, как и сказали выше, вместе с участниками спикеры обсудят, подходит ли Python для запуска больших нагруженных решений в формате круглого стола.
Для тех, кто не успевает вырваться из офиса или дома, будет онлайн-трансляция.
Так что не откладывайте, регистрируйтесь и зовите коллег — все подробности по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
🕵️♂️ Инструмент, который показывает, насколько сложно парсить сайт
caniscrape — Python-инструмент, который анализирует защиту сайта до начала парсинга. Это диагностический инструмент, а не средство обхода защиты.
Определяет:
— Cloudflare, Akamai, rate limits, JS-челленджи, CAPTCHA, TLS fingerprinting, honeypot-ловушки
— Даёт оценку сложности (0–10)
— Рекомендует, какие инструменты понадобятся (headless-браузеры, прокси, solver’ы и т.д.)
— Подсказывает, стоит ли использовать scraping API вместо ручного кода
Для кого:
— Разработчиков и дата-инженеров, работающих с защищёнными сайтами
— Исследователей, тестирующих антибот-системы
— Энтузиастов, изучающих технологии защиты от парсеров
Установка:
Пример:
Результат:
➡️ Оценка сложности (0–10)
➡️ Активные защиты
➡️ Рекомендации по подходу
📱 GitHub
🌐 Веб-версия
🐸 Библиотека питониста
#буст
caniscrape — Python-инструмент, который анализирует защиту сайта до начала парсинга. Это диагностический инструмент, а не средство обхода защиты.
Определяет:
— Cloudflare, Akamai, rate limits, JS-челленджи, CAPTCHA, TLS fingerprinting, honeypot-ловушки
— Даёт оценку сложности (0–10)
— Рекомендует, какие инструменты понадобятся (headless-браузеры, прокси, solver’ы и т.д.)
— Подсказывает, стоит ли использовать scraping API вместо ручного кода
Для кого:
— Разработчиков и дата-инженеров, работающих с защищёнными сайтами
— Исследователей, тестирующих антибот-системы
— Энтузиастов, изучающих технологии защиты от парсеров
Установка:
pip install caniscrape
playwright install chromium
pipx install wafw00f
Пример:
caniscrape https://example.com
Результат:
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2👏1
This media is not supported in your browser
VIEW IN TELEGRAM
🪄 Slint 1.14 — масштабирование, вращение и асинхронность в Python
Вышел релиз Slint 1.14, приносящий масштабные обновления для UI-разработки:
новые возможности трансформации графики и улучшенную интеграцию с Python.
✅ Универсальные графические трансформации
Теперь масштабирование (scale) и вращение (rotate) — это часть языка Slint по умолчанию.
Можно трансформировать любой элемент, а не только
➡️ Это упрощает структуру интерфейсов — больше не нужно задумываться, как правильно “родительствовать” элементы для трансформации.
Посмотреть демо можно в официальном блоге Slint.
✅ Улучшенная интеграция с Python
Добавлена поддержка asyncio. Теперь Slint работает как полноценный
Пример:
Асинхронные колбэки и поддержка локализации теперь тоже работают без дополнительной настройки.
✅ Унифицированный рендеринг текста
Все движки рендеринга (FemtoVG, Skia, Qt и Software) теперь используют общую систему Fontique и Parley (от Linebender).
Это даёт:
— одинаковое поведение текста на всех платформах
— улучшенный выбор шрифтов (особенно в Linux)
— подготовку к поддержке rich text
✔️ Полный список — в ChangeLog
✔️ Документация
🐸 Библиотека питониста
#свежак
Вышел релиз Slint 1.14, приносящий масштабные обновления для UI-разработки:
новые возможности трансформации графики и улучшенную интеграцию с Python.
Теперь масштабирование (scale) и вращение (rotate) — это часть языка Slint по умолчанию.
Можно трансформировать любой элемент, а не только
Image
или Text
.Посмотреть демо можно в официальном блоге Slint.
Добавлена поддержка asyncio. Теперь Slint работает как полноценный
asyncio.EventLoop
, что делает возможным асинхронный код и работу с библиотеками вроде aiohttp
.Пример:
import slint, aiohttp
class AppWindow(slint.loader.app_window.AppWindow):
@slint.callback
async def refresh_poem(self):
async with aiohttp.ClientSession() as session:
async with session.get("https://poetrydb.org/random") as response:
data = await response.json()
self.poem = "\n".join(data[0]["lines"])
async def main():
app = AppWindow()
app.show()
await app.refresh_poem()
slint.run_event_loop(main())
Асинхронные колбэки и поддержка локализации теперь тоже работают без дополнительной настройки.
Все движки рендеринга (FemtoVG, Skia, Qt и Software) теперь используют общую систему Fontique и Parley (от Linebender).
Это даёт:
— одинаковое поведение текста на всех платформах
— улучшенный выбор шрифтов (особенно в Linux)
— подготовку к поддержке rich text
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2