earthkit-workflows 0.3.3__py3-none-any.whl → 0.3.5__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.
@@ -23,10 +23,10 @@ Make sure you correctly configure:
23
23
 
24
24
  import logging
25
25
  import logging.config
26
+ import multiprocessing
26
27
  import os
27
28
  import subprocess
28
29
  from concurrent.futures import ThreadPoolExecutor
29
- from multiprocessing import Process
30
30
  from time import perf_counter_ns
31
31
 
32
32
  import fire
@@ -139,7 +139,8 @@ def run_locally(
139
139
  gpu_count = get_gpu_count()
140
140
  else:
141
141
  gpu_count = 0
142
- p = Process(
142
+ # NOTE forkserver/spawn seem to forget venv, we need fork
143
+ p = multiprocessing.get_context("fork").Process(
143
144
  target=launch_executor,
144
145
  args=(job, c, workers, portBase + 1 + i * 10, i, None, gpu_count),
145
146
  )
cascade/gateway/client.py CHANGED
@@ -56,6 +56,8 @@ def request_response(
56
56
  raise TimeoutError # NOTE consider setting `err` on the response instead
57
57
  else:
58
58
  rr = s.recv()
59
+ except TimeoutError:
60
+ raise
59
61
  except Exception as e:
60
62
  logger.exception(f"failed to communicate on {url=}")
61
63
  raise ValueError(f"failed to communicate on {url=} => {repr(e)[:32]}")
cascade/gateway/router.py CHANGED
@@ -120,7 +120,11 @@ class JobRouter:
120
120
 
121
121
  def spawn_job(self, job_spec: JobSpec) -> JobId:
122
122
  job_id = next_uuid(self.jobs.keys(), lambda: str(uuid.uuid4()))
123
- base_addr = f"tcp://{getfqdn()}"
123
+ if job_spec.use_slurm:
124
+ base_addr = f"tcp://{getfqdn()}"
125
+ else:
126
+ # NOTE on macos, it seems getfqdn does not give zmq-bindable addr
127
+ base_addr = "tcp://localhost"
124
128
  socket = get_context().socket(zmq.PULL)
125
129
  port = socket.bind_to_random_port(base_addr)
126
130
  full_addr = f"{base_addr}:{port}"
@@ -1,2 +1,2 @@
1
1
  # Do not change! Do not track in version control!
2
- __version__ = "0.3.3"
2
+ __version__ = "0.3.5"
@@ -424,12 +424,8 @@ class Action:
424
424
  )
425
425
 
426
426
  # Applies operation to every node, keeping node array structure
427
- new_nodes = xr.DataArray(
428
- np.empty(self.nodes.shape, dtype=object),
429
- coords=self.nodes.coords,
430
- dims=self.nodes.dims,
431
- attrs=self.nodes.attrs,
432
- )
427
+ new_nodes = np.empty(self.nodes.shape, dtype=object)
428
+
433
429
  it = np.nditer(self.nodes, flags=["multi_index", "refs_ok"])
434
430
  node_payload = payload
435
431
  for node in it:
@@ -441,7 +437,14 @@ class Action:
441
437
  num_outputs=len(yields[1]) if yields else 1,
442
438
  )
443
439
 
444
- return type(self)(new_nodes, yields)
440
+ new_nodes_xr = xr.DataArray(
441
+ new_nodes,
442
+ coords=self.nodes.coords,
443
+ dims=self.nodes.dims,
444
+ attrs=self.nodes.attrs,
445
+ )
446
+
447
+ return type(self)(new_nodes_xr, yields)
445
448
 
446
449
  def reduce(
447
450
  self,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: earthkit-workflows
3
- Version: 0.3.3
3
+ Version: 0.3.5
4
4
  Summary: Earthkit Workflows is a Python library for declaring earthkit task DAGs, as well as scheduling and executing them on heterogeneous computing systems.
5
5
  Author-email: "European Centre for Medium-Range Weather Forecasts (ECMWF)" <software.support@ecmwf.int>
6
6
  License-Expression: Apache-2.0
@@ -1,7 +1,7 @@
1
1
  cascade/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  cascade/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  cascade/benchmarks/__init__.py,sha256=Gu8kEApmJ2zsIhT2zpm1-6n84-OwWnz-0vO8UHYtBzo,528
4
- cascade/benchmarks/__main__.py,sha256=M9MSOYdsOQZdXjB_0sfl5ltv0cuAatip_-e-Wi78FFQ,6897
4
+ cascade/benchmarks/__main__.py,sha256=euamIHoDdqo2VC6gBUoOWuzlK1DttYCprDBWAVKGjnA,6986
5
5
  cascade/benchmarks/anemoi.py,sha256=qtAI03HdtAmcksCgjIEZyNyUNzMp370KF4lAh5g4cOk,1077
6
6
  cascade/benchmarks/generators.py,sha256=NK4fFisWsZdMkA2Auzrn-P7G5D9AKpo2JVnqXE44YT8,2169
7
7
  cascade/benchmarks/job1.py,sha256=NY1k9PvkUZODCIDO_zSNwC9sFiMYpBwOaWB7FMSkt2o,4594
@@ -28,8 +28,8 @@ cascade/executor/runner/runner.py,sha256=zqpkvxdWLbwyUFaUbZmSj0KQEBNRpmF8gwVotia
28
28
  cascade/gateway/__init__.py,sha256=1EzMKdLFXEucj0YWOlyVqLx4suOntitwM03T_rRubIk,829
29
29
  cascade/gateway/__main__.py,sha256=OcT5Amo0tE1-3StHuTOeQCaABmMBO3XLDK4t4b8oeeQ,647
30
30
  cascade/gateway/api.py,sha256=-7HTUhK9idszVCwiVwyHMcNx7n6qRcyPWsLx2e19n3A,2511
31
- cascade/gateway/client.py,sha256=tc-BXDXb0h7gjLMveATR8yOFqFT9fd7fXdx3PjIcTHs,4022
32
- cascade/gateway/router.py,sha256=p1QT7cMAzLgmfvNYqEtENsnHPPzDbIXcnNuWoI5aejM,7154
31
+ cascade/gateway/client.py,sha256=1p4Tvrf-BH0LQHOES5rY1z3JNIfmXcqWG2kYl4rpcE0,4061
32
+ cascade/gateway/router.py,sha256=KBlw5U-QOcZ8QN6Ls3WLS7gO0X2apupAWX6pS7A7mrs,7323
33
33
  cascade/gateway/server.py,sha256=srqmtOuzzon5GV5jR1wUVh744Ct336BQs5Gzd3mhsPA,3733
34
34
  cascade/low/__init__.py,sha256=5cw2taOGITK_gFbICftzK2YLdEAnLUY5OzblFzdHss4,769
35
35
  cascade/low/builders.py,sha256=_u5X8G_EF00hFt8Anv9AXo6yPf1O8MHDmqs2kKmREl0,7073
@@ -53,9 +53,9 @@ cascade/shm/disk.py,sha256=Fdl_pKOseaXroRp01OwqWVsdI-sSmiFizIFCdxBuMWM,2653
53
53
  cascade/shm/func.py,sha256=ZWikgnSLCmbSoW2LDRJwtjxdwTxkR00OUHAsIRQ-ChE,638
54
54
  cascade/shm/server.py,sha256=5Ub9bnBmDto9BwfjX3h3sJeiLzZN4lawgtLfvK-vcMU,5036
55
55
  earthkit/workflows/__init__.py,sha256=f17AdiV9g4eRN8m4dUnSU58RoLRqk1e6iMRrQiBUSKk,1880
56
- earthkit/workflows/_version.py,sha256=JTDTUt1BYSv9yiR48Riwpm5YvK2xpFLe9Yl8KX1W8i0,72
56
+ earthkit/workflows/_version.py,sha256=y917q-_1kG-gTBVkeELzqyHU_FN3NUWwP8pqRDzG4Yw,72
57
57
  earthkit/workflows/decorators.py,sha256=DM4QAtQ2glUUcDecwPkXcdlu4dio7MvgpcdmU5LYvD8,937
58
- earthkit/workflows/fluent.py,sha256=OpN2ncU0UeIyvDcdMe4woH7ZGtUhxFMB3ZQTU0nCshU,30141
58
+ earthkit/workflows/fluent.py,sha256=IN_sqwr7W8wbwP7wTOklgnjVe34IUCmv1ku-DWVTCJc,30179
59
59
  earthkit/workflows/mark.py,sha256=PdsXmRfhw1SyyJ74mzFPsLRqMCdlYv556fFX4bqlh9Y,1319
60
60
  earthkit/workflows/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  earthkit/workflows/taskgraph.py,sha256=RsT1Qlng1uPZSaSBNqE8vFsoI5J8DDcQl468YPX-kCY,4460
@@ -83,8 +83,8 @@ earthkit/workflows/graph/split.py,sha256=t-Sji5eZb01QO1szqmDNTodDDALqdo-0R0x1ESs
83
83
  earthkit/workflows/graph/transform.py,sha256=BZ8n7ePUnuGgoHkMqZC3SLzifu4oq6q6t6vka0khFtg,3842
84
84
  earthkit/workflows/graph/visit.py,sha256=MP-aFSqOl7aqJY2i7QTgY4epqb6yM7_lK3ofvOqfahw,1755
85
85
  earthkit/workflows/plugins/__init__.py,sha256=WcX4qbEhgTXabIbogydtzNmZ2tB_SuW6NzNkOYQfS-Y,61
86
- earthkit_workflows-0.3.3.dist-info/licenses/LICENSE,sha256=73MJ7twXMKnWwmzmrMiFwUeY7c6JTvxphVggeUq9Sq4,11381
87
- earthkit_workflows-0.3.3.dist-info/METADATA,sha256=DVMvtcARGr5s402T0-LXONNHc-OZyZgT-8fkT6s-sVg,1571
88
- earthkit_workflows-0.3.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
89
- earthkit_workflows-0.3.3.dist-info/top_level.txt,sha256=oNrH3Km3hK5kDkTOiM-8G8OQglvZcy-gUKy7rlooWXs,17
90
- earthkit_workflows-0.3.3.dist-info/RECORD,,
86
+ earthkit_workflows-0.3.5.dist-info/licenses/LICENSE,sha256=73MJ7twXMKnWwmzmrMiFwUeY7c6JTvxphVggeUq9Sq4,11381
87
+ earthkit_workflows-0.3.5.dist-info/METADATA,sha256=o-BNwkFAKcA9NyyryCTovDEeMs1uNNde9IyChoUq_Lc,1571
88
+ earthkit_workflows-0.3.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
89
+ earthkit_workflows-0.3.5.dist-info/top_level.txt,sha256=oNrH3Km3hK5kDkTOiM-8G8OQglvZcy-gUKy7rlooWXs,17
90
+ earthkit_workflows-0.3.5.dist-info/RECORD,,