vortex-nwp 2.1.2__tar.gz → 2.1.3__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.2 → vortex_nwp-2.1.3}/PKG-INFO +1 -1
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/pyproject.toml +1 -1
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/__init__.py +2 -2
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/geometries.py +13 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex_nwp.egg-info/PKG-INFO +1 -1
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex_nwp.egg-info/SOURCES.txt +1 -0
- vortex_nwp-2.1.3/tests/test_geometries.py +170 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/LICENSE +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/README.md +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/setup.cfg +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/algo/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/algo/components.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/algo/mpitools.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/algo/mpitools_templates/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/algo/mpitools_templates/envelope_wrapper_default.tpl +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/algo/mpitools_templates/envelope_wrapper_mpiauto.tpl +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/algo/mpitools_templates/wrapstd_wrapper_default.tpl +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/algo/serversynctools.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/config.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/abstractstores.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/containers.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/contents.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/executables.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/flow.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/geometries.ini +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/handlers.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/outflow.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/providers.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/resources.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/stores.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/data/sync_templates/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/gloves.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/layout/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/layout/contexts.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/layout/dataflow.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/layout/monitor.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/assim.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/clim.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/coupling.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/eda.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/eps.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/forecasts.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/fpserver.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/ifsnaming.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/ifsroot.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/monitoring.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/mpitools.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/odbtools.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/oopsroot.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/oopstests.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/request.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/algo/stdpost.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/assim.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/boundaries.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/climfiles.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/configfiles.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/consts.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/ctpini.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/diagnostics.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/eda.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/eps.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/executables.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/fields.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/gridfiles.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/logs.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/modelstates.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/monitoring.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/namelists.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/obs.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/oopsexec.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/providers.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/query.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/stores.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/data/surfex.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/syntax/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/syntax/stdattrs.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/addons.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/agt.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/bdap.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/bdcp.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/bdm.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/bdmp.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/conftools.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/drhook.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/grib.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/gribdiff.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/ifstools.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/igastuff.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/mars.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/odb.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/partitioning.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/tools/satrad.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/util/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/util/async.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/util/beacon.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/util/diffpygram.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/util/ens.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/util/hooks.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/util/taskdeco.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/util/usepygram.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/nwp/util/usetnt.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/proxy.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/sessions.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/syntax/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/syntax/stdattrs.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/syntax/stddeco.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/toolbox.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/actions.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/addons.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/arm.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/compression.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/date.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/ddhpack.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/delayedactions.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/env.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/folder.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/grib.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/lfi.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/listings.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/names.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/net.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/odb.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/parallelism.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/prestaging.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/rawfiles.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/schedulers.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/services.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/storage.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/surfex.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/systems.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/tools/targets.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/util/__init__.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/util/config.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/util/empty.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/util/helpers.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/util/introspection.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/util/iosponge.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/util/roles.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/util/storefunctions.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/util/structs.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/util/worker.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex_nwp.egg-info/dependency_links.txt +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex_nwp.egg-info/requires.txt +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex_nwp.egg-info/top_level.txt +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_algo_server.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_arpifs_listings_integration.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_cfgparser.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_cfgtemplating.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_compression.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_config.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_conftools.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_containers.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_doctests.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_ecflow.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_ecmwf_interface.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_env.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_epygram.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_gco.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_ifstools.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_import.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_iosponge.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_job_examples.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_layoutappconf.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_layoutjobs.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_layoutmonitor.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_layoutnodes.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_net_netstat.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_net_ssh.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_partitioning.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_providers.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_sessions_stuff.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_simpleworkflow.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_smartftget.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_ssh.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_storage.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_stores.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_syntax.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_targets.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_templates.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_toolsodb.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_uget.py +0 -0
- {vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/tests/test_vortexnames.py +0 -0
|
@@ -53,10 +53,10 @@ from .toolbox import algo as task
|
|
|
53
53
|
|
|
54
54
|
from . import nwp as nwp # footprints import
|
|
55
55
|
|
|
56
|
-
__version__ = "2.1.
|
|
56
|
+
__version__ = "2.1.3"
|
|
57
57
|
__prompt__ = "Vortex v-" + __version__ + ":"
|
|
58
58
|
|
|
59
|
-
__nextversion__ = "2.1.
|
|
59
|
+
__nextversion__ = "2.1.4"
|
|
60
60
|
__tocinfoline__ = "VORTEX core package"
|
|
61
61
|
|
|
62
62
|
__all__ = [
|
|
@@ -764,12 +764,25 @@ def load(inifile="@geometries.ini", refresh=False, verbose=True):
|
|
|
764
764
|
|
|
765
765
|
The class that will be instantiated depends on the "kind" keyword..
|
|
766
766
|
"""
|
|
767
|
+
from vortex import sessions
|
|
768
|
+
|
|
767
769
|
iniconf = configparser.ConfigParser()
|
|
770
|
+
|
|
771
|
+
# Load from vortex distribution
|
|
768
772
|
with importlib.resources.open_text(
|
|
769
773
|
"vortex.data",
|
|
770
774
|
"geometries.ini",
|
|
771
775
|
) as fh:
|
|
772
776
|
iniconf.read_file(fh)
|
|
777
|
+
|
|
778
|
+
# Load from user's config directory if it exists
|
|
779
|
+
glove = sessions.current().glove
|
|
780
|
+
local = sessions.system()
|
|
781
|
+
user_geometries = glove.configrc + "/geometries.ini"
|
|
782
|
+
if local.path.exists(user_geometries):
|
|
783
|
+
with open(user_geometries, encoding="utf-8") as fh:
|
|
784
|
+
iniconf.read_file(fh)
|
|
785
|
+
|
|
773
786
|
for item in iniconf.sections():
|
|
774
787
|
gdesc = dict(iniconf.items(item))
|
|
775
788
|
gkind = gdesc.get("kind")
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"""Tests for geometry loading from distribution and user configuration."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import tempfile
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from unittest.mock import PropertyMock, patch
|
|
7
|
+
|
|
8
|
+
import pytest
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def user_geometries_file():
|
|
13
|
+
"""Create a temporary user geometries.ini file and set up the environment."""
|
|
14
|
+
# Create a temporary directory for user config
|
|
15
|
+
with tempfile.TemporaryDirectory() as tmpdir:
|
|
16
|
+
user_config_dir = Path(tmpdir)
|
|
17
|
+
geometries_file = user_config_dir / "geometries.ini"
|
|
18
|
+
|
|
19
|
+
# Write test geometries to the file
|
|
20
|
+
geometries_file.write_text("""# User-specific geometries for testing
|
|
21
|
+
[test_user_geo]
|
|
22
|
+
info = My custom test geometry
|
|
23
|
+
kind = gauss
|
|
24
|
+
area = france
|
|
25
|
+
truncation = 999
|
|
26
|
+
stretching = 3.0
|
|
27
|
+
|
|
28
|
+
[test_projected]
|
|
29
|
+
info = User projected geometry
|
|
30
|
+
kind = projected
|
|
31
|
+
area = testarea
|
|
32
|
+
resolution = 5.0
|
|
33
|
+
runit = km
|
|
34
|
+
""")
|
|
35
|
+
|
|
36
|
+
# Patch the configrc property to return our temp directory
|
|
37
|
+
with patch(
|
|
38
|
+
"vortex.gloves.Glove.configrc", new_callable=PropertyMock
|
|
39
|
+
) as mock_configrc:
|
|
40
|
+
mock_configrc.return_value = str(user_config_dir)
|
|
41
|
+
yield geometries_file
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@pytest.fixture
|
|
45
|
+
def user_override_file():
|
|
46
|
+
"""Create a user geometries.ini that overrides a standard geometry."""
|
|
47
|
+
with tempfile.TemporaryDirectory() as tmpdir:
|
|
48
|
+
user_config_dir = Path(tmpdir)
|
|
49
|
+
geometries_file = user_config_dir / "geometries.ini"
|
|
50
|
+
|
|
51
|
+
# Override a standard geometry
|
|
52
|
+
geometries_file.write_text("""# Override standard geometry
|
|
53
|
+
[global798]
|
|
54
|
+
info = User-overridden ARPEGE geometry
|
|
55
|
+
kind = gauss
|
|
56
|
+
area = custom
|
|
57
|
+
truncation = 798
|
|
58
|
+
stretching = 5.0
|
|
59
|
+
""")
|
|
60
|
+
|
|
61
|
+
with patch(
|
|
62
|
+
"vortex.gloves.Glove.configrc", new_callable=PropertyMock
|
|
63
|
+
) as mock_configrc:
|
|
64
|
+
mock_configrc.return_value = str(user_config_dir)
|
|
65
|
+
yield geometries_file
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def test_load_standard_geometries():
|
|
69
|
+
"""Test that standard geometries are loaded from distribution."""
|
|
70
|
+
from vortex.data import geometries
|
|
71
|
+
|
|
72
|
+
# Should have loaded standard geometries
|
|
73
|
+
# There are 335 in the distribution at the time of writing
|
|
74
|
+
assert len(geometries.keys()) > 300
|
|
75
|
+
|
|
76
|
+
# Check a known standard geometry
|
|
77
|
+
assert "global798" in geometries.keys()
|
|
78
|
+
|
|
79
|
+
geo = geometries.get(tag="global798")
|
|
80
|
+
assert geo.info == "ARPEGE TL798 stretched-rotated geometry"
|
|
81
|
+
assert geo.truncation == 798
|
|
82
|
+
assert geo.stretching == 2.4
|
|
83
|
+
assert geo.area == "france"
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def test_load_user_geometries(user_geometries_file):
|
|
87
|
+
"""Test that user geometries are loaded from ~/.vortexrc/geometries.ini."""
|
|
88
|
+
# Import geometries module - this will trigger load() with our patched configrc
|
|
89
|
+
# need to reload to pick up the new configrc path
|
|
90
|
+
import importlib
|
|
91
|
+
from vortex.data import geometries as geom_module
|
|
92
|
+
|
|
93
|
+
importlib.reload(geom_module)
|
|
94
|
+
|
|
95
|
+
from vortex.data import geometries
|
|
96
|
+
|
|
97
|
+
# User geometries should be present
|
|
98
|
+
assert "test_user_geo" in geometries.keys()
|
|
99
|
+
assert "test_projected" in geometries.keys()
|
|
100
|
+
|
|
101
|
+
# Check user gaussian geometry
|
|
102
|
+
geo = geometries.get(tag="test_user_geo")
|
|
103
|
+
assert geo.info == "My custom test geometry"
|
|
104
|
+
assert geo.truncation == 999
|
|
105
|
+
assert geo.stretching == 3.0
|
|
106
|
+
assert type(geo).__name__ == "GaussGeometry"
|
|
107
|
+
|
|
108
|
+
# Check user projected geometry
|
|
109
|
+
geo2 = geometries.get(tag="test_projected")
|
|
110
|
+
assert geo2.info == "User projected geometry"
|
|
111
|
+
assert geo2.resolution == 5.0
|
|
112
|
+
assert type(geo2).__name__ == "ProjectedGeometry"
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def test_user_geometry_override(user_override_file):
|
|
116
|
+
"""Test that user geometries override standard ones with the same tag."""
|
|
117
|
+
import importlib
|
|
118
|
+
from vortex.data import geometries as geom_module
|
|
119
|
+
|
|
120
|
+
importlib.reload(geom_module)
|
|
121
|
+
|
|
122
|
+
from vortex.data import geometries
|
|
123
|
+
|
|
124
|
+
# The global798 geometry should have user values, not standard ones
|
|
125
|
+
geo = geometries.get(tag="global798")
|
|
126
|
+
assert geo.info == "User-overridden ARPEGE geometry"
|
|
127
|
+
assert geo.area == "custom"
|
|
128
|
+
assert geo.stretching == 5.0
|
|
129
|
+
assert (
|
|
130
|
+
geo.truncation == 798
|
|
131
|
+
) # Same as original but with different stretching
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def test_geometry_singleton_behavior():
|
|
135
|
+
"""Test that GetByTag returns the same object for repeated calls."""
|
|
136
|
+
from vortex.data import geometries
|
|
137
|
+
|
|
138
|
+
# Multiple retrievals should return the same object
|
|
139
|
+
geo1 = geometries.get(tag="global798")
|
|
140
|
+
geo2 = geometries.Geometry("global798")
|
|
141
|
+
geo3 = geometries.GaussGeometry("global798")
|
|
142
|
+
|
|
143
|
+
# All should be the exact same object (singleton behavior)
|
|
144
|
+
assert geo1 is geo2
|
|
145
|
+
assert geo2 is geo3
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def test_create_new_geometry_requires_explicit_new():
|
|
149
|
+
"""Test that creating a non-existent geometry requires new=True."""
|
|
150
|
+
from vortex.data import geometries
|
|
151
|
+
|
|
152
|
+
# Trying to access non-existent geometry should raise RuntimeError
|
|
153
|
+
with pytest.raises(RuntimeError, match="does not exist yet"):
|
|
154
|
+
geometries.Geometry("nonexistent_geometry")
|
|
155
|
+
|
|
156
|
+
# But creating with new=True should work
|
|
157
|
+
new_geo = geometries.GaussGeometry(
|
|
158
|
+
tag="runtime_created_geo",
|
|
159
|
+
new=True,
|
|
160
|
+
info="Created at runtime",
|
|
161
|
+
truncation=100,
|
|
162
|
+
stretching=2.0,
|
|
163
|
+
area="test",
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
assert new_geo.tag == "runtime_created_geo"
|
|
167
|
+
|
|
168
|
+
# Now it should be accessible
|
|
169
|
+
retrieved = geometries.Geometry("runtime_created_geo")
|
|
170
|
+
assert retrieved is new_geo
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vortex_nwp-2.1.2 → vortex_nwp-2.1.3}/src/vortex/algo/mpitools_templates/wrapstd_wrapper_default.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|