I think that my Python code editor is ready for 2026!

Using Flycheck and happy about how simple it was to add a custom syntax checker. 👏

I've configured my Emacs to auto-switch between flake8 or ruff, and mypy or the brand new type checker "ty" depending on what's in the local environment.

Pull request to my emacs configuration with details about the implementation:
https://github.com/DavidVujic/my-emacs-config/pull/23/changes

#python #emacs #mypy #flake8 #ruff #ty #elisp #flycheck

Related to this week's #Ansible contrib work in #Python, #Ruff is quite cool. 😎

https://docs.astral.sh/ruff/

Ruff

An extremely fast Python linter and code formatter, written in Rust.

ty: революция в тайп-чекинге

Всем привет! За последние пару лет компания Astral буквально разрывает Python-мир своими инструментами. Даже если вы не слышали это имя напрямую, с большой вероятностью вы уже пользовались их продуктами — ruff или uv . И это не преувеличение. И ruff , и uv сегодня фактически стали стандартом индустрии. Например, в свежем релизе PyCharm 2025.3 при создании нового проекта по умолчанию инициализируется именно окружение uv , а не привычный venv . Для open source-проекта — это очень серьёзный показатель доверия со стороны экосистемы. Открытый исходный код и массовое принятие инструментов Python-разработчиками дали Astral тот самый «кредит доверия», который компания, судя по всему, пока что уверенно оправдывает. И вот буквально на днях Astral объявили, что их новый «революционный» тайп-чекер ty переходит в стадию бета-тестирования. А если учитывать, что и uv , и ruff формально тоже всё ещё находятся в бете, то можно считать, что ty уже фактически вышел в релиз. Собственно, о нём и поговорим дальше. Если вам интересны подобные материалы — подписывайтесь на Telegram-канал «Код на салфетке» . Там я делюсь гайдами для новичков и полезными инструментами. А прямо сейчас у нас ещё и проходит новогодний розыгрыш.

https://habr.com/ru/articles/979752/

#uv #ruff #ty #mypy #type_checking #python #rust #astral

ty: революция в тайп-чекинге

Всем привет! За последние пару лет компания Astral буквально разрывает Python-мир своими инструментами. Даже если вы не слышали это имя напрямую, с большой вероятностью вы уже пользовались их...

Хабр

Let's say you want to do good type-checking for the #Python project you're working on. You pick a tool, maybe you use it as an #LSP also (so your editor can show you errors, too). As an example, I'm using #Ty at the moment. There's three places this might be installed: globally (e.g., `brew install ty`), as a dev-only dependency inside your project (e.g., `uv add --dev ty`), or -- and this one might surprise you -- it might only be used and installed by `pre-commit`, which builds a separate environment for each needed tool (which is great for instance where I use `codespell` as a `pre-commit` check, which seems to need some higher version of Python than my actual project).

Where should you install it?

If you're the only one on your team running it, globally is fine. If more than just you, then absolutely as a dev-only dependency inside your project ... and **maybe** globally as well.

The only real problem is updates. If you use a reasonable global install scheme, updates will be easy. They're less easy inside your project or in `pre-commit`. And you might care one way or the other! I **don't** want updates! I **do** want updates!

As for Python type-checking, `ty` seems good so far, but not enough experience with it yet. `basedpyright`, `pyrefly`, and `ruff` all good. These four are my favorites.

#BasedPyright #Pyrefly #Ruff #PreCommit #CodeSpell #Homebrew

For the love of readability, #ruff please let me wrap my list compehensions across multiple lines!

Black's obsession with cramming as much as possible onto one line is anathema to readability goals!

ИИ бот-модератор 1: Начало проекта

Знаете, в чём проблема большинства гайдов и курсов, которые обещают научить всему и сразу — да ещё и устроить на работу? Часто они учат примитиву, выдавая это за качественный контент. В итоге появляется много низкокачественного кода: на первый взгляд он работает, но в реальности трудно поддерживается . Если в проекте нет структуры, он быстро превращается в кашу. Каждая доработка — это не отдельный продуманный модуль, а «приматывание новых кусков кода синей изолентой» с мыслью: «хоть бы не сломалось». Для новичка это особенно опасно: кажется, что всё нормально, пока проект маленький, но при росте даже простые изменения начинают занимать часы и ломать соседние части. Вы наверняка задаётесь вопросом: «Почему рубрика называется “ИИ бот-модератор”, а автор тут рассказывает про качество кода?» На самом деле, всё связано. Telegram-бот для группы — отличный пример проекта, который очень быстро обрастает фичами: команды, настройки, роли, интеграции, хранение данных, логирование, админка, модерация, ИИ и т.д. Если делать всё “в одном файле”, это почти гарантированно закончится болью. Поэтому в этой рубрике мы будем строить бота так, чтобы его можно было развивать: добавлять функциональность без постоянного страха «сломать всё».

https://habr.com/ru/articles/978282/

#telegram #бот #ии #git #make #precommit #линтеры #ruff #ry #uv

ИИ бот-модератор 1: Начало проекта

Знаете, в чём проблема большинства гайдов и курсов, которые обещают научить всему и сразу — да ещё и устроить на работу? Часто они учат примитиву, выдавая это за качественный контент. В итоге...

Хабр

Third tool announced by #Astral. This time it's a type checker and language server: ty.

This is it. I will now integrate uv, ruff and ty in my workflow. These folks produce such high quality #software. It's amazing!

#Python #ruff #uv #ty #foss #opensource

ty: An extremely fast Python type checker and language server

ty is an extremely fast Python type checker and language server, written in Rust, and designed as an alternative to mypy, Pyright, and Pylance.

Working on #AdventOfCode. My plan was to solve each day in both #Python and #RustLang. I thought I would be further by now. Yes, my Python answer to day 1 solves both parts, but I'm trying to be exemplary: good names, docstrings, comments-where-needed, tests, project structure, all the things.

For some reason, #HelixEditor keeps complaining about the #LSP (using both #Pyrefly and #Ruff, as usual). I'm concerned I haven't set things up right somehow, but I don't yet see where I've gone wrong.

Once this is working, further days will be easy. At least ... I hope!