vortex-nwp 2.0.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 (144) hide show
  1. vortex/__init__.py +159 -0
  2. vortex/algo/__init__.py +13 -0
  3. vortex/algo/components.py +2462 -0
  4. vortex/algo/mpitools.py +1953 -0
  5. vortex/algo/mpitools_templates/__init__.py +1 -0
  6. vortex/algo/mpitools_templates/envelope_wrapper_default.tpl +27 -0
  7. vortex/algo/mpitools_templates/envelope_wrapper_mpiauto.tpl +29 -0
  8. vortex/algo/mpitools_templates/wrapstd_wrapper_default.tpl +18 -0
  9. vortex/algo/serversynctools.py +171 -0
  10. vortex/config.py +112 -0
  11. vortex/data/__init__.py +19 -0
  12. vortex/data/abstractstores.py +1510 -0
  13. vortex/data/containers.py +835 -0
  14. vortex/data/contents.py +622 -0
  15. vortex/data/executables.py +275 -0
  16. vortex/data/flow.py +119 -0
  17. vortex/data/geometries.ini +2689 -0
  18. vortex/data/geometries.py +799 -0
  19. vortex/data/handlers.py +1230 -0
  20. vortex/data/outflow.py +67 -0
  21. vortex/data/providers.py +487 -0
  22. vortex/data/resources.py +207 -0
  23. vortex/data/stores.py +1390 -0
  24. vortex/data/sync_templates/__init__.py +0 -0
  25. vortex/gloves.py +309 -0
  26. vortex/layout/__init__.py +20 -0
  27. vortex/layout/contexts.py +577 -0
  28. vortex/layout/dataflow.py +1220 -0
  29. vortex/layout/monitor.py +969 -0
  30. vortex/nwp/__init__.py +14 -0
  31. vortex/nwp/algo/__init__.py +21 -0
  32. vortex/nwp/algo/assim.py +537 -0
  33. vortex/nwp/algo/clim.py +1086 -0
  34. vortex/nwp/algo/coupling.py +831 -0
  35. vortex/nwp/algo/eda.py +840 -0
  36. vortex/nwp/algo/eps.py +785 -0
  37. vortex/nwp/algo/forecasts.py +886 -0
  38. vortex/nwp/algo/fpserver.py +1303 -0
  39. vortex/nwp/algo/ifsnaming.py +463 -0
  40. vortex/nwp/algo/ifsroot.py +404 -0
  41. vortex/nwp/algo/monitoring.py +263 -0
  42. vortex/nwp/algo/mpitools.py +694 -0
  43. vortex/nwp/algo/odbtools.py +1258 -0
  44. vortex/nwp/algo/oopsroot.py +916 -0
  45. vortex/nwp/algo/oopstests.py +220 -0
  46. vortex/nwp/algo/request.py +660 -0
  47. vortex/nwp/algo/stdpost.py +1641 -0
  48. vortex/nwp/data/__init__.py +30 -0
  49. vortex/nwp/data/assim.py +380 -0
  50. vortex/nwp/data/boundaries.py +314 -0
  51. vortex/nwp/data/climfiles.py +521 -0
  52. vortex/nwp/data/configfiles.py +153 -0
  53. vortex/nwp/data/consts.py +954 -0
  54. vortex/nwp/data/ctpini.py +149 -0
  55. vortex/nwp/data/diagnostics.py +209 -0
  56. vortex/nwp/data/eda.py +147 -0
  57. vortex/nwp/data/eps.py +432 -0
  58. vortex/nwp/data/executables.py +1045 -0
  59. vortex/nwp/data/fields.py +111 -0
  60. vortex/nwp/data/gridfiles.py +380 -0
  61. vortex/nwp/data/logs.py +584 -0
  62. vortex/nwp/data/modelstates.py +363 -0
  63. vortex/nwp/data/monitoring.py +193 -0
  64. vortex/nwp/data/namelists.py +696 -0
  65. vortex/nwp/data/obs.py +840 -0
  66. vortex/nwp/data/oopsexec.py +74 -0
  67. vortex/nwp/data/providers.py +207 -0
  68. vortex/nwp/data/query.py +206 -0
  69. vortex/nwp/data/stores.py +160 -0
  70. vortex/nwp/data/surfex.py +337 -0
  71. vortex/nwp/syntax/__init__.py +9 -0
  72. vortex/nwp/syntax/stdattrs.py +437 -0
  73. vortex/nwp/tools/__init__.py +10 -0
  74. vortex/nwp/tools/addons.py +40 -0
  75. vortex/nwp/tools/agt.py +67 -0
  76. vortex/nwp/tools/bdap.py +59 -0
  77. vortex/nwp/tools/bdcp.py +41 -0
  78. vortex/nwp/tools/bdm.py +24 -0
  79. vortex/nwp/tools/bdmp.py +54 -0
  80. vortex/nwp/tools/conftools.py +1661 -0
  81. vortex/nwp/tools/drhook.py +66 -0
  82. vortex/nwp/tools/grib.py +294 -0
  83. vortex/nwp/tools/gribdiff.py +104 -0
  84. vortex/nwp/tools/ifstools.py +203 -0
  85. vortex/nwp/tools/igastuff.py +273 -0
  86. vortex/nwp/tools/mars.py +68 -0
  87. vortex/nwp/tools/odb.py +657 -0
  88. vortex/nwp/tools/partitioning.py +258 -0
  89. vortex/nwp/tools/satrad.py +71 -0
  90. vortex/nwp/util/__init__.py +6 -0
  91. vortex/nwp/util/async.py +212 -0
  92. vortex/nwp/util/beacon.py +40 -0
  93. vortex/nwp/util/diffpygram.py +447 -0
  94. vortex/nwp/util/ens.py +279 -0
  95. vortex/nwp/util/hooks.py +139 -0
  96. vortex/nwp/util/taskdeco.py +85 -0
  97. vortex/nwp/util/usepygram.py +697 -0
  98. vortex/nwp/util/usetnt.py +101 -0
  99. vortex/proxy.py +6 -0
  100. vortex/sessions.py +374 -0
  101. vortex/syntax/__init__.py +9 -0
  102. vortex/syntax/stdattrs.py +867 -0
  103. vortex/syntax/stddeco.py +185 -0
  104. vortex/toolbox.py +1117 -0
  105. vortex/tools/__init__.py +20 -0
  106. vortex/tools/actions.py +523 -0
  107. vortex/tools/addons.py +316 -0
  108. vortex/tools/arm.py +96 -0
  109. vortex/tools/compression.py +325 -0
  110. vortex/tools/date.py +27 -0
  111. vortex/tools/ddhpack.py +10 -0
  112. vortex/tools/delayedactions.py +782 -0
  113. vortex/tools/env.py +541 -0
  114. vortex/tools/folder.py +834 -0
  115. vortex/tools/grib.py +738 -0
  116. vortex/tools/lfi.py +953 -0
  117. vortex/tools/listings.py +423 -0
  118. vortex/tools/names.py +637 -0
  119. vortex/tools/net.py +2124 -0
  120. vortex/tools/odb.py +10 -0
  121. vortex/tools/parallelism.py +368 -0
  122. vortex/tools/prestaging.py +210 -0
  123. vortex/tools/rawfiles.py +10 -0
  124. vortex/tools/schedulers.py +480 -0
  125. vortex/tools/services.py +940 -0
  126. vortex/tools/storage.py +996 -0
  127. vortex/tools/surfex.py +61 -0
  128. vortex/tools/systems.py +3976 -0
  129. vortex/tools/targets.py +440 -0
  130. vortex/util/__init__.py +9 -0
  131. vortex/util/config.py +1122 -0
  132. vortex/util/empty.py +24 -0
  133. vortex/util/helpers.py +216 -0
  134. vortex/util/introspection.py +69 -0
  135. vortex/util/iosponge.py +80 -0
  136. vortex/util/roles.py +49 -0
  137. vortex/util/storefunctions.py +129 -0
  138. vortex/util/structs.py +26 -0
  139. vortex/util/worker.py +162 -0
  140. vortex_nwp-2.0.0.dist-info/METADATA +67 -0
  141. vortex_nwp-2.0.0.dist-info/RECORD +144 -0
  142. vortex_nwp-2.0.0.dist-info/WHEEL +5 -0
  143. vortex_nwp-2.0.0.dist-info/licenses/LICENSE +517 -0
  144. vortex_nwp-2.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,521 @@
