Coverage for /usr/local/lib/python3.13/dist-packages/pyrocko/__init__.py: 50%

42 statements  

« prev     ^ index     » next       coverage.py v7.6.0, created at 2025-12-04 10:41 +0000

1# https://pyrocko.org - GPLv3 

2# 

3# The Pyrocko Developers, 21st Century 

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

5 

6''' 

7A toolbox and library for seismology. 

8''' 

9 

10import sys 

11 

12try: 

13 from .info import * # noqa 

14 __version__ = version # noqa 

15except ImportError: 

16 pass # not available in dev mode 

17 

18grumpy = 0 # noqa 

19 

20 

21def get_logger(): 

22 from .util import logging 

23 return logging.getLogger('pyrocko') 

24 

25 

26class ExternalProgramMissing(Exception): 

27 pass 

28 

29 

30def app_init( 

31 log_level='info', 

32 progress_viewer='terminal', 

33 program_name=None, 

34 multiprocessing_start_method='spawn'): 

35 

36 ''' 

37 Setup logging and progress indicators for Pyrocko scripts. 

38 

39 This is a shortcut for calling :py:func:`pyrocko.util.setup_logging` and 

40 :py:func:`pyrocko.progress.set_default_viewer`. 

41 

42 :param program_name: 

43 ``programname`` argument for :py:func:`pyrocko.util.setup_logging` 

44 :type program_name: 

45 str 

46 

47 :param log_level: 

48 ``levelname`` argument for :py:func:`pyrocko.util.setup_logging` 

49 :type log_level: 

50 str 

51 

52 :param progress_viewer: 

53 ``viewer`` argument for 

54 :py:func:`pyrocko.progress.set_default_viewer` 

55 ''' 

56 from pyrocko import util, progress 

57 if program_name is None: 

58 program_name = sys.argv[0] 

59 

60 util.setup_logging(sys.argv[0], log_level) 

61 progress.set_default_viewer(progress_viewer) 

62 import multiprocessing 

63 current_start_method = multiprocessing.get_start_method(allow_none=True) 

64 if current_start_method is None \ 

65 or current_start_method != multiprocessing_start_method: 

66 

67 # in the latter case (it has already been fixed), this should raise 

68 # RuntimeError 

69 multiprocessing.set_start_method(multiprocessing_start_method) 

70 

71 

72def make_squirrel(*args, **kwargs): 

73 from pyrocko.squirrel import Squirrel 

74 return Squirrel(*args, **kwargs) 

75 

76 

77def snuffle(*args, **kwargs): 

78 ''' 

79 Start Snuffler. 

80 

81 Calls :py:func:`pyrocko.gui.snuffler.snuffler.snuffle` 

82 ''' 

83 

84 from pyrocko import deps 

85 

86 deps.require('PyQt5.Qt') 

87 

88 from pyrocko.gui.snuffler import snuffler 

89 return snuffler.snuffle(*args, **kwargs) 

90 

91 

92def sparrow(*args, **kwargs): 

93 ''' 

94 Start Sparrow. 

95 

96 Calls :py:func:`pyrocko.gui.sparrow.main`. 

97 ''' 

98 

99 from pyrocko import deps 

100 

101 deps.require('vtk') 

102 deps.require('PyQt5.Qt') 

103 # deps.import_optional('kite', 'InSAR visualization') 

104 

105 from pyrocko.gui.sparrow.main import main 

106 return main(*args, **kwargs) 

107 

108 

109def drum(*args, **kwargs): 

110 ''' 

111 Start Drum Plot. 

112 

113 Calls :py:func:`pyrocko.gui.drum.main`. 

114 ''' 

115 

116 from pyrocko import deps 

117 

118 deps.require('PyQt5.Qt') 

119 deps.require('serial') 

120 

121 from pyrocko.gui.drum.main import main 

122 return main(*args, **kwargs)