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
vortex/nwp/data/ctpini.py CHANGED
@@ -22,15 +22,15 @@ class CtpiniDirectiveFile(GeoFlowResource):
22
22
  """
23
23
 
24
24
  _footprint = dict(
25
- info = "Ctpini directive file",
26
- attr = dict(
27
- kind = dict(
28
- values = ["ctpini_directives_file", ],
25
+ info="Ctpini directive file",
26
+ attr=dict(
27
+ kind=dict(
28
+ values=[
29
+ "ctpini_directives_file",
30
+ ],
29
31
  ),
30
- nativefmt = dict(
31
- default = "ascii"
32
- )
33
- )
32
+ nativefmt=dict(default="ascii"),
33
+ ),
34
34
  )
35
35
 
36
36
  @property
@@ -47,8 +47,8 @@ class AsciiFiles(StaticResource):
47
47
  _footprint = [
48
48
  gvar,
49
49
  dict(
50
- info = 'Abstract class for ascii files from genv.',
51
- )
50
+ info="Abstract class for ascii files from genv.",
51
+ ),
52
52
  ]
53
53
 
54
54
 
@@ -59,21 +59,19 @@ class CtpiniAsciiFiles(AsciiFiles):
59
59
 
60
60
  _footprint = [
61
61
  dict(
62
- info = "Ctpini Genv ascii files.",
63
- attr = dict(
64
- kind = dict(
65
- values = ["ctpini_ascii_file"],
66
- ),
67
- source = dict(
68
- values = ["levels", "covano", "fort61", "coor", "cov46"],
62
+ info="Ctpini Genv ascii files.",
63
+ attr=dict(
64
+ kind=dict(
65
+ values=["ctpini_ascii_file"],
69
66
  ),
70
- gvar = dict(
71
- default = "tsr_misc_[source]",
67
+ source=dict(
68
+ values=["levels", "covano", "fort61", "coor", "cov46"],
72
69
  ),
73
- clscontents=dict(
74
- default = DataTemplate
70
+ gvar=dict(
71
+ default="tsr_misc_[source]",
75
72
  ),
76
- )
73
+ clscontents=dict(default=DataTemplate),
74
+ ),
77
75
  )
78
76
  ]
79
77
 
@@ -88,31 +86,49 @@ class GridPointCtpini(GridPoint):
88
86
  """
89
87
 
