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
@@ -14,36 +14,38 @@ __all__ = []
14
14
  logger = loggers.getLogger(__name__)
15
15
 
16
16
 
17
- @namebuilding_insert('src', lambda s: [s.stage, s.obs])
17
+ @namebuilding_insert("src", lambda s: [s.stage, s.obs])
18
18
  class Monitoring(FlowResource):
19
19
  """Abstract monitoring resource."""
20
20
 
21
21
  _abstract = True
22
22
  _footprint = dict(
23
- info = 'Observations monitoring file',
24
- attr = dict(
25
- kind = dict(
26
- values = ['monitoring', ],
23
+ info="Observations monitoring file",
24
+ attr=dict(
25
+ kind=dict(
26
+ values=[
27
+ "monitoring",
28
+ ],
27
29
  ),
28
- nativefmt = dict(
29
- values =['ascii', 'binary', 'txt', 'bin'],
30
- remap = dict(ascii='txt', binary='bin')
30
+ nativefmt=dict(
31
+ values=["ascii", "binary", "txt", "bin"],
32
+ remap=dict(ascii="txt", binary="bin"),
31
33
  ),
32
- stage = dict(
33
- values = ['can', 'surf', 'surface', 'atm', 'atmospheric'],
34
- remap = dict(can='surf', surface='surf', atmospheric='atm'),
35
- info = 'The processing stage of the ODB base.',
34
+ stage=dict(
35
+ values=["can", "surf", "surface", "atm", "atmospheric"],
36
+ remap=dict(can="surf", surface="surf", atmospheric="atm"),
37
+ info="The processing stage of the ODB base.",
36
38
  ),
37
- obs = dict(
38
- values = ['all', 'used'],
39
- info = 'The processing part of the ODB base.',
39
+ obs=dict(
40
+ values=["all", "used"],
41
+ info="The processing part of the ODB base.",
40
42
  ),
41
- )
43
+ ),
42
44
  )
43
45
 
44
46
  @property
45
47
  def realkind(self):
46
- return 'monitoring'
48
+ return "monitoring"
47
49
 
48
50
 
49
51
  class MntObsThreshold(GenvModelResource):
@@ -53,168 +55,139 @@ class MntObsThreshold(GenvModelResource):
53
55
  """
54
56
 
55
57
  _footprint = dict(
56
- info='Observations threshold',
58
+ info="Observations threshold",
57
59
  attr=dict(
58
- kind=dict(
59
- values=['obs_threshold']
60
- ),
61
- gvar=dict(
62
- default='monitoring_seuils_obs'
63
- ),
64
- source=dict(
65
- ),
66
- )
60
+ kind=dict(values=["obs_threshold"]),
61
+ gvar=dict(default="monitoring_seuils_obs"),
62
+ source=dict(),
63
+ ),
67
64
  )
68
65
 
69
66
  @property
70
67
  def realkind(self):
71
- return 'obs_threshold'
68
+ return "obs_threshold"
72
69
 
73
70
  def gget_urlquery(self):
74
71
  """GGET specific query : ``extract``."""
75
- return 'extract=' + self.source
72
+ return "extract=" + self.source
76
73
 
77
74
 
78
- @namebuilding_insert('period', lambda s: s.periodicity)
75
+ @namebuilding_insert("period", lambda s: s.periodicity)
79
76
  class MntCumulStat(Monitoring):
80
77
  """Accumulated statistics file."""
81
78
 
82
79
  _footprint = dict(
83
- info='Monthly accumulated statistics',
80
+ info="Monthly accumulated statistics",
84
81
  attr=dict(
85
- kind=dict(
86
- values=['accumulated_stats']
87
- ),
82
+ kind=dict(values=["accumulated_stats"]),
88
83
  nativefmt=dict(
89
- values=['binary', 'bin'],
90
- default='bin',
91
- optional = True
84
+ values=["binary", "bin"], default="bin", optional=True
85
+ ),
86
+ periodicity=dict(
87
+ values=["monthly", "weekly_on_mondays", "weekly_on_sundays"],
88
+ default="monthly",
89
+ optional=True,
92
90
  ),
93
- periodicity = dict(
94
- values = ['monthly',
95
- 'weekly_on_mondays',
96
- 'weekly_on_sundays'],
97
- default = 'monthly',
98
- optional =True
99
- )
100
- )
91
+ ),
101
92
  )
102
93
 
103
94
  @property
104
95
  def realkind(self):
105
- return 'accumulated_stats'
96
+ return "accumulated_stats"
106
97
 
107
98
 
108
- @namebuilding_append('src', lambda s: s.monitor)
99
+ @namebuilding_append("src", lambda s: s.monitor)
109
100
  class MntStat(Monitoring):
110
101
  """Monitoring statistics file."""
111
102
 
112
103
  _footprint = dict(
113
- info='Monitoring statistics',
104
+ info="Monitoring statistics",
114
105
  attr=dict(
115
- kind=dict(
116
- values=['monitoring_stats']
117
- ),
106
+ kind=dict(values=["monitoring_stats"]),
118
107
  nativefmt=dict(
119
- values=['ascii', 'txt'],
120
- default='txt',
121
- optional=True
108
+ values=["ascii", "txt"], default="txt", optional=True
122
109
  ),
123
110
  monitor=dict(
124
- values=['bias', 'analysis'],
125
- remap=dict(cy='analysis', deb='bias'),
126
- )
127
- )
111
+ values=["bias", "analysis"],
112
+ remap=dict(cy="analysis", deb="bias"),
113
+ ),
114
+ ),
128
115
  )
129
116
 
130
117
  @property
131
118
  def realkind(self):
132
- return 'monitoring_stats'
119
+ return "monitoring_stats"
133
120
 
134
121
 
135
122
  class MntGrossErrors(Monitoring):
136
123
  """Gross errors file."""
137
124
 
138
125
  _footprint = dict(
139
- info='Gross errors',
126
+ info="Gross errors",
140
127
  attr=dict(
141
- kind=dict(
142
- values=['gross_errors']
143
- ),
144
- nativefmt = dict(
145
- values=['ascii', 'txt'],
146
- default='txt',
147
- optional=True
128
+ kind=dict(values=["gross_errors"]),
129
+ nativefmt=dict(
130
+ values=["ascii", "txt"], default="txt", optional=True
148
131
  ),
149
- )
132
+ ),
150
133
  )
151
134
 
152
135
  @property
153
136
  def realkind(self):
154
- return 'gross_errors'
137
+ return "gross_errors"
155
138
 
156
139
 
157
140
  class MntNbMessages(Monitoring):
158
141
  """Number of messages for each observations type"""
159
142
 
160
143
  _footprint = dict(
161
- info='Obs messages',
144
+ info="Obs messages",
162
145
  attr=dict(
163
- kind=dict(
164
- values=['nbmessages']
165
- ),
166
- nativefmt = dict(
167
- values=['ascii', 'txt'],
168
- default='txt',
169
- optional=True
146
+ kind=dict(values=["nbmessages"]),
147
+ nativefmt=dict(
148
+ values=["ascii", "txt"], default="txt", optional=True
170
149
  ),
171
- )
150
+ ),
172
151
  )
173
152
 
174
153
  @property
175
154
  def realkind(self):
176
- return 'nbmessages'
155
+ return "nbmessages"
177
156
 
178
157
 
179
158
  class MntMissingObs(Monitoring):
180
159
  """Missing observations."""
181
160
 
182
161
  _footprint = dict(
183
- info='Missing observations',
162
+ info="Missing observations",
184
163
  attr=dict(
185
- kind=dict(
186
- values=['missing_obs']
187
- ),
188
- nativefmt = dict(
189
- values=['ascii', 'txt'],
190
- default='txt',
191
- optional=True
164
+ kind=dict(values=["missing_obs"]),
165
+ nativefmt=dict(
166
+ values=["ascii", "txt"], default="txt", optional=True
192
167
  ),
193
- )
168
+ ),
194
169
  )
195
170
 
196
171
  @property
197
172
  def realkind(self):
198
- return 'missing_obs'
173
+ return "missing_obs"
199
174
 
200
175
 
201
176
  class MntObsLocation(Monitoring):
202
177
  """Observations location."""
203
178
 
204
179
  _footprint = dict(
205
- info='Observations location',
180
+ info="Observations location",
206
181
  attr=dict(
207
- kind=dict(
208
- values=['obslocation']
209
- ),
210
- nativefmt = dict(
211
- values=['obslocationpack'],
212
- default='obslocationpack',
213
- optional=True
182
+ kind=dict(values=["obslocation"]),
183
+ nativefmt=dict(
184
+ values=["obslocationpack"],
185
+ default="obslocationpack",
186
+ optional=True,
214
187
  ),
215
- )
188
+ ),
216
189
  )
217
190
 
218
191
  @property
219
192
  def realkind(self):
220
- return 'obslocation'
193
+ return "obslocation"