vortex-nwp 2.0.0b1__py3-none-any.whl → 2.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. vortex/__init__.py +75 -47
  2. vortex/algo/__init__.py +3 -2
  3. vortex/algo/components.py +944 -618
  4. vortex/algo/mpitools.py +802 -497
  5. vortex/algo/mpitools_templates/__init__.py +1 -0
  6. vortex/algo/serversynctools.py +34 -33
  7. vortex/config.py +19 -22
  8. vortex/data/__init__.py +9 -3
  9. vortex/data/abstractstores.py +593 -655
  10. vortex/data/containers.py +217 -162
  11. vortex/data/contents.py +65 -39
  12. vortex/data/executables.py +93 -102
  13. vortex/data/flow.py +40 -34
  14. vortex/data/geometries.py +228 -132
  15. vortex/data/handlers.py +436 -227
  16. vortex/data/outflow.py +15 -15
  17. vortex/data/providers.py +185 -163
  18. vortex/data/resources.py +48 -42
  19. vortex/data/stores.py +540 -417
  20. vortex/data/sync_templates/__init__.py +0 -0
  21. vortex/gloves.py +114 -87
  22. vortex/layout/__init__.py +1 -8
  23. vortex/layout/contexts.py +150 -84
  24. vortex/layout/dataflow.py +353 -202
  25. vortex/layout/monitor.py +264 -128
  26. vortex/nwp/__init__.py +5 -2
  27. vortex/nwp/algo/__init__.py +14 -5
  28. vortex/nwp/algo/assim.py +205 -151
  29. vortex/nwp/algo/clim.py +683 -517
  30. vortex/nwp/algo/coupling.py +447 -225
  31. vortex/nwp/algo/eda.py +437 -229
  32. vortex/nwp/algo/eps.py +403 -231
  33. vortex/nwp/algo/forecasts.py +416 -275
  34. vortex/nwp/algo/fpserver.py +683 -307
  35. vortex/nwp/algo/ifsnaming.py +205 -145
  36. vortex/nwp/algo/ifsroot.py +215 -122
  37. vortex/nwp/algo/monitoring.py +137 -76
  38. vortex/nwp/algo/mpitools.py +330 -190
  39. vortex/nwp/algo/odbtools.py +637 -353
  40. vortex/nwp/algo/oopsroot.py +454 -273
  41. vortex/nwp/algo/oopstests.py +90 -56
  42. vortex/nwp/algo/request.py +287 -206
  43. vortex/nwp/algo/stdpost.py +878 -522
  44. vortex/nwp/data/__init__.py +22 -4
  45. vortex/nwp/data/assim.py +125 -137
  46. vortex/nwp/data/boundaries.py +121 -68
  47. vortex/nwp/data/climfiles.py +193 -211
  48. vortex/nwp/data/configfiles.py +73 -69
  49. vortex/nwp/data/consts.py +426 -401
  50. vortex/nwp/data/ctpini.py +59 -43
  51. vortex/nwp/data/diagnostics.py +94 -66
  52. vortex/nwp/data/eda.py +50 -51
  53. vortex/nwp/data/eps.py +195 -146
  54. vortex/nwp/data/executables.py +440 -434
  55. vortex/nwp/data/fields.py +63 -48
  56. vortex/nwp/data/gridfiles.py +183 -111
  57. vortex/nwp/data/logs.py +250 -217
  58. vortex/nwp/data/modelstates.py +180 -151
  59. vortex/nwp/data/monitoring.py +72 -99
  60. vortex/nwp/data/namelists.py +254 -202
  61. vortex/nwp/data/obs.py +400 -308
  62. vortex/nwp/data/oopsexec.py +22 -20
  63. vortex/nwp/data/providers.py +90 -65
  64. vortex/nwp/data/query.py +71 -82
  65. vortex/nwp/data/stores.py +49 -36
  66. vortex/nwp/data/surfex.py +136 -137
  67. vortex/nwp/syntax/__init__.py +1 -1
  68. vortex/nwp/syntax/stdattrs.py +173 -111
  69. vortex/nwp/tools/__init__.py +2 -2
  70. vortex/nwp/tools/addons.py +22 -17
  71. vortex/nwp/tools/agt.py +24 -12
  72. vortex/nwp/tools/bdap.py +16 -5
  73. vortex/nwp/tools/bdcp.py +4 -1
  74. vortex/nwp/tools/bdm.py +3 -0
  75. vortex/nwp/tools/bdmp.py +14 -9
  76. vortex/nwp/tools/conftools.py +728 -378
  77. vortex/nwp/tools/drhook.py +12 -8
  78. vortex/nwp/tools/grib.py +65 -39
  79. vortex/nwp/tools/gribdiff.py +22 -17
  80. vortex/nwp/tools/ifstools.py +82 -42
  81. vortex/nwp/tools/igastuff.py +167 -143
  82. vortex/nwp/tools/mars.py +14 -2
  83. vortex/nwp/tools/odb.py +234 -125
  84. vortex/nwp/tools/partitioning.py +61 -37
  85. vortex/nwp/tools/satrad.py +27 -12
  86. vortex/nwp/util/async.py +83 -55
  87. vortex/nwp/util/beacon.py +10 -10
  88. vortex/nwp/util/diffpygram.py +174 -86
  89. vortex/nwp/util/ens.py +144 -63
  90. vortex/nwp/util/hooks.py +30 -19
  91. vortex/nwp/util/taskdeco.py +28 -24
  92. vortex/nwp/util/usepygram.py +278 -172
  93. vortex/nwp/util/usetnt.py +31 -17
  94. vortex/sessions.py +72 -39
  95. vortex/syntax/__init__.py +1 -1
  96. vortex/syntax/stdattrs.py +410 -171
  97. vortex/syntax/stddeco.py +31 -22
  98. vortex/toolbox.py +327 -192
  99. vortex/tools/__init__.py +11 -2
  100. vortex/tools/actions.py +110 -121
  101. vortex/tools/addons.py +111 -92
  102. vortex/tools/arm.py +42 -22
  103. vortex/tools/compression.py +72 -69
  104. vortex/tools/date.py +11 -4
  105. vortex/tools/delayedactions.py +242 -132
  106. vortex/tools/env.py +75 -47
  107. vortex/tools/folder.py +342 -171
  108. vortex/tools/grib.py +341 -162
  109. vortex/tools/lfi.py +423 -216
  110. vortex/tools/listings.py +109 -40
  111. vortex/tools/names.py +218 -156
  112. vortex/tools/net.py +655 -299
  113. vortex/tools/parallelism.py +93 -61
  114. vortex/tools/prestaging.py +55 -31
  115. vortex/tools/schedulers.py +172 -105
  116. vortex/tools/services.py +403 -334
  117. vortex/tools/storage.py +293 -358
  118. vortex/tools/surfex.py +24 -24
  119. vortex/tools/systems.py +1234 -643
  120. vortex/tools/targets.py +156 -100
  121. vortex/util/__init__.py +1 -1
  122. vortex/util/config.py +378 -327
  123. vortex/util/empty.py +2 -2
  124. vortex/util/helpers.py +56 -24
  125. vortex/util/introspection.py +18 -12
  126. vortex/util/iosponge.py +8 -4
  127. vortex/util/roles.py +4 -6
  128. vortex/util/storefunctions.py +39 -13
  129. vortex/util/structs.py +3 -3
  130. vortex/util/worker.py +29 -17
  131. vortex_nwp-2.1.0.dist-info/METADATA +67 -0
  132. vortex_nwp-2.1.0.dist-info/RECORD +144 -0
  133. {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.1.0.dist-info}/WHEEL +1 -1
  134. vortex/layout/appconf.py +0 -109
  135. vortex/layout/jobs.py +0 -1276
  136. vortex/layout/nodes.py +0 -1424
  137. vortex/layout/subjobs.py +0 -464
  138. vortex_nwp-2.0.0b1.dist-info/METADATA +0 -50
  139. vortex_nwp-2.0.0b1.dist-info/RECORD +0 -146
  140. {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.1.0.dist-info/licenses}/LICENSE +0 -0
  141. {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.1.0.dist-info}/top_level.txt +0 -0
