LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Public Attributes | List of all members
lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite Class Reference

Public Member Functions

def __init__ (self, name)
 
def __enter__ (self)
 
def __exit__ (self, type, value, traceback)
 
def open (self)
 
def close (self)
 
def readable (self)
 
def writeable (self)
 
def read (self, size=None)
 
def write (self, str)
 

Public Attributes

 log
 
 name
 

Detailed Description

File-like object that is used to create a file if needed, lock it with an exclusive lock, and contain
file descriptors to readable and writable versions of the file.

This will only open a file descriptor in 'write' mode if a write operation is performed. If no write
operation is performed, the existing file (if there is one) will not be overwritten.

Contains __enter__ and __exit__ functions so this can be used by a context manager.

Definition at line 174 of file safeFileIo.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite.__init__ (   self,
  name 
)

Definition at line 183 of file safeFileIo.py.

183  def __init__(self, name):
184  self.log = Log.getLogger("daf.persistence.butler")
185  self.name = name
186  self._readable = None
187  self._writeable = None
188  safeMakeDir(os.path.split(name)[0])
189 

Member Function Documentation

◆ __enter__()

def lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite.__enter__ (   self)

Definition at line 190 of file safeFileIo.py.

190  def __enter__(self):
191  self.open()
192  return self
193 

◆ __exit__()

def lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite.__exit__ (   self,
  type,
  value,
  traceback 
)

Definition at line 194 of file safeFileIo.py.

194  def __exit__(self, type, value, traceback):
195  self.close()
196 

◆ close()

def lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite.close (   self)

Definition at line 203 of file safeFileIo.py.

203  def close(self):
204  self.log.debug("Releasing exclusive lock on {}".format(self.name))
205  if self._writeable is not None:
206  self._writeable.close()
207  if self._readable is not None:
208  self._readable.close()
209  self._fileHandle.close()
210 
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:174

◆ open()

def lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite.open (   self)

Definition at line 197 of file safeFileIo.py.

197  def open(self):
198  self._fileHandle = open(self.name, 'a')
199  self.log.debug("Acquiring exclusive lock on {}".format(self.name))
200  fcntl.flock(self._fileHandle, fcntl.LOCK_EX)
201  self.log.debug("Acquired exclusive lock on {}".format(self.name))
202 

◆ read()

def lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite.read (   self,
  size = None 
)

Definition at line 223 of file safeFileIo.py.

223  def read(self, size=None):
224  if size is not None:
225  return self.readable.read(size)
226  return self.readable.read()
227 
std::shared_ptr< table::io::Persistable > read(table::io::InputArchive const &archive, table::io::CatalogVector const &catalogs) const override
Definition: warpExposure.cc:0

◆ readable()

def lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite.readable (   self)

Definition at line 212 of file safeFileIo.py.

212  def readable(self):
213  if self._readable is None:
214  self._readable = open(self.name, 'r')
215  return self._readable
216 

◆ write()

def lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite.write (   self,
  str 
)

Definition at line 228 of file safeFileIo.py.

228  def write(self, str):
229  self.writeable.write(str)
void write(OutputArchiveHandle &handle) const override

◆ writeable()

def lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite.writeable (   self)

Definition at line 218 of file safeFileIo.py.

218  def writeable(self):
219  if self._writeable is None:
220  self._writeable = open(self.name, 'w')
221  return self._writeable
222 

Member Data Documentation

◆ log

lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite.log

Definition at line 184 of file safeFileIo.py.

◆ name

lsst.daf.persistence.safeFileIo.SafeLockedFileForWrite.name

Definition at line 185 of file safeFileIo.py.


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