Source code for panoptes.utils.cli.main

import sys

import typer
from loguru import logger
from rich import print

from panoptes.utils.cli import image

try:
    from panoptes.utils.cli import config as config_cli
    from panoptes.utils.config import server as _config_server  # noqa: F401  # requires "config" extra
except ImportError:
    config_cli = None

try:
    from panoptes.utils.cli import telemetry
except ImportError:
    telemetry = None

app = typer.Typer()


[docs] @app.callback() def main(verbose: bool = False): """PANOPTES Utilities CLI. Args: verbose: Enable DEBUG-level logging. Defaults to False (INFO level). """ # Setup the logger. logger.remove() if verbose: logger.add(sys.stderr, level="DEBUG") else: logger.add(sys.stderr, level="INFO")
app.add_typer(image.app, name="image", help="Process an image.") if config_cli is not None: app.add_typer(config_cli.app, name="config", help="Manage the config server.") else: _config_app = typer.Typer(help="Config commands require optional dependencies.") @_config_app.callback() def _config_main() -> None: """Placeholder config command when optional dependencies are missing.""" print( "Config support is not available. To enable it, install the 'config' extra:\n" " pip install 'panoptes-utils[config]'" ) app.add_typer(_config_app, name="config", help="Manage the config server.") if telemetry is not None: app.add_typer(telemetry.app, name="telemetry", help="Run the telemetry server.") else: telemetry_app = typer.Typer(help="Telemetry commands require optional dependencies.") @telemetry_app.callback() def telemetry_main() -> None: """Placeholder telemetry command when optional dependencies are missing.""" print( "Telemetry support is not available. To enable it, install the 'telemetry' extra:\n" " pip install 'panoptes-utils[telemetry]'" ) app.add_typer(telemetry_app, name="telemetry", help="Run the telemetry server.") if __name__ == "__main__": app()