@@ -11,56 +11,70 @@ __all__ = []
11
11
  fuzzystr = dict(
12
12
  histfix=dict(
13
13
  historic=dict(
14
- pearp='prev', arome='AROM', arpege='arpe', arp_court='arpe',
15
- aearp='arpe', aladin='ALAD', surfex='SURF'
14
+ pearp="prev",
15
+ arome="AROM",
16
+ arpege="arpe",
17
+ arp_court="arpe",
18
+ aearp="arpe",
19
+ aladin="ALAD",
20
+ surfex="SURF",
16
21
  )
17
22
  ),
18
23
  prefix=dict(
19
24
  # LFM 2016/12/30: It was dble='PA' but apparently it's wrong. No idea why...
20
- gridpoint=dict(oper='PE', dble='PE', mirr='PE', hycom_grb='vent'),
21
- historic=dict(hycom='s_init0_', mfwam='BLS_', mfwam_BLS='BLS_', mfwam_LAW='LAW_'),
22
- analysis=dict(hycom='s_init0_', mfwam='LAW_')
25
+ gridpoint=dict(oper="PE", dble="PE", mirr="PE", hycom_grb="vent"),
26
+ historic=dict(
27
+ hycom="s_init0_", mfwam="BLS_", mfwam_BLS="BLS_", mfwam_LAW="LAW_"
28
+ ),
29
+ analysis=dict(hycom="s_init0_", mfwam="LAW_"),
23
30
  ),
24
31
  suffix=dict(
25
- bgstderr=dict(input='in', output='out'),
26
- analysis=dict(hycom_hycom='.gz', hycom_surcotes='.gz', hycom_surcotes_oi='.gz'),
27
- historic=dict(surfex_arpege='.sfx', surfex_aearp='.sfx',
28
- hycom_hycom='.gz', hycom_surcotes='.gz', hycom_surcotes_oi='.gz'),
29
- gridpoint=dict(hycom_grb='grb'),
32
+ bgstderr=dict(input="in", output="out"),
33
+ analysis=dict(
34
+ hycom_hycom=".gz", hycom_surcotes=".gz", hycom_surcotes_oi=".gz"
35
+ ),
36
+ historic=dict(
37
+ surfex_arpege=".sfx",
38
+ surfex_aearp=".sfx",
39
+ hycom_hycom=".gz",
40
+ hycom_surcotes=".gz",
41
+ hycom_surcotes_oi=".gz",
42
+ ),
43
+ gridpoint=dict(hycom_grb="grb"),
30
44
  ),
31
45
  term0003=dict(
32
- bgstderr=dict(input='', output='_assim'),
46
+ bgstderr=dict(input="", output="_assim"),
33
47
  ),
34
48
  term0009=dict(
35
- bgstderr=dict(input='', output='_production'),
49
+ bgstderr=dict(input="", output="_production"),
36
50
  ),
37
51
  term0012=dict(
38
- bgstderr=dict(input='_production_dsbscr', output='_production_dsbscr'),
52
+ bgstderr=dict(input="_production_dsbscr", output="_production_dsbscr"),
39
53
  ),
40
54
  varbcarpege=dict(
41
- varbc=dict(input='.cycle_arp', output='.cycle'),
55
+ varbc=dict(input=".cycle_arp", output=".cycle"),
42
56
  ),
43
57
  varbcaladin=dict(
44
- varbc=dict(input='.cycle_alad', output='.cycle'),
58
+ varbc=dict(input=".cycle_alad", output=".cycle"),
45
59
  ),
46
60
  varbcarome=dict(
47
- varbc=dict(input='.cycle_aro', output='.cycle'),
61
+ varbc=dict(input=".cycle_aro", output=".cycle"),
48
62
  ),
49
63
  surf0000=dict(
50
- histsurf=dict(input='INIT_SURF', output='INIT_SURF'),
51
- historic=dict(input='INIT_SURF', output='INIT_SURF'),
64
+ histsurf=dict(input="INIT_SURF", output="INIT_SURF"),
65
+ historic=dict(input="INIT_SURF", output="INIT_SURF"),
52
66
  ),
53
67
  surf0003=dict(
54
- histsurf=dict(input='PREP', output='AROMOUT_.0003'),
55
- historic=dict(input='PREP', output='AROMOUT_.0003'),
68
+ histsurf=dict(input="PREP", output="AROMOUT_.0003"),
69
+ historic=dict(input="PREP", output="AROMOUT_.0003"),
56
70
  ),
57
71
  surf0006=dict(
58
- histsurf=dict(input='PREP', output='AROMOUT_.0006'),
59
- historic=dict(input='PREP', output='AROMOUT_.0006'),
72
+ histsurf=dict(input="PREP", output="AROMOUT_.0006"),
73
+ historic=dict(input="PREP", output="AROMOUT_.0006"),
60
74
  ),
61
75
  )
