Coverage for python/lsst/ctrl/execute/seqFile.py: 24%

23 statements  

« prev     ^ index     » next       coverage.py v7.3.0, created at 2023-08-16 10:25 +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# 

23 

24import os.path 

25 

26from lsst.ctrl.execute import envString 

27 

28 

29class SeqFile: 

30 """Class which can read and increment files used to store sequence 

31 numbers""" 

32 

33 def __init__(self, seqFileName): 

34 """Constructor 

35 @param seqFileName file name to operate on 

36 """ 

37 self.fileName = envString.resolve(seqFileName) 

38 

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 

51 

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 

61 

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()