def es_version(es_client: Elasticsearch) -> Tuple[int, int, int]: """Tags the current ES client with a cached '_eland_es_version' property if one doesn't exist yet for the current Elasticsearch version. """ if not hasattr(es_client, "_eland_es_version"): version_info = es_client.info()["version"]["number"] match = re.match(r"^(\d+)\.(\d+)\.(\d+)", version_info) if match is None: raise ValueError(f"Unable to determine Elasticsearch version. " f"Received: {version_info}") major, minor, patch = [int(x) for x in match.groups()] es_client._eland_es_version = (major, minor, patch) return cast(Tuple[int, int, int], es_client._eland_es_version)