170 похожих чатов

@Tishka17 , решил применить твою датакласс-фактори. Но уперся в кейс,

который пока не понял как разрулить. А именноЖ
Читаю запись из бд, в ней некоторые поля NULL, перевожу в питоновский дикт - эти поля соответсвенно = None, делаю factory.load(.....). Понятно что она падает с VakueError на None значениях.
Не очень логично имхо. Конкретно в parse, где проверка типа идет. Разве не логичнее было бы рассматривать None как Any тип, который можно присваивать в поле любого типа?
И как обойти эту историю.
объявить поля Optional[тип] не могу, т.к. 1 - дата классы сгенерированы и будут перегенирироваться, 2 - их очень много, полей тоже много, пальцы сотрешь добавлять)
Может не увидел в доках опцию отключения проверки ? препарсинг функция тоже не прокатывает естественно

19 ответов

27 просмотров

Если поле типа int или str, оно не может быть None по всем стандартам.

Andrei-Kisel Автор вопроса
Tishka17
Если поле типа int или str, оно не может быть None...

по каким всем стандартам? Ну вот у нас в системе так. Досталось в наследство. grpc message , MySQL допускают такие значения.

Если прям очень надо, можешь сделать схему для int/str, в которой парсер будет разрешать None.

Andrei-Kisel Автор вопроса
Tishka17
Если прям очень надо, можешь сделать схему для int...

если это пре-парсер, то не могу. Тип приходящих данных не определить

Andrei Kisel
по каким всем стандартам? Ну вот у нас в системе т...

Ну смотри. Если поле типа str, значит у него есть методы типа lower(), strip() и т.п. А теперь ты туда пихнул None. Что будет?

Andrei-Kisel Автор вопроса
Tishka17
Ну смотри. Если поле типа str, значит у него есть ...

возможно. Но в жизни реальные данные имеют такие значения)

Andrei Kisel
возможно. Но в жизни реальные данные имеют такие з...

Если у тебя аннотация не соответствует реальности, это проблема аннотации

Andrei-Kisel Автор вопроса
Tishka17
Ну смотри. Если поле типа str, значит у него есть ...

парсер тоже можно переопределить? Пропустил что ли в доках...

Andrei-Kisel Автор вопроса
Tishka17
Если у тебя аннотация не соответствует реальности,...

Это проблема автоматического генерации датаклассов из grpc прото файлов. )

Andrei-Kisel Автор вопроса
Tishka17
Ну вероятно там и надо чинить :)

это не мое и починить там невозможно) править все поля str , int на Optional -тоже так себе идея, среди них есть обязательные

Andrei Kisel
Это проблема автоматического генерации датаклассов...

Я бы предложил сделать кастомный парсер, который None меняет на разумный дефолт типа 0 или ""

Andrei Kisel
это не мое и починить там невозможно) править все...

Обязательность не имеет отношения к None.

Andrei Kisel
это не мое и починить там невозможно) править все...

В датаклассе в принципе все поля обязательные. Опшнал - это про допустимые значение

Andrei-Kisel Автор вопроса
Tishka17
В датаклассе в принципе все поля обязательные. Опш...

не придирайся к словам. Ты прекрасно понял о чем я

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта