Esempio n. 1
0
 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([]))
Esempio n. 2
0
 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([])
     )
Esempio n. 3
0
 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([])
     )
Esempio n. 4
0
    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'
                    }
                })
            ]))
Esempio n. 5
0
    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'})
            ])
        )
Esempio n. 6
0
 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
     )