LSST Applications  21.0.0+75b29a8a7f,21.0.0+e70536a077,21.0.0-1-ga51b5d4+62c747d40b,21.0.0-10-gbfb87ad6+3307648ee3,21.0.0-15-gedb9d5423+47cba9fc36,21.0.0-2-g103fe59+fdf0863a2a,21.0.0-2-g1367e85+d38a93257c,21.0.0-2-g45278ab+e70536a077,21.0.0-2-g5242d73+d38a93257c,21.0.0-2-g7f82c8f+e682ffb718,21.0.0-2-g8dde007+d179fbfa6a,21.0.0-2-g8f08a60+9402881886,21.0.0-2-ga326454+e682ffb718,21.0.0-2-ga63a54e+08647d4b1b,21.0.0-2-gde069b7+26c92b3210,21.0.0-2-gecfae73+0445ed2f95,21.0.0-2-gfc62afb+d38a93257c,21.0.0-27-gbbd0d29+ae871e0f33,21.0.0-28-g5fc5e037+feb0e9397b,21.0.0-3-g21c7a62+f4b9c0ff5c,21.0.0-3-g357aad2+57b0bddf0b,21.0.0-3-g4be5c26+d38a93257c,21.0.0-3-g65f322c+3f454acf5d,21.0.0-3-g7d9da8d+75b29a8a7f,21.0.0-3-gaa929c8+9e4ef6332c,21.0.0-3-ge02ed75+4b120a55c4,21.0.0-4-g3300ddd+e70536a077,21.0.0-4-g591bb35+4b120a55c4,21.0.0-4-gc004bbf+4911b9cd27,21.0.0-4-gccdca77+f94adcd104,21.0.0-4-ge8fba5a+2b3a696ff9,21.0.0-5-gb155db7+2c5429117a,21.0.0-5-gdf36809+637e4641ee,21.0.0-6-g00874e7+c9fd7f7160,21.0.0-6-g4e60332+4b120a55c4,21.0.0-7-gc8ca178+40eb9cf840,21.0.0-8-gfbe0b4b+9e4ef6332c,21.0.0-9-g2fd488a+d83b7cd606,w.2021.05
LSST Data Management Base Package
Public Member Functions | Public Attributes | List of all members
lsst.obs.base.gen2to3.repoWalker.handlers.ParsedPathElementHandler Class Reference
Inheritance diagram for lsst.obs.base.gen2to3.repoWalker.handlers.ParsedPathElementHandler:
lsst.obs.base.gen2to3.repoWalker.scanner.PathElementHandler lsst.obs.base.gen2to3.repoWalker.handlers.SkipHandler lsst.obs.base.gen2to3.repoWalker.handlers.SubdirectoryHandler lsst.obs.base.gen2to3.repoWalker.handlers.TargetFileHandler lsst.obs.base.gen2to3.repoWalker.handlers.MultiExtensionFileHandler

Public Member Functions

def __init__ (self, PathElementParser parser)
 
def __str__ (self)
 
bool __call__ (self, str path, str name, Mapping[DatasetType, Mapping[Optional[str], List[FileDataset]]] datasets, *Callable[[DataCoordinate], bool] predicate)
 
int rank (self)
 
def handle (self, str path, dict nextDataId2, Mapping[DatasetType, Mapping[Optional[str], List[FileDataset]]] datasets, *Callable[[DataCoordinate], bool] predicate)
 
bool isForFiles (self)
 
Tuple[Optional[DataCoordinate], Optional[str]] translate (self, dict dataId2, *bool partial=False)
 
def __lt__ (self, PathElementHandler other)
 

Public Attributes

 lastDataId2
 

Detailed Description

An intermediate base class for `PathElementHandler` classes that utilize
a `PathElementParser` to match a Gen2 filename template.

Parameters
----------
parser : `PathElementParser`
    An object that matches the path element this handler is responsible for
    and extracts a (partial) Gen2 data ID from it.

Definition at line 101 of file handlers.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.obs.base.gen2to3.repoWalker.handlers.ParsedPathElementHandler.__init__ (   self,
PathElementParser  parser 
)

Reimplemented in lsst.obs.base.gen2to3.repoWalker.handlers.SubdirectoryHandler.

