From 01b3ee2a013bcddc068c369a85623bd733c67812 Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Mon, 14 Nov 2022 22:54:47 -0600 Subject: [PATCH 1/5] PartitionInducedCycleError: pass through CycleError --- pytato/distributed.py | 4 ++-- pytato/partition.py | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pytato/distributed.py b/pytato/distributed.py index d52d2df91..354449d74 100644 --- a/pytato/distributed.py +++ b/pytato/distributed.py @@ -1253,8 +1253,8 @@ def add_needed_pid(pid: _DistributedPartId, from pytato.partition import PartitionInducedCycleError try: compute_topological_order(pid_to_needed_pids) - except CycleError: - raise PartitionInducedCycleError + except CycleError as err: + raise PartitionInducedCycleError(err) logger.info("verify_distributed_partition completed successfully.") diff --git a/pytato/partition.py b/pytato/partition.py index 8b1596844..cb76193ed 100644 --- a/pytato/partition.py +++ b/pytato/partition.py @@ -32,6 +32,7 @@ logger = logging.getLogger(__name__) from pytools import memoize_method +from pytools.graph import CycleError from pytato.transform import EdgeCachedMapper, CachedWalkMapper from pytato.array import ( Array, AbstractResultWithNamedArrays, Placeholder, @@ -209,13 +210,13 @@ def make_partition(self, outputs: DictOfNamedArrays) -> GraphPartition: pid_to_output_names[pid_dependency].add(var_name) pid_to_input_names[pid_target].add(var_name) - from pytools.graph import compute_topological_order, CycleError + from pytools.graph import compute_topological_order try: toposorted_part_ids = compute_topological_order( pid_to_needing_pids, lambda x: sorted(pid_to_output_names[x])) - except CycleError: - raise PartitionInducedCycleError + except CycleError as err: + raise PartitionInducedCycleError(err) return GraphPartition( parts={ @@ -311,7 +312,7 @@ class GraphPartition: # }}} -class PartitionInducedCycleError(Exception): +class PartitionInducedCycleError(CycleError): """Raised by :func:`find_partition` if the partitioning induced a cycle in the graph of partitions. """ From 1363d0fd77c4c5edf654e3db13b3f090892c06d3 Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Thu, 17 Nov 2022 18:38:51 -0600 Subject: [PATCH 2/5] disable mypy check --- pytato/distributed.py | 4 +++- pytato/partition.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pytato/distributed.py b/pytato/distributed.py index 354449d74..f70f8a085 100644 --- a/pytato/distributed.py +++ b/pytato/distributed.py @@ -1254,7 +1254,9 @@ def add_needed_pid(pid: _DistributedPartId, try: compute_topological_order(pid_to_needed_pids) except CycleError as err: - raise PartitionInducedCycleError(err) + # type-ignore-reason: Needs a pytools release with + # https://github.com/inducer/pytools/pull/158 to pass mypy. + raise PartitionInducedCycleError(err) # type: ignore[no-untyped-call] logger.info("verify_distributed_partition completed successfully.") diff --git a/pytato/partition.py b/pytato/partition.py index cb76193ed..5084c15f9 100644 --- a/pytato/partition.py +++ b/pytato/partition.py @@ -216,7 +216,9 @@ def make_partition(self, outputs: DictOfNamedArrays) -> GraphPartition: pid_to_needing_pids, lambda x: sorted(pid_to_output_names[x])) except CycleError as err: - raise PartitionInducedCycleError(err) + # type-ignore-reason: Needs a pytools release with + # https://github.com/inducer/pytools/pull/158 to pass mypy. + raise PartitionInducedCycleError(err) # type: ignore[no-untyped-call] return GraphPartition( parts={ From 1c7969f86541eb6ec4be7d7052b5084734936d9f Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Mon, 21 Nov 2022 14:04:44 -0600 Subject: [PATCH 3/5] undo mypy ignore --- pytato/distributed.py | 4 +--- pytato/partition.py | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/pytato/distributed.py b/pytato/distributed.py index f70f8a085..354449d74 100644 --- a/pytato/distributed.py +++ b/pytato/distributed.py @@ -1254,9 +1254,7 @@ def add_needed_pid(pid: _DistributedPartId, try: compute_topological_order(pid_to_needed_pids) except CycleError as err: - # type-ignore-reason: Needs a pytools release with - # https://github.com/inducer/pytools/pull/158 to pass mypy. - raise PartitionInducedCycleError(err) # type: ignore[no-untyped-call] + raise PartitionInducedCycleError(err) logger.info("verify_distributed_partition completed successfully.") diff --git a/pytato/partition.py b/pytato/partition.py index 5084c15f9..cb76193ed 100644 --- a/pytato/partition.py +++ b/pytato/partition.py @@ -216,9 +216,7 @@ def make_partition(self, outputs: DictOfNamedArrays) -> GraphPartition: pid_to_needing_pids, lambda x: sorted(pid_to_output_names[x])) except CycleError as err: - # type-ignore-reason: Needs a pytools release with - # https://github.com/inducer/pytools/pull/158 to pass mypy. - raise PartitionInducedCycleError(err) # type: ignore[no-untyped-call] + raise PartitionInducedCycleError(err) return GraphPartition( parts={ From a56643adf7f4c0eb7e00612d160b823973e9eb63 Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Mon, 21 Nov 2022 14:05:33 -0600 Subject: [PATCH 4/5] unpack cycle node --- pytato/distributed.py | 2 +- pytato/partition.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pytato/distributed.py b/pytato/distributed.py index 354449d74..a7702113b 100644 --- a/pytato/distributed.py +++ b/pytato/distributed.py @@ -1254,7 +1254,7 @@ def add_needed_pid(pid: _DistributedPartId, try: compute_topological_order(pid_to_needed_pids) except CycleError as err: - raise PartitionInducedCycleError(err) + raise PartitionInducedCycleError(err.node) logger.info("verify_distributed_partition completed successfully.") diff --git a/pytato/partition.py b/pytato/partition.py index cb76193ed..73e348ea2 100644 --- a/pytato/partition.py +++ b/pytato/partition.py @@ -216,7 +216,7 @@ def make_partition(self, outputs: DictOfNamedArrays) -> GraphPartition: pid_to_needing_pids, lambda x: sorted(pid_to_output_names[x])) except CycleError as err: - raise PartitionInducedCycleError(err) + raise PartitionInducedCycleError(err.node) return GraphPartition( parts={ From 01832d9ae0048e23c0d210819bddc5196ad46a0d Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Mon, 28 Nov 2022 10:34:36 -0600 Subject: [PATCH 5/5] add another passthrough --- pytato/distributed/verify.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pytato/distributed/verify.py b/pytato/distributed/verify.py index e37d8a83a..9bc5d270b 100644 --- a/pytato/distributed/verify.py +++ b/pytato/distributed/verify.py @@ -272,8 +272,8 @@ def add_needed_pid(pid: _DistributedPartId, from pytato.partition import PartitionInducedCycleError try: compute_topological_order(pid_to_needed_pids) - except CycleError: - raise PartitionInducedCycleError + except CycleError as err: + raise PartitionInducedCycleError(err.node) logger.info("verify_distributed_partition completed successfully.")