62
76
 
63
- arpcourt_vconf = ('courtfr', 'frcourt', 'court')
77
+ arpcourt_vconf = ("courtfr", "frcourt", "court")
64
78
 
65
79
 
66
80
  def fuzzyname(entry, realkind, key, default=None):
@@ -81,35 +95,21 @@ def archive_suffix(model, cutoff, date, vconf=None):
81
95
  for h in hh:
82
96
  hrange.append("%02d" % h)
83
97
 
84
- if cutoff == 'assim':
85
- rr = dict(
86
- zip(
87
- zip(
88
- (cutoff,) * len(hrange),
89
- hh
90
- ),
91
- hrange
92
- )
93
- )
98
+ if cutoff == "assim":
99
+ rr = dict(zip(zip((cutoff,) * len(hrange), hh), hrange))
94
100
  else:
95
- if re.search(r'court|arome', model) or vconf in arpcourt_vconf:
101
+ if re.search(r"court|arome", model) or vconf in arpcourt_vconf:
96
102
  rr = dict(
97
103
  zip(
98
- zip(
99
- (cutoff,) * len(hrange),
100
- hh
101
- ),
102
- ('CM', 'TR', 'SX', 'NF', 'PM', 'QZ', 'DH', 'VU')
104
+ zip((cutoff,) * len(hrange), hh),
105
+ ("CM", "TR", "SX", "NF", "PM", "QZ", "DH", "VU"),
103
106
  )
104
107
  )
