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.
- vortex/__init__.py +159 -0
- vortex/algo/__init__.py +13 -0
- vortex/algo/components.py +2462 -0
- vortex/algo/mpitools.py +1953 -0
- vortex/algo/mpitools_templates/__init__.py +1 -0
- vortex/algo/mpitools_templates/envelope_wrapper_default.tpl +27 -0
- vortex/algo/mpitools_templates/envelope_wrapper_mpiauto.tpl +29 -0
- vortex/algo/mpitools_templates/wrapstd_wrapper_default.tpl +18 -0
- vortex/algo/serversynctools.py +171 -0
- vortex/config.py +112 -0
- vortex/data/__init__.py +19 -0
- vortex/data/abstractstores.py +1510 -0
- vortex/data/containers.py +835 -0
- vortex/data/contents.py +622 -0
- vortex/data/executables.py +275 -0
- vortex/data/flow.py +119 -0
- vortex/data/geometries.ini +2689 -0
- vortex/data/geometries.py +799 -0
- vortex/data/handlers.py +1230 -0
- vortex/data/outflow.py +67 -0
- vortex/data/providers.py +487 -0
- vortex/data/resources.py +207 -0
- vortex/data/stores.py +1390 -0
- vortex/data/sync_templates/__init__.py +0 -0
- vortex/gloves.py +309 -0
- vortex/layout/__init__.py +20 -0
- vortex/layout/contexts.py +577 -0
- vortex/layout/dataflow.py +1220 -0
- vortex/layout/monitor.py +969 -0
- vortex/nwp/__init__.py +14 -0
- vortex/nwp/algo/__init__.py +21 -0
- vortex/nwp/algo/assim.py +537 -0
- vortex/nwp/algo/clim.py +1086 -0
- vortex/nwp/algo/coupling.py +831 -0
- vortex/nwp/algo/eda.py +840 -0
- vortex/nwp/algo/eps.py +785 -0
- vortex/nwp/algo/forecasts.py +886 -0
- vortex/nwp/algo/fpserver.py +1303 -0
- vortex/nwp/algo/ifsnaming.py +463 -0
- vortex/nwp/algo/ifsroot.py +404 -0
- vortex/nwp/algo/monitoring.py +263 -0
- vortex/nwp/algo/mpitools.py +694 -0
- vortex/nwp/algo/odbtools.py +1258 -0
- vortex/nwp/algo/oopsroot.py +916 -0
- vortex/nwp/algo/oopstests.py +220 -0
- vortex/nwp/algo/request.py +660 -0
- vortex/nwp/algo/stdpost.py +1641 -0
- vortex/nwp/data/__init__.py +30 -0
- vortex/nwp/data/assim.py +380 -0
- vortex/nwp/data/boundaries.py +314 -0
- vortex/nwp/data/climfiles.py +521 -0
- vortex/nwp/data/configfiles.py +153 -0
- vortex/nwp/data/consts.py +954 -0
- vortex/nwp/data/ctpini.py +149 -0
- vortex/nwp/data/diagnostics.py +209 -0
- vortex/nwp/data/eda.py +147 -0
- vortex/nwp/data/eps.py +432 -0
- vortex/nwp/data/executables.py +1045 -0
- vortex/nwp/data/fields.py +111 -0
- vortex/nwp/data/gridfiles.py +380 -0
- vortex/nwp/data/logs.py +584 -0
- vortex/nwp/data/modelstates.py +363 -0
- vortex/nwp/data/monitoring.py +193 -0
- vortex/nwp/data/namelists.py +696 -0
- vortex/nwp/data/obs.py +840 -0
- vortex/nwp/data/oopsexec.py +74 -0
- vortex/nwp/data/providers.py +207 -0
- vortex/nwp/data/query.py +206 -0
- vortex/nwp/data/stores.py +160 -0
- vortex/nwp/data/surfex.py +337 -0
- vortex/nwp/syntax/__init__.py +9 -0
- vortex/nwp/syntax/stdattrs.py +437 -0
- vortex/nwp/tools/__init__.py +10 -0
- vortex/nwp/tools/addons.py +40 -0
- vortex/nwp/tools/agt.py +67 -0
- vortex/nwp/tools/bdap.py +59 -0
- vortex/nwp/tools/bdcp.py +41 -0
- vortex/nwp/tools/bdm.py +24 -0
- vortex/nwp/tools/bdmp.py +54 -0
- vortex/nwp/tools/conftools.py +1661 -0
- vortex/nwp/tools/drhook.py +66 -0
- vortex/nwp/tools/grib.py +294 -0
- vortex/nwp/tools/gribdiff.py +104 -0
- vortex/nwp/tools/ifstools.py +203 -0
- vortex/nwp/tools/igastuff.py +273 -0
- vortex/nwp/tools/mars.py +68 -0
- vortex/nwp/tools/odb.py +657 -0
- vortex/nwp/tools/partitioning.py +258 -0
- vortex/nwp/tools/satrad.py +71 -0
- vortex/nwp/util/__init__.py +6 -0
- vortex/nwp/util/async.py +212 -0
- vortex/nwp/util/beacon.py +40 -0
- vortex/nwp/util/diffpygram.py +447 -0
- vortex/nwp/util/ens.py +279 -0
- vortex/nwp/util/hooks.py +139 -0
- vortex/nwp/util/taskdeco.py +85 -0
- vortex/nwp/util/usepygram.py +697 -0
- vortex/nwp/util/usetnt.py +101 -0
- vortex/proxy.py +6 -0
- vortex/sessions.py +374 -0
- vortex/syntax/__init__.py +9 -0
- vortex/syntax/stdattrs.py +867 -0
- vortex/syntax/stddeco.py +185 -0
- vortex/toolbox.py +1117 -0
- vortex/tools/__init__.py +20 -0
- vortex/tools/actions.py +523 -0
- vortex/tools/addons.py +316 -0
- vortex/tools/arm.py +96 -0
- vortex/tools/compression.py +325 -0
- vortex/tools/date.py +27 -0
- vortex/tools/ddhpack.py +10 -0
- vortex/tools/delayedactions.py +782 -0
- vortex/tools/env.py +541 -0
- vortex/tools/folder.py +834 -0
- vortex/tools/grib.py +738 -0
- vortex/tools/lfi.py +953 -0
- vortex/tools/listings.py +423 -0
- vortex/tools/names.py +637 -0
- vortex/tools/net.py +2124 -0
- vortex/tools/odb.py +10 -0
- vortex/tools/parallelism.py +368 -0
- vortex/tools/prestaging.py +210 -0
- vortex/tools/rawfiles.py +10 -0
- vortex/tools/schedulers.py +480 -0
- vortex/tools/services.py +940 -0
- vortex/tools/storage.py +996 -0
- vortex/tools/surfex.py +61 -0
- vortex/tools/systems.py +3976 -0
- vortex/tools/targets.py +440 -0
- vortex/util/__init__.py +9 -0
- vortex/util/config.py +1122 -0
- vortex/util/empty.py +24 -0
- vortex/util/helpers.py +216 -0
- vortex/util/introspection.py +69 -0
- vortex/util/iosponge.py +80 -0
- vortex/util/roles.py +49 -0
- vortex/util/storefunctions.py +129 -0
- vortex/util/structs.py +26 -0
- vortex/util/worker.py +162 -0
- vortex_nwp-2.0.0.dist-info/METADATA +67 -0
- vortex_nwp-2.0.0.dist-info/RECORD +144 -0
- vortex_nwp-2.0.0.dist-info/WHEEL +5 -0
- vortex_nwp-2.0.0.dist-info/licenses/LICENSE +517 -0
- vortex_nwp-2.0.0.dist-info/top_level.txt +1 -0
vortex/util/worker.py
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"""
|
|
2
|
+
This package defines a class for default contexts used
|
|
3
|
+
by a PoolWorker process of the Jeeves daemon.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import logging
|
|
7
|
+
|
|
8
|
+
from bronx.fancies import loggers
|
|
9
|
+
|
|
10
|
+
logger = loggers.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AttrDict(dict):
|
|
14
|
+
"""Dict object that can be accessed by attributes.
|
|
15
|
+
|
|
16
|
+
>>> obj = AttrDict()
|
|
17
|
+
>>> obj.test = 'hi'
|
|
18
|
+
>>> print(obj['test'])
|
|
19
|
+
hi
|
|
20
|
+
|
|
21
|
+
>>> obj['test'] = "bye"
|
|
22
|
+
>>> print(obj.test)
|
|
23
|
+
bye
|
|
24
|
+
|
|
25
|
+
>>> print(len(obj))
|
|
26
|
+
1
|
|
27
|
+
|
|
28
|
+
>>> obj.clear()
|
|
29
|
+
>>> print(len(obj))
|
|
30
|
+
0
|
|
31
|
+
|
|
32
|
+
>>> obj.a
|
|
33
|
+
Traceback (most recent call last):
|
|
34
|
+
...
|
|
35
|
+
AttributeError: 'AttrDict' object has no attribute 'a'
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
def __init__(self, *args, **kwargs):
|
|
39
|
+
super().__init__(*args, **kwargs)
|
|
40
|
+
self.__dict__ = self
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class VortexWorker:
|
|
44
|
+
"""Context for a vortex session handled by an asynchronous process such as Jeeves.
|
|
45
|
+
|
|
46
|
+
An _oper_ profile should be used from Jeeves: the default is to use a _research_ profile.
|
|
47
|
+
See :mod:`vortex.gloves`.
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
_PRIVATESESSION_TAG = "asyncworker_view"
|
|
51
|
+
_PRIVATEGLOVE_TAG = "asyncworker_id"
|
|
52
|
+
_PRIVATESESSION = None
|
|
53
|
+
_PRIVATEMODULES = set()
|
|
54
|
+
|
|
55
|
+
def __init__(
|
|
56
|
+
self, modules=tuple(), verbose=False, logger=None, profile=None
|
|
57
|
+
):
|
|
58
|
+
self._logger = logger
|
|
59
|
+
self._modules = modules
|
|
60
|
+
self._context_lock = False
|
|
61
|
+
self._context_prev_ticket = None
|
|
62
|
+
self.verbose = verbose
|
|
63
|
+
self.profile = profile
|
|
64
|
+
self.rc = True
|
|
65
|
+
|
|
66
|
+
@property
|
|
67
|
+
def logger(self):
|
|
68
|
+
return self._logger
|
|
69
|
+
|
|
70
|
+
@property
|
|
71
|
+
def modules(self):
|
|
72
|
+
return self._modules
|
|
73
|
+
|
|
74
|
+
@property
|
|
75
|
+
def session(self):
|
|
76
|
+
"""The session associated with Async Worker."""
|
|
77
|
+
if self._PRIVATESESSION is None:
|
|
78
|
+
import vortex
|
|
79
|
+
|
|
80
|
+
t = vortex.sessions.get(
|
|
81
|
+
tag=self._PRIVATESESSION_TAG,
|
|
82
|
+
glove=vortex.sessions.getglove(
|
|
83
|
+
tag=self._PRIVATEGLOVE_TAG, profile=self.profile
|
|
84
|
+
),
|
|
85
|
+
)
|
|
86
|
+
sh = t.system()
|
|
87
|
+
import vortex.tools.lfi # @UnusedImport
|
|
88
|
+
import vortex.tools.grib # @UnusedImport
|
|
89
|
+
import vortex.tools.folder # @UnusedImport
|
|
90
|
+
import footprints as fp
|
|
91
|
+
|
|
92
|
+
fp.proxy.addon(kind="lfi", shell=sh)
|
|
93
|
+
fp.proxy.addon(kind="grib", shell=sh)
|
|
94
|
+
fp.proxy.addon(kind="allfolders", shell=sh, verboseload=False)
|
|
95
|
+
self._PRIVATESESSION = t
|
|
96
|
+
return self._PRIVATESESSION
|
|
97
|
+
|
|
98
|
+
def get_dataset(self, ask):
|
|
99
|
+
"""Struct friendly access to data request."""
|
|
100
|
+
return AttrDict(ask.data)
|
|
101
|
+
|
|
102
|
+
def reset_loggers(self, logger):
|
|
103
|
+
if not self.verbose:
|
|
104
|
+
# footprints & bronx can be very talkative... we try to limit that !
|
|
105
|
+
global_level = logger.getEffectiveLevel()
|
|
106
|
+
f_logger = loggers.getLogger("footprints")
|
|
107
|
+
b_logger = loggers.getLogger("bronx")
|
|
108
|
+
if global_level <= logging.INFO and not self.verbose:
|
|
109
|
+
f_logger.setLevel(logging.INFO)
|
|
110
|
+
b_logger.setLevel(logging.INFO)
|
|
111
|
+
else:
|
|
112
|
+
f_logger.setLevel(logging.NOTSET)
|
|
113
|
+
b_logger.setLevel(logging.NOTSET)
|
|
114
|
+
|
|
115
|
+
def __enter__(self, *args):
|
|
116
|
+
if self._context_lock:
|
|
117
|
+
raise RuntimeError(
|
|
118
|
+
"Imbricated context manager calls are forbidden."
|
|
119
|
+
)
|
|
120
|
+
self._context_lock = True
|
|
121
|
+
if self.logger is None:
|
|
122
|
+
self._logger = logger
|
|
123
|
+
else:
|
|
124
|
+
self.reset_loggers(self.logger)
|
|
125
|
+
# Activate our own session
|
|
126
|
+
import vortex
|
|
127
|
+
|
|
128
|
+
self._context_prev_ticket = vortex.sessions.current()
|
|
129
|
+
if not self.session.active:
|
|
130
|
+
self.session.activate()
|
|
131
|
+
# Import extra modules
|
|
132
|
+
for modname in self.modules:
|
|
133
|
+
if modname not in self._PRIVATEMODULES:
|
|
134
|
+
self.session.sh.import_module(modname)
|
|
135
|
+
self._PRIVATEMODULES.add(modname)
|
|
136
|
+
# Ok, let's talk...
|
|
137
|
+
self.logger.info(
|
|
138
|
+
"VORTEX enter glove_profile=%s ", self.session.glove.profile
|
|
139
|
+
)
|
|
140
|
+
self.logger.debug(
|
|
141
|
+
" modules=%s addons=%s",
|
|
142
|
+
self.modules,
|
|
143
|
+
self.session.sh.loaded_addons(),
|
|
144
|
+
)
|
|
145
|
+
return self
|
|
146
|
+
|
|
147
|
+
def __exit__(self, exc_type, exc_value, exc_traceback):
|
|
148
|
+
"""Well... nothing much to do..."""
|
|
149
|
+
if exc_value is not None:
|
|
150
|
+
self.logger.critical("VORTEX exits on error", exc_info=exc_value)
|
|
151
|
+
self.rc = False
|
|
152
|
+
else:
|
|
153
|
+
self.logger.debug("VORTEX exits nicely.")
|
|
154
|
+
self._context_prev_ticket.activate()
|
|
155
|
+
self._context_lock = False
|
|
156
|
+
return True
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
if __name__ == "__main__":
|
|
160
|
+
import doctest
|
|
161
|
+
|
|
162
|
+
doctest.testmod(verbose=False)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vortex-nwp
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: A Python library to write Numerical Weather Prediction pipelines components
|
|
5
|
+
Author-email: The Vortex Team <vortex.support@meteo.fr>
|
|
6
|
+
License: CECILL-C
|
|
7
|
+
Classifier: Development Status :: 4 - Beta
|
|
8
|
+
Classifier: License :: CeCILL-C Free Software License Agreement (CECILL-C)
|
|
9
|
+
Requires-Python: >=3.7
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Requires-Dist: bronx
|
|
13
|
+
Requires-Dist: footprints
|
|
14
|
+
Requires-Dist: taylorism
|
|
15
|
+
Requires-Dist: tomli
|
|
16
|
+
Requires-Dist: arpifs_listings
|
|
17
|
+
Provides-Extra: docs
|
|
18
|
+
Requires-Dist: sphinx; extra == "docs"
|
|
19
|
+
Requires-Dist: sphinx-book-theme; extra == "docs"
|
|
20
|
+
Requires-Dist: sphinx-copybutton; extra == "docs"
|
|
21
|
+
Provides-Extra: dev
|
|
22
|
+
Requires-Dist: ruff==0.9.1; extra == "dev"
|
|
23
|
+
Requires-Dist: pytest; extra == "dev"
|
|
24
|
+
Dynamic: license-file
|
|
25
|
+
|
|
26
|
+
## vortex
|
|
27
|
+
|
|
28
|
+
A Python library to write individual tasks in Numerical Weather
|
|
29
|
+
Prediction pipelines.
|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+
Experiments in Numerical Weather Prediction (NWP) and related fields
|
|
34
|
+
consist in a series of computational tasks that can depend on each
|
|
35
|
+
other's output data. Each task is typically made of three successive
|
|
36
|
+
steps:
|
|
37
|
+
|
|
38
|
+
1. Fetch required input data.
|
|
39
|
+
2. Execute a program.
|
|
40
|
+
3. Make the program's output data available to subsequent tasks in the
|
|
41
|
+
pipeline.
|
|
42
|
+
|
|
43
|
+
Tasks have historically been written in some variant of the UNIX
|
|
44
|
+
shell, which was convenient to interact with the file system, manage
|
|
45
|
+
environment variables and execute programs. As NWP pipelines and
|
|
46
|
+
tasks grow more and more complex, however, there is a need for a
|
|
47
|
+
language providing more abstraction and code reuse mechanisms.
|
|
48
|
+
|
|
49
|
+
On top of the popular Python language, *vortex* provides abstractions
|
|
50
|
+
that encapsulate running -- potentially distributed -- programs as
|
|
51
|
+
well as fetching and storing the data they consume and generate.
|
|
52
|
+
|
|
53
|
+
### Documentation
|
|
54
|
+
|
|
55
|
+
The documentation is available at [vortex-nwp.readthedocs.io](https://vortex-nwp.readthedocs.io).
|
|
56
|
+
|
|
57
|
+
### Installation
|
|
58
|
+
|
|
59
|
+
Vortex can be installed using `pip` like most Python packages:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pip install vortex-nwp
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Contributing
|
|
66
|
+
|
|
67
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
vortex/__init__.py,sha256=3fjmBPDy8ly7cAW31NJ--6u-BFYDC7DtoGxdp9-NTzM,4183
|
|
2
|
+
vortex/config.py,sha256=E7feBIG22POq5TyUN3MNXH-ZU7q08alF5nrJ1aUftG0,2815
|
|
3
|
+
vortex/gloves.py,sha256=GKz27S8eLfRlk8fNqVL_z1gsQ8zvEj73p5uVi11ou00,8487
|
|
4
|
+
vortex/proxy.py,sha256=OlPrVUJS5FoKt5pX8ApN1crFFDj8RJAqhDEilwvfrYU,127
|
|
5
|
+
vortex/sessions.py,sha256=l_ZUUFS-l0J2Mg6KEXaUQiDhbIABrWCfcY-9ExazKEg,9988
|
|
6
|
+
vortex/toolbox.py,sha256=h2QE5BoXWWEcQwK21D9YPda6t4rmCtLB5F9WeJrqT14,41379
|
|
7
|
+
vortex/algo/__init__.py,sha256=I_9COn_QBRbwvbqhs0X3CdHeR97NZhBacIqwKjnVBTg,359
|
|
8
|
+
vortex/algo/components.py,sha256=zs_DaKHFEHX9GQ-pn1HheAo4JvNusQi3D4u3ZhqVqe4,89362
|
|
9
|
+
vortex/algo/mpitools.py,sha256=EffZ4Ok934tvEYyUjKpVA-lEUVA29FwUVBtUQ8xWnDI,73977
|
|
10
|
+
vortex/algo/serversynctools.py,sha256=fPel0txVHsrUfk6VFaeKa0D6i21fOskIAR_BbByBv9g,5601
|
|
11
|
+
vortex/algo/mpitools_templates/__init__.py,sha256=Jbw903aPqVKF-AaSoB-mGMxthSvm88O_yqGoGmf_S_U,18
|
|
12
|
+
vortex/algo/mpitools_templates/envelope_wrapper_default.tpl,sha256=4VhkDx_YbOYywKQ82HIxRJXGcDpLuOgqcY7Edx9Rxyw,453
|
|
13
|
+
vortex/algo/mpitools_templates/envelope_wrapper_mpiauto.tpl,sha256=iB4_4jz-7QDqpl6AxrlCACsotJnEMG75dtazuGfkCb4,514
|
|
14
|
+
vortex/algo/mpitools_templates/wrapstd_wrapper_default.tpl,sha256=hh1Um95FIuvXAhUTMifAfixtfGgyjF1vEaF1nmbqMLw,502
|
|
15
|
+
vortex/data/__init__.py,sha256=XaHof5W6oCalr4X6oYAK4zW3z3F6mKuwdbKxmmmDraY,560
|
|
16
|
+
vortex/data/abstractstores.py,sha256=tDEEHqyk7-5ETS8RdYFxiGAOkxmtJbj5TlR7Qx_JtAE,55373
|
|
17
|
+
vortex/data/containers.py,sha256=Qny5rqwXEdDWxG4JlC8KcsSAsHK3pp8qukZj1PTFBOM,26004
|
|
18
|
+
vortex/data/contents.py,sha256=ZrwlJfOvkTemzikFRgYBQH3ApC-TPNrbZxpZstzDdbY,19079
|
|
19
|
+
vortex/data/executables.py,sha256=FeR3SA2wW97zAQXwWVecZ0v6VYT5L_3K1Czuv33Bk74,6723
|
|
20
|
+
vortex/data/flow.py,sha256=P1itBnA8jaoCWnVQjqbD_Pf26rpzud1JdwSLECDnDl4,3008
|
|
21
|
+
vortex/data/geometries.ini,sha256=J7hX5hYWqwBjdUAul6q8j10U6b3I-QEHrFJ98LBTQXM,52805
|
|
22
|
+
vortex/data/geometries.py,sha256=SjCF-74zDkbpt3qQujJU_UpeoBtgS7-xrEhbC4ywyRE,27429
|
|
23
|
+
vortex/data/handlers.py,sha256=6tRfCw9yzQCndVhRjz3ia0dyYhV3F7_rWeXjoxBtbvs,47550
|
|
24
|
+
vortex/data/outflow.py,sha256=IPKJkn75lRvhSqN5969TuhRAPnsZKlrWR4Cmw6VBFDs,1475
|
|
25
|
+
vortex/data/providers.py,sha256=kLHJI3F9mkRjRcQzs0xaH_cdfvXd9H4x5h1Lm4PGSFk,15652
|
|
26
|
+
vortex/data/resources.py,sha256=UOwvQDTJxS9z66Aa7JM2nWM3IxrMWvY3L2J9D5w3sZw,6348
|
|
27
|
+
vortex/data/stores.py,sha256=SASD78OChHCac-tgk1dZjRd7g3cYVsHiVf5c7UVl_KE,44354
|
|
28
|
+
vortex/data/sync_templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
+
vortex/layout/__init__.py,sha256=aZsDhVJrd3-648vw-UESI_2BLxyGl71sHdyrg9cL638,826
|
|
30
|
+
vortex/layout/contexts.py,sha256=GkysEtOOUj3nQvGUWrFjOOjzv7SmWFPUSLTH_pMMycI,20363
|
|
31
|
+
vortex/layout/dataflow.py,sha256=SKOUJKbtftW4POStjyBqNrqjvfbutsNHnWQ-p_75l_8,44792
|
|
32
|
+
vortex/layout/monitor.py,sha256=DIUXoW242tg5B6fFEEe2Og-NOxli1T_xpcNWFvTaWXQ,34316
|
|
33
|
+
vortex/nwp/__init__.py,sha256=UfB2il-lEjF87PyVO9sGxjcuy3OYhZwskZw3z52VYAE,311
|
|
34
|
+
vortex/nwp/algo/__init__.py,sha256=_it4GhWxay_WAy0qr2IxLdIqsjWxXcsSSB7wx1BitB4,577
|
|
35
|
+
vortex/nwp/algo/assim.py,sha256=vt3UjvAik4xBl_QC-Yj1CxY4vaiAYvGzzf27XwLoykA,15922
|
|
36
|
+
vortex/nwp/algo/clim.py,sha256=Z9QwUfosH0X_xTg6mam68qWIvw6Ts6CZIpc7Nb0NO1s,37511
|
|
37
|
+
vortex/nwp/algo/coupling.py,sha256=6KQ_YB7PCvVbt6c2VEtpCzwIyWRTjLfu54mNpKnXL9Q,29755
|
|
38
|
+
vortex/nwp/algo/eda.py,sha256=Wf2mt1r6v_ZYDz4BFyt-4JP1XAsO8sZW3O1UAOSRzmU,30746
|
|
39
|
+
vortex/nwp/algo/eps.py,sha256=JCBFiaFF9TQ-x7Szgw44Cd39tRD9184UXqOtoT6aRCs,26812
|
|
40
|
+
vortex/nwp/algo/forecasts.py,sha256=sqs0IETanpfS8q1f1Pl3mQZtSNbfOIUOidmcduGp8EU,30063
|
|
41
|
+
vortex/nwp/algo/fpserver.py,sha256=98HQZsdQE22spy_mIE1G-NORQMMjfA5grEjeIMSlP9w,50163
|
|
42
|
+
vortex/nwp/algo/ifsnaming.py,sha256=WfpSpRJ7ua3ihqv8Y4UkrvE4pb0CkNWKIlW9EjY-2ao,11188
|
|
43
|
+
vortex/nwp/algo/ifsroot.py,sha256=Mmp0sZtexP5ob3iUFTiVbgVWog7ubAYPut0cAB0vbbg,14230
|
|
44
|
+
vortex/nwp/algo/monitoring.py,sha256=JVPZPw_I5QRVtYvvSYpJpBy5RRPhqBQjcAFfIkvKuHA,8893
|
|
45
|
+
vortex/nwp/algo/mpitools.py,sha256=QO3I9iMdY69znnA6hJy8XUAzBoejDpsVMQFRo3YzXro,24876
|
|
46
|
+
vortex/nwp/algo/odbtools.py,sha256=xltXS1lpxeeJXeCGnFiqFUhGqMI6BlZzKcSLhsnd2cs,44094
|
|
47
|
+
vortex/nwp/algo/oopsroot.py,sha256=es3p7RPOixQT74TcglJX1q8MswxveVnLZa84kyhu3uM,33806
|
|
48
|
+
vortex/nwp/algo/oopstests.py,sha256=owQAS7_fGbUGZGzMsJek32dbb3JQ6dafSVBrdmveQ-Q,6654
|
|
49
|
+
vortex/nwp/algo/request.py,sha256=y5N9RUfKoPXR6EbSely37Zz6d-2HYyfV3UCvvoenqbY,22809
|
|
50
|
+
vortex/nwp/algo/stdpost.py,sha256=kpZrP6s92PrrAWyLrf61bSidwkJzC3M6sxrmpete3S0,54824
|
|
51
|
+
vortex/nwp/data/__init__.py,sha256=K__vn-gvNL7ytd0DGEQAZzkuo2gLwcCcfgMcQMLuOE4,886
|
|
52
|
+
vortex/nwp/data/assim.py,sha256=Dv5nmRYDDzYopC6xIwAl92HFTIz3k18C1jFE_IhYzuU,10095
|
|
53
|
+
vortex/nwp/data/boundaries.py,sha256=xZoIriM5L-Q66_am6rOD2ZO0s-31iAUeTE7NZIXXvHI,8114
|
|
54
|
+
vortex/nwp/data/climfiles.py,sha256=hlpe51wc-qrLFV_PX3vCedfLJu8Ko4VHa_qoVmA-Wcg,12610
|
|
55
|
+
vortex/nwp/data/configfiles.py,sha256=0c3VvM25dhU6-QEJs5Wo4IckIVjXFHc-tTEzh1Bho1c,3760
|
|
56
|
+
vortex/nwp/data/consts.py,sha256=riUtekoj3ozBgjxW6xEzhEaWWA7QvZFhU52Y3JS02Eg,21871
|
|
57
|
+
vortex/nwp/data/ctpini.py,sha256=wEpJG7Px2hb7Vudn4eY2vJHKi8YYO99Sd6UJAeT5kMI,3537
|
|
58
|
+
vortex/nwp/data/diagnostics.py,sha256=4ZP1w0ls2FIH59441rTCYDrp0JFfRJ7tiLDWmrdvuwM,5054
|
|
59
|
+
vortex/nwp/data/eda.py,sha256=rVQ35SpHVdHAQ10-LhyGy1k6P9Dbd6os8Crz2I4ThvY,4112
|
|
60
|
+
vortex/nwp/data/eps.py,sha256=nLKTEpEeMxV9oE_sf87xihspMqwzXA8r9uJPP6PdycE,11861
|
|
61
|
+
vortex/nwp/data/executables.py,sha256=xFRHzE5rK71m7gkd-LgMO3KSs0uBeCLqW-8vmedMHqQ,25036
|
|
62
|
+
vortex/nwp/data/fields.py,sha256=umIbobpgbqIxo4pIIKgpYHwmk4CNLj2LBINOAF-Hs_g,3088
|
|
63
|
+
vortex/nwp/data/gridfiles.py,sha256=wXuszvi_-ADaH6NC5A-QM6HhhYgOKtL2dt3DSS5-mWk,10894
|
|
64
|
+
vortex/nwp/data/logs.py,sha256=ZteBocLstW4KuXYEYyHkPNU_wBImSEo-eZHgSeh28gA,17756
|
|
65
|
+
vortex/nwp/data/modelstates.py,sha256=Yy0zHkuR6bAqscoE828Pq48zr1ba2qQ0LZ6BvlitwvM,10420
|
|
66
|
+
vortex/nwp/data/monitoring.py,sha256=-9IYKftPlMi1gGVwbswwdldUY7Y8nLrsrIHG9AW2l8Q,4768
|
|
67
|
+
vortex/nwp/data/namelists.py,sha256=OlKf_XIcxMzqFb6BK1sotV0naLBWQFm0_SkjJfMhTR0,20853
|
|
68
|
+
vortex/nwp/data/obs.py,sha256=ZYUJ_NvI1OaaWw7h4I5tM3lNns66l--bwtHtayWKPoA,25378
|
|
69
|
+
vortex/nwp/data/oopsexec.py,sha256=LlCfDZuEZVuTBFwa-pzRpO9nxOOq2398ObBItjiOXBE,1995
|
|
70
|
+
vortex/nwp/data/providers.py,sha256=eHibwb_jkeFLyIywY4nA3PzpvxHal5J_3NjlF2M0bvc,7293
|
|
71
|
+
vortex/nwp/data/query.py,sha256=IGGgGNMKH3beTpsx1_YsIYg6OE-cUBQzczwBE9m1JPU,5451
|
|
72
|
+
vortex/nwp/data/stores.py,sha256=-WK7uaF4SlwDgABVFx-Vz7_hdSLPsYgIcECWl46Prk8,5354
|
|
73
|
+
vortex/nwp/data/surfex.py,sha256=u8_SBCBAKhz1utghoGmB-bWTtDwIFteOEQv1HRkYLYw,7643
|
|
74
|
+
vortex/nwp/syntax/__init__.py,sha256=m9oAm8sMUB8WzEnq93II1I20fYd1O29nBGWaa5ClmzQ,281
|
|
75
|
+
vortex/nwp/syntax/stdattrs.py,sha256=HiLqZG_iuxqzYLsybMNAxoz_z96frg_PTksXomuYCRE,12928
|
|
76
|
+
vortex/nwp/tools/__init__.py,sha256=sR7JX87XxZGSWzH1zLHzbdid7hIy96yUQodYqZo8Jz8,230
|
|
77
|
+
vortex/nwp/tools/addons.py,sha256=-EFJanufVR1Czt156VmhYSKrmCz8ddJ4IqTa12wuYGc,934
|
|
78
|
+
vortex/nwp/tools/agt.py,sha256=argNI3XB5G__mxcZH1K8BWd1Fw9W2Fvfiu5Y_S8sBb8,2342
|
|
79
|
+
vortex/nwp/tools/bdap.py,sha256=GdqC4QclVHzZUNQGYQPu9EmFPNEEBadDNGsLmrE2XUs,1689
|
|
80
|
+
vortex/nwp/tools/bdcp.py,sha256=cDlkIVZW9grF2YnieIoiwsDhPxQsJIcaBuOCu6rsCzo,986
|
|
81
|
+
vortex/nwp/tools/bdm.py,sha256=e9o3IpR9C4GGd7NhXWt0bpogrcVkqn_hbEJBtThSV5g,360
|
|
82
|
+
vortex/nwp/tools/bdmp.py,sha256=tlsaPvsPtKSXrq2T7X_xtAdWGZ3Hg2qJUJfH8Fetx3E,1506
|
|
83
|
+
vortex/nwp/tools/conftools.py,sha256=bCZ1vUMc1fkuzFEKw95KDXD9Fs4-uDg546RHuJyJmtU,59494
|
|
84
|
+
vortex/nwp/tools/drhook.py,sha256=8BgHw1UGxgviLche73XUltuUtkN9rqjBPy4oBLyG4KY,1972
|
|
85
|
+
vortex/nwp/tools/grib.py,sha256=Uur8z4NjGoRXV4Via-63F9Px59FKG5UxiLM9yMgNkUs,10262
|
|
86
|
+
vortex/nwp/tools/gribdiff.py,sha256=VD4nH06DuFheE9HsFT1UXWnvAC5vUfVBPeqQhCK4wbo,3137
|
|
87
|
+
vortex/nwp/tools/ifstools.py,sha256=JzkQgsD4zwbPFA9Du_oRnOog7liHF8w5JmoxzyWKc08,7041
|
|
88
|
+
vortex/nwp/tools/igastuff.py,sha256=IAnsFwiBcnyqHMmXiTX32dE1uaSWst41DBM98SNMdVU,8249
|
|
89
|
+
vortex/nwp/tools/mars.py,sha256=HR_dpczIhTxQFcNs0BXGsXvMHZkFX4u-XhYw5lFIxXY,1823
|
|
90
|
+
vortex/nwp/tools/odb.py,sha256=2PbZ6p5VIcGDzZLDcUEx39IAqF1GhUWgNOhO8uXywmk,23101
|
|
91
|
+
vortex/nwp/tools/partitioning.py,sha256=8_QVB3fNr5sPY7tlh2FxTzzLyLATq9AEuEheZiiHWUI,9242
|
|
92
|
+
vortex/nwp/tools/satrad.py,sha256=t16vD0lGoUtxhbfDuC282dIEtCrQ9xYFtjUpEqoZa8s,2421
|
|
93
|
+
vortex/nwp/util/__init__.py,sha256=Weqz6S6ZTwjtveSMD1poZYDAKvnsZFjq172VrAq221Q,71
|
|
94
|
+
vortex/nwp/util/async.py,sha256=8Nqn48BRR89utiPjDtS0MK0PGUQYl1cPy_qkLD2hA6M,7031
|
|
95
|
+
vortex/nwp/util/beacon.py,sha256=ZIHlG9siLh0kK6mMx3iYkbscyM7j5BJ5MOOB0Ey7dH8,1181
|
|
96
|
+
vortex/nwp/util/diffpygram.py,sha256=ZFDrbHNZBVBmXGjFsnH5EcyGW7lawNtT6GZA7BPGpU4,14957
|
|
97
|
+
vortex/nwp/util/ens.py,sha256=laRzoD2ZCV-lp_IEFBb-cmBt_Zlnl6nf_Ps0Gs5nkY4,9533
|
|
98
|
+
vortex/nwp/util/hooks.py,sha256=8di5CY0oPDgVnXtKVcbmC6UU_pdZypwEJ_U8M6d4bOE,4646
|
|
99
|
+
vortex/nwp/util/taskdeco.py,sha256=bX-gVnA6IUaOsJjxm0nVddrG7aniN7TRCbl9r23A8s0,2335
|
|
100
|
+
vortex/nwp/util/usepygram.py,sha256=255OL_RadazMQdf-iSHxc4a7AgfmOmfSyzCHyN54q8I,23766
|
|
101
|
+
vortex/nwp/util/usetnt.py,sha256=PwQuUWcBdo8WOw25b_Jw5T1N9HJZFmEXopphNi-Xgzc,3462
|
|
102
|
+
vortex/syntax/__init__.py,sha256=q0eJcJ1gRbSrALTC8UaORRrHNmRxVUpbTNB1_uQbJi0,288
|
|
103
|
+
vortex/syntax/stdattrs.py,sha256=OosTS6hdGGh1r5rwZNngmMb6zFj0NUrFZmYs7lDbysY,20927
|
|
104
|
+
vortex/syntax/stddeco.py,sha256=Y94wAf-zEQr8RUmF_OUZkBKO1fPZnx3ju2g3DnPl9cw,6411
|
|
105
|
+
vortex/tools/__init__.py,sha256=KPsj7iqvy-vlo3WEIx8PmbqJYVDXCzZZdDSbMlqDq0k,482
|
|
106
|
+
vortex/tools/actions.py,sha256=BrPDuYXKiGChRVtjXVhLyEGls0-AP6C8TaeTMiQwPyo,16001
|
|
107
|
+
vortex/tools/addons.py,sha256=vTfAXEz0zrFDGUbrFxwgBO67enrE2mmLbKKlakLSNpI,10439
|
|
108
|
+
vortex/tools/arm.py,sha256=jl--2QOkhHkRXlxpZgo4E3Zw7Z_Gnr4z1fjPnPNyuyc,3112
|
|
109
|
+
vortex/tools/compression.py,sha256=dTXX1VrzxEj1qoBDKbB_T-_8X9iGHOlPaseczfu8cuw,11221
|
|
110
|
+
vortex/tools/date.py,sha256=GT-kh_48j6LqQJuXB3XA2FV1wkY6XWnXv-YhjSdU9GQ,645
|
|
111
|
+
vortex/tools/ddhpack.py,sha256=tOcQ5XQ7yTFBlisyjANDPMPQPijvHwz8yWY1eBfZMAs,206
|
|
112
|
+
vortex/tools/delayedactions.py,sha256=miw6q5L5eOaxtLXhPIJlVs5Mi8vMXuIx55dY2TtU8BU,27126
|
|
113
|
+
vortex/tools/env.py,sha256=ka7VaM3D5XuMRxja7oWA-eLgsUFqtWOmPvfbyHBi8Ps,18460
|
|
114
|
+
vortex/tools/folder.py,sha256=R3bQtwnyn01WzkF3NdzJKb2tCkAPWYB61Bb90r0B09I,27992
|
|
115
|
+
vortex/tools/grib.py,sha256=aH1y2LZDRBn3TywXsVZlxTRk6kdShMVgbHJTpGcfMGU,25700
|
|
116
|
+
vortex/tools/lfi.py,sha256=9mvXL-R5PQtTut7gsSMGJa0iNqpNgOFp7yuEMqYGIBA,29681
|
|
117
|
+
vortex/tools/listings.py,sha256=LTfQHjT0XlK3Hxewbi06HZQjKhALmg0Gvz69UooOFog,15123
|
|
118
|
+
vortex/tools/names.py,sha256=Knb2YsUsEjGpODBva1kEOBXRM2d_H0ylHwp-OoO3mnY,21644
|
|
119
|
+
vortex/tools/net.py,sha256=MWamIGwm52qDpRhpxMP1BihsyZW4SwoPl6hg0GgX7WA,73734
|
|
120
|
+
vortex/tools/odb.py,sha256=TZ1Qq8QmFIh3OP-bsgnwPuHPdfMKNXUAfhc-KSx9tZQ,193
|
|
121
|
+
vortex/tools/parallelism.py,sha256=f4uBp37Q3BG71Qn1yy_YSTPdk-2ZZ7zoGRQsGm6pT1Y,12345
|
|
122
|
+
vortex/tools/prestaging.py,sha256=lGJIo4SA8pDziF1nbBogsrK1bgwDQA6tj9Wg9VUFt6Q,7078
|
|
123
|
+
vortex/tools/rawfiles.py,sha256=keUI6QtEZQrWQ7H_Sg_TY9SY32anfb-suqJkrDmdXN0,215
|
|
124
|
+
vortex/tools/schedulers.py,sha256=XduOQab1dRiHwz7Mnt3mxXByGzAHMsDLCwlUOpMdXEk,15828
|
|
125
|
+
vortex/tools/services.py,sha256=_cVaHQmwknJmSny6y20BL2M2K68MKN-ydOFtxWn9lPs,29228
|
|
126
|
+
vortex/tools/storage.py,sha256=YBhq00j39NipaK1EDovr0VF7EArdpp5AuFx0lqB0_p4,34411
|
|
127
|
+
vortex/tools/surfex.py,sha256=qbCIGt-dmfIRWRRMjOQnzc9sGNnt8PIFSqQYT77trhw,1408
|
|
128
|
+
vortex/tools/systems.py,sha256=yIs-Qy7roVdOAeWas20grfhiw-aeJVZ9JyIvTyu8mro,148751
|
|
129
|
+
vortex/tools/targets.py,sha256=-n2uMoEFdz3AeoSd1IGhlr7dYYb8xantUeh9_ggk9iI,14896
|
|
130
|
+
vortex/util/__init__.py,sha256=Zt0OASbKbNnnwUqFHFoq5Mk13sGYSQhxqh7bUvJH6Y8,198
|
|
131
|
+
vortex/util/config.py,sha256=KJHq0GMNRlwzh2WUdpwn1FIKCuAXla7nPRe7j3IZGcI,40045
|
|
132
|
+
vortex/util/empty.py,sha256=EYcltpsjGxATAPPAVK2QRq_Bc5tcFLfF34dE1KO1tvk,535
|
|
133
|
+
vortex/util/helpers.py,sha256=vmz2h3MCL1FElZpn-MX3MX6L_RCQfyqMXTcYWpcYyr4,7492
|
|
134
|
+
vortex/util/introspection.py,sha256=VWZ6Ntr4fMJD4Xr_q-F7_lMHTSjDpHptnZ3SckBtuYY,2146
|
|
135
|
+
vortex/util/iosponge.py,sha256=wuEa0Flv_UeOndg7P9KnBOvW73zCQT1GoxNpqic4Gic,2594
|
|
136
|
+
vortex/util/roles.py,sha256=9un_QAijaMn5iTS7PrdoWI5_NNw7uHxMWTnyhc5aNzg,1150
|
|
137
|
+
vortex/util/storefunctions.py,sha256=uSfG-G_A88iJf3DwFBd-j0rw6eJta8opfRT39aQHsHM,3615
|
|
138
|
+
vortex/util/structs.py,sha256=vapErq0MNhiKlsnjrv_a5M0Rn29KbP3WE_oiy4Hfwb8,683
|
|
139
|
+
vortex/util/worker.py,sha256=zp8f2tx4SXwf1v55XMdYLAx7n3vSlg8PRGrkHgnfdmg,4721
|
|
140
|
+
vortex_nwp-2.0.0.dist-info/licenses/LICENSE,sha256=ewBJPmWAcQqtBPrydH10tt6ECkcYP3b1o2RfH85pJF0,21863
|
|
141
|
+
vortex_nwp-2.0.0.dist-info/METADATA,sha256=zQc2WitX1IFsowNtv7Wc4g0cIlN0USTscn28SGP3bX0,2185
|
|
142
|
+
vortex_nwp-2.0.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
143
|
+
vortex_nwp-2.0.0.dist-info/top_level.txt,sha256=3xfbSD7kw8xKl0jk4GNHsOPKbhubstfWHPl6bxHciRQ,7
|
|
144
|
+
vortex_nwp-2.0.0.dist-info/RECORD,,
|