Coverage for /usr/local/lib/python3.11/dist-packages/grond/run_info.py: 41%

32 statements  

« prev     ^ index     » next       coverage.py v6.5.0, created at 2024-11-27 15:15 +0000

1# https://pyrocko.org/grond - GPLv3 

2# 

3# The Grond Developers, 21st Century 

4import logging 

5from pyrocko import guts 

6from pyrocko.guts import List, Unicode, Object 

7 

8from grond.version import __version__ 

9from grond.meta import GrondError 

10 

11guts_prefix = 'grond' 

12logger = logging.getLogger('grond.report') 

13 

14 

15class RunInfo(Object): 

16 tags = List.T( 

17 Unicode.T(), 

18 help='List of user defined labels') 

19 

20 def add_tag(self, tag): 

21 if tag not in self.tags: 

22 self.tags.append(tag) 

23 self.tags.sort() 

24 else: 

25 logger.warning('While adding tag: tag already set: %s' % tag) 

26 

27 def remove_tag(self, tag): 

28 try: 

29 self.tags.remove(tag) 

30 except ValueError: 

31 logger.warning('While removing tag: tag not set: %s' % tag) 

32 

33 

34def read_info(path): 

35 try: 

36 info = guts.load(filename=path) 

37 except OSError: 

38 raise GrondError( 

39 'Cannot read Grond run info file: %s' % path) 

40 

41 if not isinstance(info, RunInfo): 

42 raise GrondError( 

43 'Invalid Grond run info in file "%s".' % path) 

44 

45 return info 

46 

47 

48def write_info(info, path): 

49 try: 

50 guts.dump( 

51 info, 

52 filename=path, 

53 header='Grond run info file, version %s' % __version__) 

54 

55 except OSError: 

56 raise GrondError( 

57 'Cannot write Grond run info file: %s' % path)