def test_parse_bad_arg(self): args = argparse.argparse( Observable.from_(["--bar", "barz"]), Observable.just(argparse.Parser(description="test_parse")), Observable.from_([ argparse.ArgumentDef(name="--foo"), ])) actual_result = None def on_error(error): nonlocal actual_result actual_result = error args.subscribe(on_error=on_error) self.assertIn("unrecognized arguments", actual_result)
def test_parse(self): args = argparse.argparse( Observable.from_(["--foo", "fooz"]), Observable.just(argparse.Parser(description="test_parse")), Observable.from_([ argparse.ArgumentDef(name="--foo"), ])) expected_result = [argparse.Argument(key="foo", value="fooz")] actual_result = None def set_result(i): nonlocal actual_result actual_result = i args.to_list().subscribe(set_result) self.assertEqual(expected_result, actual_result)
def read_configuration(source): args = argparse.argparse( argv=source.argv.skip(1), parser=Observable.just(argparse.Parser(description="deepspeaker")), arguments=Observable.from_([ argparse.ArgumentDef(name='--config', help="Path of the configuration file") ])) read_config_file = Observable.just( file.Context(id='config', observable=args.filter(lambda i: i.key == 'config').map( lambda i: file.Read(id='config', path=i.value)))) config = (source.file_response.filter(lambda i: i.id == "config").flat_map( lambda i: i.observable ).flat_map(lambda i: i.data).map(lambda i: json.loads( i, object_hook=lambda d: namedtuple('x', d.keys())(*d.values())))) return Sink(file_request=read_config_file, configuration=config)
def deepspeech_server(sources): argv = sources.argv.argv stt = sources.httpd.route stt_response = sources.deepspeech.text.share() ds_logs = sources.deepspeech.log config_data = sources.file.response http_ds_error, route_ds_error = make_error_router() args = argparse.argparse( argv=argv.skip(1).subscribe_on(aio_scheduler), parser=Observable.just( argparse.Parser(description="deepspeech server")), arguments=Observable.from_([ argparse.ArgumentDef(name='--config', help="Path of the server configuration file") ])) config_file = (args.filter(lambda i: i.key == 'config').map( lambda i: file.Read(id='config', path=i.value))) config = parse_config(config_data).subscribe_on(aio_scheduler) logs_config = (config.flat_map(lambda i: Observable.from_(i.log.level).map( lambda i: logging.SetLevel(logger=i.logger, level=i.level)).concat( Observable.just(logging.SetLevelDone())))) logs = Observable.merge(logs_config, ds_logs) log_ready = sources.logging.response.take(1) ds_stt = (stt.flat_map(lambda i: i.request).map( lambda i: deepspeech.SpeechToText(data=i.data, context=i.context))) ds_arg = ( # config is hot, the combine operator allows to keep its last value # until logging is initialized log_ready.combine_latest( config, lambda _, i: i).map(lambda i: deepspeech.Initialize( model=i.deepspeech.model, alphabet=i.deepspeech.alphabet, lm=i.deepspeech.lm, trie=i.deepspeech.trie, features=deepspeech.FeaturesParameters( n_features=i.deepspeech.features.n_features, n_context=i.deepspeech.features.n_context, beam_width=i.deepspeech.features.beam_width, lm_alpha=i.deepspeech.features.lm_alpha, lm_beta=i.deepspeech.features.lm_beta, ) if i.deepspeech.features is not None else None))) ds = ds_stt.merge(ds_arg) http_init = (config.flat_map(lambda i: Observable.from_([ httpd.Initialize(request_max_size=i.server.http.request_max_size), httpd.AddRoute( methods=['POST'], path='/stt', id='stt', ), httpd.StartServer(host=i.server.http.host, port=i.server.http.port), ]))) http_response = (stt_response.let(lambda x: route_ds_error( x, error_map=lambda e: httpd.Response( data="Speech to text error".encode('utf-8'), context=e.args[0].context, status=500))).map(lambda i: httpd.Response( data=i.text.encode('utf-8'), context=i.context, ))) http = Observable.merge(http_init, http_response, http_ds_error) return DeepspeechSink(file=file.Sink(request=config_file), logging=logging.Sink(request=logs), deepspeech=deepspeech.Sink(speech=ds), httpd=httpd.Sink(control=http))
def test_creation(self): args = argparse.argparse(Observable.empty(), Observable.empty(), Observable.empty()) self.assertIsNotNone(args)