import asyncio import os from typing import Any from absl import flags from sotopia.server import run_async_server from .gin_utils import parse_gin_flags, run _DEFAULT_GIN_SEARCH_PATHS = [ os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ] FLAGS = flags.FLAGS def main(_: Any) -> None: parse_gin_flags( # User-provided gin paths take precedence if relative paths conflict. FLAGS.gin_search_paths + _DEFAULT_GIN_SEARCH_PATHS, FLAGS.gin_file, FLAGS.gin_bindings, ) asyncio.run(run_async_server()) if __name__ == "__main__": flags.DEFINE_multi_string( "gin_file", default=None, help="Path to gin configuration file. Multiple paths may be passed and " "will be imported in the given order, with later configurations " "overriding earlier ones.", ) flags.DEFINE_multi_string( "gin_bindings", default=[], help="Individual gin bindings." ) flags.DEFINE_list( "gin_search_paths", default=["."], help="Comma-separated list of gin config path prefixes to be prepended " "to suffixes given via `--gin_file`. If a file appears in. Only the " "first prefix that produces a valid path for each suffix will be " "used.", ) run(main)