lsst.daf.persistence  21.0.0-4-g5873dc9+9a92674037
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
lsst.daf.persistence.posixStorage.PosixStorage Class Reference
Inheritance diagram for lsst.daf.persistence.posixStorage.PosixStorage:
lsst.daf.persistence.storageInterface.StorageInterface

Public Member Functions

def __init__ (self, uri, create)
 
def __repr__ (self)
 
def write (self, butlerLocation, obj)
 
def read (self, butlerLocation)
 
def butlerLocationExists (self, location)
 
def exists (self, location)
 
def locationWithRoot (self, location)
 
def copyFile (self, fromLocation, toLocation)
 
def getLocalFile (self, path)
 
def instanceSearch (self, path)
 
def getReadFormatter (cls, objType)
 
def getWriteFormatter (cls, objType)
 
def registerFormatters (cls, formatable, readFormatter=None, writeFormatter=None)
 
def getRepositoryCfg (cls, uri)
 
def putRepositoryCfg (cls, cfg, loc=None)
 
def getMapperClass (cls, root)
 
def relativePath (cls, fromPath, toPath)
 
def absolutePath (cls, fromPath, relativePath)
 

Static Public Member Functions

def relativePath (fromPath, toPath)
 
def absolutePath (fromPath, relativePath)
 
def getRepositoryCfg (uri)
 
def putRepositoryCfg (cfg, loc=None)
 
def getMapperClass (root)
 
def getParentSymlinkPath (root)
 
def v1RepoExists (root)
 
def search (root, path, searchParents=False)
 
def storageExists (uri)
 

Public Attributes

 log
 
 root
 

Detailed Description

Defines the interface for a storage location on the local filesystem.

Parameters
----------
uri : string
    URI or path that is used as the storage location.
create : bool
    If True a new repository will be created at the root location if it
    does not exist. If False then a new repository will not be created.

Raises
------
NoRepositroyAtRoot
    If create is False and a repository does not exist at the root
    specified by uri then NoRepositroyAtRoot is raised.

Definition at line 44 of file posixStorage.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.daf.persistence.posixStorage.PosixStorage.__init__ (   self,
  uri,
  create 
)
initialzer

Reimplemented from lsst.daf.persistence.storageInterface.StorageInterface.

Definition at line 62 of file posixStorage.py.

Member Function Documentation

◆ __repr__()

def lsst.daf.persistence.posixStorage.PosixStorage.__repr__ (   self)

Definition at line 70 of file posixStorage.py.

◆ absolutePath() [1/2]

def lsst.daf.persistence.storageInterface.StorageInterface.absolutePath (   cls,
  fromPath,
  relativePath 
)
inherited
Get an absolute path for the path from fromUri to toUri

Parameters
----------
fromPath : the starting location
    A location at which to start. It can be a relative path or an
    absolute path.
relativePath : the location relative to fromPath
    A relative path.

Returns
-------
string
    Path that is an absolute path representation of fromPath +
    relativePath, if one exists. If relativePath is absolute or if
    fromPath is not related to relativePath then relativePath will be
    returned.

Definition at line 373 of file storageInterface.py.

◆ absolutePath() [2/2]

def lsst.daf.persistence.posixStorage.PosixStorage.absolutePath (   fromPath,
  relativePath 
)
static
Get an absolute path for the path from fromUri to toUri

Parameters
----------
fromPath : the starting location
    A location at which to start. It can be a relative path or an
    absolute path.
relativePath : the location relative to fromPath
    A relative path.

Returns
-------
string
    Path that is an absolute path representation of fromPath +
    relativePath, if one exists. If relativePath is absolute or if
    fromPath is not related to relativePath then relativePath will be
    returned.

Definition at line 99 of file posixStorage.py.

◆ butlerLocationExists()

def lsst.daf.persistence.posixStorage.PosixStorage.butlerLocationExists (   self,
  location 
)
Implementation of PosixStorage.exists for ButlerLocation objects.

