-
Notifications
You must be signed in to change notification settings - Fork 5.9k
Description
We currenty have clauses like
python-telegram-bot/telegram/_telegramobject.py
Lines 394 to 395 in 2ac5201
| if data is None: | |
| return None |
and
python-telegram-bot/telegram/_telegramobject.py
Lines 462 to 463 in 2ac5201
| if not data: | |
| return () |
These sometimes make difficulties for classes that have no required arguments such that {} is valid input for de_json. Moreover, classes with subclasses (BotCommandScope & sim), where de_json calls the de_json method of a subclass, need to take care of this as well.
AFAIK the main use case for the emtyp-data handling is calling other classes de_json. E.g. Update.de_json calls
data["message"] = Message.de_json(data.get("message"), bot)and data.get("message") might be None.
Neither TO.de_json nor TO.de_list documents how empty data ({}) or None is handled. Note that the type hints do give something away, but they are explicitly excluded from our stability policy.
To simplify internal logic, I propose to
- switch to uniform
if data is None: return None - optionally even remove that and think of a clean way to handle the
Message.de_json(data.get("message"), bot)case