Skip to content

Commit

Permalink
in subLevel, allow multiple repos if mapper is the same
Browse files Browse the repository at this point in the history
  • Loading branch information
n8pease committed Feb 10, 2017
1 parent d1f1272 commit dccaae3
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions python/lsst/daf/persistence/butlerSubset.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,22 +240,24 @@ def subItems(self, level=None):
default lower level for the original ButlerSubset level and dataset
type is used.
As currently implemented, the default sublevels for all the
repositories used by this Butler instance must match for the Butler to
be able to select a default sublevel to get the subset.
@param level (str) the hierarchy level to descend to.
@returns (ButlerSubset) resulting from the lower-level query or () if
there is no lower level.
"""

if level is None:
mappers = []
levelSet = set()
for repoData in self.butlerSubset.butler._repos.all().values():
if repoData.repo._mapper not in mappers:
mappers.append(repoData.repo._mapper)
if len(mappers) != 1:
raise RuntimeError("Support for multiple repositories not yet implemented!")
mapper = mappers[0]

# todo: getDefaultSubLevel is not in the mapper API!
level = mapper.getDefaultSubLevel(self.butlerSubset.level)
levelSet.add(repoData.repo._mapper.getDefaultSubLevel(
self.butlerSubset.level))
if len(levelSet) > 1:
raise RuntimeError(
"Support for multiple levels not implemented.")
level = levelSet.pop()
if level is None:
return ()
return self.butlerSubset.butler.subset(self.butlerSubset.datasetType,
Expand Down

0 comments on commit dccaae3

Please sign in to comment.