Skip to content

Commit 0767564

Browse files
committed
!squash new mapping system
1 parent 7c1508a commit 0767564

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

libvcs/utils/list_query.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,38 @@ def __eq__(self, other):
119119
return True
120120
return False
121121

122+
def lookup_exact(self, data, rhs):
123+
return rhs == data
124+
125+
def lookup_iexact(self, data, rhs):
126+
return rhs.lower() == data.lower()
127+
128+
def lookup_contains(self, data, rhs):
129+
return rhs in data
130+
131+
def lookup_icontains(self, data, rhs):
132+
return rhs.lower() in data.lower()
133+
134+
LOOKUP_NAME_MAP = {
135+
"contains": lookup_contains,
136+
"icontains": lookup_icontains,
137+
"exact": lookup_exact,
138+
"iexact": lookup_iexact,
139+
}
140+
122141
def filter(self, matcher: Optional[Union[Callable[[T], bool], T]] = None, **kwargs):
123142
def filter_lookup(obj) -> bool:
143+
124144
for path, v in kwargs.items():
145+
try:
146+
lhs, op = path.rsplit("__", 1)
147+
except ValueError:
148+
lhs = path
149+
op = "exact"
150+
151+
# assert op in self.LOOKUP_NAME_MAP
152+
# path = lhs
153+
125154
if (field := parse_lookup(obj, path, "__contains")) is not None:
126155
if v not in field:
127156
return False

0 commit comments

Comments
 (0)