elastic / elasticsearch-dsl-py

High level Python client for Elasticsearch
http://elasticsearch-dsl.readthedocs.org
Apache License 2.0
3.84k stars 802 forks source link

replace JSONType with Any #1856

Closed miguelgrinberg closed 4 months ago

miguelgrinberg commented 4 months ago

One of the issues I'm facing when trying to type the examples is that JSONType was used in many places to represent responses from the API. Because this is an imperfect type hint, it requires adding casts all over the place.

With this change I'm removing JSONType and replacing it with Any. This matches the commonly used ObjectApiResponse[Any] from the low-level client, and lets mypy digest attribute accesses without generating warnings, in things like self.meta.inner_hits.answer.hits. Just by making this change a few type ignores can be removed, and no new typing errors appeared.

I think in the future I will revisit this and create proper types for the response structure, but for now I think Any is the best choice.