На КДПВ в гостях у TalkPython вы видите Гвидо ван Россума — создателя Python, Марка Шеннона, план ускорения Python в 5 раз за 4 года и, конечно, автора подкаста. А мы делимся подборкой пакетов Python, о которых шла речь в выпусках за уходящий год.
346. Sumy — резюме HTML
Гость: Антонио Андраде @AntonioAndrade | LinkedIn
Пакет #1: sumy — модуль для автоматического резюмирования текстовых документов и HTML-страниц
Простая библиотека и утилита командной строки для извлечения резюме из HTML-страниц или простых текстов. Пакет также содержит простую систему оценки для резюме текстов. Реализованные методы суммирования описаны в документации. Я также веду список альтернативных реализаций на различных языках программирования.
Пакет #2: gTTS — библиотека Python и инструмент CLI для взаимодействия с API преобразования текста в речь от Google Translate.
gTTS (Google Text-to-Speech), библиотека Python и инструмент CLI для взаимодействия с API преобразования текста в речь Google Translate. Запись озвученных данных mp3 в файл, файлоподобный объект (bytestring) для дальнейших манипуляций со звуком или вывода в stdout. Или просто предварительно сгенерируйте URL-адреса запросов Google Translate TTS, чтобы передать их внешней программе.
345. 10 советов и инструментов для продуктивной разработки
Гость: Джей Миллер @kjaymiller
Пакет #1: black — бескомпромиссное форматирование Python
PyPi | Домашняя страница | Исходники | Эпизод
Black — это бескомпромиссный форматтер кода Python. Используя его, вы соглашаетесь уступить контроль над мелочами ручного форматирования. Взамен Black даёт вам скорость, детерминизм и свободу от ворчания pycodestyle. Вы сэкономите время и душевные силы.
Пакет #2: rumps — невероятно простые приложения для macOS Python Statusbar
rumps (Ridiculously Uncomplicated macOS Python Statusbar) может значительно сократить код работающего приложения. Синтаксис PyObjC не нужен! rumps предназначен для любой консольной программы, которой нужна простая панель инструментов конфигурации или меню запуска.
344. SQLAlchemy 2.0
Гость: Майк Бейер @zzzeek
Пакет: nplusone — обнаружение N+1 запросов
nplusone — это библиотека для обнаружения проблемы n+1 запросов в ОРМ на Python, включая SQLAlchemy, Peewee и ОРМ Django.
343. Делайте всё в Excel, получайте код Python для ноутбука с помощью Mito
Гости: участники дискуссии (нужна помощь в обновлении имён и ссылок)
Пакет: Pandas Profiling — профилирование фрейма данных Pandas
Генерирует отчёты профилирования pandas DataFrame. Функция pandas df.describe() великолепна, но немного простовата для серьёзного исследовательского анализа данных. pandas_profiling расширяет pandas DataFrame с помощью df.profile_report(), чтобы анализировать данные быстро. Я активный пользователь этой библиотеки. Спасибо, что она есть!
342. Python в архитектуре зданий
Гость: Ги Таларико, его GitHub
Пакет: pythonic — графический инструмент автоматизации
Pythonic — это инструмент графического программирования, который облегчает пользователям создание приложений на языке Python с помощью готовых функциональных модулей.
341. 25 функций Pandas, о которых вы не знали
Гость: Бекс Туйчиев, LinkedIn
Пакет: umap-learn — Uniform Manifold Approximation and Projection
Работаете с данными и ищете максимально близкую проекцию низкой размерности? Uniform Manifold Approximation and Projection (UMAP) — это метод уменьшения размерности, который можно использовать для визуализации как t-SNE, а ещё для общего нелинейного уменьшения размерности.
340. Pyjion — время JIT пришло для Python?
Гость: Энтони Шоу @anthonypjshaw
Пакет # 1: tortoise ORM — простой async ORM с учётом отношений
Tortoise ORM — это простой в применении asyncio ORM (Object Relational Mapper), вдохновлённый Django. Tortoise ORM разработан с учётом реляционной теории и с восхищённой оглядкой на Django ORM. По самому замыслу вы работаете не просто с таблицами, но с реляционными данными.
Пакет # 2: beanie — асинхронный ODM для MongoDB
Beanie — это асинхронный объектно-документный маппер (ODM) на языке Python для MongoDB, основанный на Motor и Pydantic. В Beanie каждая коллекция базы данных имеет соответствующий документ, который используется для взаимодействия с этой коллекцией. Помимо извлечения данных Beanie позволяет добавлять, обновлять или удалять документы из коллекции.
Пакет # 3: hathi — сканер хостов SQL и инструмент для атак по словарю
Сканер хостов SQL и инструмент для атак по словарю. Поставляется со скриптом (filter_pass.py) для фильтрации списков паролей на основе их надёжности.
339. Гвидо ван Россум и Марк Шеннон: ускоряем Python
Гости: Гвидо ван Россум, @gvanrossum | Марк Шеннон, LinkedIn
В этом эпизоде не было упомянуто ни одного заметного пакета, но мы ценим постоянную работу над тем, чтобы сделать Python быстрее (шаг за шагом).
Ссылка на эпизод
338. Пакет cibuildwheel для управления пакетами scikit-HEP
Гость: Henry Schreiner @HenrySchreiner3
Пакет: plotext — графики прямо в терминале
PyPi | Домашняя страница | Исходники | Эпизод
Любители CLI, plotext строит графики прямо в терминале, у него нет зависимостей, а синтаксис очень похож на matplotlib.
337. Kedro — удобные проекты Data Science
Гости: Уэлон Уокер @_WaylonWalker | Yetunde Dada @yetudada | Ivan Danov @ivandanov
Пакет #1: fsspec — интерфейсы файловых систем для Python
PyPi | Домашняя страница | Исходники | Эпизод
Filesystem Spec (fsspec) — это проект по предоставлению унифицированного питон-интерфейса для локальных, удалённых и встроенных файловых систем и байт-хранилищ. Как описано выше, обращайтесь с удалённой базой данных как с локальным файлом!
Пакет # 2: dynaconf — управление конфигурациями
PyPi | Домашняя страница | Исходники | Эпизод
Ленивый загрузчик настроек на стероидах!
336. Форматирование во всех смыслах в терминале
Гость: Уилл МакГуган @willmcgugan
Пакет: objexplore — исследование объктов Python
PyPi | Домашняя страница | Исходники | Эпизод
Objexplore — это интерактивный проводник объектов Python для терминала. Используйте его во время отладки, или изучения новой библиотеки, или чего угодно!
335. Редактирование генов на Python
Гость: Дэвид Борн @Hypostulate | Beam Therapeutics
Пакет # 1: AWS Cloud Development Kit (AWS CDK)
PyPi | Домашняя страница | Исходники | Эпизод
AWS Cloud Development Kit (AWS CDK) — это система разработки программного обеспечения с открытым исходным кодом для определения облачной инфраструктуры в коде и её предоставления через AWS CloudFormation.
Пакет # 2: luigi — управление рабочим процессом + планирование задач + разрешение зависимостей
PyPi | Домашняя страница | Исходники | Эпизод
Luigi — это пакет для Python (протестировано на версиях 3.6–3.9), который помогает создавать сложные конвейеры пакетных тасков. В нём есть разрешение зависимостей, управление рабочими процессами, визуализация, обработка сбоев, интеграция командной строки и многое другое.
334. Планетарный компьютер Microsoft
Гости: Роб Эмануэль @lossyrob | Tom Augspurger @TomAugspurger
Пакет: seaborn — визуализация статистических данных
PyPi | Домашняя страница | Исходники | Эпизод
Seaborn — это основанная на matplotlib библиотека визуализации на языке Python. Она предоставляет высокоуровневый интерфейс для построения привлекательных статистических графиков. Если matplotlib предназначена для пользователей Android, то seaborn — для пользователей iPhone!
333. Состояние Data Science в 2021 году
Гость: Стэн Зайберт @seibert
Пакет: cupy — NumPy и SciPy для GPU
PyPi | Домашняя страница | Исходники | Эпизод
CuPy — это библиотека массивов с открытым исходным кодом для вычислений с GPU-ускорением на языке Python. CuPy использует библиотеки CUDA Toolkit, включая cuBLAS, cuRAND, cuSOLVER, cuSPARSE, cuFFT, cuDNN и NCCL, чтобы задействовать архитектуру GPU по полной. По сути, это NumPy и SciPy на стероидах!
332. Надёжный Python
Гость: Патрик Виафоре @PatViaforever
Пакет: stevedore — управление динамическими плагинами приложений Python
PyPi | Домашняя страница | Исходники | Эпизод
Python упрощает динамическую загрузку кода, позволяя вам настраивать и расширять приложение путём обнаружения и загрузки расширений («плагинов») во время выполнения. Многие приложения имеют для этого собственную библиотеку для этого, и эта библиотека работает через import или importlib. Stevedore избегает создания ещё одного механизма расширения, строит его поверх точек входа setuptools. Однако код для управления точками входа имеет тенденцию повторяться, поэтому stevedore предоставляет классы менеджеров для реализации общих моделей использования динамически загружаемых расширений.
330. Открытые исходники Apache Airflow
Гости: Ярек Потюк LinkedIn | Найк Каксиль @kaxil | Леа Коул @leahecole
Пакет: Apache Airflow — программное создание, управление и мониторинг конвейеров данных
PyPi | Домашняя страница | Исходники | Эпизод
Airflow — это платформа, созданная сообществом, чтобы программно создавать, планировать и мониторить рабочие процессы. Airflow лучше всего работает с рабочими процессами, которые в основном статичны и меняются медленно. Когда структура DAG схожа от одного прогона к другому, это помогает выявлять единицы работы и непрерывность. Среди других подобных проектов — Luigi, Oozie и Azkaban.
Airflow обычно используется для обработки данных, но есть мнение, что задачи в идеале должны быть идемпотентными (т. е. результаты выполнения задачи будут одинаковыми и не будут создавать дубликаты данных в системе назначения) и не должны передавать большие объёмы данных от одной задачи к другой (хотя задачи могут передавать метаданные с помощью функции Xcom в Airflow). При выполнении большого объёма задач, требующих больших объёмов данных, лучшая практика — делегирование полномочий внешним службам, которые заточены выполнять работу такого рода.
328. Piccolo — быстрая асинхронная ORM для Python (обновлено)
Гость: Дэниел Таунсенд @danieltownsend
Пакет: pydantic — валидация данных и управление настройками
PyPi | Домашняя страница | Исходники | Эпизод
Быстрый и расширяемый, pydantic прекрасно сочетается с вашими линтерами, IDE и мозгами. Определите, как данные должны быть в чистом, каноническом Python 3.6+; проверьте его с помощью pydantic.
327. Маленький инструмент автоматизации
Гости: Риверс Куомо @RiversCuomo | Джей Миллер @kjaymiller | Ким ван Вик @kim_vanwyk | Расти Грегори @greenermountain
Пакет: pipx — установите и запустите приложения Python в изолированных средах
PyPi | Домашняя страница | Исходники | Эпизод
Это один из эпизодов с наибольшим количеством описанных пакетов. Поэтому мы выбрали тот, у которого самый лучший логотип, — это pipx, инструмент, который поможет конечным пользователям установить и запустить приложения на Python. Он похож на brew в macOS, npx в JavaScript и apt в Linux.
326. Настольные приложения с помощью wxPython
Гость: Майк Дрисколл @driscollis
Пакет: openpyxl — библиотека Python для чтения/записи файлов Excel 2010 XLSX / XLSM
PyPi | Домашняя страница | Исходники | Эпизод
325. MicroPython и CircuitPython
Гости: Скотт @tannewt | Демиен, его сайт
Пакет: httppy — запросы в Python с удобствами
PyPi | Домашняя страница | Исходники | Эпизод
HttpPy делает запросы удобнее. Отличная замена wget (и для Windows).
324. Python API от Gatorade
Гость: Род Сенра @rodsenra
Пакет: rich — форматированный текст, таблицы, прогрессные батончики, синтаксис подсветки, отметки и многое другое до терминала.
PyPi | Домашняя страница | Исходники | Эпизод
Rich — это библиотека Python для форматирования в терминале во всех смыслах слова «форматирование». API Rich позволяет легко добавить цвет и стиль к выводу терминала. Rich также может отображать красивые таблицы, прогресс-бары, разметку, подсветку синтаксиса, трассировку и многое другое из коробки. Не забудьте попробовать from rich import print
.
323. Лучшие практики для Docker в производственной среде
Гость: Итамар Тёрнер-Трауринг @itamarst
Пакет: PyO3 — работа с Python из Rust
PyPi — недоступен | Домашняя страница | Исходники | Эпизод
Биндинг Rust для Python, включая инструменты для создания встроенных модулей расширения Python. Поддерживаются запуск и взаимодействие с кодом Python из бинарного файла Rust.
322. Путь в Data Science
Гость: Саньям Бхутани @bhutanisanyam1
Пакет: fastai. Нейросети? Сделаем их снова не крутыми…
PyPi | Домашняя страница | Исходники | Эпизод
Упрощает обучение быстрых и точных нейронных сетей, использует передовые методы.
321. HTMX — чистые динамические страницы HTML
Гость: Карсон Гросс @htmx_org
Пакет: Alpine.js
PyPi | Домашняя страница | Исходники | Эпизод
Это не пакет PyPi, но он потрясающий: новый, лёгкий фреймворк JavaScript.
320. Python в электрической энергетике
Гость: Джек Симпсон, его сайт
Пакет: numba — ускоряет функции, компилируя код на Python через LLVM
PyPi | Домашняя страница | Исходники | Эпизод
С помощью стандартной библиотеки компилятора LLVM Numba переводит функции Python в оптимизированный машинный код во время выполнения. Численные алгоритмы в Python, скомпилированные в Numba, по скорости могут приближаться к C или FORTRAN. Вам не нужно заменять интерпретатор Python, выполнять отдельный шаг компиляции или даже иметь установленный компилятор C/C++. Просто примените один из декораторов Numba к вашей функции Python, и Numba сделает всё остальное.
319. Тайпсквоттинг и уязвимость цепочки поставок
Гости: Бенц Тозер, его почта | Джон Спид Мейерс, его почта
Пакет: NetworkML — определение функциональной роли устройства по траффику при помощи ML
PyPi | Домашняя страница | Исходники | Эпизод
NetworkML — это часть нашего проекта Poseidon. Модель в networkML классифицирует каждое устройство по функциональной роли с помощью моделей ML, обученных на характеристиках сетевого трафика. «Функциональная роль» относится к авторизованному административному назначению устройства в сети и включает такие роли, как принтер, почтовый сервер и другие, имеющие место в среде ИТ. Наш внутренний анализ показывает, что networkML может достичь точности, запоминания и оценки F1 выше 90 % при обучении на устройствах из вашей собственной сети. Вопрос о том, может ли эта производительность переноситься из ИТ-среды в другую ИТ-среду, — это область активных исследований.
318. Измеряем влияние ML с помощью CodeCarbon
Гости: Виктор Шмидт @vict0rsch | Джонатан Уилсон Webpage | Борис Фельд @Lothiraldan
Пакет: fastapi — веб-фреймворк для построения API
PyPi | Домашняя страница | Исходники | Эпизод
FastAPI — это современный, быстрый (высокопроизводительный) веб-фреймворк для создания API с Python 3.6+ на основе стандартных подсказок типов языка. Помимо функции проверки типов API при помощи Swagger можно автоматически генерировать документацию API.
317. Python и комиссия федеральных выборов US
Гость: Лаура Бофорт @laurabeaufort
Пакет: Flask-SQLAlchemy — поддержка SQLAlchemy в вашем Flask
PyPi | Домашняя страница | Исходники | Эпизод
Flask-SQLAlchemy — это расширение Flask, добавляющее поддержку SQLAlchemy. Его цель — упростить использование SQLAlchemy с Flask через полезные настройки по умолчанию и хелперы.
316. Flask 2.0
Гости: Дэвид Лорд @davidism | Филип Джонс @pdgjones
Пакет #1: pydantic — валидация данных и управление настройками
PyPi | Домашняя страница | Исходники | Эпизод
Валидация данных и управление настройками с помощью аннотаций типов в Python. pydantic реализует подсказки типов во время выполнения и, когда данные невалидны, показывает удобные сообщения об ошибках.
Пакет #2: AutoInvent — библиотеки для генерации API и UI GraphQL из данных
PyPi | Домашняя страница | Исходники | Эпизод
Magql — это фреймворк GraphQL на Python. Он генерирует полнофункциональный, настраиваемый GraphQL API. И произносится как magical — «волшебный». Так оно и есть!
Пакет # 3: trio — дружественная библиотека Python для асинхронного параллелизма и ввода-вывода
PyPi | Домашняя страница | Исходники | Эпизод
Цель проекта Trio — предоставить пользователям качественную библиотеку асинхронного/ожидающего нативного ввода/вывода для Python с правом свободного доступа.
315. Awesome FastAPI extensions and add ons
Гость: Майкл Герман @mikeherman
Пакет # 1: flake8-docstrings
PyPi | Домашняя страница | Исходники | Эпизод
Простой модуль, который добавляет расширение для фантастического инструмента pydocstyle во flake8.
Пакет #2: hotwire-django
Этот репозиторий призван помочь вам интегрировать Hotwire с Django. Вдохновение можно почерпнуть из @hotwired/hotwire-rails.
314. Спросите нас о современных инстументах и проектах Python
Гость: Себастьян Витовски @SebaWitowski
Репозиторий: Awesome Python — жизнь коротка, вам нужен Python
Домашняя страница | Исходники | Эпизод
Список удивительных фреймворков, библиотек, программного обеспечения и ресурсов на языке Python.
313. Автоматизация обмена данными с помощью PyDantic
Гость: Samuel Colvin @samuel_colvin
Пакет: starlette — маленькая сияющая библиотека ASGI
PyPi | Домашняя страница | Исходники | Эпизод
Starlette — это лёгкий ASGI-фреймворк и инструментарий, идеально подходящий для создания высокопроизводительных асинхронных сервисов.
312. Приложения Python, которые масштабируются на миллионы пользователей
Гость: Жюльен Данжу @juldanjou
Пакет: tenacity — повторяет выполнение кода до успешного выполнения
PyPi | Домашняя страница | Исходники | Эпизод
Tenacity — это лицензированная (Apache 2.0) библиотека общего назначения, которая упрощает добавление повторной попытки к чему угодно. Берёт своё начало от форка библиотеки retrying, которая, к сожалению, больше не поддерживается. Tenacity не совместим с retrying в смысле API, но в него добавлено много новых функций, исправлен ряд старых ошибок.
311. Погружение в папку .git
Гость: Роб Ричардсон @rob_rich
Пакет: git-hooks-js — утилита для управления и запуска git-хуков проекта для проектов nodejs
npm | Домашняя страница | Исходники | Эпизод
git-hooks — это утилита для управления и запуска git-хуков в проекте nodejs. Она не имеет зависимостей и проста в применении. Просто установите git-hooks, и она будет запускать ваши хуки, когда хук вызывается git.
310. Сессия вопросов с Майклом
Гости: Ким ван Вик @kim_vanwyk | Патрик Хлобил @hlobilpatrik
Пакет # 1: pySerial — бэкенды последовательного порта для Python
PyPi | Домашняя страница | Исходники | Эпизод
Этот модуль инкапсулирует доступ к последовательному порту. Он предоставляет бэкенды для Python, работающего на Windows, OSX, Linux, BSD (возможно, на любой POSIX-совместимой системе) и IronPython. Модуль с именем serial
автоматически выбирает соответствующий бэкенд.
Пакет # 2: click — композитный инструментарий для создания интерфейса командной строки
PyPi | Домашняя страница | Исходники | Эпизод
Click — это пакет Python для создания красивых интерфейсов командной строки через композиции, вы пишете минимум кода. Это набор для создания интерфейса командной строки. Он настраиваемый, но уже из коробки настроен разумно.
309. Чему ML может научить нас: 7 уроков
Гость: Евгений Ян @eugeneyan
Пакет: pytest — простой и мощный пакет тестирования на Python
PyPi | Домашняя страница | Исходники | Эпизод
Фреймворк pytest позволяет легко писать небольшие тесты, но при этом масштабируется для поддержки сложного функционального тестирования приложений и библиотек. Brian Okken написал об этом целую книгу.
308. Docker для Python-разработчиков (версия 2021)
Гость: Питер МакКи @pmckee
Пакет: testcontainers-python — тестируйте практически всё, что запускается в контейнере Docker
PyPi | Домашняя страница | Исходники | Эпизод
Testcontainers-python предоставляет возможность запускать контейнеры docker (такие как база данных, веб-браузер Selenium или любой другой контейнер) для тестирования.
306. Масштабирование Python и Jupyter при помощи ZeroMQ
Гость: Мин Раган-Келли @minrk
Пакет: cibuildwheel — сборка Python Wheels на CI с минимальной конфигурацией
PyPi | Домашняя страница | Исходники | Эпизод
cibuildwheel будет работать на вашем CI-сервере — сейчас он поддерживает GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI и GitLab CI, собирает и тестирует ваши Wheels на всех платформах.
305. Сообщество Python на Python Discord
Гость: Леон Сэнди @lemonsaurus_rex
Пакет: async-rediscache — простой в применении асинхронный кеш Redis
PyPi | Домашняя страница | Исходники | Эпизод
Этот пакет предлагает несколько типов данных для облегчения работы с кешем Redis в асинхронном рабочем процессе. Пакет в разработке, и работать с ним в производственной среде не рекомендуется.
304. Весь asyncio в Omnilib
Гость: Джон Риз @n7cmdr
Пакет: seinfeld — запрос цитаты Сейнфелда
PyPi | Домашняя страница | Исходники | Эпизод
Библиотека Python для запроса цитат Сайнфелда. О, да, Сайнфелд!
303. Python для астрономии, рассказывает доктор Бекки
Гость: Dr. Бекки Сметхерст @drbecky_
Пакет: notebook — веб-среда для интерактивных вычислений
PyPi | Домашняя страница | Исходники | Эпизод
Jupyter Notebook — это веб-приложение, позволяющее создавать и совместно использовать документы с интерактивным кодом, уравнениями, визуализациями и текстовыми объяснениями. Блокнот поддерживает несколько языков программирования, совместное использование и интерактивные виджеты.
302. Ландшафт Data Engineering в 2021 году
Гость: Тобиас Мейси @TobiasMacey
Пакет: dagster — оркестратор данных для машинного обучения, аналитики и ETL
PyPi | Домашняя страница | Исходники | Эпизод
Платформа оркестрации для разработки, производства и наблюдения за активами данных. Dagster позволяет вам определять задания в терминах потока данных между повторяющимися логическими компонентами, затем тестировать локально и запускать в любом месте.
Благодаря единому представлению заданий и создаваемых ими ресурсов Dagster может планировать и оркестровать Pandas, Spark, SQL и всё остальное, что может вызвать Python. Dagster предназначен для инженеров платформы данных, инженеров данных и full-stack data scientist’ов. Построение платформы данных с помощью Dagster делает ваши заинтересованные стороны более независимыми, а ваши системы — более надёжными. Разработка конвейеров данных с помощью Dagster упрощает тестирование и ускоряет развёртывание.
301. Развёртывание и выполнение приложений Django в 2021
Гости: Уилл Винсент, веб-сайт | Карлтон Гибсон @carltongibson
Пакет: bleach — простой инструмент для удаления ссылок в HTML на основе белого списка.
PyPi | Домашняя страница | Исходники | Эпизод
Bleach — это библиотека очистки HTML на основе белых списков, она экранирует или удаляет разметку и атрибуты. Bleach может безопасно линковать текст, применяя фильтры, которые не может использовать фильтр urlize от Django, и опционально устанавливая атрибуты rel, даже для ссылок, которые уже есть в тексте. Пакет обезвреживает ссылки из ненадёжных источников. Если вам приходится прыгать через обручи, чтобы позволить администраторам сайта делать множество вещей, вы, скорее всего, не относитесь к числу пользователей.
299. Личный поисковый движок в упряжке
Гость: Саймон Уиллисон @simonw
Пакет: flynt — конвертирование строк
PyPi | Домашняя страница | Исходники | Эпизод
flynt — это CLI для автоматического преобразования кода из "%-formatted" и .format(...) в f-строки Python 3.6+. Испытать все эти пакеты вы сможете на наших курсах:
Узнайте подробности акции.
Другие профессии и курсы
Data Science и Machine Learning
Python, веб-разработка
Мобильная разработка
Java и C#
От основ — в глубину
А также
un1t
Я им пользуюсь время от времени, он чуть менее кривой чем autopep8.
Почему-то в go, rust и javascript эту проблему давно решили, а в python пока печально.
Кто чем еще пользуется? Есть что-то что нормально форматирует код?
stranger777
В go автоформат даже из коробки; но там сам язык располагает, а у Python, скорее всего, дело в смысле отступов — подход нужен аккуратный, поэтому автоформат пишется долго и трудно. Ждём. И может быть поможет: список отобранных форматтеров.
worldmind
А что значит кривой?