Coverage for python/lsst/obs/base/cli/cmd/commands.py : 90%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# This file is part of obs_base.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (http://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
22import click
24from lsst.daf.butler.cli.opt import (repo_argument,
25 config_option,
26 config_file_option,
27 locations_argument,
28 options_file_option,
29 processes_option,
30 regex_option,
31 run_option,
32 transfer_option
33 )
34from lsst.daf.butler.cli.utils import (
35 ButlerCommand,
36 cli_handle_exception,
37 split_commas,
38 typeStrAcceptsMultiple
39)
40from ..opt import instrument_argument
41from ... import script
44# regular expression that can be used to find supported fits file extensions.
45fits_re = r"\.fit[s]?\b"
48@click.command(short_help="Convert a gen2 repo to gen3.", cls=ButlerCommand)
49@repo_argument(required=True,
50 help="REPO is the URI or path to the gen3 repository. Will be created if it does not already "
51 "exist")
52@click.option("--gen2root", required=True,
53 help="Root path of the gen 2 repo to be converted.")
54@click.option("--skymap-name",
55 help="Name of the new gen3 skymap (e.g. 'discrete/ci_hsc').")
56@click.option("--skymap-config",
57 help="Path to skymap config file defining the new gen3 skymap.")
58@click.option("--calibs",
59 help="Path to the gen 2 calibration repo. It can be absolute or relative to gen2root.")
60@click.option("--reruns", multiple=True, callback=split_commas, metavar=typeStrAcceptsMultiple,
61 help="List of gen 2 reruns to convert.")
62@transfer_option(help="Mode to use to transfer files into the new repository.")
63@processes_option()
64@config_file_option(help="Path to a `ConvertRepoConfig` override to be included after the Instrument config "
65 "overrides are applied.")
66@options_file_option()
67def convert(*args, **kwargs):
68 """Convert a Butler gen 2 repository into a gen 3 repository."""
69 cli_handle_exception(script.convert, *args, **kwargs)
72@click.command(short_help="Define visits from exposures.", cls=ButlerCommand)
73@repo_argument(required=True)
74@instrument_argument(required=True)
75@config_file_option(help="Path to a pex_config override to be included after the Instrument config overrides "
76 "are applied.")
77@click.option("--collections",
78 help="The collections to be searched (in order) when reading datasets.",
79 multiple=True,
80 callback=split_commas,
81 metavar=typeStrAcceptsMultiple)
82@processes_option()
83@options_file_option()
84def define_visits(*args, **kwargs):
85 """Define visits from exposures in the butler registry."""
86 cli_handle_exception(script.defineVisits, *args, **kwargs)
89@click.command(short_help="Ingest raw frames.", cls=ButlerCommand)
90@repo_argument(required=True)
91@locations_argument(help="LOCATIONS specifies files to ingest and/or locations to search for files.",
92 required=True)
93@regex_option(default=fits_re,
94 help="Regex string used to find files in directories listed in LOCATIONS. "
95 "Searches for fits files by default.")
96@config_option(metavar="TEXT=TEXT", multiple=True)
97@config_file_option(type=click.Path(exists=True, writable=False, file_okay=True, dir_okay=False))
98@run_option(required=False)
99@transfer_option()
100@processes_option()
101@click.option("--ingest-task", default="lsst.obs.base.RawIngestTask", help="The fully qualified class name "
102 "of the ingest task to use.")
103@options_file_option()
104def ingest_raws(*args, **kwargs):
105 """Ingest raw frames into from a directory into the butler registry"""
106 cli_handle_exception(script.ingestRaws, *args, **kwargs)
109@click.command(short_help="Add an instrument to the repository", cls=ButlerCommand)
110@repo_argument(required=True)
111@instrument_argument(required=True, nargs=-1, help="The fully-qualified name of an Instrument subclass.")
112def register_instrument(*args, **kwargs):
113 """Add an instrument to the data repository.
114 """
115 cli_handle_exception(script.registerInstrument, *args, **kwargs)
118@click.command(short_help="Add an instrument's curated calibrations.", cls=ButlerCommand)
119@repo_argument(required=True)
120@instrument_argument(required=True)
121@click.option("--collection", required=False,
122 help="Name of the calibration collection that associates datasets with validity ranges.")
123@click.option("--suffix", required=False,
124 help=("Name suffix to append (with an automatic delimiter) to all RUN collection names "
125 "as well as the calibration collection name if it is not provided via --collection."))
126@options_file_option()
127def write_curated_calibrations(*args, **kwargs):
128 """Add an instrument's curated calibrations to the data repository.
129 """
130 cli_handle_exception(script.writeCuratedCalibrations, *args, **kwargs)