home.social

#mypy — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #mypy, aggregated by home.social.

fetched live
  1. So if you're wondering how great #RustLang is, let's talk about #mypy. Mypy introduced its own Rust - #Python package, ast-serialize. This package had a deep crate dependency that was broken on PowerPC. The issue was fixed a month ago but everything is still blocked on a deep chain of dependencies being updated and released.

    github.com/mypyc/ast_serialize

    EDIT: yes, I know, it's not Rust, it's Cargo. Because obviously Rust without Cargo makes so much sense for that one project using it.

  2. Hmm, I got a question on #Python, specifically #mypy.

    I just coded a very short module with dynamically generated functions that I export, and mypy complains when I use these functions, because they're not in the module?! What am I doing wrong?

    code:

    import sys
    from functools import partial
    __cur_mod = sys.modules[__name__]
    _COLORS: dict[str, str] = {
    "grey":'\x1b[38;21m',
    [...]
    }
    for color in _COLORS:
    setattr(__cur_mod, color, partial(color_generic, color))
    __all__ = list(_COLORS)

  3. vocês já tomaram um AttributeError em produção por causa de um método com nome errado, tipo "aplica" em vez de "aplicar"? pois é, isso não devia sobreviver até o deploy.

    novo texto no blog fala de typing.Protocol: como pegar esse tipo de erro ainda no mypy, sem abrir mão do duck typing e sem virar refém de herança tipo ABC. tem o contraste com runtime_checkable também, que só confere se o método existe, não a assinatura inteira.

    riverfount.dev.br/posts/protoc

    #python #mypy #typing #protocol

  4. I wish #mypy would slow down with adding new features to mypyc, and instead focused on fixing the train wreck that mypyc is right now (since 2023 at least). Like, if your code crashes hard with assertions enabled, then it's broken, period. Ignoring proper testing and shoving the issue under the carpet doesn't make it right.

    github.com/python/mypy/issues/

    #Python

  5. I wanted to migrate one of my #Python packages from #mypy to #ty and #pyrefly. I handed this task over to #Claude, and at the end I asked it to write out some guidance on how to perform it most efficiently. So what follows is AI-generated 'slop'.

    #aicodingagents
    dev.to/ldrscke/migrate-from-my

  6. Невыразимое невалидное. Часть 2. Поведение и границы

    В первой части мы разобрались с представлением данных. Мы сделали невалидные состояния невозможными для выражения в рамках модели. В этой части мы разберемся с тем как можно выражать поведение таких моделей, и где проходит граница между тем, что ловит чекер, и тем, что придется оставить рантайму.

    habr.com/ru/articles/1053662/

    #pydantic #python #типы_данных #типизация #аннотация_типов #mypy #discriminated_unions

  7. tinha um TypeError em produção esperando pra acontecer: um campo "desconto" chegando como string "0" em vez de número 0, vindo de uma integração externa. três camadas de código depois é que o python reclamava.

    novo post sobre por que isso não é "python ser fracamente tipado" (não é, ele é fortemente tipado), e como o mypy roda estaticamente e pegaria esse erro antes do deploy, sem precisar de nenhum teste cobrir esse caso específico.

    também entra a sintaxe moderna de type hints (list[int], X | None) e os casos em que tipagem dinâmica continua sendo uma vantagem, não um problema.

    riverfount.dev.br/posts/bug_my

    #python #tipagem #mypy #typehints

  8. Невыразимое невалидное. Часть 1. Данные

    Знакомый сценарий: фильтр или конструктор запросов начинается с одного опрятного класса, а через месяц в нём value: Any, валидатор на сотню строк и ветка, дописанная ночью перед релизом, — её забыли покрыть тестом, и она падает в проде. Разбираем контринтуитивный выход: не «добавить ещё проверок», а сделать невалидное состояние таким, чтобы его нельзя было даже собрать. В первой части — сами данные: сумма-типы, дискриминированные union’ы и точные значения в pydantic; и где всё это ловит тайп-чекер, а где остаётся рантайму.

    habr.com/ru/articles/1049560/

    #pydantic #python #типы_данных #типизация #аннотация_типов #mypy #discriminated_unions

  9. 3 ошибки при работе с dataclasses в Python

    Dataclasses появились в Python 3.7 и быстро стали стандартом: меньше бойлерплейта, чем у обычных классов, проще, чем attrs, и не требуют зависимостей. Выглядят настолько просто, что кажется, что ломаться там нечему. Но у них есть три ловушки, которые не видны при написании. Разобрать ошибки

    habr.com/ru/companies/otus/art

    #python #типизация_Python #наследование_классов #dataclasses #mypy #ошибки_python

  10. Практики разработки на Python

    Привет, Хабр! Меня зовут Роман, я программист в команде «Гравитон» и моя задача в компании — разработка API/CLI интерфейсов и приложений на языке Python. Цель данной статьи в том, чтобы показать как через внедрение «типовых подходов» и вспомогательных библиотек/утилит очень сильно упрощается поддержка проекта в настоящем (при передаче другому человеку или разработке в команде) и в будущем (возобновили проект спустя время). Первое, что нужно сказать — проект на Python это не только сам Python , но и множество технологий используемых вместе (Git, Docker, и т.д.). В этой статье мы сконцентрируемся на самом проекте, а именно с чего начать, что прикрутить, что учитывать при разработке.

    habr.com/ru/companies/graviton

    #бэкенд #Python #uv #ruff #mypy #практики

  11. When installing dependencies, formatting code, linting it, type-checking it, and building docs with or , , , and would previously take from 2min to several more, it now takes less than 15 seconds for the whole thing, thanks to , , and .

    This is for 5 versions (3.10 to 3.15).

    The DX got much better 🥰

  12. Is there any way linter/type checker for #Python that can find expressions that never will evaluate to anything other than False based on the type information? E.g. checking if a variable of the type `int` exists within a list of the type `list[str]`? I do use #mypy but it doesn't seem to catch this.

  13. Git-хуки, которые не дают коммитить плохой код

    Здравствуйте, коллеги программисты! Большинство фейлов в CI — это мелочи: забытый console.log , форматирование, линт, сломанный импорт, файл без теста. Такие ошибки не должны доезжать до сборки или код-ревью. Git-хуки позволяют запускать проверки прямо во время git commit и блокировать коммит, если были обнаружены нарушения. В прошлой статье я рассказывал про скрипты, которые я использую для проверки качества кода в PHP/Laravel. В этой статье я хочу рассказать о скриптах для JavaScript/TypeScript и Python — линтинг, форматирование, тесты, статический анализ и проверка наличия тестов. Все скрипты описанные в статье находятся здесь - github.com/prog-time/git-hooks

    habr.com/ru/articles/993870/

    #линтер #git_hooks #javascript #python #eslint #prettier #tsc #vitest #mypy #pytest

  14. The only criticism I have of types in Python:

    Python is a really good dynamically typed language. Since classes are themselves instances of a class-describing object, you can do what other languages have to do with text-transforming macros by just treating the class as mutable and dynamically adding things like methods.

    ... and then the type system kicks your ass for doing that, so you're left with a few not-great options.

    #python #mypy

  15. Январский рефакторинг: 7 дней, чтобы почистить Python веб‑проект

    Январь - самое удобное время разобрать завалы в проекте. Пол‑команды ещё в отпусках, pull‑реквестов меньше, product owner'ы только вспоминают, что планировали делать в этом году - можно спокойно пройтись по коду и навести порядок. В этой статье пойдёт речь о нескольких косметических действиях, которые, с одной стороны, почти не затрагивают логику программы и не вызывают ненависти у тестировщиков, а с другой - делают код чуть приятнее и дают темы для обсуждения на бэкенд‑созвонах. Мы разложим импорты, перенесём логику из роутов в контроллеры, а из контроллеров - в репозитории и сервисы, избавимся от requirements.txt в пользу нормального менеджера зависимостей и включим mypy.

    habr.com/ru/articles/983172/

    #python #backend #refactoring #architecture #linter #mypy #litestar

  16. With high-performance #Python type checkers like #Pyright, #Pyrefly, and #ty now available, what's the value proposition of #Mypy? Is it the reference implementation? Or does Mypy still have the most features? I'm not trying to knock Mypy, I'm genuinely asking because I don't know.

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

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

    habr.com/ru/articles/979752/

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

  18. 🚀🎉 Hold onto your keyboards, folks! #Astral has unleashed "ty," a lightning-fast #Python #type #checker, because, of course, we needed another one. Written in #Rust, because Python apparently wasn't fast enough for checking itself, "ty" is now in #Beta and ready to bravely enter a market already saturated with the likes of #mypy, #Pyright, and other tools you didn't know you couldn't live without. 🌪️🔧
    astral.sh/blog/ty #ty #HackerNews #ngated

  19. I have a script called pyfix which runs mypy and ruff to

    - have strong typing
    - have a fixed and orderly import order
    - have the file always formatted in the same way
    - detect programming errors and redundancies.

    Now I am working on gitlogui (codeberg.org/harald/gitlogui) the main script of which I called glu. So I am running

    pyfix glu

    all the time, which reads funny. 😀

    #python #gitlogui #mypy #ruff #strongTyping #linting