Coverage for /usr/local/lib/python3.11/dist-packages/pyrocko/squirrel/tool/commands/check.py: 33%

24 statements  

« prev     ^ index     » next       coverage.py v6.5.0, created at 2023-10-06 15:01 +0000

1# http://pyrocko.org - GPLv3 

2# 

3# The Pyrocko Developers, 21st Century 

4# ---|P------/S----------~Lg---------- 

5 

6''' 

7Implementation of :app:`squirrel check`. 

8''' 

9 

10import sys 

11 

12from pyrocko.squirrel.check import do_check, SquirrelCheckProblemType 

13 

14from ..common import csvtype, dq, ldq 

15 

16headline = 'Check dataset consistency.' 

17 

18 

19def make_subparser(subparsers): 

20 return subparsers.add_parser( 

21 'check', 

22 help=headline, 

23 description=headline + ''' 

24 

25A report listing potential dataset/metadata problems for a given data 

26collection is printed to standard output. The following problems are detected: 

27 

28%s 

29''' % '\n'.join( 

30 ' [%s]: %s' % (k, v) 

31 for (k, v) in SquirrelCheckProblemType.types.items())) 

32 

33 

34def setup(parser): 

35 parser.add_squirrel_selection_arguments() 

36 parser.add_squirrel_query_arguments(without=['kinds']) 

37 parser.add_argument( 

38 '--ignore', 

39 type=csvtype(SquirrelCheckProblemType.choices), 

40 metavar='TYPE,...', 

41 help='Problem types to be ignored. Choices: %s.' 

42 % ldq(SquirrelCheckProblemType.choices)) 

43 

44 parser.add_argument( 

45 '--verbose', '-v', 

46 action='count', 

47 dest='verbosity', 

48 default=0, 

49 help='Verbose mode for textual output. Multiple ``-v`` options ' 

50 'increase the verbosity. The maximum is 2. At level 1, ``ok`` ' 

51 'indicators are printed for entries with no problem. At level 2, ' 

52 'availability information is shown for each entry.') 

53 

54 format_default = 'text' 

55 format_choices = ['text', 'yaml'] 

56 

57 parser.add_argument( 

58 '--out-format', 

59 choices=format_choices, 

60 default=format_default, 

61 dest='output_format', 

62 metavar='FMT', 

63 help='Specifies how output is presented. Choices: %s. ' 

64 'Default: %s.' % (ldq(format_choices), dq(format_default))) 

65 

66 

67def run(parser, args): 

68 squirrel = args.make_squirrel() 

69 

70 check = do_check( 

71 squirrel, 

72 ignore=args.ignore or [], 

73 **args.squirrel_query) 

74 

75 if args.output_format == 'text': 

76 print(check.get_text(verbosity=args.verbosity)) 

77 elif args.output_format == 'yaml': 

78 print(check) 

79 else: 

80 assert False 

81 

82 sys.exit(0 if check.get_nproblems() == 0 else 1)