def get_ucca_parser():
    ucca_dir = RESOURCES_DIR / 'ucca'
    os.chdir(str(ucca_dir))
    model_path = ucca_dir / 'models/ucca-bilstm'
    vocab_path = ucca_dir / 'vocab'
    argv = ['script_name', '-m', str(model_path), '--vocab', str(vocab_path)]
    with unittest.mock.patch('sys.argv', argv):
        Config.reload()
        args = Config().args
    model_files = [
        base + '' + ext
        for base, ext in map(os.path.splitext, args.models or (
            args.classifier, ))
    ]
    return Parser(model_files=model_files, config=Config(), beam=1)
def get_ucca_passage(sentence):
    source_path = Path(tempfile.mkdtemp()) / 'source.txt'
    with source_path.open('w') as f:
        f.write(sentence + '\n')
    argv = ['script_name', str(source_path)]
    with unittest.mock.patch('sys.argv', argv):
        Config.reload()
        args = Config().args
    train_passages, dev_passages, test_passages = [
        read_passages(args, arg)
        for arg in (args.train, args.dev, args.passages)
    ]
    ucca_passages = [
        ucca_passage for (ucca_passage, ) in PARSER.parse(
            test_passages, evaluate=[], display=False, write=False)
    ]
    assert len(ucca_passages) == 1
    return ucca_passages[0]