LOG = logging.getLogger()
+
class CommandlineParser:
""" Wraps some of the common functions for parsing the command line
and setting up subcommands.
group.add_argument('-j', '--threads', metavar='NUM', type=int,
help='Number of parallel threads to use')
-
def nominatim_version_text(self) -> str:
""" Program name and version number as string
"""
text += f' ({version.GIT_COMMIT_HASH})'
return text
-
def add_subcommand(self, name: str, cmd: Subcommand) -> None:
""" Add a subcommand to the parser. The subcommand must be a class
with a function add_args() that adds the parameters for the
parser.set_defaults(command=cmd)
cmd.add_args(parser)
-
def run(self, **kwargs: Any) -> int:
""" Parse the command line arguments of the program and execute the
appropriate subcommand.
args.config = Configuration(args.project_dir,
environ=kwargs.get('environ', os.environ))
- args.config.set_libdirs(module=kwargs['module_dir'],
- osm2pgsql=kwargs['osm2pgsql_path'])
+ args.config.set_libdirs(osm2pgsql=kwargs['osm2pgsql_path'])
log = logging.getLogger()
log.warning('Using project directory: %s', str(args.project_dir))
try:
ret = args.command.run(args)
- if args.config.TOKENIZER == 'legacy':
- log.warning('WARNING: the "legacy" tokenizer is deprecated '
- 'and will be removed in Nominatim 5.0.')
-
return ret
except UsageError as exception:
if log.isEnabledFor(logging.DEBUG):
- raise # use Python's exception printing
+ raise # use Python's exception printing
log.fatal('FATAL: %s', exception)
# If we get here, then execution has failed in some way.
# a subcommand.
#
# No need to document the functions each time.
-# pylint: disable=C0111
class AdminServe:
"""\
Start a simple web server for serving the API.
choices=('falcon', 'starlette'),
help='Webserver framework to run. (default: falcon)')
-
def run(self, args: NominatimArgs) -> int:
asyncio.run(self.run_uvicorn(args))
return 0
-
async def run_uvicorn(self, args: NominatimArgs) -> None:
- import uvicorn # pylint: disable=import-outside-toplevel
+ import uvicorn
server_info = args.server.split(':', 1)
host = server_info[0]
parser.add_subcommand('details', apicmd.APIDetails())
parser.add_subcommand('status', apicmd.APIStatus())
except ModuleNotFoundError as ex:
- if not ex.name or 'nominatim_api' not in ex.name: # pylint: disable=E1135
+ if not ex.name or 'nominatim_api' not in ex.name:
raise ex
parser.parser.epilog = \
'\n export, convert, serve, search, reverse, lookup, details, status'\
"\n\nRun 'pip install nominatim-api' to install the package."
-
return parser