Coverage for python/lsst/ctrl/execute/seqFile.py: 24%
23 statements
« prev ^ index » next coverage.py v6.5.0, created at 2023-06-06 10:03 +0000
« prev ^ index » next coverage.py v6.5.0, created at 2023-06-06 10:03 +0000
1#!/usr/bin/env python
2#
3# LSST Data Management System
4# Copyright 2008-2016 LSST Corporation.
5#
6# This product includes software developed by the
7# LSST Project (http://www.lsst.org/).
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the LSST License Statement and
20# the GNU General Public License along with this program. If not,
21# see <http://www.lsstcorp.org/LegalNotices/>.
22#
24import os.path
26from lsst.ctrl.execute import envString
29class SeqFile:
30 """Class which can read and increment files used to store sequence
31 numbers"""
33 def __init__(self, seqFileName):
34 """Constructor
35 @param seqFileName file name to operate on
36 """
37 self.fileName = envString.resolve(seqFileName)
39 def nextSeq(self):
40 """Produce the next sequence number.
41 @return a sequence number
42 """
43 seq = 0
44 if not os.path.exists(self.fileName):
45 self.writeSeq(seq)
46 else:
47 seq = self.readSeq()
48 seq += 1
49 self.writeSeq(seq)
50 return seq
52 def readSeq(self):
53 """Read a sequence number
54 @return a sequence number
55 """
56 with open(self.fileName) as seqFile:
57 line = seqFile.read()
58 seq = int(line)
59 seqFile.close()
60 return seq
62 def writeSeq(self, seq):
63 """Write a sequence number"""
64 with open(self.fileName, "w") as seqFile:
65 print(seq, file=seqFile)
66 seqFile.close()