outlines
1import pytest
2
3import outlines.grammars as grammars
4from outlines.fsm.guide import CFGGuide
5
6
7@pytest.mark.parametrize("grammar", [grammars.json, grammars.arithmetic])
8def test_grammar_module(grammar):
9class MockTokenizer:
10vocabulary = {"(": 1, ")": 2, "a": 3, "eos": 4}
11special_tokens = {"eos"}
12eos_token = "eos"
13eos_token_id = 4
14
15def convert_token_to_string(self, token):
16return token
17
18@property
19def inverse_vocabulary(self):
20return {v: k for k, v in self.vocabulary.items()}
21
22def decode(self, token_ids):
23return [self.inverse_vocabulary[t] for t in token_ids]
24
25cfg_str = """
26start: s
27s: "(" s ")" | /a+/
28"""
29tokenizer = MockTokenizer()
30fsm = CFGGuide(cfg_str, tokenizer)
31assert isinstance(fsm, CFGGuide)
32