105
108
  else:
106
109
  rr = dict(
107
110
  zip(
108
- zip(
109
- (cutoff,) * len(hrange),
110
- hh
111
- ),
112
- ('AM', 'TR', 'SX', 'NF', 'PM', 'QZ', 'DH', 'VU')
111
+ zip((cutoff,) * len(hrange), hh),
112
+ ("AM", "TR", "SX", "NF", "PM", "QZ", "DH", "VU"),
113
113
  )
114
114
  )
115
115
 
@@ -123,7 +123,7 @@ class _BaseIgakeyFactory(str):
123
123
  Needs to be subclassed !
124
124
  """
125
125
 
126
- _re_appconf = re.compile(r'^(\w+)/([\w@]+)$')
126
+ _re_appconf = re.compile(r"^(\w+)/([\w@]+)$")
127
127
  _keymap = {}
128
128
 
129
129
  def __new__(cls, value):
@@ -134,9 +134,9 @@ class _BaseIgakeyFactory(str):
134
134
  """
135
135
  val_split = cls._re_appconf.match(value)
136
136
  if val_split:
137
- value = cls._keymap.get(val_split.group(1),
138
- {}).get(val_split.group(2),
139
- val_split.group(1))
137
+ value = cls._keymap.get(val_split.group(1), {}).get(
138
+ val_split.group(2), val_split.group(1)
139
+ )
140
140
  return str.__new__(cls, value)
141
141
 
142
142
 
@@ -145,52 +145,65 @@ class IgakeyFactoryArchive(_BaseIgakeyFactory):
145
145
  Given the vapp/vconf, returns a default value for the igakey attribute