Definition at line 282 of file posixStorage.py.

◆ copyFile()

def lsst.daf.persistence.posixStorage.PosixStorage.copyFile (   self,
  fromLocation,
  toLocation 
)
Copy a file from one location to another on the local filesystem.

Parameters
----------
fromLocation : path
    Path and name of existing file.
 toLocation : path
    Path and name of new file.

Returns
-------
None

Reimplemented from lsst.daf.persistence.storageInterface.StorageInterface.

Definition at line 350 of file posixStorage.py.

◆ exists()

def lsst.daf.persistence.posixStorage.PosixStorage.exists (   self,
  location 
)
Check if location exists.

Parameters
----------
location : ButlerLocation or string
    A a string or a ButlerLocation that describes the location of an
    object in this storage.

Returns
-------
bool
    True if exists, else False.

Reimplemented from lsst.daf.persistence.storageInterface.StorageInterface.

Definition at line 298 of file posixStorage.py.

◆ getLocalFile()

def lsst.daf.persistence.posixStorage.PosixStorage.getLocalFile (   self,
  path 
)
Get a handle to a local copy of the file, downloading it to a
temporary if needed.

Parameters
----------
A path the the file in storage, relative to root.

Returns
-------
A handle to a local copy of the file. If storage is remote it will be
a temporary file. If storage is local it may be the original file or
a temporary file. The file name can be gotten via the 'name' property
of the returned object.

Reimplemented from lsst.daf.persistence.storageInterface.StorageInterface.

Definition at line 366 of file posixStorage.py.

◆ getMapperClass() [1/2]

def lsst.daf.persistence.storageInterface.StorageInterface.getMapperClass (   cls,
  root 
)
inherited
Get the mapper class associated with a repository root.

Parameters
----------
root : string
    The location of a persisted RepositoryCfg is (new style repos).

Returns
-------
A class object or a class instance, depending on the state of the
mapper when the repository was created.

Definition at line 333 of file storageInterface.py.

◆ getMapperClass() [2/2]

def lsst.daf.persistence.posixStorage.PosixStorage.getMapperClass (   root)
static
Get the mapper class associated with a repository root.

