def test_and_filtering(self): tokenlist = TokenList([ { "id": 1, "form": "a", "field": "x" }, { "id": 2, "form": "dog", "field": "x" }, { "id": 3, "form": "dog", "field": "y" }, ]) self.assertEqual(tokenlist.filter(field="x", id=2), TokenList([ { "id": 2, "form": "dog", "field": "x" }, ])) self.assertEqual(tokenlist.filter(field="x", id=3), TokenList([]))
def test_nested_filtering(self): tokenlist = TokenList([ {"form": "The", "feats": Token([('Definite', 'Def'), ('PronType', 'Art')])}, {"form": "quick", "feats": Token([('Degree', 'Pos')])}, {"form": "brown", "feats": Token([('Degree', 'Pos')])}, {"form": "fox", "feats": Token([('Number', 'Sing')])}, ]) self.assertEqual( tokenlist.filter(feats__Degree="Pos").filter(form="brown"), TokenList([ {"form": "brown", "feats": Token([('Degree', 'Pos')])}, ]) ) self.assertEqual( tokenlist.filter(form="brown").filter(feats__Degree="Pos"), TokenList([ {"form": "brown", "feats": Token([('Degree', 'Pos')])}, ]) ) self.assertEqual( tokenlist.filter(form="brown").filter(feats__Degree="Pos").filter(), TokenList([ {"form": "brown", "feats": Token([('Degree', 'Pos')])}, ]) ) self.assertEqual( tokenlist.filter(form="brown").filter(feats__Degree="Pos").filter(id=0), TokenList([]) )
def test_deep_filtering(self): tokenlist = TokenList([ {"form": "The", "feats": Token([('Definite', 'Def'), ('PronType', 'Art')])}, {"form": "quick", "feats": Token([('Degree', 'Pos')])}, {"form": "brown", "feats": Token([('Degree', 'Pos')])}, {"form": "fox", "feats": Token([('Number', 'Sing')])}, ]) self.assertEqual( tokenlist.filter(feats__Degree="Pos"), TokenList([ {"form": "quick", "feats": Token([('Degree', 'Pos')])}, {"form": "brown", "feats": Token([('Degree', 'Pos')])}, ]) ) self.assertEqual( tokenlist.filter(form="brown", feats__Degree="Pos"), TokenList([ {"form": "brown", "feats": Token([('Degree', 'Pos')])}, ]) ) self.assertEqual( tokenlist.filter(form="brown", feats__Degree="Pos", id=1), TokenList([]) ) self.assertEqual( tokenlist.filter(unknown__property__value="undefined"), TokenList([]) ) self.assertEqual( tokenlist.filter(unknown___property____value="undefined"), TokenList([]) )
def test_lambda_deep_filtering(self): tokenlist = TokenList([ Token({ 'id': (1, '-', 2), 'feats': None }), Token({ 'id': 1, 'feats': { 'Case': 'Nom', 'Number': 'Sing' } }), Token({ 'id': 2, 'feats': { 'Mood': 'Ind', 'Number': 'Sing' } }) ]) self.assertEqual( tokenlist.filter(feats__Mood=lambda x: x == 'Ind'), TokenList( [Token({ 'id': 2, 'feats': { 'Mood': 'Ind', 'Number': 'Sing' } })])) self.assertEqual( tokenlist.filter(feats__Number=lambda x: x == 'Sing'), TokenList([ Token({ 'id': 1, 'feats': { 'Case': 'Nom', 'Number': 'Sing' } }), Token({ 'id': 2, 'feats': { 'Mood': 'Ind', 'Number': 'Sing' } }) ]))
def test_lambda_basic_filtering(self): tokenlist = TokenList([ Token({'id': (1, '-', 2), 'form': "It's", 'lemma': '_', 'feats': None}), Token({'id': 1, 'form': 'It', 'lemma': 'it'}), Token({'id': 2, 'form': "'s", 'lemma': 'be'}) ]) self.assertEqual( tokenlist.filter(id=lambda x: type(x) is int), TokenList([ Token({'id': 1, 'form': 'It', 'lemma': 'it'}), Token({'id': 2, 'form': "'s", 'lemma': 'be'}) ]) ) self.assertEqual( tokenlist.filter(lemma=lambda x: x.startswith('b')), TokenList([ Token({'id': 2, 'form': "'s", 'lemma': 'be'}) ]) )
def test_basic_filtering(self): tokenlist = TokenList([ {"id": 1, "form": "a", "field": "x"}, {"id": 2, "form": "dog", "field": "x"}, ]) self.assertEqual( tokenlist.filter(id=0), TokenList([]) ) self.assertEqual( tokenlist.filter(id=1), TokenList([{"id": 1, "form": "a", "field": "x"}]) ) self.assertEqual( tokenlist.filter(), tokenlist ) self.assertEqual( tokenlist.filter(field="x"), tokenlist )