jmespath/jmespath.py

Unexpected mutations when using list or object literals in expressions

bwright1558 opened this issue · 0 comments

Example code:

import jmespath


data = {}
my_list = jmespath.search('`[]`', data)
my_list.extend([1, 2, 3])
print(my_list)

new_data = {}
new_list = jmespath.search('`[]`', new_data)
new_list.extend([9, 8, 7])
print(new_list)

Expected Output:

[1, 2, 3]
[9, 8, 7]

Actual Output:

[1, 2, 3]
[1, 2, 3, 9, 8, 7]

The expression is getting cached as well as a reference to the empty list literal. This is causing unexpected mutations to other lists that should not be getting mutated.