vortex-nwp 2.0.0b1__tar.gz → 2.1.0__tar.gz
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_nwp-2.1.0/PKG-INFO +67 -0
- vortex_nwp-2.1.0/README.md +42 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/pyproject.toml +9 -2
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/__init__.py +75 -47
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/algo/__init__.py +3 -2
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/algo/components.py +944 -618
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/algo/mpitools.py +802 -497
- vortex_nwp-2.1.0/src/vortex/algo/mpitools_templates/__init__.py +1 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/algo/serversynctools.py +34 -33
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/config.py +19 -22
- vortex_nwp-2.1.0/src/vortex/data/__init__.py +19 -0
- vortex_nwp-2.1.0/src/vortex/data/abstractstores.py +1510 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/data/containers.py +217 -162
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/data/contents.py +65 -39
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/data/executables.py +93 -102
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/data/flow.py +40 -34
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/data/geometries.py +228 -132
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/data/handlers.py +436 -227
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/data/outflow.py +15 -15
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/data/providers.py +185 -163
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/data/resources.py +48 -42
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/data/stores.py +540 -417
- vortex_nwp-2.1.0/src/vortex/data/sync_templates/__init__.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/gloves.py +114 -87
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/layout/__init__.py +1 -8
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/layout/contexts.py +150 -84
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/layout/dataflow.py +353 -202
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/layout/monitor.py +264 -128
- vortex_nwp-2.1.0/src/vortex/nwp/__init__.py +14 -0
- vortex_nwp-2.1.0/src/vortex/nwp/algo/__init__.py +21 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/algo/assim.py +205 -151
- vortex_nwp-2.1.0/src/vortex/nwp/algo/clim.py +1086 -0
- vortex_nwp-2.1.0/src/vortex/nwp/algo/coupling.py +831 -0
- vortex_nwp-2.1.0/src/vortex/nwp/algo/eda.py +840 -0
- vortex_nwp-2.1.0/src/vortex/nwp/algo/eps.py +785 -0
- vortex_nwp-2.1.0/src/vortex/nwp/algo/forecasts.py +886 -0
- vortex_nwp-2.1.0/src/vortex/nwp/algo/fpserver.py +1303 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/algo/ifsnaming.py +205 -145
- vortex_nwp-2.1.0/src/vortex/nwp/algo/ifsroot.py +404 -0
- vortex_nwp-2.1.0/src/vortex/nwp/algo/monitoring.py +263 -0
- vortex_nwp-2.1.0/src/vortex/nwp/algo/mpitools.py +694 -0
- vortex_nwp-2.1.0/src/vortex/nwp/algo/odbtools.py +1258 -0
- vortex_nwp-2.1.0/src/vortex/nwp/algo/oopsroot.py +916 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/algo/oopstests.py +90 -56
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/algo/request.py +287 -206
- vortex_nwp-2.1.0/src/vortex/nwp/algo/stdpost.py +1641 -0
- vortex_nwp-2.1.0/src/vortex/nwp/data/__init__.py +30 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/data/assim.py +125 -137
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/data/boundaries.py +121 -68
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/data/climfiles.py +193 -211
- vortex_nwp-2.1.0/src/vortex/nwp/data/configfiles.py +153 -0
- vortex_nwp-2.1.0/src/vortex/nwp/data/consts.py +954 -0
- vortex_nwp-2.1.0/src/vortex/nwp/data/ctpini.py +149 -0
- vortex_nwp-2.1.0/src/vortex/nwp/data/diagnostics.py +209 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/data/eda.py +50 -51
- vortex_nwp-2.1.0/src/vortex/nwp/data/eps.py +432 -0
- vortex_nwp-2.1.0/src/vortex/nwp/data/executables.py +1045 -0
- vortex_nwp-2.1.0/src/vortex/nwp/data/fields.py +111 -0
- vortex_nwp-2.1.0/src/vortex/nwp/data/gridfiles.py +380 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/data/logs.py +250 -217
- vortex_nwp-2.1.0/src/vortex/nwp/data/modelstates.py +363 -0
- vortex_nwp-2.1.0/src/vortex/nwp/data/monitoring.py +193 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/data/namelists.py +254 -202
- vortex_nwp-2.1.0/src/vortex/nwp/data/obs.py +840 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/data/oopsexec.py +22 -20
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/data/providers.py +90 -65
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/data/query.py +71 -82
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/data/stores.py +49 -36
- vortex_nwp-2.1.0/src/vortex/nwp/data/surfex.py +337 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/syntax/__init__.py +1 -1
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/syntax/stdattrs.py +173 -111
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/__init__.py +2 -2
- vortex_nwp-2.1.0/src/vortex/nwp/tools/addons.py +40 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/agt.py +24 -12
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/bdap.py +16 -5
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/bdcp.py +4 -1
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/bdm.py +3 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/bdmp.py +14 -9
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/conftools.py +728 -378
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/drhook.py +12 -8
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/grib.py +65 -39
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/gribdiff.py +22 -17
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/ifstools.py +82 -42
- vortex_nwp-2.1.0/src/vortex/nwp/tools/igastuff.py +273 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/mars.py +14 -2
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/odb.py +234 -125
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/partitioning.py +61 -37
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/tools/satrad.py +27 -12
- vortex_nwp-2.1.0/src/vortex/nwp/util/async.py +212 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/util/beacon.py +10 -10
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/util/diffpygram.py +174 -86
- vortex_nwp-2.1.0/src/vortex/nwp/util/ens.py +279 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/util/hooks.py +30 -19
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/util/taskdeco.py +28 -24
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/util/usepygram.py +278 -172
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/util/usetnt.py +31 -17
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/sessions.py +72 -39
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/syntax/__init__.py +1 -1
- vortex_nwp-2.1.0/src/vortex/syntax/stdattrs.py +867 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/syntax/stddeco.py +31 -22
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/toolbox.py +327 -192
- vortex_nwp-2.1.0/src/vortex/tools/__init__.py +20 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/actions.py +110 -121
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/addons.py +111 -92
- vortex_nwp-2.1.0/src/vortex/tools/arm.py +96 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/compression.py +72 -69
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/date.py +11 -4
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/delayedactions.py +242 -132
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/env.py +75 -47
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/folder.py +342 -171
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/grib.py +341 -162
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/lfi.py +423 -216
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/listings.py +109 -40
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/names.py +218 -156
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/net.py +655 -299
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/parallelism.py +93 -61
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/prestaging.py +55 -31
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/schedulers.py +172 -105
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/services.py +403 -334
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/storage.py +293 -358
- vortex_nwp-2.1.0/src/vortex/tools/surfex.py +61 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/systems.py +1234 -643
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/targets.py +156 -100
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/util/__init__.py +1 -1
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/util/config.py +378 -327
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/util/empty.py +2 -2
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/util/helpers.py +56 -24
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/util/introspection.py +18 -12
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/util/iosponge.py +8 -4
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/util/roles.py +4 -6
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/util/storefunctions.py +39 -13
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/util/structs.py +3 -3
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/util/worker.py +29 -17
- vortex_nwp-2.1.0/src/vortex_nwp.egg-info/PKG-INFO +67 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex_nwp.egg-info/SOURCES.txt +6 -4
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex_nwp.egg-info/requires.txt +4 -0
- vortex_nwp-2.1.0/tests/test_config.py +58 -0
- vortex_nwp-2.1.0/tests/test_smartftget.py +81 -0
- vortex_nwp-2.1.0/tests/test_ssh.py +23 -0
- vortex_nwp-2.1.0/tests/test_templates.py +40 -0
- vortex_nwp-2.0.0b1/PKG-INFO +0 -50
- vortex_nwp-2.0.0b1/README.md +0 -29
- vortex_nwp-2.0.0b1/src/vortex/data/__init__.py +0 -13
- vortex_nwp-2.0.0b1/src/vortex/data/abstractstores.py +0 -1572
- vortex_nwp-2.0.0b1/src/vortex/layout/appconf.py +0 -109
- vortex_nwp-2.0.0b1/src/vortex/layout/jobs.py +0 -1276
- vortex_nwp-2.0.0b1/src/vortex/layout/nodes.py +0 -1424
- vortex_nwp-2.0.0b1/src/vortex/layout/subjobs.py +0 -464
- vortex_nwp-2.0.0b1/src/vortex/nwp/__init__.py +0 -11
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/__init__.py +0 -12
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/clim.py +0 -920
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/coupling.py +0 -609
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/eda.py +0 -632
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/eps.py +0 -613
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/forecasts.py +0 -745
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/fpserver.py +0 -927
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/ifsroot.py +0 -311
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/monitoring.py +0 -202
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/mpitools.py +0 -554
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/odbtools.py +0 -974
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/oopsroot.py +0 -735
- vortex_nwp-2.0.0b1/src/vortex/nwp/algo/stdpost.py +0 -1285
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/__init__.py +0 -12
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/configfiles.py +0 -149
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/consts.py +0 -929
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/ctpini.py +0 -133
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/diagnostics.py +0 -181
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/eps.py +0 -383
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/executables.py +0 -1039
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/fields.py +0 -96
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/gridfiles.py +0 -308
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/modelstates.py +0 -334
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/monitoring.py +0 -220
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/obs.py +0 -748
- vortex_nwp-2.0.0b1/src/vortex/nwp/data/surfex.py +0 -338
- vortex_nwp-2.0.0b1/src/vortex/nwp/tools/addons.py +0 -35
- vortex_nwp-2.0.0b1/src/vortex/nwp/tools/igastuff.py +0 -249
- vortex_nwp-2.0.0b1/src/vortex/nwp/util/async.py +0 -184
- vortex_nwp-2.0.0b1/src/vortex/nwp/util/ens.py +0 -198
- vortex_nwp-2.0.0b1/src/vortex/syntax/stdattrs.py +0 -628
- vortex_nwp-2.0.0b1/src/vortex/tools/__init__.py +0 -11
- vortex_nwp-2.0.0b1/src/vortex/tools/arm.py +0 -76
- vortex_nwp-2.0.0b1/src/vortex/tools/surfex.py +0 -61
- vortex_nwp-2.0.0b1/src/vortex_nwp.egg-info/PKG-INFO +0 -50
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/LICENSE +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/setup.cfg +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/algo/mpitools_templates/envelope_wrapper_default.tpl +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/algo/mpitools_templates/envelope_wrapper_mpiauto.tpl +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/algo/mpitools_templates/wrapstd_wrapper_default.tpl +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/data/geometries.ini +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/nwp/util/__init__.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/proxy.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/ddhpack.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/odb.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex/tools/rawfiles.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex_nwp.egg-info/dependency_links.txt +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/src/vortex_nwp.egg-info/top_level.txt +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_algo_server.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_arpifs_listings_integration.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_cfgparser.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_cfgtemplating.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_compression.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_conftools.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_containers.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_doctests.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_ecmwf_interface.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_env.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_epygram.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_gco.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_ifstools.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_import.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_iosponge.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_job_examples.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_layoutappconf.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_layoutjobs.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_layoutmonitor.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_layoutnodes.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_net_netstat.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_net_ssh.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_partitioning.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_providers.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_sessions_stuff.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_simpleworkflow.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_storage.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_stores.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_syntax.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_targets.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_toolsodb.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_uget.py +0 -0
- {vortex_nwp-2.0.0b1 → vortex_nwp-2.1.0}/tests/test_vortexnames.py +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vortex-nwp
|
|
3
|
+
Version: 2.1.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,42 @@
|
|
|
1
|
+
## vortex
|
|
2
|
+
|
|
3
|
+
A Python library to write individual tasks in Numerical Weather
|
|
4
|
+
Prediction pipelines.
|
|
5
|
+
|
|
6
|
+

