neo4j-viz 0.4.2__py3-none-any.whl → 0.5.0__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.
neo4j_viz/gds.py CHANGED
@@ -2,7 +2,7 @@ from __future__ import annotations
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]