|
2 | 2 |
|
3 | 3 | import warnings |
4 | 4 | from itertools import chain |
5 | | -from typing import Optional |
| 5 | +from typing import Optional, cast |
6 | 6 | from uuid import uuid4 |
7 | 7 |
|
8 | 8 | import pandas as pd |
@@ -81,31 +81,32 @@ def from_gds( |
81 | 81 | """ |
82 | 82 | node_properties_from_gds = G.node_properties() |
83 | 83 | assert isinstance(node_properties_from_gds, pd.Series) |
84 | | - actual_node_properties = node_properties_from_gds.to_dict() |
| 84 | + actual_node_properties: dict[str, list[str]] = cast(dict[str, list[str]], node_properties_from_gds.to_dict()) |
85 | 85 | all_actual_node_properties = list(chain.from_iterable(actual_node_properties.values())) |
86 | 86 |
|
87 | 87 | if size_property is not None: |
88 | 88 | if size_property not in all_actual_node_properties: |
89 | 89 | raise ValueError(f"There is no node property '{size_property}' in graph '{G.name()}'") |
90 | 90 |
|
| 91 | + node_properties_by_label_sets: dict[str, set[str]] = dict() |
91 | 92 | if additional_node_properties is None: |
92 | | - node_properties_by_label = {k: set(v) for k, v in actual_node_properties.items()} |
| 93 | + node_properties_by_label_sets = {k: set(v) for k, v in actual_node_properties.items()} |
93 | 94 | else: |
94 | 95 | for prop in additional_node_properties: |
95 | 96 | if prop not in all_actual_node_properties: |
96 | 97 | raise ValueError(f"There is no node property '{prop}' in graph '{G.name()}'") |
97 | 98 |
|
98 | | - node_properties_by_label = {} |
99 | 99 | for label, props in actual_node_properties.items(): |
100 | | - node_properties_by_label[label] = { |
| 100 | + node_properties_by_label_sets[label] = { |
101 | 101 | prop for prop in actual_node_properties[label] if prop in additional_node_properties |
102 | 102 | } |
103 | 103 |
|
104 | 104 | if size_property is not None: |
105 | | - for label, props in node_properties_by_label.items(): |
106 | | - props.add(size_property) |
| 105 | + # For some reason mypy are unable to understand that this is dict[str, set[str]] |
| 106 | + for label, props in node_properties_by_label_sets.items(): # type: ignore |
| 107 | + props.add(size_property) # type: ignore |
107 | 108 |
|
108 | | - node_properties_by_label = {k: list(v) for k, v in node_properties_by_label.items()} |
| 109 | + node_properties_by_label = {k: list(v) for k, v in node_properties_by_label_sets.items()} |
109 | 110 |
|
110 | 111 | node_count = G.node_count() |
111 | 112 | if node_count > max_node_count: |
@@ -148,7 +149,7 @@ def from_gds( |
148 | 149 | if size_property is not None: |
149 | 150 | if "size" in all_actual_node_properties and size_property != "size": |
150 | 151 | node_props_df.rename(columns={"size": "__size"}, inplace=True) |
151 | | - if size_property not in additional_node_properties: |
| 152 | + if additional_node_properties is not None and size_property not in additional_node_properties: |
152 | 153 | node_props_df.rename(columns={size_property: "size"}, inplace=True) |
153 | 154 | else: |
154 | 155 | node_props_df["size"] = node_props_df[size_property] |
|
0 commit comments