Elasticsearch version (bin/elasticsearch --version): -
elasticsearch-py version (elasticsearch.__versionstr__): 8.13.0
Description of the problem including expected versus actual behavior:
Currently bulk actions are typed with Dict;
|
_TYPE_BULK_ACTION = Union[bytes, str, Dict[str, Any]] |
|
_TYPE_BULK_ACTION_HEADER = Dict[str, Any] |
|
_TYPE_BULK_ACTION_BODY = Union[None, bytes, Dict[str, Any]] |
|
_TYPE_BULK_ACTION_HEADER_AND_BODY = Tuple[ |
|
_TYPE_BULK_ACTION_HEADER, _TYPE_BULK_ACTION_BODY |
|
] |
this however does not allow the usage of
TypedDicts.
For example, the relevant part of the signature of elasticsearch.helpers.actions.bulk currently looks like this;
|
def bulk( |
|
client: Elasticsearch, |
|
actions: Iterable[_TYPE_BULK_ACTION], |
If we have a TypedDict for actions defined:
class Action(TypedDict):
_op_type: str
_index: str
...
and we try to pass a list[Action] to actions then Mypy will complain:
Argument "actions" to "bulk" has incompatible type "list[Action]"; expected "Iterable[bytes | str | dict[str, Any]]"
Changing Dict to Mapping would resolve this issue.
Elasticsearch version (
bin/elasticsearch --version): -elasticsearch-pyversion (elasticsearch.__versionstr__): 8.13.0Description of the problem including expected versus actual behavior:
Currently bulk actions are typed with
Dict;elasticsearch-py/elasticsearch/helpers/actions.py
Lines 45 to 50 in 794341d
TypedDicts.For example, the relevant part of the signature of
elasticsearch.helpers.actions.bulkcurrently looks like this;elasticsearch-py/elasticsearch/helpers/actions.py
Lines 478 to 480 in 794341d
and we try to pass a
list[Action]toactionsthen Mypy will complain:Argument "actions" to "bulk" has incompatible type "list[Action]"; expected "Iterable[bytes | str | dict[str, Any]]"Changing
DicttoMappingwould resolve this issue.