Definition at line 111 of file handlers.py.

111  def __init__(self, parser: PathElementParser):
112  super().__init__()
113  self._parser = parser
114 

Member Function Documentation

◆ __call__()

bool lsst.obs.base.gen2to3.repoWalker.handlers.ParsedPathElementHandler.__call__ (   self,
str  path,
str  name,
Mapping[DatasetType, Mapping[Optional[str], List[FileDataset]]]  datasets,
*Callable[[DataCoordinate], bool]  predicate 
)
Apply the handler to a file path.

Parameters
----------
path : `str`
    Full path of the file or directory.
name : `str`
    Local name of the file or directory within its parent directory.
datasets : `dict` [`DatasetType`, `dict` ]
    Dictionary that found datasets should be added to.  Nested dicts
    are keyed by either `None` (for most datasets) or a `str`
    "CALIBDATE" for calibration datasets.
predicate : `~collections.abc.Callable`
    A callable taking a single `DataCoordinate` argument and returning
    `bool`, indicating whether that (Gen3) data ID represents one
    that should be included in the scan.'

Returns
-------
matched : `bool`
    `True` if this handler was a match for the given path and no other
    handlers need to be tried on it, `False` otherwise.

Reimplemented from lsst.obs.base.gen2to3.repoWalker.scanner.PathElementHandler.

Definition at line 120 of file handlers.py.

122  predicate: Callable[[DataCoordinate], bool]) -> bool:
123  # Docstring inherited from PathElementParser.
124  nextDataId2 = self._parser.parse(name, self.lastDataId2)
125  if nextDataId2 is None:
126  return False
127  self.handle(path, nextDataId2, datasets, predicate=predicate)
128  return True
129 

◆ __lt__()

def lsst.obs.base.gen2to3.repoWalker.scanner.PathElementHandler.__lt__ (   self,
PathElementHandler  other 
)
inherited
Handlers are sorted by rank to reduce the possibility that more
flexible handlers will have a chance to match something they shouldn't.

Definition at line 140 of file scanner.py.

140  def __lt__(self, other: PathElementHandler):
141  """Handlers are sorted by rank to reduce the possibility that more
142  flexible handlers will have a chance to match something they shouldn't.
143  """
144  return self.rank < other.rank
145 

◆ __str__()

def lsst.obs.base.gen2to3.repoWalker.handlers.ParsedPathElementHandler.__str__ (   self)

Reimplemented in lsst.obs.base.gen2to3.repoWalker.handlers.TargetFileHandler.

Definition at line 117 of file handlers.py.

117  def __str__(self):
118  return f"{type(self).__name__}(parser={self._parser})"
119 

◆ handle()

def lsst.obs.base.gen2to3.repoWalker.handlers.ParsedPathElementHandler.handle (   self,
str  path,
dict  nextDataId2,
Mapping[DatasetType, Mapping[Optional[str], List[FileDataset]]]  datasets,
*Callable[[DataCoordinate], bool]  predicate 
)
Customization hook for ``__call__``.

Subclasses must override this method, while external callers (i.e.
`DirectoryScanner` should instead invoke `__call__`.

Parameters
----------
path : `str`
    Full path of the file or directory.
nextDataId2 : `dict`
    Gen2 data ID (usually partial) extracted from the path so far.
datasets : `dict` [`DatasetType`, `list` [`FileDataset`] ]
    Dictionary that found datasets should be added to.
predicate : `~collections.abc.Callable`
    A callable taking a single `DataCoordinate` argument and returning
    `bool`, indicating whether that (Gen3) data ID represents one
    that should be included in the scan.
formatterMap : `dict`, optional
    Map dataset type to specialist formatter.

Reimplemented in lsst.obs.base.gen2to3.repoWalker.handlers.SkipHandler.

Definition at line 136 of file handlers.py.

138  predicate: Callable[[DataCoordinate], bool]):
139  """Customization hook for ``__call__``.
140 
141  Subclasses must override this method, while external callers (i.e.
142  `DirectoryScanner` should instead invoke `__call__`.
143 
144  Parameters
145  ----------
146  path : `str`
147  Full path of the file or directory.
148  nextDataId2 : `dict`
149  Gen2 data ID (usually partial) extracted from the path so far.
150  datasets : `dict` [`DatasetType`, `list` [`FileDataset`] ]
151  Dictionary that found datasets should be added to.
152  predicate : `~collections.abc.Callable`
153  A callable taking a single `DataCoordinate` argument and returning
154  `bool`, indicating whether that (Gen3) data ID represents one
155  that should be included in the scan.
156  formatterMap : `dict`, optional
157  Map dataset type to specialist formatter.
158  """
159  raise NotImplementedError()
160 
161 