|
|
7
|
+
|
|
8
|
+
Experiments in Numerical Weather Prediction (NWP) and related fields
|
|
9
|
+
consist in a series of computational tasks that can depend on each
|
|
10
|
+
other's output data. Each task is typically made of three successive
|
|
11
|
+
steps:
|
|
12
|
+
|
|
13
|
+
1. Fetch required input data.
|
|
14
|
+
2. Execute a program.
|
|
15
|
+
3. Make the program's output data available to subsequent tasks in the
|
|
16
|
+
pipeline.
|
|
17
|
+
|
|
18
|
+
Tasks have historically been written in some variant of the UNIX
|
|
19
|
+
shell, which was convenient to interact with the file system, manage
|
|
20
|
+
environment variables and execute programs. As NWP pipelines and
|
|
21
|
+
tasks grow more and more complex, however, there is a need for a
|
|
22
|
+
language providing more abstraction and code reuse mechanisms.
|
|
23
|
+
|
|
24
|
+
On top of the popular Python language, *vortex* provides abstractions
|
|
25
|
+
that encapsulate running -- potentially distributed -- programs as
|
|
26
|
+
well as fetching and storing the data they consume and generate.
|
|
27
|
+
|
|
28
|
+
### Documentation
|
|
29
|
+
|
|
30
|
+
The documentation is available at [vortex-nwp.readthedocs.io](https://vortex-nwp.readthedocs.io).
|
|
31
|
+
|
|
32
|
+
### Installation
|
|
33
|
+
|
|
34
|
+
Vortex can be installed using `pip` like most Python packages:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install vortex-nwp
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Contributing
|
|
41
|
+
|
|
42
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "vortex-nwp"
|
|
7
|
-
version = "2.0
|
|
7
|
+
version = "2.1.0"
|
|
8
8
|
description = "A Python library to write Numerical Weather Prediction pipelines components"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.7"
|
|
@@ -22,7 +22,8 @@ dependencies = [
|
|
|
22
22
|
]
|
|
23
23
|
|
|
24
24
|
[project.optional-dependencies]
|
|
25
|
-
|
|
25
|
+
docs = ["sphinx", "sphinx-book-theme", "sphinx-copybutton"]
|
|
26
|
+
dev = ["ruff==0.9.1", "pytest"]
|
|
26
27
|
|
|
27
28
|
[tool.setuptools.packages.find]
|
|
28
29
|
where = ["src"]
|
|
@@ -30,3 +31,9 @@ where = ["src"]
|
|
|
30
31
|
[tool.setuptools.package-data]
|
|
31
32
|
"vortex.data" = ["geometries.ini"]
|
|
32
33
|
"vortex.algo" = ["mpitools_templates/*.tpl"]
|
|
34
|
+
|
|
35
|
+
[tool.ruff]
|
|
36
|
+
line-length = 79
|
|
37
|
+
|
|
38
|
+
[tool.ruff.lint]
|
|
39
|
+
ignore = ["E741"]
|
|
@@ -20,45 +20,75 @@ of the very high level interface defined in the :mod:`vortex.toolbox` module is
|
|
|
20
20
|
strongly advised.
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
import atexit
|
|
24
|
+
import sys
|
|
25
|
+
import os
|
|
26
|
+
|
|
27
|
+
# importlib.metadata included in stdlib from 3.8 onwards.
|
|
28
|
+
# For older versions, import third-party importlib_metadata
|
|
29
|
+
if sys.version_info < (3, 8):
|
|
30
|
+
import importlib_metadata
|
|
31
|
+
import importlib
|
|
32
|
+
|
|
33
|
+
importlib.metadata = importlib_metadata
|
|
34
|
+
else:
|
|
35
|
+
import importlib.metadata
|
|
25
36
|
|
|
26
|
-
|
|
27
|
-
|
|
37
|
+
from bronx.fancies import loggers as bloggers
|
|
38
|
+
import bronx.stdtypes.date
|
|
39
|
+
|
|
40
|
+
import footprints
|
|
41
|
+
|
|
42
|
+
# Populate a fake proxy module with footprints shortcuts
|
|
43
|
+
from . import proxy, tools, sessions, config
|
|
44
|
+
|
|
45
|
+
# vortex user API
|
|
46
|
+
from .toolbox import input as input
|
|
47
|
+
from .toolbox import output as output
|
|
48
|
+
from .toolbox import executable as executable
|
|
49
|
+
from .toolbox import promise as promise
|
|
50
|
+
from .toolbox import diff as diff
|
|
51
|
+
from .toolbox import defaults as defaults
|
|
52
|
+
from .toolbox import algo as task
|
|
53
|
+
|
|
54
|
+
from . import nwp as nwp # footprints import
|
|
55
|
+
|
|
56
|
+
__version__ = "2.1.0"
|
|
57
|
+
__prompt__ = "Vortex v-" + __version__ + ":"
|
|
58
|
+
|
|
59
|
+
__nextversion__ = "2.1.1"
|
|
60
|
+
__tocinfoline__ = "VORTEX core package"
|
|
28
61
|
|
|
29
62
|
__all__ = [
|
|
30
|
-
"input",
|
|
63
|
+
"input",
|
|
64
|
+
"output",
|
|
65
|
+
"executable",
|
|
66
|
+
"task",
|
|
67
|
+
"promise",
|
|
68
|
+
"diff",
|
|
31
69
|
]
|
|
32
70
|
|
|
33
71
|
# Set vortex specific priorities for footprints usage
|
|
34
72
|
|
|
35
|
-
from bronx.fancies import loggers as bloggers
|
|
36
73
|
|
|
37
|
-
|
|
38
|
-
footprints.priorities.set_before('debug', 'olive', 'oper')
|
|
74
|
+
footprints.priorities.set_before("debug", "olive", "oper")
|
|
39
75
|
|
|
40
76
|
# Set a root logging mechanism for vortex
|
|
41
77
|
|
|
42
78
|
#: Shortcut to Vortex's root logger
|
|
43
|
-
logger = bloggers.getLogger(
|
|
44
|
-
|
|
45
|
-
# Populate a fake proxy module with footprints shortcuts
|
|
79
|
+
logger = bloggers.getLogger("vortex")
|
|
46
80
|
|
|
47
|
-
from . import proxy
|
|
48
81
|
setup = footprints.config.get()
|
|
49
82
|
setup.add_proxy(proxy)
|
|
50
83
|
proxy.cat = footprints.proxy.cat
|
|
51
84
|
proxy.objects = footprints.proxy.objects
|
|
52
85
|
|
|
53
86
|
# Set a background environment and a root session
|
|
54
|
-
|
|
55
|
-
from . import tools
|
|
56
|
-
from . import sessions
|
|
57
|
-
from . import config
|
|
58
|
-
|
|
59
87
|
rootenv = tools.env.Environment(active=True)
|
|
60
88
|
|
|
61
|
-
rs = sessions.get(
|
|
89
|
+
rs = sessions.get(
|
|
90
|
+
active=True, topenv=rootenv, glove=sessions.getglove(), prompt=__prompt__
|
|
91
|
+
)
|
|
62
92
|
if rs.system().systems_reload():
|
|
63
93
|
rs.system(refill=True)
|
|
64
94
|
del rs
|
|
@@ -70,8 +100,7 @@ def vortexfpdefaults():
|
|
|
70
100
|
"""Return actual glove, according to current environment."""
|
|
71
101
|
cur_session = sessions.current()
|
|
72
102
|
return dict(
|
|
73
|
-
glove=cur_session.glove,
|
|
74
|
-
systemtarget=cur_session.sh.default_target
|
|
103
|
+
glove=cur_session.glove, systemtarget=cur_session.sh.default_target
|
|
75
104
|
)
|
|
76
105
|
|
|
77
106
|
|
|
@@ -82,54 +111,53 @@ footprints.setup.callback = vortexfpdefaults
|
|
|
82
111
|
ticket = sessions.get
|
|
83
112
|
sh = sessions.system
|
|
84
113
|
|
|
85
|
-
#
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
""
|
|
90
|
-
pass
|
|
91
|
-
|
|
92
|
-
# If a config file can be found in current dir, load it
|
|
93
|
-
config.load_config()
|
|
114
|
+
# If a config file can be found in current dir, load it else load .vortex.d/vortex.toml
|
|
115
|
+
if os.path.isfile("vortex.toml"):
|
|
116
|
+
config.load_config("vortex.toml")
|
|
117
|
+
else:
|
|
118
|
+
config.load_config(os.environ["HOME"] + "/.vortex.d/vortex.toml")
|
|
94
119
|
|
|
95
120
|
# Load some superstars sub-packages
|
|
96
|
-
|
|
97
|
-
input,
|
|
98
|
-
output,
|
|
99
|
-
executable,
|
|
100
|
-
promise,
|
|
101
|
-
diff,
|
|
102
|
-
defaults,
|
|
103
|
-
)
|
|
104
|
-
from .toolbox import algo as task
|
|
105
|
-
from . import nwp
|
|
121
|
+
|
|
106
122
|
|
|
107
123
|
# Now load plugins that have been installed with the
|
|
108
124
|
# 'vtx' entry point. Order matters: since plugins
|
|
109
125
|
# will typically depend on objects defined in 'vortex'
|
|
110
126
|
# and 'vortex.nwp', these must be imported /before/
|
|
111
127
|
# loading plugins.
|
|
112
|
-
|
|
113
|
-
for plugin in entry_points(group='vtx'):
|
|
128
|
+
for plugin in importlib.metadata.entry_points(group="vtx"):
|
|
114
129
|
plugin.load()
|
|
115
130
|
print(f"Loaded plugin {plugin.name}")
|
|
116
131
|
|
|
117
|
-
# Register proper vortex exit before the end of interpreter session
|
|
118
132
|
|
|
119
|
-
|
|
133
|
+
# Register proper vortex exit before the end of interpreter session
|
|
120
134
|
def complete():
|
|
121
135
|
sessions.exit()
|
|
122
136
|
import multiprocessing
|
|
137
|
+
|
|
123
138
|
for kid in multiprocessing.active_children():
|
|
124
|
-
logger.warning(
|
|
139
|
+
logger.warning("Terminate active kid %s", str(kid))
|
|
125
140
|
kid.terminate()
|
|
126
|
-
print(
|
|
141
|
+
print(
|
|
142
|
+
"Vortex",
|
|
143
|
+
__version__,
|
|
144
|
+
"completed",
|
|
145
|
+
"(",
|
|
146
|
+
bronx.stdtypes.date.at_second().reallynice(),
|
|
147
|
+
")",
|
|
148
|
+
)
|
|
127
149
|
|
|
128
150
|
|
|
129
|
-
import atexit
|
|
130
151
|
atexit.register(complete)
|
|
131
152
|
del atexit, complete
|
|
132
153
|
|
|
133
|
-
print(
|
|
154
|
+
print(
|
|
155
|
+
"Vortex",
|
|
156
|
+
__version__,
|
|
157
|
+
"loaded",
|
|
158
|
+
"(",
|
|
159
|
+
bronx.stdtypes.date.at_second().reallynice(),
|
|
160
|
+
")",
|
|
161
|
+
)
|
|
134
162
|
|
|
135
163
|
del footprints
|
|
@@ -4,9 +4,10 @@ Generic AlgoComponent classes (and related utility classes).
|
|
|
4
4
|
Application specific AlgoComponent classes should be defined in dedicated packages.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
from . import components
|
|
7
|
+
from . import components as components
|
|
8
|
+
from . import serversynctools as serversynctools
|
|
8
9
|
|
|
9
10
|
#: No automatic export
|
|
10
11
|
__all__ = []
|
|
11
12
|
|
|
12
|
-
__tocinfoline__ =
|
|
13
|
+
__tocinfoline__ = "Generic AlgoComponent classes (and their utility classes)"
|