Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/1649981
Я сталкивался, что тайп игноры часто взрывают mypy
Читать полностью…Вот когда у тебя там их десятки, и логика допустимости пар выразима только логикой, то тогда пизда.
Читать полностью…Сейчас подумал, твою проблему можно в теории решить, если ты добавишь ещё один Generic тип, чисто по сути контейнер для пары аргументов и тогда из него можно будет достать и X и Y, принимать правда придется его в аргументах инициализатора
Читать полностью…Но опять же допускаю случаи, где нельзя. Вот например conditional types очень хочется
Читать полностью…Я сейчас работаю над фреймворками. Пришел к такой технике, что надо придерживаться парадигмы gradual typing в питоне, когда у тебя есть уровень пользовательский, и внутренний. На внутренней реализации юзаем какие угодно типы, покрываем их тайпхинтами, на уровне интерфейса с пользовательской частью врем тайпчекеру используя cast и делаем типизированный интерфейс. Но этот подход работает если тебе нужна динамика для реализации всяких DSL, синтаксических сахаров и подобного. В моем случае подход сработал идеально, потому что пишу библиотеку для фабрик и DI.
Читать полностью…Иронично что выглядит реально элегантно. Я бы использовал хз
Читать полностью…у меня много динамики никакой тайпчекинг тут не поможет
Читать полностью…Другого варианта нет. В тайпинге питона нет conditional types
Читать полностью…@dataclasses.dataclass
class Var[X: (int, str), Y: (str, int)]:
x: X
y: Y
if typing.TYPE_CHECKING:
@typing.overload
def __init__(self, x: int, y: str) -> None: ...
@typing.overload
def __init__(self, x: str, y: int) -> None: ...
def __init__(self, x: int | str, y: str | int) -> None: ...
Какая сейчас самая нормальная либа для ТГ ботов?
Читать полностью…Но тут на самом деле получается почти тоже самое как и перегрузки лепить
Читать полностью…Ну вот у меня квери билдер сейчас и само собранное квери будет обрабатываться пользовательским кодом
Читать полностью…Нет, здесь я указываю не метаданные, а уточняю типы для создания. Не вижу ничего плохого
Читать полностью…Похоже на идеи тианголо с typing.Doc в сигнатуре функций
Читать полностью…Если нужен только поллинг, можно самому запросы писать
Читать полностью…Ну у тебя это может иметь последствия на дерево тайпчекинг модуля. Иногда игноры его сильно ломают
Читать полностью…Но по моему опыту это ещё хуже чем перегрузки написать
Читать полностью…Ну можешь разве что извратиться и попробовать написать плагин mypy
Читать полностью…не то, чтобы критично откусывает от производительности, но все равно как будто неприятно.
Читать полностью…ну то есть ты добавляешь бесполезную проверку, и на каждый вызов проверяешь возвращаемое значение.
Читать полностью…