90
88
  _footprint = dict(
91
- info = 'Ctpini Gridpoint Fields',
92
- attr = dict(
93
- kind = dict(
94
- values = ['ctpini_gridpoint', ],
89
+ info="Ctpini Gridpoint Fields",
90
+ attr=dict(
91
+ kind=dict(
92
+ values=[
93
+ "ctpini_gridpoint",
94
+ ],
95
95
  ),
96
- origin = dict(
97
- values = ['oper', 'PS', 'dble', 'PX', 'ctpini', 'PTSR', ],
98
- remap = dict(
99
- PS = 'oper',
100
- PX = 'dble',
101
- PTSR = 'ctpini',
96
+ origin=dict(
97
+ values=[
98
+ "oper",
99
+ "PS",
100
+ "dble",
101
+ "PX",
102
+ "ctpini",
103
+ "PTSR",
104
+ ],
105
+ remap=dict(
106
+ PS="oper",
107
+ PX="dble",
108
+ PTSR="ctpini",
102
109
  ),
103
110
  ),
104
- parameter = dict(
105
- values = ['PMERSOL', 'T850HPA', 'Z15PVU', 'Z20PVU', 'Z07PVU', 'TROPO'],
111
+ parameter=dict(
112
+ values=[
113
+ "PMERSOL",
114
+ "T850HPA",
115
+ "Z15PVU",
116
+ "Z20PVU",
117
+ "Z07PVU",
118
+ "TROPO",
119
+ ],
106
120
  ),
107
- run_ctpini = dict(
108
- optional = True,
109
- default = None,
121
+ run_ctpini=dict(
122
+ optional=True,
123
+ default=None,
110
124
  ),
111
- nativefmt = dict(
112
- values = ['geo', ],
113
- default = 'geo',
125
+ nativefmt=dict(
126
+ values=[
127
+ "geo",
128
+ ],
129
+ default="geo",
114
130
  ),
115
- )
131
+ ),
116
132
  )
117
133
 
118
134
  @property
@@ -122,12 +138,12 @@ class GridPointCtpini(GridPoint):
122
138
  def namebuilding_info(self):
123
139
  """Generic information, radical = ``grid``."""
124
140
  ninfo = super().namebuilding_info()
125
- if self.origin == 'ctpini' and self.run_ctpini is not None:
141
+ if self.origin == "ctpini" and self.run_ctpini is not None:
126
142
  source = [self.model, self.origin, self.parameter, self.run_ctpini]
127
143
  else:
128
144
  source = [self.model, self.origin, self.parameter]
129
145
  ninfo.update(
130
- radical='ctpini-grid',
146
+ radical="ctpini-grid",
131
147
  src=source,
132
148
  )
133
149
  return ninfo
@@ -6,7 +6,11 @@ import footprints
6
6
 
7
7
  from vortex.data.flow import GeoFlowResource, GeoPeriodFlowResource
8
8
  from vortex.syntax.stdattrs import term_deco
9
- from vortex.syntax.stddeco import namebuilding_append, namebuilding_insert, overwrite_realkind
9
+ from vortex.syntax.stddeco import (
10
+ namebuilding_append,
11
+ namebuilding_insert,
12
+ overwrite_realkind,
13
+ )
10
14
 
11
15
  #: No automatic export
12
16
  __all__ = []
@@ -16,51 +20,49 @@ class ISP(GeoFlowResource):
16
20
  """Class for Forecasted Satellite Image resource. Obsolete."""
17
21
 
18
22
  _footprint = dict(
19
- info = 'Forecasted Satellite Image',
20
- attr = dict(
21
- kind = dict(
22
- values = ['isp', 'fsi']
23
- ),
24
- nativefmt = dict(
25
- values = ['foo', ],
26
- default = 'foo',
23
+ info="Forecasted Satellite Image",
24
+ attr=dict(
25
+ kind=dict(values=["isp", "fsi"]),
26
+ nativefmt=dict(
27
+ values=[
28
+ "foo",
29
+ ],
30
+ default="foo",
27
31
  ),
28
- )
32
+ ),
29
33
  )
30
34
 
31
35
  @property
32
36
  def realkind(self):
33
- return 'isp'
37
+ return "isp"
34
38
 
35
39
  def archive_basename(self):
36
40
  """OP ARCHIVE specific naming convention."""
37
- return 'anim0'
41
+ return "anim0"
38
42
 
39
43
  def olive_basename(self):
40
44
  """OLIVE specific naming convention."""
41
- return 'ISP' + self.model[:4].upper()
45
+ return "ISP" + self.model[:4].upper()
42
46
 
43
47
 
44
- @namebuilding_insert('radical', lambda s: 'ddh')
45
- @namebuilding_append('src', lambda s: s.scope)
48
+ @namebuilding_insert("radical", lambda s: "ddh")
49
+ @namebuilding_append("src", lambda s: s.scope)
46
50
  class _DDHcommon(GeoFlowResource):
47
51
  """
48
52
  Abstract class for Horizontal Diagnostics.
49
53
  """
54
+
50
55
  _abstract = True
51
56
  _footprint = dict(
52
- info = 'Diagnostic on Horizontal Domains',
53
- attr = dict(
54
- kind = dict(
55
- values = ['ddh', 'dhf'],
56
- remap = dict(dhf='ddh')
57
- ),
58
- nativefmt = dict(),
59
- scope = dict(
60
- values = ['limited', 'dlimited', 'global', 'zonal'],
61
- remap = dict(limited='dlimited')
57
+ info="Diagnostic on Horizontal Domains",
58
+ attr=dict(
59
+ kind=dict(values=["ddh", "dhf"], remap=dict(dhf="ddh")),
60
+ nativefmt=dict(),
61
+ scope=dict(
62
+ values=["limited", "dlimited", "global", "zonal"],
63
+ remap=dict(limited="dlimited"),
62
64
  ),
63
- )
65
+ ),
64
66
  )
65
67
 
66
68
 
@@ -69,30 +71,35 @@ class DDH(_DDHcommon):
69
71
  Class for Horizontal Diagnostics.
70
72
  Used to be a ``dhf`` !
71
73
  """
74
+
72
75
  _footprint = [
73
76
  term_deco,
74
77
  dict(
75
- info = 'Diagnostic on Horizontal Domains',
76
- attr = dict(
77
- nativefmt = dict(
78
- values = ['lfi', 'lfa'],
79
- default = 'lfi',
78
+ info="Diagnostic on Horizontal Domains",
79
+ attr=dict(
80
+ nativefmt=dict(
81
+ values=["lfi", "lfa"],
82
+ default="lfi",
80
83
  ),
81
- )
82
- )
84
+ ),
85
+ ),
83
86
  ]
84
87
 
85
88
  @property
86
89
  def realkind(self):
87
- return 'ddh'
90
+ return "ddh"
88
91
 
89
92
  def archive_basename(self):
90
93
  """OP ARCHIVE specific naming convention."""
91
- return 'dhf{:s}{:s}+{:s}'.format(self.scope[:2].lower(), self.model[:4].lower(), self.term.fmth)
94
+ return "dhf{:s}{:s}+{:s}".format(
95
+ self.scope[:2].lower(), self.model[:4].lower(), self.term.fmth
96
+ )
92
97
 
93
98
  def olive_basename(self):
94
99
  """OLIVE specific naming convention."""
95
- return 'DHF{:s}{:s}+{:s}'.format(self.scope[:2].upper(), self.model[:4].upper(), self.term.fmth)
100
+ return "DHF{:s}{:s}+{:s}".format(
101
+ self.scope[:2].upper(), self.model[:4].upper(), self.term.fmth
102
+ )
96
103
 
97
104
 
98
105
  class DDHpack(_DDHcommon):
@@ -100,43 +107,56 @@ class DDHpack(_DDHcommon):
100
107
  Class for Horizontal Diagnostics with all terms packed in a single directory.
101
108
  Used to be a ``dhf`` !
102
109
  """
110
+
103
111
  _footprint = dict(
104
- info = 'Diagnostic on Horizontal Domains packed in a single directory',
105
- attr = dict(
106
- nativefmt = dict(
107
- values = ['ddhpack', ],
112
+ info="Diagnostic on Horizontal Domains packed in a single directory",
113
+ attr=dict(
114
+ nativefmt=dict(
115
+ values=[
116
+ "ddhpack",
117
+ ],
108
118
  ),
109
- )
119
+ ),
110
120
  )
111
121
 
112
122
  def olive_basename(self):
113
123
  """OLIVE specific naming convention."""
114
- return 'DHF{:s}{:s}.tar'.format(self.scope[:2].upper(), self.model[:4].upper())
124
+ return "DHF{:s}{:s}.tar".format(
125
+ self.scope[:2].upper(), self.model[:4].upper()
126
+ )
115
127
 
116
128
  @property
117
129
  def realkind(self):
118
- return 'ddhpack'
130
+ return "ddhpack"
119
131
 
120
132
 
121
133
  _surfex_diag_decofp = footprints.DecorativeFootprint(
122
- info='Diagnostic files outputed by surfex during a model run',
134
+ info="Diagnostic files outputed by surfex during a model run",
123
135
  attr=dict(
124
136
  kind=dict(
125
- values=['diagnostics', ]
126
- ),
127
- scope=dict(
137
+ values=[
138
+ "diagnostics",
139
+ ]
128
140
  ),
141
+ scope=dict(),
129
142
  model=dict(
130
- values=['surfex', ]
143
+ values=[
144
+ "surfex",
145
+ ]
131
146
  ),
132
147
  nativefmt=dict(
133
- values=['netcdf', 'grib', ],
134
- default='netcdf',
135
- optional=True
148
+ values=[
149
+ "netcdf",
150
+ "grib",
151
+ ],
152
+ default="netcdf",
153
+ optional=True,
136
154
  ),
137
155
  ),
138
- decorator=[namebuilding_append('src', lambda s: s.scope),
139
- overwrite_realkind('diagnostics')]
156
+ decorator=[
157
+ namebuilding_append("src", lambda s: s.scope),
158
+ overwrite_realkind("diagnostics"),
159
+ ],
140
160
  )
141
161
 
142
162
 
@@ -149,33 +169,41 @@ class SurfexDiagnostics(GeoFlowResource):
149
169
  class SurfexPeriodDiagnostics(GeoPeriodFlowResource):
150
170
  """Diagnostic files outputed by surfex during a model run (period version)."""
151
171
 
152
- _footprint = [_surfex_diag_decofp, ]
172
+ _footprint = [
173
+ _surfex_diag_decofp,
174
+ ]
153
175
 
154
176
 
155
177
  class ObjTrack(GeoFlowResource):
156
178
  """Class for Object Tracks."""
157
179
 
158
180
  _footprint = dict(
159
- info = 'Object Tracks json file',
160
- attr = dict(
161
- kind = dict(
162
- values = ['objtrack']
163
- ),
164
- nativefmt = dict(
165
- values = ['json', 'hdf5', 'foo', ],
166
- default = 'foo',
181
+ info="Object Tracks json file",
182
+ attr=dict(
183
+ kind=dict(values=["objtrack"]),
184
+ nativefmt=dict(
185
+ values=[
186
+ "json",
187
+ "hdf5",
188
+ "foo",
189
+ ],
190
+ default="foo",
167
191
  ),
168
- )
192
+ ),
169
193
  )
170
194
 
171
195
  @property
172
196
  def realkind(self):
173
- return 'objtrack'
197
+ return "objtrack"
174
198
 
175
199
  def archive_basename(self):
176
200
  """OP ARCHIVE specific naming convention."""
177
- return 'track{:s}{:s}+{:s}'.format(self.scope[:2].lower(), self.model[:4].lower(), self.term.fmth)
201
+ return "track{:s}{:s}+{:s}".format(
202
+ self.scope[:2].lower(), self.model[:4].lower(), self.term.fmth
203
+ )
178
204
 
179
205
  def olive_basename(self):
180
206
  """OLIVE specific naming convention."""
181
- return 'track{:s}{:s}+{:s}'.format(self.scope[:2].upper(), self.model[:4].upper(), self.term.fmth)
207
+ return "track{:s}{:s}+{:s}".format(
208
+ self.scope[:2].upper(), self.model[:4].upper(), self.term.fmth
209
+ )
vortex/nwp/data/eda.py CHANGED
@@ -16,7 +16,9 @@ __all__ = []
16
16
  logger = loggers.getLogger(__name__)
17
17
 
18
18
 
19
- @namebuilding_insert('geo', lambda s: s._geo2basename_info(add_stretching=False))
19
+ @namebuilding_insert(
20
+ "geo", lambda s: s._geo2basename_info(add_stretching=False)
21
+ )
20
22
  class RawFiles(GeoFlowResource):
21
23
  """Input files for wavelet covariances estimation. To be removed soon."""
22
24
 
@@ -24,23 +26,21 @@ class RawFiles(GeoFlowResource):
24
26
  term_deco,
25
27
  gvar,
26
28
  dict(
27
- info = 'Input files for wavelet covariances estimation',
28
- attr = dict(
29
- kind = dict(
30
- values = ['rawfiles'],
29
+ info="Input files for wavelet covariances estimation",
30
+ attr=dict(
31
+ kind=dict(
32
+ values=["rawfiles"],
31
33
  ),
32
- nativefmt = dict(
33
- values = ['rawfiles', 'unknown'],
34
+ nativefmt=dict(
35
+ values=["rawfiles", "unknown"],
34
36
  ),
35
- gvar = dict(
36
- default = 'aearp_rawfiles_t[geometry:truncation]'
37
+ gvar=dict(default="aearp_rawfiles_t[geometry:truncation]"),
38
+ ipert=dict(
39
+ type=int,
40
+ optional=True,
37
41
  ),
38
- ipert = dict(
39
- type = int,
40
- optional = True,
41
- ),
42
- )
43
- )
42
+ ),
43
+ ),
44
44
  ]
45
45
 
46
46
  @property
@@ -49,7 +49,9 @@ class RawFiles(GeoFlowResource):
49
49
 
50
50
  def archive_basename(self):
51
51
  """OP ARCHIVE specific naming convention."""
52
- return 'RAWFILEP(memberfix:member)+{:s}.{:d}'.format(self.term.fmthour, self.geometry.truncation)
52
+ return "RAWFILEP(memberfix:member)+{:s}.{:d}".format(
53
+ self.term.fmthour, self.geometry.truncation
54
+ )
53
55
 
54
56
  def olive_basename(self):
55
57
  """OLIVE specific naming convention."""
@@ -58,11 +60,13 @@ class RawFiles(GeoFlowResource):
58
60
  def gget_basename(self):
59
61
  """GGET specific naming convention."""
60
62
  if self.ipert is None:
61
- raise ValueError('ipert is mandatory with the GCO provider')
62
- return dict(suffix='.{:03d}.tar'.format(self.ipert))
63
+ raise ValueError("ipert is mandatory with the GCO provider")
64
+ return dict(suffix=".{:03d}.tar".format(self.ipert))
63
65
 
64
66
 
65
- @namebuilding_insert('geo', lambda s: s._geo2basename_info(add_stretching=False))
67
+ @namebuilding_insert(
68
+ "geo", lambda s: s._geo2basename_info(add_stretching=False)
69
+ )
66
70
  class RandBFiles(GeoFlowResource):
67
71
  """Input files for wavelet covariances estimation."""
68
72
 
@@ -70,33 +74,33 @@ class RandBFiles(GeoFlowResource):
70
74
  term_deco,
71
75
  gvar,
72
76
  dict(
73
- info = 'Input files for wavelet covariances estimation',
74
- attr = dict(
75
- kind = dict(
76
- values = ['randbfiles', 'famembers'],
77
- remap = dict(autoremap = 'first')
78
- ),
79
- nativefmt = dict(
80
- values = ['fa', 'unknown'],
77
+ info="Input files for wavelet covariances estimation",
78
+ attr=dict(
79
+ kind=dict(
80
+ values=["randbfiles", "famembers"],
81
+ remap=dict(autoremap="first"),
81
82
  ),
82
- gvar = dict(
83
- default = 'aearp_randb_t[geometry:truncation]'
83
+ nativefmt=dict(
84
+ values=["fa", "unknown"],
84
85
  ),
85
- ipert = dict(
86
- type = int,
87
- optional = True,
86
+ gvar=dict(default="aearp_randb_t[geometry:truncation]"),
87
+ ipert=dict(
88
+ type=int,
89
+ optional=True,
88
90
  ),
89
- )
90
- )
91
+ ),
92
+ ),
91
93
  ]
92
94
 
93
95
  @property
94
96
  def realkind(self):
95
- return 'randbfiles'
97
+ return "randbfiles"
96
98
 
97
99
  def archive_basename(self):
98
100
  """OP ARCHIVE specific naming convention."""
99
- return 'famember(memberfix:member)+{:s}.{:d}'.format(self.term.fmthour, self.geometry.truncation)
101
+ return "famember(memberfix:member)+{:s}.{:d}".format(
102
+ self.term.fmthour, self.geometry.truncation
103
+ )
100
104
 
101
105
  def olive_basename(self):
102
106
  """OLIVE specific naming convention."""
@@ -105,8 +109,8 @@ class RandBFiles(GeoFlowResource):
105
109
  def gget_basename(self):
106
110
  """GGET specific naming convention."""
107
111
  if self.ipert is None:
108
- raise ValueError('ipert is mandatory with the GCO provider')
109
- return dict(suffix='.{:03d}.{}'.format(self.ipert, 'fa'))
112
+ raise ValueError("ipert is mandatory with the GCO provider")
113
+ return dict(suffix=".{:03d}.{}".format(self.ipert, "fa"))
110
114
 
111
115
 
112
116
  class InflationFactor(_BackgroundErrorInfo):
@@ -115,29 +119,24 @@ class InflationFactor(_BackgroundErrorInfo):
115
119
  """
116
120
 
117
121
  _footprint = dict(
118
- info='Inflation factor profiles',
122
+ info="Inflation factor profiles",
119
123
  attr=dict(
120
124
  kind=dict(
121
- values=['infl_factor', 'infl', 'inflation_factor'],
122
- remap=dict(autoremap='first'),
123
- ),
124
- gvar = dict(
125
- default = 'inflation_factor'
125
+ values=["infl_factor", "infl", "inflation_factor"],
126
+ remap=dict(autoremap="first"),
126
127
  ),
128
+ gvar=dict(default="inflation_factor"),
127
129
  nativefmt=dict(
128
- values=['ascii'],
129
- default='ascii',
130
- ),
131
- term=dict(
132
- optional=True,
133
- default=3
130
+ values=["ascii"],
131
+ default="ascii",
134
132
  ),
133
+ term=dict(optional=True, default=3),
135
134
  ),
136
135
  )
137
136
 
138
137
  @property
139
138
  def realkind(self):
140
- return 'inflation_factor'
139
+ return "inflation_factor"
141
140
 
142
141
  def archive_basename(self):
143
142
  """OP ARCHIVE specific naming convention."""