Skip to content

Commit

Permalink
Add cli support for removeDatasetTypes
Browse files Browse the repository at this point in the history
  • Loading branch information
Fireye04 committed Mar 3, 2023
1 parent c236a44 commit 9b55e00
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 5 deletions.
4 changes: 2 additions & 2 deletions python/lsst/daf/butler/cli/cmd/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -451,9 +451,9 @@ def query_dataset_types(*args: Any, **kwargs: Any) -> None:

@click.command(cls=ButlerCommand)
@repo_argument(required=True)
@click.argument("dataset-type-name", nargs=1)
@click.argument("dataset-type-name", nargs=-1)
def remove_dataset_type(*args: Any, **kwargs: Any) -> None:
"""Remove a dataset type definition from a repository."""
"""Remove the dataset type definitions from a repository."""
script.removeDatasetType(*args, **kwargs)


Expand Down
2 changes: 1 addition & 1 deletion python/lsst/daf/butler/registries/sql.py
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,7 @@ def removeDatasetType(self, name: str | tuple([str, ...])) -> None:
else:
for datasetType in datasetTypes:
self._managers.datasets.remove(datasetType.name)
_LOG.info("Removed %r", datasetType.name)
_LOG.info("Removed dataset type %r", datasetType.name)

def getDatasetType(self, name: str) -> DatasetType:
# Docstring inherited from lsst.daf.butler.registry.Registry
Expand Down
2 changes: 1 addition & 1 deletion python/lsst/daf/butler/registry/_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -609,7 +609,7 @@ def removeDatasetType(self, name: str | tuple([str, ...])) -> None:
----------
name : `str` or `tuple([str, ...])`
Name of the type to be removed or tuple containing a list of type
names to be removed.
names to be removed. Wildcards are allowed.
Raises
------
Expand Down
2 changes: 1 addition & 1 deletion python/lsst/daf/butler/script/removeDatasetType.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
from .._butler import Butler


def removeDatasetType(repo: str, dataset_type_name: str) -> None:
def removeDatasetType(repo: str, dataset_type_name: tuple[str, ...]) -> None:
"""Remove the named dataset type definition.
Parameters
Expand Down
93 changes: 93 additions & 0 deletions tests/test_cliCmdQueryDatasetTypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,99 @@ def testQueryDatasetTypes(self):
self.assertEqual(result.exit_code, 0, clickResultMsg(result))
self.assertIn("No results", result.output)

def testRemoveDatasetTypes(self):
self.maxDiff = None
datasetName = "test"
instrumentDimension = "instrument"
visitDimension = "visit"
storageClassName = "StructuredDataDict"
runner = LogCliRunner()
with runner.isolated_filesystem():
result = runner.invoke(cli, ["create", "here"])
self.assertEqual(result.exit_code, 0, clickResultMsg(result))
for name in (
datasetName,
"testA",
"testB",
"testC",
"testD",
"other",
"another",
"option",
"option2",
"placeholder",
):
# Create the dataset type.
result = runner.invoke(
cli,
[
"register-dataset-type",
"here",
name,
storageClassName,
instrumentDimension,
visitDimension,
],
)

# Check wildcard / literal combination.
result = runner.invoke(cli, ["remove-dataset-type", "here", "*other", "testA"])
self.assertEqual(result.exit_code, 0, clickResultMsg(result))
self.assertDatasetTypes(
runner,
"*",
(
"option",
"option2",
"placeholder",
"test",
"testB",
"testC",
"testD",
),
)

# Check literal / literal combination.
result = runner.invoke(cli, ["remove-dataset-type", "here", "option", "testB"])
self.assertEqual(result.exit_code, 0, clickResultMsg(result))
self.assertDatasetTypes(
runner,
"*",
(
"option2",
"placeholder",
"test",
"testC",
"testD",
),
)

# Check wildcard.
result = runner.invoke(cli, ["remove-dataset-type", "here", "test*"])
self.assertEqual(result.exit_code, 0, clickResultMsg(result))
self.assertDatasetTypes(
runner,
"*",
(
"option2",
"placeholder",
),
)

# Check literal.
result = runner.invoke(cli, ["remove-dataset-type", "here", "option2"])
self.assertEqual(result.exit_code, 0, clickResultMsg(result))
self.assertDatasetTypes(runner, "*", ("placeholder",))

def assertDatasetTypes(self, runner: LogCliRunner, query: str, expected: tuple[str, ...]) -> None:
result = runner.invoke(cli, ["query-dataset-types", "here", query])
self.assertEqual(result.exit_code, 0, clickResultMsg(result))
expected = AstropyTable(
(expected,),
names=("name",),
)
self.assertAstropyTablesEqual(readTable(result.output), expected)


if __name__ == "__main__":
unittest.main()

0 comments on commit 9b55e00

Please sign in to comment.