◆ isForFiles()

bool lsst.obs.base.gen2to3.repoWalker.scanner.PathElementHandler.isForFiles (   self)
inherited
Report what kind of path element this object handlers.

Returns
-------
Return `True` if this handler is for file entries, or `False` if it
is for directories.

Reimplemented in lsst.obs.base.gen2to3.repoWalker.handlers.TargetFileHandler, lsst.obs.base.gen2to3.repoWalker.handlers.SubdirectoryHandler, lsst.obs.base.gen2to3.repoWalker.handlers.SkipHandler, and lsst.obs.base.gen2to3.repoWalker.handlers.IgnoreHandler.

Definition at line 65 of file scanner.py.

65  def isForFiles(self) -> bool:
66  """Report what kind of path element this object handlers.
67 
68  Returns
69  -------
70  Return `True` if this handler is for file entries, or `False` if it
71  is for directories.
72  """
73  raise NotImplementedError()
74 

◆ rank()

int lsst.obs.base.gen2to3.repoWalker.handlers.ParsedPathElementHandler.rank (   self)
Return a rough indication of how flexible this handler is in terms
of the path element names it can match.

Handlers that match a constant path element should always return zero.

Reimplemented from lsst.obs.base.gen2to3.repoWalker.scanner.PathElementHandler.

Definition at line 131 of file handlers.py.

131  def rank(self) -> int:
132  # Docstring inherited from PathElementParser.
133  return len(self._parser.keys)
134 

◆ translate()

Tuple[Optional[DataCoordinate], Optional[str]] lsst.obs.base.gen2to3.repoWalker.scanner.PathElementHandler.translate (   self,
dict  dataId2,
*bool   partial = False 
)
inherited
Translate the given data ID from Gen2 to Gen3.

The default implementation returns `None`.  Subclasses that are able
to translate data IDs should override this method.

Parameters
----------
dataId2 : `dict`
    Gen2 data ID.
partial : `bool`, optional
    If `True` (`False` is default) this is a partial data ID for some
    dataset, and missing keys are expected.

Returns
-------
dataId3 : `lsst.daf.butler.DataCoordinate` or `None`
    A Gen3 data ID, or `None` if this handler cannot translate data
    IDs.
calibDate : `str` or `None`
    A Gen2 calibration "CALIBDATE" value, or `None` if there was no
    such value in the template.

Reimplemented in lsst.obs.base.gen2to3.repoWalker.handlers.MultiExtensionFileHandler, lsst.obs.base.gen2to3.repoWalker.handlers.TargetFileHandler, and lsst.obs.base.gen2to3.repoWalker.handlers.SubdirectoryHandler.

Definition at line 114 of file scanner.py.

115  ) -> Tuple[Optional[DataCoordinate], Optional[str]]:
116  """Translate the given data ID from Gen2 to Gen3.
117 
118  The default implementation returns `None`. Subclasses that are able
119  to translate data IDs should override this method.
120 
121  Parameters
122  ----------
123  dataId2 : `dict`
124  Gen2 data ID.
125  partial : `bool`, optional
126  If `True` (`False` is default) this is a partial data ID for some
127  dataset, and missing keys are expected.
128 
129  Returns
130  -------
131  dataId3 : `lsst.daf.butler.DataCoordinate` or `None`
132  A Gen3 data ID, or `None` if this handler cannot translate data
133  IDs.
134  calibDate : `str` or `None`
135  A Gen2 calibration "CALIBDATE" value, or `None` if there was no
136  such value in the template.
137  """
138  return None, None
139 

Member Data Documentation

◆ lastDataId2

lsst.obs.base.gen2to3.repoWalker.scanner.PathElementHandler.lastDataId2
inherited

Definition at line 60 of file scanner.py.


The documentation for this class was generated from the following file: