Source code for datumaro.cli.contexts.source

# Copyright (C) 2019-2021 Intel Corporation
#
# SPDX-License-Identifier: MIT

import argparse

from datumaro.util.scope import scope_add, scoped

from ..commands.require_project.modification import add, import_, remove
from ..util import MultilineFormatter, add_subparser
from ..util.project import load_project


[docs] def build_info_parser(parser_ctor=argparse.ArgumentParser): parser = parser_ctor() parser.add_argument("name", nargs="?", help="Source name") parser.add_argument("-v", "--verbose", action="store_true", help="Show details") parser.add_argument( "-p", "--project", dest="project_dir", help="Directory of the project to operate on (default: current dir)", ) parser.set_defaults(command=info_command) return parser
[docs] def get_info_sensitive_args(): return { info_command: [ "name", "project_dir", ], }
[docs] @scoped def info_command(args): project = scope_add(load_project(args.project_dir)) if args.name: source = project.working_tree.sources[args.name] print(source) else: for name, conf in project.working_tree.sources.items(): print(name) if args.verbose: print(conf)
[docs] def build_parser(parser_ctor=argparse.ArgumentParser): parser = parser_ctor( description=""" Manipulate data sources inside of a project.|n |n A data source is a source of data for a project. The project combines multiple data sources into one dataset. The role of a data source is to provide dataset items - images and/or annotations.|n |n By default, the project to be operated on is searched for in the current directory. An additional '-p' argument can be passed to specify project location. """, formatter_class=MultilineFormatter, ) subparsers = parser.add_subparsers() add_subparser(subparsers, "import", import_.build_parser) add_subparser(subparsers, "add", add.build_parser) add_subparser(subparsers, "remove", remove.build_parser) # TODO: we should distinguish this with datumaro/cli/project_commands/dataset_operations/info.py add_subparser(subparsers, "info", build_info_parser) return parser
[docs] def get_sensitive_args(): return { **add.get_sensitive_args(), **import_.get_sensitive_args(), **remove.get_sensitive_args(), **get_info_sensitive_args(), }