vortex-nwp 2.0.0b1__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 (146) hide show
  1. vortex/__init__.py +135 -0
  2. vortex/algo/__init__.py +12 -0
  3. vortex/algo/components.py +2136 -0
  4. vortex/algo/mpitools.py +1648 -0
  5. vortex/algo/mpitools_templates/envelope_wrapper_default.tpl +27 -0
  6. vortex/algo/mpitools_templates/envelope_wrapper_mpiauto.tpl +29 -0
  7. vortex/algo/mpitools_templates/wrapstd_wrapper_default.tpl +18 -0
  8. vortex/algo/serversynctools.py +170 -0
  9. vortex/config.py +115 -0
  10. vortex/data/__init__.py +13 -0
  11. vortex/data/abstractstores.py +1572 -0
  12. vortex/data/containers.py +780 -0
  13. vortex/data/contents.py +596 -0
  14. vortex/data/executables.py +284 -0
  15. vortex/data/flow.py +113 -0
  16. vortex/data/geometries.ini +2689 -0
  17. vortex/data/geometries.py +703 -0
  18. vortex/data/handlers.py +1021 -0
  19. vortex/data/outflow.py +67 -0
  20. vortex/data/providers.py +465 -0
  21. vortex/data/resources.py +201 -0
  22. vortex/data/stores.py +1271 -0
  23. vortex/gloves.py +282 -0
  24. vortex/layout/__init__.py +27 -0
  25. vortex/layout/appconf.py +109 -0
  26. vortex/layout/contexts.py +511 -0
  27. vortex/layout/dataflow.py +1069 -0
  28. vortex/layout/jobs.py +1276 -0
  29. vortex/layout/monitor.py +833 -0
  30. vortex/layout/nodes.py +1424 -0
  31. vortex/layout/subjobs.py +464 -0
  32. vortex/nwp/__init__.py +11 -0
  33. vortex/nwp/algo/__init__.py +12 -0
  34. vortex/nwp/algo/assim.py +483 -0
  35. vortex/nwp/algo/clim.py +920 -0
  36. vortex/nwp/algo/coupling.py +609 -0
  37. vortex/nwp/algo/eda.py +632 -0
  38. vortex/nwp/algo/eps.py +613 -0
  39. vortex/nwp/algo/forecasts.py +745 -0
  40. vortex/nwp/algo/fpserver.py +927 -0
  41. vortex/nwp/algo/ifsnaming.py +403 -0
  42. vortex/nwp/algo/ifsroot.py +311 -0
  43. vortex/nwp/algo/monitoring.py +202 -0
  44. vortex/nwp/algo/mpitools.py +554 -0
  45. vortex/nwp/algo/odbtools.py +974 -0
  46. vortex/nwp/algo/oopsroot.py +735 -0
  47. vortex/nwp/algo/oopstests.py +186 -0
  48. vortex/nwp/algo/request.py +579 -0
  49. vortex/nwp/algo/stdpost.py +1285 -0
  50. vortex/nwp/data/__init__.py +12 -0
  51. vortex/nwp/data/assim.py +392 -0
  52. vortex/nwp/data/boundaries.py +261 -0
  53. vortex/nwp/data/climfiles.py +539 -0
  54. vortex/nwp/data/configfiles.py +149 -0
  55. vortex/nwp/data/consts.py +929 -0
  56. vortex/nwp/data/ctpini.py +133 -0
  57. vortex/nwp/data/diagnostics.py +181 -0
  58. vortex/nwp/data/eda.py +148 -0
  59. vortex/nwp/data/eps.py +383 -0
  60. vortex/nwp/data/executables.py +1039 -0
  61. vortex/nwp/data/fields.py +96 -0
  62. vortex/nwp/data/gridfiles.py +308 -0
  63. vortex/nwp/data/logs.py +551 -0
  64. vortex/nwp/data/modelstates.py +334 -0
  65. vortex/nwp/data/monitoring.py +220 -0
  66. vortex/nwp/data/namelists.py +644 -0
  67. vortex/nwp/data/obs.py +748 -0
  68. vortex/nwp/data/oopsexec.py +72 -0
  69. vortex/nwp/data/providers.py +182 -0
  70. vortex/nwp/data/query.py +217 -0
  71. vortex/nwp/data/stores.py +147 -0
  72. vortex/nwp/data/surfex.py +338 -0
  73. vortex/nwp/syntax/__init__.py +9 -0
  74. vortex/nwp/syntax/stdattrs.py +375 -0
  75. vortex/nwp/tools/__init__.py +10 -0
  76. vortex/nwp/tools/addons.py +35 -0
  77. vortex/nwp/tools/agt.py +55 -0
  78. vortex/nwp/tools/bdap.py +48 -0
  79. vortex/nwp/tools/bdcp.py +38 -0
  80. vortex/nwp/tools/bdm.py +21 -0
  81. vortex/nwp/tools/bdmp.py +49 -0
  82. vortex/nwp/tools/conftools.py +1311 -0
  83. vortex/nwp/tools/drhook.py +62 -0
  84. vortex/nwp/tools/grib.py +268 -0
  85. vortex/nwp/tools/gribdiff.py +99 -0
  86. vortex/nwp/tools/ifstools.py +163 -0
  87. vortex/nwp/tools/igastuff.py +249 -0
  88. vortex/nwp/tools/mars.py +56 -0
  89. vortex/nwp/tools/odb.py +548 -0
  90. vortex/nwp/tools/partitioning.py +234 -0
  91. vortex/nwp/tools/satrad.py +56 -0
  92. vortex/nwp/util/__init__.py +6 -0
  93. vortex/nwp/util/async.py +184 -0
  94. vortex/nwp/util/beacon.py +40 -0
  95. vortex/nwp/util/diffpygram.py +359 -0
  96. vortex/nwp/util/ens.py +198 -0
  97. vortex/nwp/util/hooks.py +128 -0
  98. vortex/nwp/util/taskdeco.py +81 -0
  99. vortex/nwp/util/usepygram.py +591 -0
  100. vortex/nwp/util/usetnt.py +87 -0
  101. vortex/proxy.py +6 -0
  102. vortex/sessions.py +341 -0
  103. vortex/syntax/__init__.py +9 -0
  104. vortex/syntax/stdattrs.py +628 -0
  105. vortex/syntax/stddeco.py +176 -0
  106. vortex/toolbox.py +982 -0
  107. vortex/tools/__init__.py +11 -0
  108. vortex/tools/actions.py +457 -0
  109. vortex/tools/addons.py +297 -0
  110. vortex/tools/arm.py +76 -0
  111. vortex/tools/compression.py +322 -0
  112. vortex/tools/date.py +20 -0
  113. vortex/tools/ddhpack.py +10 -0
  114. vortex/tools/delayedactions.py +672 -0
  115. vortex/tools/env.py +513 -0
  116. vortex/tools/folder.py +663 -0
  117. vortex/tools/grib.py +559 -0
  118. vortex/tools/lfi.py +746 -0
  119. vortex/tools/listings.py +354 -0
  120. vortex/tools/names.py +575 -0
  121. vortex/tools/net.py +1790 -0
  122. vortex/tools/odb.py +10 -0
  123. vortex/tools/parallelism.py +336 -0
  124. vortex/tools/prestaging.py +186 -0
  125. vortex/tools/rawfiles.py +10 -0
  126. vortex/tools/schedulers.py +413 -0
  127. vortex/tools/services.py +871 -0
  128. vortex/tools/storage.py +1061 -0
  129. vortex/tools/surfex.py +61 -0
  130. vortex/tools/systems.py +3396 -0
  131. vortex/tools/targets.py +384 -0
  132. vortex/util/__init__.py +9 -0
  133. vortex/util/config.py +1071 -0
  134. vortex/util/empty.py +24 -0
  135. vortex/util/helpers.py +184 -0
  136. vortex/util/introspection.py +63 -0
  137. vortex/util/iosponge.py +76 -0
  138. vortex/util/roles.py +51 -0
  139. vortex/util/storefunctions.py +103 -0
  140. vortex/util/structs.py +26 -0
  141. vortex/util/worker.py +150 -0
  142. vortex_nwp-2.0.0b1.dist-info/LICENSE +517 -0
  143. vortex_nwp-2.0.0b1.dist-info/METADATA +50 -0
  144. vortex_nwp-2.0.0b1.dist-info/RECORD +146 -0
  145. vortex_nwp-2.0.0b1.dist-info/WHEEL +5 -0
  146. vortex_nwp-2.0.0b1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,176 @@