146
146
  """
147
147
 
148
- _keymap = {'arpege': {'4dvarfr': 'arpege',
149
- '4dvar': 'arpege',
150
- 'pearp': 'pearp',
151
- 'aearp': 'aearp',
152
- 'courtfr': 'arpege',
153
- 'frcourt': 'arpege',
154
- 'court': 'arpege', },
155
- 'mocage': {'camsfcst': 'macc',
156
- 'camsassim': 'macc', },
157
- 'arome': {'3dvarfr': 'arome',
158
- 'france': 'arome',
159
- 'pegase': 'pegase', },
160
- 'aladin': {'antiguy': 'antiguy',
161
- 'caledonie': 'caledonie',
162
- 'nc': 'caledonie',
163
- 'polynesie': 'polynesie',
164
- 'reunion': 'reunion', },
165
- 'hycom': {'atl@anarp': 'surcotes',
166
- 'med@anarp': 'surcotes',
167
- 'atl@fcarp': 'surcotes',
168
- 'med@fcarp': 'surcotes',
169
- 'atl@anaro': 'surcotes',
170
- 'med@anaro': 'surcotes',
171
- 'atl@fcaro': 'surcotes',
172
- 'med@fcaro': 'surcotes',
173
- 'atl@fcaoc': 'surcotes',
174
- 'med@fcaoc': 'surcotes',
175
- 'oin@ancep': 'surcotes_oi',
176
- 'oin@fcaro': 'surcotes_oi', },
177
- 'mfwam': {'globalcep02': 'mfwamglocep02',
178
- 'globalcep01': 'mfwamglocep01',
179
- 'reuaro01': 'mfwamreuaro',
180
- 'polyaro01': 'mfwampolyaro',
181
- 'caledaro01': 'mfwamcaledaro',
182
- 'globalarp02': 'mfwamgloarp02',
183
- 'globalarpc02': 'mfwamgloarpc02',
184
- 'atourxarp01': 'mfwamatourx01arp',
185
- 'euratarpc01': 'mfwameurcourt',
186
- 'frangparo0025': 'mfwamfrangp0025',
187
- 'frangparoifs0025': 'mfwamfrangp0025ifs',
188
- 'assmp1': 'mfwamassmp1',
189
- 'assmp2': 'mfwamassmp2',
190
- 'assms1': 'mfwamassms1',
191
- 'assms2': 'mfwamassms2',
192
- 'angola0025': 'mfwamangola', },
193
- }
148
+ _keymap = {
149
+ "arpege": {
150
+ "4dvarfr": "arpege",
151
+ "4dvar": "arpege",
152
+ "pearp": "pearp",
153
+ "aearp": "aearp",
154
+ "courtfr": "arpege",
155
+ "frcourt": "arpege",
156
+ "court": "arpege",
157
+ },
158
+ "mocage": {
159
+ "camsfcst": "macc",
160
+ "camsassim": "macc",
161
+ },
162
+ "arome": {
163
+ "3dvarfr": "arome",
164
+ "france": "arome",
165
+ "pegase": "pegase",
166
+ },
167
+ "aladin": {
168
+ "antiguy": "antiguy",
169
+ "caledonie": "caledonie",
170
+ "nc": "caledonie",
171
+ "polynesie": "polynesie",
172
+ "reunion": "reunion",
173
+ },
174
+ "hycom": {
175
+ "atl@anarp": "surcotes",
176
+ "med@anarp": "surcotes",
177
+ "atl@fcarp": "surcotes",
178
+ "med@fcarp": "surcotes",
179
+ "atl@anaro": "surcotes",
180
+ "med@anaro": "surcotes",
181
+ "atl@fcaro": "surcotes",
182
+ "med@fcaro": "surcotes",
183
+ "atl@fcaoc": "surcotes",
184
+ "med@fcaoc": "surcotes",
185
+ "oin@ancep": "surcotes_oi",
186
+ "oin@fcaro": "surcotes_oi",
187
+ },
188
+ "mfwam": {
189
+ "globalcep02": "mfwamglocep02",
190
+ "globalcep01": "mfwamglocep01",
191
+ "reuaro01": "mfwamreuaro",
192
+ "polyaro01": "mfwampolyaro",
193
+ "caledaro01": "mfwamcaledaro",
194
+ "globalarp02": "mfwamgloarp02",
195
+ "globalarpc02": "mfwamgloarpc02",
196
+ "atourxarp01": "mfwamatourx01arp",
197
+ "euratarpc01": "mfwameurcourt",
198
+ "frangparo0025": "mfwamfrangp0025",
199
+ "frangparoifs0025": "mfwamfrangp0025ifs",
200
+ "assmp1": "mfwamassmp1",
201
+ "assmp2": "mfwamassmp2",
202
+ "assms1": "mfwamassms1",
203
+ "assms2": "mfwamassms2",
204
+ "angola0025": "mfwamangola",
205
+ },
206
+ }
194
207
 
195
208
 
196
209
  class IgakeyFactoryInline(_BaseIgakeyFactory):
@@ -198,52 +211,63 @@ class IgakeyFactoryInline(_BaseIgakeyFactory):
198
211
  Given the vapp/vconf, returns a default value for the igakey attribute
199
212
  """
