1
1
"""
2
2
config - set GMT defaults globally or locally.
3
3
"""
4
+ from inspect import Parameter , Signature
5
+
4
6
from pygmt .clib import Session
5
7
6
8
@@ -20,36 +22,176 @@ class config: # pylint: disable=invalid-name
20
22
Full GMT defaults list at :gmt-docs:`gmt.conf.html`
21
23
"""
22
24
25
+ # Manually set the __signature__ attribute to enable tab autocompletion
26
+ _keywords = [
27
+ "COLOR_BACKGROUND" ,
28
+ "COLOR_FOREGROUND" ,
29
+ "COLOR_CPT" ,
30
+ "COLOR_NAN" ,
31
+ "COLOR_MODEL" ,
32
+ "COLOR_HSV_MIN_S" ,
33
+ "COLOR_HSV_MAX_S" ,
34
+ "COLOR_HSV_MIN_V" ,
35
+ "COLOR_HSV_MAX_V" ,
36
+ "COLOR_SET" ,
37
+ "DIR_CACHE" ,
38
+ "DIR_DATA" ,
39
+ "DIR_DCW" ,
40
+ "DIR_GSHHG" ,
41
+ "FONT_ANNOT_PRIMARY" ,
42
+ "FONT_ANNOT_SECONDARY" ,
43
+ "FONT_HEADING" ,
44
+ "FONT_LABEL" ,
45
+ "FONT_LOGO" ,
46
+ "FONT_SUBTITLE" ,
47
+ "FONT_TAG" ,
48
+ "FONT_TITLE" ,
49
+ "FORMAT_CLOCK_IN" ,
50
+ "FORMAT_CLOCK_OUT" ,
51
+ "FORMAT_CLOCK_MAP" ,
52
+ "FORMAT_DATE_IN" ,
53
+ "FORMAT_DATE_OUT" ,
54
+ "FORMAT_DATE_MAP" ,
55
+ "FORMAT_GEO_OUT" ,
56
+ "FORMAT_GEO_MAP" ,
57
+ "FORMAT_FLOAT_OUT" ,
58
+ "FORMAT_FLOAT_MAP" ,
59
+ "FORMAT_TIME_PRIMARY_MAP" ,
60
+ "FORMAT_TIME_SECONDARY_MAP" ,
61
+ "FORMAT_TIME_STAMP" ,
62
+ "GMT_DATA_SERVER" ,
63
+ "GMT_DATA_SERVER_LIMIT" ,
64
+ "GMT_DATA_UPDATE_INTERVAL" ,
65
+ "GMT_COMPATIBILITY" ,
66
+ "GMT_CUSTOM_LIBS" ,
67
+ "GMT_EXPORT_TYPE" ,
68
+ "GMT_EXTRAPOLATE_VAL" ,
69
+ "GMT_FFT" ,
70
+ "GMT_GRAPHICS_DPU" ,
71
+ "GMT_GRAPHICS_FORMAT" ,
72
+ "GMT_HISTORY" ,
73
+ "GMT_INTERPOLANT" ,
74
+ "GMT_LANGUAGE" ,
75
+ "GMT_MAX_CORES" ,
76
+ "GMT_THEME" ,
77
+ "GMT_TRIANGULATE" ,
78
+ "GMT_VERBOSE" ,
79
+ "IO_COL_SEPARATOR" ,
80
+ "IO_FIRST_HEADER" ,
81
+ "IO_GRIDFILE_FORMAT" ,
82
+ "IO_GRIDFILE_SHORTHAND" ,
83
+ "IO_HEADER" ,
84
+ "IO_HEADER_MARKER" ,
85
+ "IO_N_HEADER_RECS" ,
86
+ "IO_NAN_RECORDS" ,
87
+ "IO_NC4_CHUNK_SIZE" ,
88
+ "IO_NC4_DEFLATION_LEVEL" ,
89
+ "IO_LONLAT_TOGGLE" ,
90
+ "IO_SEGMENT_BINARY" ,
91
+ "IO_SEGMENT_MARKER" ,
92
+ "MAP_ANNOT_MIN_ANGLE" ,
93
+ "MAP_ANNOT_MIN_SPACING" ,
94
+ "MAP_ANNOT_OBLIQUE" ,
95
+ "MAP_ANNOT_OFFSET_PRIMARY" ,
96
+ "MAP_ANNOT_OFFSET_SECONDARY" ,
97
+ "MAP_ANNOT_ORTHO" ,
98
+ "MAP_DEFAULT_PEN" ,
99
+ "MAP_DEGREE_SYMBOL" ,
100
+ "MAP_EMBELLISHMENT_MODE" ,
101
+ "MAP_FRAME_AXES" ,
102
+ "MAP_FRAME_PEN" ,
103
+ "MAP_FRAME_PERCENT" ,
104
+ "MAP_FRAME_TYPE" ,
105
+ "MAP_FRAME_WIDTH" ,
106
+ "MAP_GRID_CROSS_SIZE_PRIMARY" ,
107
+ "MAP_GRID_CROSS_SIZE_SECONDARY" ,
108
+ "MAP_GRID_PEN_PRIMARY" ,
109
+ "MAP_GRID_PEN_SECONDARY" ,
110
+ "MAP_HEADING_OFFSET" ,
111
+ "MAP_LABEL_MODE" ,
112
+ "MAP_LABEL_OFFSET" ,
113
+ "MAP_LINE_STEP" ,
114
+ "MAP_LOGO" ,
115
+ "MAP_LOGO_POS" ,
116
+ "MAP_ORIGIN_X" ,
117
+ "MAP_ORIGIN_Y" ,
118
+ "MAP_POLAR_CAP" ,
119
+ "MAP_SCALE_HEIGHT" ,
120
+ "MAP_TICK_LENGTH_PRIMARY" ,
121
+ "MAP_TICK_LENGTH_SECONDARY" ,
122
+ "MAP_TICK_PEN_PRIMARY" ,
123
+ "MAP_TICK_PEN_SECONDARY" ,
124
+ "MAP_TITLE_OFFSET" ,
125
+ "MAP_VECTOR_SHAPE" ,
126
+ "PROJ_AUX_LATITUDE" ,
127
+ "PROJ_DATUM" ,
128
+ "PROJ_ELLIPSOID" ,
129
+ "PROJ_GEODESIC" ,
130
+ "PROJ_LENGTH_UNIT" ,
131
+ "PROJ_MEAN_RADIUS" ,
132
+ "PROJ_SCALE_FACTOR" ,
133
+ "PS_CHAR_ENCODING" ,
134
+ "PS_COLOR_MODEL" ,
135
+ "PS_COMMENTS" ,
136
+ "PS_CONVERT" ,
137
+ "PS_IMAGE_COMPRESS" ,
138
+ "PS_LINE_CAP" ,
139
+ "PS_LINE_JOIN" ,
140
+ "PS_MITER_LIMIT" ,
141
+ "PS_MEDIA" ,
142
+ "PS_PAGE_COLOR" ,
143
+ "PS_PAGE_ORIENTATION" ,
144
+ "PS_SCALE_X" ,
145
+ "PS_SCALE_Y" ,
146
+ "PS_TRANSPARENCY" ,
147
+ "TIME_EPOCH" ,
148
+ "TIME_IS_INTERVAL" ,
149
+ "TIME_INTERVAL_FRACTION" ,
150
+ "TIME_LEAP_SECONDS" ,
151
+ "TIME_REPORT" ,
152
+ "TIME_UNIT" ,
153
+ "TIME_WEEK_START" ,
154
+ "TIME_Y2K_OFFSET_YEAR" ,
155
+ ]
156
+
157
+ _special_keywords = {
158
+ "FONT" : [
159
+ "FONT_ANNOT_PRIMARY" ,
160
+ "FONT_ANNOT_SECONDARY" ,
161
+ "FONT_HEADING" ,
162
+ "FONT_LABEL" ,
163
+ "FONT_TAG" ,
164
+ "FONT_TITLE" ,
165
+ ],
166
+ "FONT_ANNOT" : ["FONT_ANNOT_PRIMARY" , "FONT_ANNOT_SECONDARY" ],
167
+ "FORMAT_TIME_MAP" : ["FORMAT_TIME_PRIMARY_MAP" , "FORMAT_TIME_SECONDARY_MAP" ],
168
+ "MAP_ANNOT_OFFSET" : [
169
+ "MAP_ANNOT_OFFSET_PRIMARY" ,
170
+ "MAP_ANNOT_OFFSET_SECONDARY" ,
171
+ ],
172
+ "MAP_GRID_CROSS_SIZE" : [
173
+ "MAP_GRID_CROSS_SIZE_PRIMARY" ,
174
+ "MAP_GRID_CROSS_SIZE_SECONDARY" ,
175
+ ],
176
+ "MAP_GRID_PEN" : ["MAP_GRID_PEN_PRIMARY" , "MAP_GRID_PEN_SECONDARY" ],
177
+ "MAP_TICK_LENGTH" : ["MAP_TICK_LENGTH_PRIMARY" , "MAP_TICK_LENGTH_SECONDARY" ],
178
+ "MAP_TICK_PEN" : ["MAP_TICK_PEN_PRIMARY" , "MAP_TICK_PEN_SECONDARY" ],
179
+ }
180
+
181
+ __signature__ = Signature (
182
+ parameters = [
183
+ Parameter (key , kind = Parameter .KEYWORD_ONLY , default = None )
184
+ for key in _keywords + list (_special_keywords .keys ())
185
+ ]
186
+ )
187
+
23
188
def __init__ (self , ** kwargs ):
24
189
# Save values so that we can revert to their initial values
25
190
self .old_defaults = {}
26
- self .special_params = {
27
- "FONT" : [
28
- "FONT_ANNOT_PRIMARY" ,
29
- "FONT_ANNOT_SECONDARY" ,
30
- "FONT_HEADING" ,
31
- "FONT_LABEL" ,
32
- "FONT_TAG" ,
33
- "FONT_TITLE" ,
34
- ],
35
- "FONT_ANNOT" : ["FONT_ANNOT_PRIMARY" , "FONT_ANNOT_SECONDARY" ],
36
- "FORMAT_TIME_MAP" : ["FORMAT_TIME_PRIMARY_MAP" , "FORMAT_TIME_SECONDARY_MAP" ],
37
- "MAP_ANNOT_OFFSET" : [
38
- "MAP_ANNOT_OFFSET_PRIMARY" ,
39
- "MAP_ANNOT_OFFSET_SECONDARY" ,
40
- ],
41
- "MAP_GRID_CROSS_SIZE" : [
42
- "MAP_GRID_CROSS_SIZE_PRIMARY" ,
43
- "MAP_GRID_CROSS_SIZE_SECONDARY" ,
44
- ],
45
- "MAP_GRID_PEN" : ["MAP_GRID_PEN_PRIMARY" , "MAP_GRID_PEN_SECONDARY" ],
46
- "MAP_TICK_LENGTH" : ["MAP_TICK_LENGTH_PRIMARY" , "MAP_TICK_LENGTH_SECONDARY" ],
47
- "MAP_TICK_PEN" : ["MAP_TICK_PEN_PRIMARY" , "MAP_TICK_PEN_SECONDARY" ],
48
- }
49
191
with Session () as lib :
50
192
for key in kwargs :
51
- if key in self .special_params :
52
- for k in self .special_params [key ]:
193
+ if key in self ._special_keywords :
194
+ for k in self ._special_keywords [key ]:
53
195
self .old_defaults [k ] = lib .get_default (k )
54
196
else :
55
197
self .old_defaults [key ] = lib .get_default (key )
0 commit comments