vortex-nwp 2.1.0__py3-none-any.whl → 2.1.1__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 +8 -6
- vortex/config.py +11 -7
- vortex/data/handlers.py +92 -2
- vortex/data/stores.py +4 -6
- vortex/toolbox.py +81 -21
- vortex/tools/storage.py +3 -1
- {vortex_nwp-2.1.0.dist-info → vortex_nwp-2.1.1.dist-info}/METADATA +1 -1
- {vortex_nwp-2.1.0.dist-info → vortex_nwp-2.1.1.dist-info}/RECORD +11 -11
- {vortex_nwp-2.1.0.dist-info → vortex_nwp-2.1.1.dist-info}/WHEEL +0 -0
- {vortex_nwp-2.1.0.dist-info → vortex_nwp-2.1.1.dist-info}/licenses/LICENSE +0 -0
- {vortex_nwp-2.1.0.dist-info → vortex_nwp-2.1.1.dist-info}/top_level.txt +0 -0
vortex/__init__.py
CHANGED
|
@@ -21,8 +21,8 @@ strongly advised.
|
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
23
|
import atexit
|
|
24
|
+
from pathlib import Path
|
|
24
25
|
import sys
|
|
25
|
-
import os
|
|
26
26
|
|
|
27
27
|
# importlib.metadata included in stdlib from 3.8 onwards.
|
|
28
28
|
# For older versions, import third-party importlib_metadata
|
|
@@ -53,7 +53,7 @@ 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.1"
|
|
57
57
|
__prompt__ = "Vortex v-" + __version__ + ":"
|
|
58
58
|
|
|
59
59
|
__nextversion__ = "2.1.1"
|
|
@@ -111,11 +111,13 @@ footprints.setup.callback = vortexfpdefaults
|
|
|
111
111
|
ticket = sessions.get
|
|
112
112
|
sh = sessions.system
|
|
113
113
|
|
|
114
|
-
# If a config file can be found in current dir, load it else load
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
# If a config file can be found in current dir, load it else load
|
|
115
|
+
# .vortex.d/vortex.toml
|
|
116
|
+
confname = Path("vortex.toml")
|
|
117
|
+
if confname.exists():
|
|
118
|
+
config.load_config(confname)
|
|
117
119
|
else:
|
|
118
|
-
config.load_config(
|
|
120
|
+
config.load_config(Path.home() / ".vortex.d" / confname)
|
|
119
121
|
|
|
120
122
|
# Load some superstars sub-packages
|
|
121
123
|
|
vortex/config.py
CHANGED
|
@@ -3,6 +3,7 @@ the value of configuration options, respectively.
|
|
|
3
3
|
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
+
from pathlib import Path
|
|
6
7
|
import tomli
|
|
7
8
|
|
|
8
9
|
from bronx.fancies import loggers
|
|
@@ -24,7 +25,7 @@ class ConfigurationError(Exception):
|
|
|
24
25
|
"""Something is wrong with the provided configuration"""
|
|
25
26
|
|
|
26
27
|
|
|
27
|
-
def load_config(configpath="vortex.toml"):
|
|
28
|
+
def load_config(configpath=Path("vortex.toml")):
|
|
28
29
|
"""Load configuration from a TOML configuration file
|
|
29
30
|
|
|
30
31
|
Existing configuration values are overriden. The configuration
|
|
@@ -41,19 +42,22 @@ def load_config(configpath="vortex.toml"):
|
|
|
41
42
|
# ...
|
|
42
43
|
"""
|
|
43
44
|
global VORTEX_CONFIG
|
|
45
|
+
configpath = Path(configpath)
|
|
44
46
|
try:
|
|
45
|
-
with open(
|
|
47
|
+
with configpath.open(mode="rb") as f:
|
|
46
48
|
VORTEX_CONFIG = tomli.load(f)
|
|
47
|
-
print(f"Successfully read configuration file {configpath}")
|
|
49
|
+
print(f"Successfully read configuration file {configpath.absolute()}")
|
|
48
50
|
except FileNotFoundError:
|
|
49
|
-
print(
|
|
51
|
+
print(
|
|
52
|
+
f"Could not read configuration file {configpath.absolute()} (not found)."
|
|
53
|
+
)
|
|
50
54
|
print("Use load_config(/path/to/config) to update the configuration")
|
|
51
55
|
|
|
52
56
|
|
|
53
57
|
def print_config():
|
|
54
58
|
"""Print configuration (key, value) pairs"""
|
|
55
59
|
if VORTEX_CONFIG:
|
|
56
|
-
for k, v in VORTEX_CONFIG:
|
|
60
|
+
for k, v in VORTEX_CONFIG.items():
|
|
57
61
|
print(k.upper(), v)
|
|
58
62
|
|
|
59
63
|
|
|
@@ -65,10 +69,10 @@ def from_config(section, key=None):
|
|
|
65
69
|
"""
|
|
66
70
|
try:
|
|
67
71
|
subconfig = VORTEX_CONFIG[section]
|
|
68
|
-
except KeyError:
|
|
72
|
+
except KeyError as e:
|
|
69
73
|
raise ConfigurationError(
|
|
70
74
|
f"Missing configuration section {section}",
|
|
71
|
-
)
|
|
75
|
+
) from e
|
|
72
76
|
if not key:
|
|
73
77
|
return subconfig
|
|
74
78
|
|
vortex/data/handlers.py
CHANGED
|
@@ -134,7 +134,26 @@ class Handler:
|
|
|
134
134
|
return str(self.__dict__)
|
|
135
135
|
|
|
136
136
|
def _get_resource(self):
|
|
137
|
-
"""Getter for ``resource`` property.
|
|
137
|
+
"""Getter for ``resource`` property.
|
|
138
|
+
|
|
139
|
+
**Example**
|
|
140
|
+
|
|
141
|
+
>>> rh = vortex.input(
|
|
142
|
+
... vapp="arpege",
|
|
143
|
+
... vconf="4dvarfr",
|
|
144
|
+
... cutoff="production",
|
|
145
|
+
... date="202506160000",
|
|
146
|
+
... term=1,
|
|
147
|
+
... geometry="global1798",
|
|
148
|
+
... model="arpege",
|
|
149
|
+
... block="forecast",
|
|
150
|
+
... kind="modelstate",
|
|
151
|
+
... experiment="oper",
|
|
152
|
+
... local="myfile",
|
|
153
|
+
... )
|
|
154
|
+
>>> print(rh.resource)
|
|
155
|
+
<vortex.nwp.data.modelstates.Historic object at 0x7b430874a620 | model='arpege' date='2025-06-16T00:00:00Z' cutoff='production' geometry='<vortex.data.geometries.GaussGeometry | tag='global1798' id='ARPEGE TL1798c2.2 stretched-rotated geometry' tl=1798 c=2.2>' term='01:00' subset='None'>
|
|
156
|
+
"""
|
|
138
157
|
return self._resource
|
|
139
158
|
|
|
140
159
|
def _set_resource(self, value):
|
|
@@ -534,7 +553,29 @@ class Handler:
|
|
|
534
553
|
return rst
|
|
535
554
|
|
|
536
555
|
def locate(self, **extras):
|
|
537
|
-
"""
|
|
556
|
+
r"""
|
|
557
|
+
Try to figure out what would be the physical location of the resource.
|
|
558
|
+
|
|
559
|
+
:returns: A semiclon separated string listing the various locations where the resource can be found.
|
|
560
|
+
|
|
561
|
+
>>> rh = vortex.input(
|
|
562
|
+
... vapp="arpege",
|
|
563
|
+
... vconf="4dvarfr",
|
|
564
|
+
... cutoff="production",
|
|
565
|
+
... date="202506160000",
|
|
566
|
+
... term=1,
|
|
567
|
+
... geometry="global1798",
|
|
568
|
+
... model="arpege",
|
|
569
|
+
... block="forecast",
|
|
570
|
+
... kind="modelstate",
|
|
571
|
+
... experiment="oper",
|
|
572
|
+
... local="myfile",
|
|
573
|
+
... )
|
|
574
|
+
>>> print("\n".join(rh.locate().split(";")))
|
|
575
|
+
/home/user/.vortex.d/arpege/4dvarfr/OPER/20250616T0000P/forecast/historic.arpege.tl1798-c22+0001:00.fa
|
|
576
|
+
user@archive:/data/archive/arpege/4dvarfr/OPER/2025/06/16/T0000P/forecast/historic.arpege.tl1798-c22+0001:00.fa
|
|
577
|
+
|
|
578
|
+
"""
|
|
538
579
|
rst = None
|
|
539
580
|
if self.resource and self.provider:
|
|
540
581
|
store = self.store
|
|
@@ -825,6 +866,32 @@ class Handler:
|
|
|
825
866
|
* When **insitu** is False, an attempt to get the resource is systematically
|
|
826
867
|
made except if **alternate** is defined and the local container already
|
|
827
868
|
exists.
|
|
869
|
+
|
|
870
|
+
**Example**
|
|
871
|
+
|
|
872
|
+
.. code:: python
|
|
873
|
+
|
|
874
|
+
rhandlers = vortex.input(
|
|
875
|
+
kind='gridpoint',
|
|
876
|
+
term=1,
|
|
877
|
+
geometry='eurw1s40',
|
|
878
|
+
nativefmt='grib',
|
|
879
|
+
model='arome',
|
|
880
|
+
cutoff='production',
|
|
881
|
+
date=['2024060121', '2024060122'],
|
|
882
|
+
origin='historic',
|
|
883
|
+
vapp='arome',
|
|
884
|
+
vconf='pefrance',
|
|
885
|
+
member=[1,2,5],
|
|
886
|
+
experiment='myexp',
|
|
887
|
+
block='forecast',
|
|
888
|
+
local='gribfile_[member].grib',
|
|
889
|
+
format='grib',
|
|
890
|
+
)
|
|
891
|
+
|
|
892
|
+
for rh in rhandlers:
|
|
893
|
+
rh.get()
|
|
894
|
+
|
|
828
895
|
"""
|
|
829
896
|
return self._get_proxy(self._actual_get, alternate=alternate, **extras)
|
|
830
897
|
|
|
@@ -1010,6 +1077,29 @@ class Handler:
|
|
|
1010
1077
|
|
|
1011
1078
|
Conversely, the low-level stores are made aware of the previous successful
|
|
1012
1079
|
put. That way, a local container is not put twice to the same destination.
|
|
1080
|
+
|
|
1081
|
+
.. code:: python
|
|
1082
|
+
|
|
1083
|
+
rhandlers = vortex.output(
|
|
1084
|
+
kind='gridpoint',
|
|
1085
|
+
term=1,
|
|
1086
|
+
geometry='eurw1s40',
|
|
1087
|
+
nativefmt='grib',
|
|
1088
|
+
model='arome',
|
|
1089
|
+
cutoff='production',
|
|
1090
|
+
date=['2024060121', '2024060122'],
|
|
1091
|
+
origin='historic',
|
|
1092
|
+
vapp='arome',
|
|
1093
|
+
vconf='pefrance',
|
|
1094
|
+
member=[1,2,5],
|
|
1095
|
+
experiment='myexp',
|
|
1096
|
+
block='forecast',
|
|
1097
|
+
local='gribfile_[member].grib',
|
|
1098
|
+
format='grib',
|
|
1099
|
+
)
|
|
1100
|
+
|
|
1101
|
+
for rh in rhandlers:
|
|
1102
|
+
rh.put()
|
|
1013
1103
|
"""
|
|
1014
1104
|
rst = False
|
|
1015
1105
|
if self.complete:
|
vortex/data/stores.py
CHANGED
|
@@ -748,13 +748,12 @@ class VortexStdBaseArchiveStore(_VortexBaseArchiveStore):
|
|
|
748
748
|
)
|
|
749
749
|
except config.ConfigurationError as e:
|
|
750
750
|
msg = (
|
|
751
|
-
"Trying to write to archive but location is not configured
|
|
751
|
+
"Trying to write to archive but location is not configured. "
|
|
752
752
|
'Make sure key "rootdir" is defined in storage section of '
|
|
753
753
|
"the configuration.\n"
|
|
754
754
|
"See https://vortex-nwp.readthedocs.io/en/latest/user-guide/configuration.html#storage"
|
|
755
755
|
)
|
|
756
|
-
|
|
757
|
-
raise e
|
|
756
|
+
raise config.ConfigurationError(msg) from e
|
|
758
757
|
return remote
|
|
759
758
|
|
|
760
759
|
remap_write = remap_read
|
|
@@ -813,12 +812,11 @@ class VortexOpBaseArchiveStore(_VortexBaseArchiveStore):
|
|
|
813
812
|
except config.ConfigurationError as e:
|
|
814
813
|
msg = (
|
|
815
814
|
"Trying to write to operational data archive but location"
|
|
816
|
-
'is not configured
|
|
815
|
+
' is not configured. Make sure key "op_rootdir" is defined in '
|
|
817
816
|
"the storage section of the configuration.\n"
|
|
818
817
|
"See https://vortex-nwp.readthedocs.io/en/latest/user-guide/configuration.html#storage"
|
|
819
818
|
)
|
|
820
|
-
|
|
821
|
-
raise e
|
|
819
|
+
raise config.ConfigurationError(msg) from e
|
|
822
820
|
xpath = remote["path"].split("/")
|
|
823
821
|
if len(xpath) >= 5 and re.match(r"^\d{8}T\d{2,4}", xpath[4]):
|
|
824
822
|
# If a date is detected
|
vortex/toolbox.py
CHANGED
|
@@ -485,15 +485,39 @@ def add_section(section, args, kw):
|
|
|
485
485
|
|
|
486
486
|
# noinspection PyShadowingBuiltins
|
|
487
487
|
def input(*args, **kw): # @ReservedAssignment
|
|
488
|
-
"""
|
|
488
|
+
r"""Declare one or more input resources.
|
|
489
|
+
|
|
490
|
+
This function takes an abitrary of keyword arguments forming the resource
|
|
491
|
+
description.
|
|
492
|
+
|
|
493
|
+
:return: A list of :py:class:`Handler <vortex.data.handlers.Handler>` objects.
|
|
494
|
+
|
|
495
|
+
**Example:**
|
|
496
|
+
|
|
497
|
+
The following call to ``input`` returns a list of 6
|
|
498
|
+
:py:class:`Handler <vortex.data.handlers.Handler>` objects, one
|
|
499
|
+
for each date and member:
|
|
500
|
+
|
|
501
|
+
.. code:: python
|
|
502
|
+
|
|
503
|
+
rhandlers = vortex.input(
|
|
504
|
+
kind='gridpoint',
|
|
505
|
+
term=1,
|
|
506
|
+
geometry='eurw1s40',
|
|
507
|
+
nativefmt='grib',
|
|
508
|
+
model='arome',
|
|
509
|
+
cutoff='production',
|
|
510
|
+
date=['2024060121', '2024060122'],
|
|
511
|
+
origin='historic',
|
|
512
|
+
vapp='arome',
|
|
513
|
+
vconf='pefrance',
|
|
514
|
+
member=[1,2,5],
|
|
515
|
+
experiment='myexp',
|
|
516
|
+
block='forecast',
|
|
517
|
+
local='gribfile_[member].grib',
|
|
518
|
+
format='grib',
|
|
519
|
+
)
|
|
489
520
|
|
|
490
|
-
Relies on the :func:`add_section` function (see its documentation), with:
|
|
491
|
-
|
|
492
|
-
* It's ``section`` attribute is automatically set to 'input';
|
|
493
|
-
* The ``kw``'s *insitu* item is set to :data:`active_insitu` by default.
|
|
494
|
-
|
|
495
|
-
:return: A list of :class:`vortex.data.handlers.Handler` objects (associated
|
|
496
|
-
with the newly created class:`~vortex.layout.dataflow.Section` objects).
|
|
497
521
|
"""
|
|
498
522
|
kw.setdefault("insitu", active_insitu)
|
|
499
523
|
kw.setdefault("batch", active_batchinputs)
|
|
@@ -532,14 +556,39 @@ def show_inputs(context=None):
|
|
|
532
556
|
|
|
533
557
|
|
|
534
558
|
def output(*args, **kw):
|
|
535
|
-
"""
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
559
|
+
r"""Declare one or more output resources.
|
|
560
|
+
|
|
561
|
+
This function takes an abitrary of keyword arguments forming the resource
|
|
562
|
+
description.
|
|
563
|
+
|
|
564
|
+
:return: A list of :py:class:`Handler <vortex.data.handlers.Handler>` objects.
|
|
565
|
+
|
|
566
|
+
**Example:**
|
|
567
|
+
|
|
568
|
+
The following call to ``output`` returns a list of 6
|
|
569
|
+
:py:class:`Handler <vortex.data.handlers.Handler>` objects, one
|
|
570
|
+
for each date and member:
|
|
571
|
+
|
|
572
|
+
.. code:: python
|
|
573
|
+
|
|
574
|
+
rhandlers = vortex.output(
|
|
575
|
+
kind='gridpoint',
|
|
576
|
+
term=1,
|
|
577
|
+
geometry='eurw1s40',
|
|
578
|
+
nativefmt='grib',
|
|
579
|
+
model='arome',
|
|
580
|
+
cutoff='production',
|
|
581
|
+
date=['2024060121', '2024060122'],
|
|
582
|
+
origin='historic',
|
|
583
|
+
vapp='arome',
|
|
584
|
+
vconf='pefrance',
|
|
585
|
+
member=[1,2,5],
|
|
586
|
+
experiment='myexp',
|
|
587
|
+
block='forecast',
|
|
588
|
+
local='gribfile_[member].grib',
|
|
589
|
+
format='grib',
|
|
590
|
+
)
|
|
540
591
|
|
|
541
|
-
:return: A list of :class:`vortex.data.handlers.Handler` objects (associated
|
|
542
|
-
with the newly created class:`~vortex.layout.dataflow.Section` objects).
|
|
543
592
|
"""
|
|
544
593
|
# Strip the metadatacheck option depending on active_metadatacheck
|
|
545
594
|
if not active_promise:
|
|
@@ -607,15 +656,26 @@ def promise(*args, **kw):
|
|
|
607
656
|
|
|
608
657
|
|
|
609
658
|
def executable(*args, **kw):
|
|
610
|
-
"""
|
|
659
|
+
r"""Declare one or more executable resources.
|
|
611
660
|
|
|
612
|
-
|
|
661
|
+
This function takes an abitrary of keyword arguments forming the
|
|
662
|
+
executable resource description.
|
|
613
663
|
|
|
614
|
-
|
|
615
|
-
|
|
664
|
+
:return: A list of :py:class:`Handler <vortex.data.handlers.Handler>` objects.
|
|
665
|
+
|
|
666
|
+
**Example:**
|
|
667
|
+
|
|
668
|
+
The following call to ``input`` returns a list of one
|
|
669
|
+
:py:class:`Handler <vortex.data.handlers.Handler>` object:
|
|
670
|
+
|
|
671
|
+
.. code:: python
|
|
672
|
+
|
|
673
|
+
rhandlers = vortex.executable(
|
|
674
|
+
kind="mfmodel",
|
|
675
|
+
local="ARPEGE",
|
|
676
|
+
remote="/path/to/binaries/ARPEGE.EX",
|
|
677
|
+
)
|
|
616
678
|
|
|
617
|
-
:return: A list of :class:`vortex.data.handlers.Handler` objects (associated
|
|
618
|
-
with the newly created class:`~vortex.layout.dataflow.Section` objects).
|
|
619
679
|
"""
|
|
620
680
|
kw.setdefault("insitu", active_insitu)
|
|
621
681
|
return add_section("executable", args, kw)
|
vortex/tools/storage.py
CHANGED
|
@@ -636,9 +636,11 @@ class Archive(AbstractArchive):
|
|
|
636
636
|
|
|
637
637
|
def __init__(self, *kargs, **kwargs):
|
|
638
638
|
super().__init__(*kargs, **kwargs)
|
|
639
|
-
|
|
639
|
+
|
|
640
|
+
self.default_usejeeves = config.get_from_config_w_default(
|
|
640
641
|
section="storage",
|
|
641
642
|
key="usejeeves",
|
|
643
|
+
default=False,
|
|
642
644
|
)
|
|
643
645
|
|
|
644
646
|
@property
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
vortex/__init__.py,sha256=
|
|
2
|
-
vortex/config.py,sha256=
|
|
1
|
+
vortex/__init__.py,sha256=Lvzac_DBD8BQOlEYi8CFRkS0Xeecz5PyKbdgVjUS2GA,4374
|
|
2
|
+
vortex/config.py,sha256=YEpcc81wR94jvn36fPONmKc1tM4ap0s8Rc7v3KfDUok,2948
|
|
3
3
|
vortex/gloves.py,sha256=GKz27S8eLfRlk8fNqVL_z1gsQ8zvEj73p5uVi11ou00,8487
|
|
4
4
|
vortex/proxy.py,sha256=OlPrVUJS5FoKt5pX8ApN1crFFDj8RJAqhDEilwvfrYU,127
|
|
5
5
|
vortex/sessions.py,sha256=l_ZUUFS-l0J2Mg6KEXaUQiDhbIABrWCfcY-9ExazKEg,9988
|
|
6
|
-
vortex/toolbox.py,sha256=
|
|
6
|
+
vortex/toolbox.py,sha256=fDTvfghg8Yl7ggAwhIaY3V6owO3V1IG9LBf6F97A_50,42385
|
|
7
7
|
vortex/algo/__init__.py,sha256=I_9COn_QBRbwvbqhs0X3CdHeR97NZhBacIqwKjnVBTg,359
|
|
8
8
|
vortex/algo/components.py,sha256=zs_DaKHFEHX9GQ-pn1HheAo4JvNusQi3D4u3ZhqVqe4,89362
|
|
9
9
|
vortex/algo/mpitools.py,sha256=EffZ4Ok934tvEYyUjKpVA-lEUVA29FwUVBtUQ8xWnDI,73977
|
|
@@ -20,11 +20,11 @@ vortex/data/executables.py,sha256=FeR3SA2wW97zAQXwWVecZ0v6VYT5L_3K1Czuv33Bk74,67
|
|
|
20
20
|
vortex/data/flow.py,sha256=P1itBnA8jaoCWnVQjqbD_Pf26rpzud1JdwSLECDnDl4,3008
|
|
21
21
|
vortex/data/geometries.ini,sha256=J7hX5hYWqwBjdUAul6q8j10U6b3I-QEHrFJ98LBTQXM,52805
|
|
22
22
|
vortex/data/geometries.py,sha256=SjCF-74zDkbpt3qQujJU_UpeoBtgS7-xrEhbC4ywyRE,27429
|
|
23
|
-
vortex/data/handlers.py,sha256=
|
|
23
|
+
vortex/data/handlers.py,sha256=0XeVFoSKSCMdvKTx5b1pczN79d14k_uGqccG6IXMX-8,50469
|
|
24
24
|
vortex/data/outflow.py,sha256=IPKJkn75lRvhSqN5969TuhRAPnsZKlrWR4Cmw6VBFDs,1475
|
|
25
25
|
vortex/data/providers.py,sha256=kLHJI3F9mkRjRcQzs0xaH_cdfvXd9H4x5h1Lm4PGSFk,15652
|
|
26
26
|
vortex/data/resources.py,sha256=UOwvQDTJxS9z66Aa7JM2nWM3IxrMWvY3L2J9D5w3sZw,6348
|
|
27
|
-
vortex/data/stores.py,sha256=
|
|
27
|
+
vortex/data/stores.py,sha256=2er--NmR25ikRmNsPSEr7JTPhvEtBPYk3Xpc-PlhNbU,44531
|
|
28
28
|
vortex/data/sync_templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
29
|
vortex/layout/__init__.py,sha256=aZsDhVJrd3-648vw-UESI_2BLxyGl71sHdyrg9cL638,826
|
|
30
30
|
vortex/layout/contexts.py,sha256=GkysEtOOUj3nQvGUWrFjOOjzv7SmWFPUSLTH_pMMycI,20363
|
|
@@ -123,7 +123,7 @@ vortex/tools/prestaging.py,sha256=lGJIo4SA8pDziF1nbBogsrK1bgwDQA6tj9Wg9VUFt6Q,70
|
|
|
123
123
|
vortex/tools/rawfiles.py,sha256=keUI6QtEZQrWQ7H_Sg_TY9SY32anfb-suqJkrDmdXN0,215
|
|
124
124
|
vortex/tools/schedulers.py,sha256=XduOQab1dRiHwz7Mnt3mxXByGzAHMsDLCwlUOpMdXEk,15828
|
|
125
125
|
vortex/tools/services.py,sha256=v0uqAOXR9PsXJwv4-_yWpGzFniD7WghXW4p6WwaNtPA,29231
|
|
126
|
-
vortex/tools/storage.py,sha256=
|
|
126
|
+
vortex/tools/storage.py,sha256=o_QryBe6wg0PzyRjG5eh8m3HfO1cQfd-3NG8OGwjuyw,34453
|
|
127
127
|
vortex/tools/surfex.py,sha256=qbCIGt-dmfIRWRRMjOQnzc9sGNnt8PIFSqQYT77trhw,1408
|
|
128
128
|
vortex/tools/systems.py,sha256=Zu04yTVIZU0hCiRH_STmdGuknjVd8dNsxXWr87k_5aE,149081
|
|
129
129
|
vortex/tools/targets.py,sha256=-n2uMoEFdz3AeoSd1IGhlr7dYYb8xantUeh9_ggk9iI,14896
|
|
@@ -137,8 +137,8 @@ vortex/util/roles.py,sha256=9un_QAijaMn5iTS7PrdoWI5_NNw7uHxMWTnyhc5aNzg,1150
|
|
|
137
137
|
vortex/util/storefunctions.py,sha256=uSfG-G_A88iJf3DwFBd-j0rw6eJta8opfRT39aQHsHM,3615
|
|
138
138
|
vortex/util/structs.py,sha256=vapErq0MNhiKlsnjrv_a5M0Rn29KbP3WE_oiy4Hfwb8,683
|
|
139
139
|
vortex/util/worker.py,sha256=zp8f2tx4SXwf1v55XMdYLAx7n3vSlg8PRGrkHgnfdmg,4721
|
|
140
|
-
vortex_nwp-2.1.
|
|
141
|
-
vortex_nwp-2.1.
|
|
142
|
-
vortex_nwp-2.1.
|
|
143
|
-
vortex_nwp-2.1.
|
|
144
|
-
vortex_nwp-2.1.
|
|
140
|
+
vortex_nwp-2.1.1.dist-info/licenses/LICENSE,sha256=ewBJPmWAcQqtBPrydH10tt6ECkcYP3b1o2RfH85pJF0,21863
|
|
141
|
+
vortex_nwp-2.1.1.dist-info/METADATA,sha256=sKpeLSnU4V_HVbydy8gYnmfaof1G4RY4MzKqdYjnX-U,2185
|
|
142
|
+
vortex_nwp-2.1.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
143
|
+
vortex_nwp-2.1.1.dist-info/top_level.txt,sha256=3xfbSD7kw8xKl0jk4GNHsOPKbhubstfWHPl6bxHciRQ,7
|
|
144
|
+
vortex_nwp-2.1.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|