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
@@ -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"