200
213
 
201
- _keymap = {'arpege': {'4dvarfr': 'france',
202
- '4dvar': 'france',
203
- 'pearp': 'pearp',
204
- 'aearp': 'aearp',
205
- 'courtfr': 'frcourt',
206
- 'frcourt': 'frcourt',
207
- 'court': 'frcourt', },
208
- 'arome': {'3dvarfr': 'france',
209
- 'france': 'france',
210
- 'pegase': 'pegase', },
211
- 'aladin': {'antiguy': 'antiguy',
212
- 'caledonie': 'caledonie',
213
- 'nc': 'caledonie',
214
- 'polynesie': 'polynesie',
215
- 'reunion': 'reunion', },
216
- 'hycom': {'atl@anarp': 'surcotes',
217
- 'med@anarp': 'surcotes',
218
- 'atl@fcarp': 'surcotes',
219
- 'med@fcarp': 'surcotes',
220
- 'atl@ancep': 'surcotes',
221
- 'med@ancep': 'surcotes',
222
- 'atl@fccep': 'surcotes',
223
- 'med@fccep': 'surcotes',
224
- 'atl@anaro': 'surcotes',
225
- 'med@anaro': 'surcotes',
226
- 'atl@fcaro': 'surcotes',
227
- 'med@fcaro': 'surcotes',
228
- 'atl@red': 'surcotes',
229
- 'med@red': 'surcotes',
230
- 'oin@ancep': 'surcotes_oi',
231
- 'oin@fcaro': 'surcotes_oi',
232
- 'oin@red': 'surcotes_oi', },
233
- 'mfwam': {'globalcep02': 'mfwamglocep02',
234
- 'globalcep01': 'mfwamglocep01',
235
- 'reuaro01': 'mfwamreuaro',
236
- 'polyaro01': 'mfwampolyaro',
237
- 'caledaro01': 'mfwamcaledaro',
238
- 'globalarp02': 'mfwamgloarp02',
239
- 'globalarpc02': 'mfwamgloarpc02',
240
- 'atourxarp01': 'mfwamatourx01arp',
241
- 'euratarpc01': 'mfwameurcourt',
242
- 'frangparo0025': 'mfwamfrangp0025',
243
- 'frangparoifs0025': 'mfwamfrangp0025ifs',
244
- 'assmp1': 'mfwamassmp1',
245
- 'assmp2': 'mfwamassmp2',
246
- 'assms1': 'mfwamassms1',
247
- 'assms2': 'mfwamassms2',
248
- 'angola0025': 'mfwamangola', },
249
- }
214
+ _keymap = {
215
+ "arpege": {
216
+ "4dvarfr": "france",
217
+ "4dvar": "france",
218
+ "pearp": "pearp",
219
+ "aearp": "aearp",
220
+ "courtfr": "frcourt",
221
+ "frcourt": "frcourt",
222
+ "court": "frcourt",
223
+ },
224
+ "arome": {
225
+ "3dvarfr": "france",
226
+ "france": "france",
227
+ "pegase": "pegase",
228
+ },
229
+ "aladin": {
230
+ "antiguy": "antiguy",
231
+ "caledonie": "caledonie",
232
+ "nc": "caledonie",
233
+ "polynesie": "polynesie",
234
+ "reunion": "reunion",
235
+ },
236
+ "hycom": {
237
+ "atl@anarp": "surcotes",
238
+ "med@anarp": "surcotes",
239
+ "atl@fcarp": "surcotes",
240
+ "med@fcarp": "surcotes",
241
+ "atl@ancep": "surcotes",
242
+ "med@ancep": "surcotes",
243
+ "atl@fccep": "surcotes",
244
+ "med@fccep": "surcotes",
245
+ "atl@anaro": "surcotes",
246
+ "med@anaro": "surcotes",
247
+ "atl@fcaro": "surcotes",
248
+ "med@fcaro": "surcotes",
249
+ "atl@red": "surcotes",
250
+ "med@red": "surcotes",
251
+ "oin@ancep": "surcotes_oi",
252
+ "oin@fcaro": "surcotes_oi",
253
+ "oin@red": "surcotes_oi",
254
+ },
255
+ "mfwam": {
256
+ "globalcep02": "mfwamglocep02",
257
+ "globalcep01": "mfwamglocep01",
258
+ "reuaro01": "mfwamreuaro",
259
+ "polyaro01": "mfwampolyaro",
260
+ "caledaro01": "mfwamcaledaro",
261
+ "globalarp02": "mfwamgloarp02",
262
+ "globalarpc02": "mfwamgloarpc02",
263
+ "atourxarp01": "mfwamatourx01arp",
264
+ "euratarpc01": "mfwameurcourt",
265
+ "frangparo0025": "mfwamfrangp0025",
266
+ "frangparoifs0025": "mfwamfrangp0025ifs",
267
+ "assmp1": "mfwamassmp1",
268
+ "assmp2": "mfwamassmp2",
269
+ "assms1": "mfwamassms1",
270
+ "assms2": "mfwamassms2",
271
+ "angola0025": "mfwamangola",
272
+ },
273
+ }
vortex/nwp/tools/mars.py CHANGED
@@ -14,16 +14,19 @@ logger = loggers.getLogger(__name__)
14
14
 