1
+ """
2
+ Class decorators used in abstract footprints defined in :mod:`vortex.syntax.stdattr`
3
+ in order to alter resource's behaviours to be consistent with the added
4
+ attribute.
5
+ """
6
+
7
+
8
+ def namebuilding_insert(targetkey, valuecb, none_discard=False, setdefault=False):
9
+ """Insert/Overwrite an entry in the dictionary returned by namebuilding_info().
10
+
11
+ :param str targetkey: The dictionary's key to alter.
12
+ :param valuecb: The new value for this entry will be returned by the *valuecd*
13
+ callback function.
14
+ :param bool none_discard: ``None`` values are ignored silently.
15
+ :param bool setdefault: Use ``setdefault`` indtead of the usual ``setitem``
16
+ """
17
+
18
+ def _namebuilding_insert_stuff(cls):
19
+
20
+ if hasattr(cls, 'namebuilding_info'):
21
+ original_namebuilding_info = cls.namebuilding_info
22
+
23
+ def namebuilding_info(self):
24
+ vinfo = original_namebuilding_info(self)
25
+ value = valuecb(self)
26
+ if not none_discard or value is not None:
27
+ if setdefault:
28
+ vinfo.setdefault(targetkey, value)
29
+ else:
30
+ vinfo[targetkey] = value
31
+ return vinfo
32
+
33
+ namebuilding_info.__doc__ = original_namebuilding_info.__doc__
34
+ cls.namebuilding_info = namebuilding_info
35
+
36
+ return cls
37
+
38
+ def _namebuilding_insert_stuff_as_dump():
39
+ return ("<class-decorator: replace/add the *{:s}* entry in the namebuilding_info dictionary>"
40
+ .format(targetkey))
41
+
42
+ _namebuilding_insert_stuff.as_dump = _namebuilding_insert_stuff_as_dump
43
+
44
+ return _namebuilding_insert_stuff
45
+
46
+
47
+ def namebuilding_append(targetkey, valuecb, none_discard=False):
48
+ """Append something to an entry of the dictionary returned by namebuilding_info().
49
+
50
+ :param str targetkey: The dictionary's key to alter
51
+ :param valuecb: The new value for this entry will be returned by the *valuecd*
52
+ callback function.
53
+ :param bool none_discard: ``None`` values are ignored silently.
54
+ """
55
+
56
+ def _namebuilding_append_stuff(cls):
57
+
58
+ if hasattr(cls, 'namebuilding_info'):
59
+ original_namebuilding_info = cls.namebuilding_info
60
+
61
+ def namebuilding_info(self):
62
+ vinfo = original_namebuilding_info(self)
63
+ value = valuecb(self)
64
+ if not isinstance(value, list):
65
+ value = [value, ]
66
+ if none_discard:
67
+ value = [v for v in value if v is not None]
68
+ if not none_discard or value:
69
+ if targetkey in vinfo:
70
+ some_stuff = vinfo[targetkey]
71
+ if not isinstance(some_stuff, list):
72
+ some_stuff = [some_stuff, ]
73
+ some_stuff.extend(value)
74
+ else:
75
+ some_stuff = value
76
+ vinfo[targetkey] = some_stuff
77
+ return vinfo
78
+
79
+ namebuilding_info.__doc__ = original_namebuilding_info.__doc__
80
+ cls.namebuilding_info = namebuilding_info
81
+
82
+ return cls
83
+
84
+ def _namebuilding_append_stuff_as_dump():
85
+ return ("<class-decorator: append things in the *{:s}* entry of the namebuilding_info dictionary>"
86
+ .format(targetkey))
87
+
88
+ _namebuilding_append_stuff.as_dump = _namebuilding_append_stuff_as_dump
89
+
90
+ return _namebuilding_append_stuff
91
+
92
+
93
+ def namebuilding_delete(targetkey):
94
+ """Delete an entry from the dictionary returned by namebuilding_info().
95
+
96
+ :param str targetkey: The dictionary's key to alter
97
+ """
98
+
99
+ def _namebuilding_delete_stuff(cls):
100
+
101
+ if hasattr(cls, 'namebuilding_info'):
102
+ original_namebuilding_info = cls.namebuilding_info
103
+
104
+ def namebuilding_info(self):
105
+ vinfo = original_namebuilding_info(self)
106
+ del vinfo[targetkey]
107
+ return vinfo
108
+
109
+ namebuilding_info.__doc__ = original_namebuilding_info.__doc__
110
+ cls.namebuilding_info = namebuilding_info
111
+
112
+ return cls
113
+
114
+ def _namebuilding_delete_stuff_as_dump():
115
+ return ("<class-decorator: delete the *{:s}* entry of the namebuilding_info dictionary>"
116
+ .format(targetkey))
117
+
118
+ _namebuilding_delete_stuff.as_dump = _namebuilding_delete_stuff_as_dump
119
+
120
+ return _namebuilding_delete_stuff
121
+
122
+
123
+ def generic_pathname_insert(targetkey, valuecb, none_discard=False, setdefault=False):
124
+ """Insert/Overwrite an entry in the dictionary returned by generic_pathinfo().
125
+
126
+ :param str targetkey: The dictionary's key to alter.
127
+ :param valuecb: The new value for this entry will be returned by the *valuecd*
128
+ callback function.
129
+ :param bool none_discard: ``None`` values are ignored silently.
130
+ :param bool setdefault: Use ``setdefault`` indtead of the usual ``setitem``
131
+ """
132
+
133
+ def _generic_pathinfo_insert_stuff(cls):
134
+
135
+ if hasattr(cls, 'generic_pathinfo'):
136
+ original_generic_pathinfo = cls.generic_pathinfo
137
+
138
+ def generic_pathinfo(self):
139
+ vinfo = original_generic_pathinfo(self)
140
+ value = valuecb(self)
141
+ if not none_discard or value is not None:
142
+ if setdefault:
143
+ vinfo.setdefault(targetkey, value)
144
+ else:
145
+ vinfo[targetkey] = value
146
+ return vinfo
147
+
148
+ generic_pathinfo.__doc__ = original_generic_pathinfo.__doc__
149
+ cls.generic_pathinfo = generic_pathinfo
150
+
151
+ return cls
152
+
153
+ def _generic_pathinfo_insert_stuff_as_dump():
154
+ return ("<class-decorator: replace/add the *{:s}* entry in the generic_pathinfo dictionary>"
155
+ .format(targetkey))
156
+
157
+ _generic_pathinfo_insert_stuff.as_dump = _generic_pathinfo_insert_stuff_as_dump
158
+
159
+ return _generic_pathinfo_insert_stuff
160
+
161
+
162
+ def overwrite_realkind(thekind):
163
+ """Adds a realkind property
164
+
165
+ :param str thekind: The value returned by the realkind property
166
+ """
167
+
168
+ def _actual_overwrite_realkind(cls):
169
+
170
+ def realkind(self):
171
+ return thekind
172
+
173
+ cls.realkind = property(realkind)
174
+ return cls
175
+
176
+ return _actual_overwrite_realkind