vortex-nwp 2.0.0b1__py3-none-any.whl → 2.0.0b2__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 (139) hide show
  1. vortex/__init__.py +59 -45
  2. vortex/algo/__init__.py +3 -2
  3. vortex/algo/components.py +940 -614
  4. vortex/algo/mpitools.py +802 -497
  5. vortex/algo/serversynctools.py +34 -33
  6. vortex/config.py +19 -22
  7. vortex/data/__init__.py +9 -3
  8. vortex/data/abstractstores.py +593 -655
  9. vortex/data/containers.py +217 -162
  10. vortex/data/contents.py +65 -39
  11. vortex/data/executables.py +93 -102
  12. vortex/data/flow.py +40 -34
  13. vortex/data/geometries.py +228 -132
  14. vortex/data/handlers.py +428 -225
  15. vortex/data/outflow.py +15 -15
  16. vortex/data/providers.py +185 -163
  17. vortex/data/resources.py +48 -42
  18. vortex/data/stores.py +544 -413
  19. vortex/gloves.py +114 -87
  20. vortex/layout/__init__.py +1 -8
  21. vortex/layout/contexts.py +150 -84
  22. vortex/layout/dataflow.py +353 -202
  23. vortex/layout/monitor.py +264 -128
  24. vortex/nwp/__init__.py +5 -2
  25. vortex/nwp/algo/__init__.py +14 -5
  26. vortex/nwp/algo/assim.py +205 -151
  27. vortex/nwp/algo/clim.py +683 -517
  28. vortex/nwp/algo/coupling.py +447 -225
  29. vortex/nwp/algo/eda.py +437 -229
  30. vortex/nwp/algo/eps.py +403 -231
  31. vortex/nwp/algo/forecasts.py +420 -271
  32. vortex/nwp/algo/fpserver.py +683 -307
  33. vortex/nwp/algo/ifsnaming.py +205 -145
  34. vortex/nwp/algo/ifsroot.py +210 -122
  35. vortex/nwp/algo/monitoring.py +132 -76
  36. vortex/nwp/algo/mpitools.py +321 -191
  37. vortex/nwp/algo/odbtools.py +617 -353
  38. vortex/nwp/algo/oopsroot.py +449 -273
  39. vortex/nwp/algo/oopstests.py +90 -56
  40. vortex/nwp/algo/request.py +287 -206
  41. vortex/nwp/algo/stdpost.py +878 -522
  42. vortex/nwp/data/__init__.py +22 -4
  43. vortex/nwp/data/assim.py +125 -137
  44. vortex/nwp/data/boundaries.py +121 -68
  45. vortex/nwp/data/climfiles.py +193 -211
  46. vortex/nwp/data/configfiles.py +73 -69
  47. vortex/nwp/data/consts.py +426 -401
  48. vortex/nwp/data/ctpini.py +59 -43
  49. vortex/nwp/data/diagnostics.py +94 -66
  50. vortex/nwp/data/eda.py +50 -51
  51. vortex/nwp/data/eps.py +195 -146
  52. vortex/nwp/data/executables.py +440 -434
  53. vortex/nwp/data/fields.py +63 -48
  54. vortex/nwp/data/gridfiles.py +183 -111
  55. vortex/nwp/data/logs.py +250 -217
  56. vortex/nwp/data/modelstates.py +180 -151
  57. vortex/nwp/data/monitoring.py +72 -99
  58. vortex/nwp/data/namelists.py +254 -202
  59. vortex/nwp/data/obs.py +400 -308
  60. vortex/nwp/data/oopsexec.py +22 -20
  61. vortex/nwp/data/providers.py +90 -65
  62. vortex/nwp/data/query.py +71 -82
  63. vortex/nwp/data/stores.py +49 -36
  64. vortex/nwp/data/surfex.py +136 -137
  65. vortex/nwp/syntax/__init__.py +1 -1
  66. vortex/nwp/syntax/stdattrs.py +173 -111
  67. vortex/nwp/tools/__init__.py +2 -2
  68. vortex/nwp/tools/addons.py +22 -17
  69. vortex/nwp/tools/agt.py +24 -12
  70. vortex/nwp/tools/bdap.py +16 -5
  71. vortex/nwp/tools/bdcp.py +4 -1
  72. vortex/nwp/tools/bdm.py +3 -0
  73. vortex/nwp/tools/bdmp.py +14 -9
  74. vortex/nwp/tools/conftools.py +728 -378
  75. vortex/nwp/tools/drhook.py +12 -8
  76. vortex/nwp/tools/grib.py +65 -39
  77. vortex/nwp/tools/gribdiff.py +22 -17
  78. vortex/nwp/tools/ifstools.py +82 -42
  79. vortex/nwp/tools/igastuff.py +167 -143
  80. vortex/nwp/tools/mars.py +14 -2
  81. vortex/nwp/tools/odb.py +234 -125
  82. vortex/nwp/tools/partitioning.py +61 -37
  83. vortex/nwp/tools/satrad.py +27 -12
  84. vortex/nwp/util/async.py +83 -55
  85. vortex/nwp/util/beacon.py +10 -10
  86. vortex/nwp/util/diffpygram.py +174 -86
  87. vortex/nwp/util/ens.py +144 -63
  88. vortex/nwp/util/hooks.py +30 -19
  89. vortex/nwp/util/taskdeco.py +28 -24
  90. vortex/nwp/util/usepygram.py +278 -172
  91. vortex/nwp/util/usetnt.py +31 -17
  92. vortex/sessions.py +72 -39
  93. vortex/syntax/__init__.py +1 -1
  94. vortex/syntax/stdattrs.py +410 -171
  95. vortex/syntax/stddeco.py +31 -22
  96. vortex/toolbox.py +327 -192
  97. vortex/tools/__init__.py +11 -2
  98. vortex/tools/actions.py +125 -59
  99. vortex/tools/addons.py +111 -92
  100. vortex/tools/arm.py +42 -22
  101. vortex/tools/compression.py +72 -69
  102. vortex/tools/date.py +11 -4
  103. vortex/tools/delayedactions.py +242 -132
  104. vortex/tools/env.py +75 -47
  105. vortex/tools/folder.py +342 -171
  106. vortex/tools/grib.py +311 -149
  107. vortex/tools/lfi.py +423 -216
  108. vortex/tools/listings.py +109 -40
  109. vortex/tools/names.py +218 -156
  110. vortex/tools/net.py +632 -298
  111. vortex/tools/parallelism.py +93 -61
  112. vortex/tools/prestaging.py +55 -31
  113. vortex/tools/schedulers.py +172 -105
  114. vortex/tools/services.py +402 -333
  115. vortex/tools/storage.py +293 -358
  116. vortex/tools/surfex.py +24 -24
  117. vortex/tools/systems.py +1211 -631
  118. vortex/tools/targets.py +156 -100
  119. vortex/util/__init__.py +1 -1
  120. vortex/util/config.py +377 -327
  121. vortex/util/empty.py +2 -2
  122. vortex/util/helpers.py +56 -24
  123. vortex/util/introspection.py +18 -12
  124. vortex/util/iosponge.py +8 -4
  125. vortex/util/roles.py +4 -6
  126. vortex/util/storefunctions.py +39 -13
  127. vortex/util/structs.py +3 -3
  128. vortex/util/worker.py +29 -17
  129. vortex_nwp-2.0.0b2.dist-info/METADATA +66 -0
  130. vortex_nwp-2.0.0b2.dist-info/RECORD +142 -0
  131. {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.0.0b2.dist-info}/WHEEL +1 -1
  132. vortex/layout/appconf.py +0 -109
  133. vortex/layout/jobs.py +0 -1276
  134. vortex/layout/nodes.py +0 -1424
  135. vortex/layout/subjobs.py +0 -464
  136. vortex_nwp-2.0.0b1.dist-info/METADATA +0 -50
  137. vortex_nwp-2.0.0b1.dist-info/RECORD +0 -146
  138. {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.0.0b2.dist-info}/LICENSE +0 -0
  139. {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.0.0b2.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."""