diff --git a/elasticsearch_dsl/utils.py b/elasticsearch_dsl/utils.py index c362838a..3b231d25 100644 --- a/elasticsearch_dsl/utils.py +++ b/elasticsearch_dsl/utils.py @@ -252,7 +252,9 @@ def get_dsl_class(cls, name, default=None): f"DSL class `{name}` does not exist in {cls._type_name}." ) - def __init__(self, _expand__to_dot=EXPAND__TO_DOT, **params): + def __init__(self, _expand__to_dot=None, **params): + if _expand__to_dot is None: + _expand__to_dot = EXPAND__TO_DOT self._params = {} for pname, pvalue in params.items(): if "__" in pname and _expand__to_dot: diff --git a/tests/test_query.py b/tests/test_query.py index 4b765037..dde4963c 100644 --- a/tests/test_query.py +++ b/tests/test_query.py @@ -17,7 +17,7 @@ from pytest import raises -from elasticsearch_dsl import function, query +from elasticsearch_dsl import function, query, utils def test_empty_Q_is_match_all(): @@ -581,3 +581,12 @@ def test_script_score(): assert isinstance(q.query, query.MatchAll) assert q.script == {"source": "...", "params": {}} assert q.to_dict() == d + + +def test_expand_double_underscore_to_dot_setting(): + q = query.Term(comment__count=2) + assert q.to_dict() == {"term": {"comment.count": 2}} + utils.EXPAND__TO_DOT = False + q = query.Term(comment__count=2) + assert q.to_dict() == {"term": {"comment__count": 2}} + utils.EXPAND__TO_DOT = True