15
15
  class MarsError(Exception):
16
16
  """General Mars error."""
17
+
17
18
  pass
18
19
 
19
20
 
20
21
  class MarsConfigurationError(MarsError):
21
22
  """Specific Mars configuration error."""
23
+
22
24
  pass
23
25
 
24
26
 
25
27
  class MarsGetError(MarsError):
26
28
  """Generic Mars get error."""
29
+
27
30
  pass
28
31
 
29
32
 
@@ -35,7 +38,9 @@ def findMarsExtractCommand(sh, inifile=None, command=None):
35
38
  actual_command = sh.default_target.get("mars:command", None)
36
39
  else:
37
40
  actual_config = GenericConfigParser(inifile=actual_inifile)
38
- if actual_config.has_section('mars') and actual_config.has_option('mars', 'command'):
41
+ if actual_config.has_section("mars") and actual_config.has_option(
42
+ "mars", "command"
43
+ ):
39
44
  actual_command = actual_config.get("mars", "command")
40
45
  if actual_command is None:
41
46
  raise MarsConfigurationError("Could not find a proper command.")
@@ -53,4 +58,11 @@ def callMarsExtract(sh, query_file, command=None, fatal=True):
53
58
  :return: The return code of the Mars extraction.
54
59
  """
55
60
  command_line = " ".join([command, query_file])
56
- return sh.spawn([command_line, ], shell=True, output=False, fatal=fatal)
61
+ return sh.spawn(
62
+ [
63
+ command_line,
64
+ ],
65
+ shell=True,
66
+ output=False,
67
+ fatal=fatal,
68
+ )