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

21 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-10-09 03:56 -0700

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 

24from lsst.resources import ResourcePath, ResourcePathExpression 

25 

26 

27class SeqFile: 

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

29 numbers""" 

30 

31 filename: ResourcePath 

32 

33 def __init__(self, seqFileName: ResourcePathExpression): 

34 """Constructor 

35 @param seqFileName file name to operate on 

36 """ 

37 self.fileName = ResourcePath(seqFileName) 

38 

39 def nextSeq(self): 

40 """Produce the next sequence number. 

41 @return a sequence number 

42 """ 

43 seq = 0 

44 if not self.fileName.exists(): 

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 self.fileName.open(mode="r") as seqFile: 

57 line = seqFile.readline() 

58 seq = int(line) 

59 return seq 

60 

61 def writeSeq(self, seq): 

62 """Write a sequence number""" 

63 with self.fileName.open(mode="w") as seqFile: 

64 print(seq, file=seqFile)