Coverage for ligo / followup_advocate / tool.py: 100%

41 statements  

« prev     ^ index     » next       coverage.py v7.12.0, created at 2025-12-04 17:32 +0000

1import argparse 

2 

3from ligo.gracedb import rest 

4 

5from .. import followup_advocate 

6 

7 

8def main(args=None): 

9 parser = argparse.ArgumentParser() 

10 parser.add_argument( 

11 '--version', action='version', version=followup_advocate.__version__) 

12 parser.add_argument( 

13 '--service', default=rest.DEFAULT_SERVICE_URL, help='GraceDb API URL') 

14 parser.add_argument( 

15 '--remove_text_wrap', action='store_true', 

16 help='Remove text wrapping') 

17 subparsers = parser.add_subparsers(help='sub-command help') 

18 

19 authors = argparse.ArgumentParser(add_help=False) 

20 authors.add_argument( 

21 'authors', metavar="'A. Einstein (IAS)'", nargs='*', help='Authors') 

22 

23 def add_command(func, **kwargs): 

24 subparser = subparsers.add_parser( 

25 func.__name__, **dict(kwargs, help=func.__doc__)) 

26 subparser.set_defaults(func=func) 

27 return subparser 

28 

29 cmd = add_command(followup_advocate.authors, parents=[authors]) 

30 

31 cmd = add_command(followup_advocate.compose, parents=[authors]) 

32 cmd.add_argument( 

33 '-m', '--mailto', action='store_true', 

34 help='Open new message in default e-mail client [default: false]') 

35 cmd.add_argument('gracedb_id', metavar='S123456', 

36 help='GraceDB ID of superevent') 

37 

38 cmd = add_command(followup_advocate.compose_raven, parents=[authors]) 

39 cmd.add_argument('gracedb_id', metavar='S123456', 

40 help='GraceDB ID of superevent') 

41 cmd.add_argument('--gw_is_subthreshold', 

42 required=False, action='store_true', 

43 help='If given, flag GW as subthreshold') 

44 

45 cmd = add_command(followup_advocate.compose_llama, parents=[authors]) 

46 cmd.add_argument('gracedb_id', metavar='S123456', help='GraceDB ID') 

47 cmd.add_argument('--icecube_alert', metavar='IceCube-230501', 

48 required=False, 

49 default=None, help='IceCube alert ID') 

50 

51 cmd = add_command(followup_advocate.compose_grb_medium_latency, 

52 parents=[authors]) 

53 cmd.add_argument('gracedb_id', metavar='E123456', help='GraceDB ID of GRB') 

54 cmd.add_argument('--use_detection_template', action='store_true', 

55 help='If given, always use detection template') 

56 cmd.add_argument('--use_exclusion_template', dest='use_detection_template', 

57 action='store_false', 

58 help='If given, always use exclusion template') 

59 cmd.set_defaults(use_detection_template=None) 

60 

61 cmd = add_command(followup_advocate.compose_update, parents=[authors]) 

62 cmd.add_argument('gracedb_id', metavar='S123456', help='GraceDB ID') 

63 cmd.add_argument('update_types', 

64 metavar='sky_localization,em_bright,p_astro,raven', 

65 help='List of Update types') 

66 cmd.add_argument('--cgmi_filename', metavar='mchirp_source_PE.json', 

67 required=False, default=None, 

68 help='CGMI filename') 

69 

70 cmd = add_command(followup_advocate.compose_retraction, parents=[authors]) 

71 cmd.add_argument('gracedb_id', metavar='S123456', help='GraceDB ID') 

72 

73 cmd = add_command(followup_advocate.compare_skymaps) 

74 cmd.add_argument( 

75 'paths', nargs='+', metavar='S123456/filename.fits.gz', 

76 help='Specify sky maps by GraceDB ID and filename') 

77 

78 opts = parser.parse_args(args).__dict__ 

79 func = opts.pop('func') 

80 print(func(**opts))