1
+ """
2
+ Various resources to handle climatology files used in NWP models.
3
+ """
4
+
5
+ from vortex.data.geometries import LonlatGeometry
6
+ from vortex.data.outflow import StaticGeoResource, ModelGeoResource
7
+ from vortex.syntax.stdattrs import month_deco
8
+ from vortex.syntax.stddeco import namebuilding_insert, namebuilding_append
9
+ from ..syntax.stdattrs import gvar, gdomain
10
+
11
+ #: No automatic export
12
+ __all__ = []
13
+
14
+
15
+ @namebuilding_insert("radical", lambda s: "clim")
16
+ class GenericClim(ModelGeoResource):
17
+ """Abstract class for a model climatology.
18
+
19
+ An HorizontalGeometry object is needed. A Genvkey can be given.
20
+ """
21
+
22
+ _abstract = True
23
+ _footprint = [
24
+ gvar,
25
+ dict(
26
+ info="Model climatology",
27
+ attr=dict(
28
+ kind=dict(values=["clim_model"]),
29
+ nativefmt=dict(
30
+ values=["fa"],
31
+ default="fa",
32
+ ),
33
+ ),
34
+ ),
35
+ ]
36
+
37
+ @property
38
+ def realkind(self):
39
+ return "clim_model"
40
+
41
+ @property
42
+ def truncation(self):
43
+ """Returns geometry's truncation."""
44
+ return self.geometry.truncation
45
+
46
+ def olive_basename(self):
47
+ """OLIVE specific naming convention."""
48
+ return "Const.Clim"
49
+
50
+
51
+ class GlobalClim(GenericClim):
52
+ """Class for a model climatology of a global model.
53
+
54
+ A SpectralGeometry object is needed. A Genvkey can be given.
55
+ """
56
+
57
+ _footprint = dict(
58
+ info="Model climatology for Global Models",
59
+ attr=dict(
60
+ model=dict(values=["arpege"]),
61
+ gvar=dict(default="clim_[model]_[geometry::gco_grid_def]"),
62
+ ),
63
+ )
64
+
65
+
66
+ class MonthlyGlobalClim(GlobalClim):
67
+ """Class for a monthly model climatology of a global model.
68
+
69
+ A SpectralGeometry object is needed. A Genvkey can be given.
70
+ """
71
+
72
+ _footprint = [
73
+ month_deco,
74
+ dict(
75
+ info="Monthly model climatology for Global Models",
76
+ ),
77
+ ]
78
+
79
+
80
+ class ClimLAM(GenericClim):
81
+ """Class for a model climatology of a Local Area Model.
82
+
83
+ A SpectralGeometry object is needed. A Genvkey can be given
84
+ with a default name retrieved thanks to a GenvDomain object.
85
+ """
86
+
87
+ _footprint = [
88
+ gdomain,
89
+ dict(
90
+ info="Model climatology for Local Area Models",
91
+ attr=dict(
92
+ model=dict(
93
+ values=["aladin", "arome", "alaro", "harmoniearome"]
94
+ ),
95
+ gvar=dict(default="clim_[geometry::gco_grid_def]"),
96
+ ),
97
+ ),
98
+ ]
99
+
100
+
101
+ class MonthlyClimLAM(ClimLAM):
102
+ """Class for a monthly model climatology of a Local Area Model.
103
+
104
+ A SpectralGeometry object is needed. A Genvkey can be given
105
+ with a default name retrieved thanks to a GenvDomain object.
106
+ """
107
+
108
+ _footprint = [
109
+ month_deco,
110
+ dict(
111
+ info="Monthly model climatology for Local Area Models",
112
+ ),
113
+ ]
114
+
115
+
116
+ class ClimBDAP(GenericClim):
117
+ """Class for a climatology of a BDAP domain.
118
+
119
+ A LonlatGeometry object is needed. A Genvkey can be given
120
+ with a default name retrieved thanks to a GenvDomain object.
121
+ """
122
+
123
+ _footprint = [
124
+ gdomain,
125
+ dict(
126
+ info="Bdap climatology",
127
+ attr=dict(
128
+ kind=dict(values=["clim_bdap"]),
129
+ geometry=dict(
130
+ type=LonlatGeometry,
131
+ ),
132
+ gvar=dict(default="clim_dap_[gdomain]"),
133
+ ),
134
+ ),
135
+ ]
136
+
137
+ @property
138
+ def realkind(self):
139
+ return "clim_bdap"
140
+
141
+
142
+ class MonthlyClimBDAP(ClimBDAP):
143
+ """Class for a monthly climatology of a BDAP domain.
144
+
145
+ A LonlatGeometry object is needed. A Genvkey can be given
146
+ with a default name retrieved thanks to a GenvDomain object.
147
+ """
148
+
149
+ _footprint = [
150
+ month_deco,
151
+ dict(
152
+ info="Monthly Bdap climatology",
153
+ ),
154
+ ]
155
+
156
+
157
+ # Databases to generate clim files
158
+ class GTOPO30DerivedDB(StaticGeoResource):
159
+ """
160
+ Class of a tar-zip file containing parameters derived from
161
+ GTOPO30 database, generated with old stuff.
162
+
163
+ A Genvkey can be given.
164
+ """
165
+
166
+ _footprint = [
167
+ gvar,
168
+ dict(
169
+ info="Database for GTOPO30-derived parameters.",
170
+ attr=dict(
171
+ kind=dict(
172
+ values=["misc_orography"],
173
+ ),
174
+ source=dict(
175
+ values=["GTOPO30"],
176
+ ),
177
+ geometry=dict(
178
+ values=["global2m5"],
179
+ ),
180
+ gvar=dict(default="[source]_[kind]"),
181
+ ),
182
+ ),
183
+ ]
184
+
185
+ @property
186
+ def realkind(self):
187
+ return "misc_orography"
188
+
189
+
190
+ class UrbanisationDB(StaticGeoResource):
191
+ """Class of a binary file containing urbanisation database.
192
+
193
+ A Genvkey can be given.
194
+ """
195
+
196
+ _footprint = [
197
+ gvar,
198
+ dict(
199
+ info="Database for urbanisation.",
200
+ attr=dict(
201
+ kind=dict(
202
+ values=["urbanisation"],
203
+ ),
204
+ source=dict(
205
+ type=str,
206
+ ),
207
+ geometry=dict(
208
+ values=["global2m5"],
209
+ ),
210
+ gvar=dict(default="[source]_[kind]"),
211
+ ),
212
+ ),
213
+ ]
214
+
215
+ @property
216
+ def realkind(self):
217
+ return "urbanisation"
218
+
219
+
220
+ class WaterPercentageDB(StaticGeoResource):
221
+ """Class of a binary file containing water percentage database.
222
+
223
+ A Genvkey can be given.
224
+ """
225
+
226
+ _footprint = [
227
+ gvar,
228
+ dict(
229
+ info="Database for water percentage.",
230
+ attr=dict(
231
+ kind=dict(
232
+ values=["water_percentage"],
233
+ ),
234
+ source=dict(
235
+ type=str,
236
+ ),
237
+ geometry=dict(
238
+ values=["global2m5"],
239
+ ),
240
+ gvar=dict(default="[source]_[kind]"),
241
+ ),
242
+ ),
243
+ ]
244
+
245
+ @property
246
+ def realkind(self):
247
+ return "water_percentage"
248
+
249
+
250
+ class SoilANdVegDB(StaticGeoResource):
251
+ """Class of a tar-zip file containing parameters derived from various databases.
252
+
253
+ A Genvkey can be given.
254
+ """
255
+
256
+ _footprint = [
257
+ gvar,
258
+ dict(
259
+ info="Database for Soil and Vegetation.",
260
+ attr=dict(
261
+ kind=dict(
262
+ values=["soil_and_veg"],
263
+ ),
264
+ source=dict(
265
+ type=str,
266
+ ),
267
+ geometry=dict(
268
+ values=["global1dg", "europeb01"],
269
+ ),
270
+ gvar=dict(default="[source]_[kind]"),
271
+ ),
272
+ ),
273
+ ]
274
+
275
+ @property
276
+ def realkind(self):
277
+ return "soil_and_veg"
278
+
279
+
280
+ class MonthlyLAIDB(StaticGeoResource):
281
+ """Class of a binary file containing monthly LAI derived from various databases.
282
+
283
+ A Genvkey can be given.
284
+ """
285
+
286
+ _footprint = [
287
+ gvar,
288
+ month_deco,
289
+ dict(
290
+ info="Database for monthly LAI.",
291
+ attr=dict(
292
+ kind=dict(
293
+ values=["LAI"],
294
+ ),
295
+ source=dict(
296
+ type=str,
297
+ ),
298
+ geometry=dict(
299
+ values=["global1dg", "europeb01"],
300
+ ),
301
+ gvar=dict(default="[source]_[kind]"),
302
+ ),
303
+ ),
304
+ ]
305
+
306
+ @property
307
+ def realkind(self):
308
+ return "LAI"
309
+
310
+
311
+ class MonthlyVegDB(StaticGeoResource):
312
+ """Class of a binary file containing monthly vegetation derived from various databases.
313
+
314
+ A Genvkey can be given.
315
+ """
316
+
317
+ _footprint = [
318
+ gvar,
319
+ month_deco,
320
+ dict(
321
+ info="Database for monthly vegetation.",
322
+ attr=dict(
323
+ kind=dict(
324
+ values=["vegetation"],
325
+ ),
326
+ source=dict(
327
+ type=str,
328
+ ),
329
+ geometry=dict(
330
+ values=["global1dg", "europeb01"],
331
+ ),
332
+ gvar=dict(default="[source]_[kind]"),
333
+ ),
334
+ ),
335
+ ]
336
+
337
+ @property
338
+ def realkind(self):
339
+ return "vegetation"
340
+
341
+
342
+ class SoilClimatologyDB(StaticGeoResource):
343
+ """
344
+ Class of a binary file containing climatologic soil parameters
345
+ (temperature, moisture, snow, ice) derived from various databases.
346
+
347
+ A Genvkey can be given.
348
+ """
349
+
350
+ _footprint = [
351
+ gvar,
352
+ dict(
353
+ info="Database for soil climatology parameters.",
354
+ attr=dict(
355
+ kind=dict(
356
+ values=["soil_clim"],
357
+ ),
358
+ source=dict(
359
+ type=str,
360
+ ),
361
+ geometry=dict(
362
+ values=["globaln108", "global1dg"],
363
+ ),
364
+ gvar=dict(default="[source]_[kind]"),
365
+ ),
366
+ ),
367
+ ]
368
+
369
+ @property
370
+ def realkind(self):
371
+ return "soil_clim"
372
+
373
+
374
+ class SurfGeopotentialDB(StaticGeoResource):
375
+ """
376
+ Class of a binary file containing Surface Geopotential derived from
377
+ various databases.
378
+
379
+ A Genvkey can be given.
380
+ """
381
+
382
+ _footprint = [
383
+ gvar,
384
+ dict(
385
+ info="Database for surface geopotential.",
386
+ attr=dict(
387
+ kind=dict(
388
+ values=["surfgeopotential"],
389
+ ),
390
+ source=dict(
391
+ type=str,
392
+ ),
393
+ geometry=dict(
394
+ values=["global1dg"],
395
+ ),
396
+ gvar=dict(default="[source]_[kind]"),
397
+ ),
398
+ ),
399
+ ]
400
+
401
+ @property
402
+ def realkind(self):
403
+ return "surfgeopotential"
404
+
405
+
406
+ class MonthlySoilClimatologyDB(SoilClimatologyDB):
407
+ """
408
+ Class of a binary file containing monthly climatologic soil parameters
409
+ (temperature, moisture, snow, ice) derived from various databases.
410
+
411
+ A Genvkey can be given.
412
+ """
413
+
414
+ _footprint = [
415
+ month_deco,
416
+ dict(
417
+ info="Database for monthly soil climatology parameters.",
418
+ ),
419
+ ]
420
+
421
+
422
+ class MonthlyChemicalDB(StaticGeoResource):
423
+ """
424
+ Class of a binary file containing climatologic chemicals (ozone, aerosols)
425
+ parameters derived from various databases.
426
+
427
+ A Genvkey can be given.
428
+ """
429
+
430
+ _footprint = [
431
+ gvar,
432
+ month_deco,
433
+ dict(
434
+ info="Database for monthly chemicals.",
435
+ attr=dict(
436
+ kind=dict(
437
+ values=["ozone", "aerosols"],
438
+ ),
439
+ source=dict(
440
+ type=str,
441
+ ),
442
+ geometry=dict(
443
+ values=["global2dg5", "global5x4"],
444
+ ),
445
+ gvar=dict(default="[source]_[kind]"),
446
+ ),
447
+ ),
448
+ ]
449
+
450
+ @property
451
+ def realkind(self):
452
+ return self.kind
453
+
454
+
455
+ class GeometryIllustration(StaticGeoResource):
456
+ """Illustration of a domain geographic coverage."""
457
+
458
+ _footprint = dict(
459
+ info="Illustration of a domain geographic coverage.",
460
+ attr=dict(
461
+ kind=dict(
462
+ values=["geometry_plot"],
463
+ ),
464
+ nativefmt=dict(
465
+ values=["png", "pdf"],
466
+ ),
467
+ ),
468
+ )
469
+
470
+ @property
471
+ def realkind(self):
472
+ return "geometry_plot"
473
+
474
+
475
+ @namebuilding_append("src", lambda s: [s.stat, s.level, s.nbfiles])
476
+ class Stabal(ModelGeoResource):
477
+ """Spectral covariance operators.
478
+
479
+ Explanations for the ``stat`` attribute:
480
+ * bal: cross-variables balances
481
+ * cv: auto-correlations of the control variable
482
+ * cvt: ???
483
+
484
+ A GenvKey can be given.
485
+ """
486
+
487
+ _footprint = [
488
+ gvar,
489
+ dict(
490
+ info="Spectral covariance operators",
491
+ attr=dict(
492
+ kind=dict(
493
+ values=["stabal"],
494
+ ),
495
+ stat=dict(
496
+ values=["bal", "cv", "cvt"],
497
+ ),
498
+ level=dict(
499
+ type=int,
500
+ optional=True,
501
+ default=96,
502
+ values=[41, 96],
503
+ ),
504
+ nbfiles=dict(
505
+ default=0,
506
+ optional=True,
507
+ type=int,
508
+ ),
509
+ gvar=dict(default="stabal[level]_[stat]"),
510
+ ),
511
+ ),
512
+ ]
513
+
514
+ @property
515
+ def realkind(self):
516
+ return "stabal"
517
+
518
+ @property
519
+ def truncation(self):
520
+ """Returns geometry's truncation."""
521
+ return self.geometry.truncation
@@ -0,0 +1,153 @@
1
+ """
2
+ Various configuration files (Namelists excepted).
3
+ """
4
+
5
+ from vortex.data.outflow import StaticResource
6
+ from ..syntax.stdattrs import gvar
7
+ from vortex.data.contents import JsonDictContent, DataRaw
8
+ from vortex.syntax.stddeco import namebuilding_append
9
+
10
+ #: No automatic export
11
+ __all__ = []
12
+
13
+
14
+ @namebuilding_append("src", lambda self: [self.scope, self.source])
15
+ class GenericConfig(StaticResource):
16
+ """Generic class to access a pack of configuration files."""
17
+
18
+ _abstract = True
19
+ _footprint = [
20
+ gvar,
21
+ dict(
22
+ info="Configuration file from a pack",
23
+ attr=dict(
24
+ kind=dict(values=["config"]),
25
+ gvar=dict(default="config_[scope]"),
26
+ scope=dict(info="The configuration pack purpose"),
27
+ source=dict(
28
+ info="The config name within the config pack.",
29
+ ),
30
+ ),
31
+ ),
32
+ ]
33
+
34
+ @property
35
+ def realkind(self):
36
+ return "config"
37
+
38
+ def gget_urlquery(self):
39
+ """GGET specific query : ``extract``."""
40
+ return "extract=" + self.source
41
+
42
+
43
+ class AsciiConfig(GenericConfig):
44
+ """Generic class to access a pack of ASCII configuration files."""
45
+
46
+ _footprint = dict(
47
+ info="ASCII Configuration file from a pack",
48
+ attr=dict(
49
+ nativefmt=dict(
50
+ values=[
51
+ "ascii",
52
+ ]
53
+ ),
54
+ clscontents=dict(default=DataRaw),
55
+ ),
56
+ )
57
+
58
+
59
+ class IniConfig(GenericConfig):
60
+ """Generic class to access a ini configuration file (e.g. for mkjob)."""
61
+
62
+ _footprint = dict(
63
+ info="Ini configuration file",
64
+ attr=dict(
65
+ nativefmt=dict(
66
+ values=[
67
+ "ini",
68
+ ]
69
+ ),
70
+ ),
71
+ )
72
+
73
+
74
+ class JsonConfig(GenericConfig):
75
+ """Generic class to access a pack of JSON configuration files."""
76
+
77
+ _footprint = dict(
78
+ info="JSON Configuration file from a pack",
79
+ attr=dict(
80
+ scope=dict(
81
+ outcast=[
82
+ "oops",
83
+ ]
84
+ ),
85
+ nativefmt=dict(
86
+ values=[
87
+ "json",
88
+ ]
89
+ ),
90
+ clscontents=dict(default=JsonDictContent),
91
+ ),
92
+ )
93
+
94
+
95
+ class OopsJsonConfig(JsonConfig):
96
+ """Configuration files for OOPS, defining the oops objects to be built"""
97
+
98
+ _footprint = dict(
99
+ info="OOPS JSON Configuration file from a pack",
100
+ attr=dict(
101
+ scope=dict(
102
+ values=[
103
+ "oops",
104
+ ],
105
+ outcast=[],
106
+ ),
107
+ objects=dict(
108
+ info="The OOPS objects to be built.",
109
+ ),
110
+ source=dict(
111
+ info="The config name within the config pack.",
112
+ optional=True,
113
+ default="[objects].json",
114
+ ),
115
+ ),
116
+ )
117
+
118
+
119
+ class YamlConfig(GenericConfig):
120
+ """Generic class to access a pack of YAML configuration files."""
121
+
122
+ _footprint = dict(
123
+ info="YAML Configuration file from a pack",
124
+ attr=dict(
125
+ nativefmt=dict(
126
+ values=[
127
+ "yaml",
128
+ ]
129
+ ),
130
+ ),
131
+ )
132
+
133
+
134
+ class Bundle(StaticResource):
135
+ """Contains bundling of source codes."""
136
+
137
+ _footprint = [
138
+ gvar,
139
+ dict(
140
+ info="Contains bundling of source codes.",
141
+ attr=dict(
142
+ kind=dict(values=["bundle"]),
143
+ gvar=dict(
144
+ default="bundle",
145
+ ),
146
+ nativefmt=dict(values=["yml", "yaml"]),
147
+ ),
148
+ ),
149
+ ]
150
+
151
+ @property
152
+ def realkind(self):
153
+ return "bundle"