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
« 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
8from grond.version import __version__
9from grond.meta import GrondError
11guts_prefix = 'grond'
12logger = logging.getLogger('grond.report')
15class RunInfo(Object):
16 tags = List.T(
17 Unicode.T(),
18 help='List of user defined labels')
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)
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)
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)
41 if not isinstance(info, RunInfo):
42 raise GrondError(
43 'Invalid Grond run info in file "%s".' % path)
45 return info
48def write_info(info, path):
49 try:
50 guts.dump(
51 info,
52 filename=path,
53 header='Grond run info file, version %s' % __version__)
55 except OSError:
56 raise GrondError(
57 'Cannot write Grond run info file: %s' % path)