Supports the legacy _parent symlink search (which was only ever posix-only. This should not be used by
new code and repositories; they should use the Repository parentCfg mechanism.

Parameters
----------
root : string
    The location of a persisted ReositoryCfg is (new style repos), or
    the location where a _mapper file is (old style repos).

Returns
-------
A class object or a class instance, depending on the state of the
mapper when the repository was created.

Definition at line 163 of file posixStorage.py.

◆ getParentSymlinkPath()

def lsst.daf.persistence.posixStorage.PosixStorage.getParentSymlinkPath (   root)
static
For Butler V1 Repositories only, if a _parent symlink exists, get the location pointed to by the
symlink.

Parameters
----------
root : string
    A path to the folder on the local filesystem.

Returns
-------
string or None
    A path to the parent folder indicated by the _parent symlink, or None if there is no _parent
    symlink at root.

Definition at line 214 of file posixStorage.py.

◆ getReadFormatter()

def lsst.daf.persistence.storageInterface.StorageInterface.getReadFormatter (   cls,
  objType 
)
inherited
Search in the registered formatters for the objType read formatter.

Parameters
----------
objType : class type
    The type of class to find a formatter for.

Returns
-------
formatter callable
    The formatter callable used to read the object from the storageInterface.

Definition at line 86 of file storageInterface.py.

◆ getRepositoryCfg() [1/2]

def lsst.daf.persistence.storageInterface.StorageInterface.getRepositoryCfg (   cls,
  uri 
)
inherited
Get a persisted RepositoryCfg

Parameters
----------
uri : URI or path to a RepositoryCfg
    Description

Returns
-------
A RepositoryCfg instance or None

Definition at line 294 of file storageInterface.py.

◆ getRepositoryCfg() [2/2]

def lsst.daf.persistence.posixStorage.PosixStorage.getRepositoryCfg (   uri)
static
Get a persisted RepositoryCfg

Parameters
----------
uri : URI or path to a RepositoryCfg
    Description

Returns
-------
A RepositoryCfg instance or None

Definition at line 124 of file posixStorage.py.

◆ getWriteFormatter()

def lsst.daf.persistence.storageInterface.StorageInterface.getWriteFormatter (   cls,
  objType 
)
inherited
Search in the registered formatters for the objType write formatter.

Parameters
----------
objType : class type
    The type of class to find a formatter for.

Returns
-------
formatter callable
    The formatter callable used to write the object to the storageInterface.

Definition at line 102 of file storageInterface.py.

◆ instanceSearch()

def lsst.daf.persistence.posixStorage.PosixStorage.instanceSearch (   self,
  path 
)
Search for the given path in this storage instance.

If the path contains an HDU indicator (a number in brackets before the
dot, e.g. 'foo.fits[1]', this will be stripped when searching and so
will match filenames without the HDU indicator, e.g. 'foo.fits'. The
path returned WILL contain the indicator though, e.g. ['foo.fits[1]'].

Parameters
----------
path : string
    A filename (and optionally prefix path) to search for within root.

Returns
-------
string or None
    The location that was found, or None if no location was found.

Reimplemented from lsst.daf.persistence.storageInterface.StorageInterface.

Definition at line 390 of file posixStorage.py.

◆ locationWithRoot()

def lsst.daf.persistence.posixStorage.PosixStorage.locationWithRoot (   self,
  location 
)
Get the full path to the location.

:param location:
:return:

Reimplemented from lsst.daf.persistence.storageInterface.StorageInterface.

Definition at line 318 of file posixStorage.py.

◆ putRepositoryCfg() [1/2]

def lsst.daf.persistence.posixStorage.PosixStorage.putRepositoryCfg (   cfg,
  loc = None 
)
static

Definition at line 149 of file posixStorage.py.

◆ putRepositoryCfg() [2/2]

def lsst.daf.persistence.storageInterface.StorageInterface.putRepositoryCfg (   cls,
  cfg,
  loc = None 
)
inherited
Serialize a RepositoryCfg to a location.

When loc == cfg.root, the RepositoryCfg is to be written at the root
location of the repository. In that case, root is not written, it is
implicit in the location of the cfg. This allows the cfg to move from
machine to machine without modification.

Parameters
----------
cfg : RepositoryCfg instance
    The RepositoryCfg to be serailized.
loc : string, optional
    The URI location (can be relative path) to write the RepositoryCfg.
    If loc is None, the location will be read from the root parameter
    of loc.

Returns
-------
None

Definition at line 309 of file storageInterface.py.

◆ read()

def lsst.daf.persistence.posixStorage.PosixStorage.read (   self,
  butlerLocation 
)
Read from a butlerLocation.

Parameters
----------
butlerLocation : ButlerLocation
    The location & formatting for the object(s) to be read.

Returns
-------
A list of objects as described by the butler location. One item for
each location in butlerLocation.getLocations()

Reimplemented from lsst.daf.persistence.storageInterface.StorageInterface.

Definition at line 261 of file posixStorage.py.

◆ registerFormatters()

def lsst.daf.persistence.storageInterface.StorageInterface.registerFormatters (   cls,
  formatable,
  readFormatter = None,
  writeFormatter = None 
)
inherited
Register read and/or write formatters for a storageInterface subclass

Parameters
----------
cls : StorageInterface subclass
    The type of StorageInterface the formatter is being registered for.
formatable : class object
    The class object whose instances can be formatted by the formatter.
readFormatter : a read formatter callable
    The formatter function that can be used by the StorageInterface instance to read the object from
    the storage.
writeFormatter : a write formatter callable
    The formatter function that can be used by the StorageInterface instance to write the object to
    the storage.

Raises
------
RuntimeError
    For each object type and StorageInterface subclass the read and write formatters should only be
    registered once. If a second registration occurs for either a RuntimeError is raised.

Definition at line 118 of file storageInterface.py.

◆ relativePath() [1/2]

def lsst.daf.persistence.storageInterface.StorageInterface.relativePath (   cls,
  fromPath,
  toPath 
)
inherited
Get a relative path from a location to a location.

Parameters
----------
fromPath : string
    A path at which to start. It can be a relative path or an
    absolute path.
toPath : string
    A target location. It can be a relative path or an absolute path.

Returns
-------
string
    A relative path that describes the path from fromPath to toPath.

Definition at line 351 of file storageInterface.py.

◆ relativePath() [2/2]

def lsst.daf.persistence.posixStorage.PosixStorage.relativePath (   fromPath,
  toPath 
)
static
Get a relative path from a location to a location.

Parameters
----------
fromPath : string
    A path at which to start. It can be a relative path or an
    absolute path.
toPath : string
    A target location. It can be a relative path or an absolute path.

Returns
-------
string
    A relative path that describes the path from fromPath to toPath.

Definition at line 79 of file posixStorage.py.

◆ search()

def lsst.daf.persistence.posixStorage.PosixStorage.search (   root,
  path,
  searchParents = False 
)
static
Look for the given path in the current root.

Also supports searching for the path in Butler v1 repositories by
following the Butler v1 _parent symlink

If the path contains an HDU indicator (a number in brackets, e.g.
'foo.fits[1]', this will be stripped when searching and so
will match filenames without the HDU indicator, e.g. 'foo.fits'. The
path returned WILL contain the indicator though, e.g. ['foo.fits[1]'].

Parameters
----------
root : string
    The path to the root directory.
path : string
    The path to the file within the root directory.
searchParents : bool, optional
    For Butler v1 repositories only, if true and a _parent symlink
    exists, then the directory at _parent will be searched if the file
    is not found in the root repository. Will continue searching the
    parent of the parent until the file is found or no additional
    parent exists.

Returns
-------
string or None
    The location that was found, or None if no location was found.

Reimplemented from lsst.daf.persistence.storageInterface.StorageInterface.

Definition at line 411 of file posixStorage.py.

◆ storageExists()

def lsst.daf.persistence.posixStorage.PosixStorage.storageExists (   uri)
static
Ask if a storage at the location described by uri exists

Parameters
----------
root : string
    URI to the the root location of the storage

Returns
-------
bool
    True if the storage exists, false if not

Definition at line 495 of file posixStorage.py.

◆ v1RepoExists()

def lsst.daf.persistence.posixStorage.PosixStorage.v1RepoExists (   root)
static
Test if a Version 1 Repository exists.

Version 1 Repositories only exist in posix storages, do not have a
RepositoryCfg file, and contain either a registry.sqlite3 file, a
_mapper file, or a _parent link.

Parameters
----------
root : string
    A path to a folder on the local filesystem.

Returns
-------
bool
    True if the repository at root exists, else False.

Definition at line 327 of file posixStorage.py.

◆ write()

def lsst.daf.persistence.posixStorage.PosixStorage.write (   self,
  butlerLocation,
  obj 
)
Writes an object to a location and persistence format specified by
ButlerLocation

Parameters
----------
butlerLocation : ButlerLocation
    The location & formatting for the object to be written.
obj : object instance
    The object to be written.

Reimplemented from lsst.daf.persistence.storageInterface.StorageInterface.

Definition at line 239 of file posixStorage.py.

Member Data Documentation

◆ log

lsst.daf.persistence.posixStorage.PosixStorage.log

Definition at line 63 of file posixStorage.py.

◆ root

lsst.daf.persistence.posixStorage.PosixStorage.root

Definition at line 64 of file posixStorage.py.


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