|
9 | 9 | from functools import partial |
10 | 10 | from collections import OrderedDict |
11 | 11 | from contextlib import contextmanager |
12 | | -from collections.abc import Iterator, Mapping |
| 12 | +from collections.abc import Iterator, Mapping, Sequence |
13 | 13 |
|
14 | 14 | from unification import isvar, Var |
15 | 15 |
|
| 16 | +from etuples.core import ExpressionTuple |
| 17 | + |
16 | 18 | from .utils import HashableNDArray |
17 | 19 |
|
18 | 20 | from multipledispatch import dispatch |
@@ -74,20 +76,20 @@ def metatize(obj): |
74 | 76 | return _metatize(obj) |
75 | 77 |
|
76 | 78 |
|
77 | | -@dispatch((type(None), types.FunctionType, partial, str, dict)) |
| 79 | +@dispatch((type(None), types.FunctionType, partial, str, Mapping)) |
78 | 80 | def _metatize(obj): |
79 | 81 | return obj |
80 | 82 |
|
81 | 83 |
|
82 | | -@_metatize.register((set, tuple)) |
| 84 | +@_metatize.register((frozenset, tuple, ExpressionTuple)) |
83 | 85 | @cached(metatize_cache) |
84 | | -def _metatize_set_tuple(obj): |
| 86 | +def _metatize_hashable_Sequence(obj): |
85 | 87 | """Convert elements of an iterable to meta objects.""" |
86 | 88 | return type(obj)([metatize(o) for o in obj]) |
87 | 89 |
|
88 | 90 |
|
89 | | -@_metatize.register(list) |
90 | | -def _metatize_list(obj): |
| 91 | +@_metatize.register(Sequence) |
| 92 | +def _metatize_Sequence(obj): |
91 | 93 | """Convert elements of an iterable to meta objects.""" |
92 | 94 | return type(obj)([metatize(o) for o in obj]) |
93 | 95 |
|
|
0 commit comments