neo4j-viz 0.7.0__tar.gz → 1.1.0__tar.gz

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.
Files changed (50) hide show
  1. {neo4j_viz-0.7.0/src/neo4j_viz.egg-info → neo4j_viz-1.1.0}/PKG-INFO +3 -30
  2. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/README.md +0 -3
  3. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/pyproject.toml +26 -14
  4. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/pandas.py +6 -0
  5. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/relationship.py +2 -0
  6. neo4j_viz-1.1.0/src/neo4j_viz/resources/nvl_entrypoint/base.js +2 -0
  7. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/visualization_graph.py +196 -32
  8. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0/src/neo4j_viz.egg-info}/PKG-INFO +3 -30
  9. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz.egg-info/SOURCES.txt +4 -2
  10. neo4j_viz-1.1.0/src/neo4j_viz.egg-info/requires.txt +17 -0
  11. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_relationship.py +2 -0
  12. neo4j_viz-1.1.0/tests/test_relationship_colors.py +157 -0
  13. neo4j_viz-1.1.0/tests/test_relationship_resize.py +70 -0
  14. neo4j_viz-0.7.0/src/neo4j_viz/resources/nvl_entrypoint/base.js +0 -2
  15. neo4j_viz-0.7.0/src/neo4j_viz.egg-info/requires.txt +0 -44
  16. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/LICENSE +0 -0
  17. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/setup.cfg +0 -0
  18. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/__init__.py +0 -0
  19. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/colors.py +0 -0
  20. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/gds.py +0 -0
  21. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/gql_create.py +0 -0
  22. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/neo4j.py +0 -0
  23. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/node.py +0 -0
  24. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/node_size.py +0 -0
  25. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/nvl.py +0 -0
  26. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/options.py +0 -0
  27. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/py.typed +0 -0
  28. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/resources/__init__.py +0 -0
  29. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/resources/icons/__init__.py +0 -0
  30. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/resources/icons/screenshot.svg +0 -0
  31. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/resources/icons/zoom-in.svg +0 -0
  32. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/resources/icons/zoom-out.svg +0 -0
  33. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/resources/nvl_entrypoint/__init__.py +0 -0
  34. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/resources/nvl_entrypoint/styles.css +0 -0
  35. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz/snowflake.py +0 -0
  36. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz.egg-info/dependency_links.txt +0 -0
  37. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/src/neo4j_viz.egg-info/top_level.txt +0 -0
  38. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_captions.py +0 -0
  39. /neo4j_viz-0.7.0/tests/test_colors.py → /neo4j_viz-1.1.0/tests/test_color_nodes.py +0 -0
  40. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_gds.py +0 -0
  41. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_gql_create.py +0 -0
  42. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_neo4j.py +0 -0
  43. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_node.py +0 -0
  44. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_notebooks.py +0 -0
  45. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_options.py +0 -0
  46. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_pandas.py +0 -0
  47. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_pinned.py +0 -0
  48. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_render.py +0 -0
  49. /neo4j_viz-0.7.0/tests/test_sizes.py → /neo4j_viz-1.1.0/tests/test_resize_nodes.py +0 -0
  50. {neo4j_viz-0.7.0 → neo4j_viz-1.1.0}/tests/test_snowflake.py +0 -0
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: neo4j-viz
3
- Version: 0.7.0
3
+ Version: 1.1.0
4
4
  Summary: A simple graph visualization tool
5
5
  Author-email: Neo4j <team-gds@neo4j.org>
6
6
  License-Expression: GPL-3.0-only
7
7
  Project-URL: Homepage, https://neo4j.com/
8
8
  Project-URL: Repository, https://github.com/neo4j/python-graph-visualization
9
9
  Project-URL: Issues, https://github.com/neo4j/python-graph-visualization/issues
10
- Project-URL: Documentation, https://neo4j.com/docs/nvl-python/preview
10
+ Project-URL: Documentation, https://neo4j.com/docs/python-graph-visualization/
11
11
  Keywords: graph,visualization,neo4j
12
- Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Development Status :: 5 - Production/Stable
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Intended Audience :: Science/Research
15
15
  Classifier: Operating System :: OS Independent
@@ -32,22 +32,6 @@ Requires-Dist: ipython<10,>=7
32
32
  Requires-Dist: pydantic<3,>=2
33
33
  Requires-Dist: pydantic-extra-types<3,>=2
34
34
  Requires-Dist: enum-tools==0.13.0
35
- Provides-Extra: dev
36
- Requires-Dist: ruff==0.14.1; extra == "dev"
37
- Requires-Dist: mypy==1.18.2; extra == "dev"
38
- Requires-Dist: pytest==8.4.2; extra == "dev"
39
- Requires-Dist: selenium==4.32.0; extra == "dev"
40
- Requires-Dist: ipykernel==6.30.1; extra == "dev"
41
- Requires-Dist: palettable==3.3.3; extra == "dev"
42
- Requires-Dist: pytest-mock==3.14.0; extra == "dev"
43
- Requires-Dist: nbconvert==7.16.6; extra == "dev"
44
- Requires-Dist: streamlit==1.45.0; extra == "dev"
45
- Requires-Dist: matplotlib>=3.9.4; extra == "dev"
46
- Provides-Extra: docs
47
- Requires-Dist: sphinx==8.1.3; extra == "docs"
48
- Requires-Dist: enum-tools[sphinx]; extra == "docs"
49
- Requires-Dist: nbsphinx==0.9.7; extra == "docs"
50
- Requires-Dist: nbsphinx-link==1.3.1; extra == "docs"
51
35
  Provides-Extra: pandas
52
36
  Requires-Dist: pandas<3,>=2; extra == "pandas"
53
37
  Requires-Dist: pandas-stubs<3,>=2; extra == "pandas"
@@ -57,14 +41,6 @@ Provides-Extra: neo4j
57
41
  Requires-Dist: neo4j; extra == "neo4j"
58
42
  Provides-Extra: snowflake
59
43
  Requires-Dist: snowflake-snowpark-python<2,>=1; extra == "snowflake"
60
- Provides-Extra: notebook
61
- Requires-Dist: ipykernel>=6.29.5; extra == "notebook"
62
- Requires-Dist: pykernel>=0.1.6; extra == "notebook"
63
- Requires-Dist: neo4j>=5.26.0; extra == "notebook"
64
- Requires-Dist: ipywidgets>=8.0.0; extra == "notebook"
65
- Requires-Dist: palettable>=3.3.3; extra == "notebook"
66
- Requires-Dist: matplotlib>=3.9.4; extra == "notebook"
67
- Requires-Dist: snowflake-snowpark-python==1.37.0; extra == "notebook"
68
44
  Dynamic: license-file
69
45
 
70
46
  # Graph Visualization for Python by Neo4j
@@ -84,9 +60,6 @@ Alternatively, you can export the output to a file and view it in a web browser.
84
60
 
85
61
  The package wraps the [Neo4j Visualization JavaScript library (NVL)](https://neo4j.com/docs/nvl/current/).
86
62
 
87
- > [!WARNING]
88
- > This package is still in development and the API is subject to change.
89
-
90
63
 
91
64
  ![Example Graph](https://github.com/neo4j/python-graph-visualization/blob/main/examples/example_cora_graph.png)
92
65
 
@@ -15,9 +15,6 @@ Alternatively, you can export the output to a file and view it in a web browser.
15
15
 
16
16
  The package wraps the [Neo4j Visualization JavaScript library (NVL)](https://neo4j.com/docs/nvl/current/).
17
17
 
18
- > [!WARNING]
19
- > This package is still in development and the API is subject to change.
20
-
21
18
 
22
19
  ![Example Graph](https://github.com/neo4j/python-graph-visualization/blob/main/examples/example_cora_graph.png)
23
20
 
@@ -4,14 +4,14 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "neo4j-viz"
7
- version = "0.7.0"
7
+ version = "1.1.0"
8
8
  description = "A simple graph visualization tool"
9
9
  readme = "README.md"
10
10
  authors = [{ name = "Neo4j", email = "team-gds@neo4j.org" }]
11
11
  license = "GPL-3.0-only"
12
12
  license-files = [ "LICENSE" ]
13
13
  classifiers = [
14
- "Development Status :: 3 - Alpha",
14
+ "Development Status :: 5 - Production/Stable",
15
15
  "Intended Audience :: Developers",
16
16
  "Intended Audience :: Science/Research",
17
17
  "Operating System :: OS Independent",
@@ -39,16 +39,23 @@ requires-python = ">=3.10"
39
39
 
40
40
 
41
41
  [project.optional-dependencies]
42
+ pandas = ["pandas>=2, <3", "pandas-stubs>=2, <3"]
43
+ gds = ["graphdatascience>=1, <2"]
44
+ neo4j = ["neo4j"]
45
+ snowflake = ["snowflake-snowpark-python>=1, <2"]
46
+
47
+
48
+ [dependency-groups]
42
49
  dev = [
43
- "ruff==0.14.1",
44
- "mypy==1.18.2",
50
+ "ruff==0.14.13",
51
+ "mypy==1.19.1",
45
52
  "pytest==8.4.2",
46
- "selenium==4.32.0",
47
- "ipykernel==6.30.1",
53
+ "selenium==4.40.0",
54
+ "ipykernel==7.1.0",
48
55
  "palettable==3.3.3",
49
- "pytest-mock==3.14.0",
56
+ "pytest-mock==3.15.1",
50
57
  "nbconvert==7.16.6",
51
- "streamlit==1.45.0",
58
+ "streamlit==1.53.0",
52
59
  "matplotlib>=3.9.4",
53
60
  ]
54
61
  docs = [
@@ -57,10 +64,6 @@ docs = [
57
64
  "nbsphinx==0.9.7",
58
65
  "nbsphinx-link==1.3.1",
59
66
  ]
60
- pandas = ["pandas>=2, <3", "pandas-stubs>=2, <3"]
61
- gds = ["graphdatascience>=1, <2"]
62
- neo4j = ["neo4j"]
63
- snowflake = ["snowflake-snowpark-python>=1, <2"]
64
67
  notebook = [
65
68
  "ipykernel>=6.29.5",
66
69
  "pykernel>=0.1.6",
@@ -68,14 +71,15 @@ notebook = [
68
71
  "ipywidgets>=8.0.0",
69
72
  "palettable>=3.3.3",
70
73
  "matplotlib>=3.9.4",
71
- "snowflake-snowpark-python==1.37.0",
74
+ "snowflake-snowpark-python==1.42.0",
75
+ "dotenv"
72
76
  ]
73
77
 
74
78
  [project.urls]
75
79
  Homepage = "https://neo4j.com/"
76
80
  Repository = "https://github.com/neo4j/python-graph-visualization"
77
81
  Issues = "https://github.com/neo4j/python-graph-visualization/issues"
78
- Documentation = "https://neo4j.com/docs/nvl-python/preview"
82
+ Documentation = "https://neo4j.com/docs/python-graph-visualization/"
79
83
 
80
84
  [tool.setuptools]
81
85
  include-package-data = true
@@ -97,6 +101,14 @@ neo4j_viz = [
97
101
 
98
102
  [tool.pytest.ini_options]
99
103
  addopts = ["--import-mode=importlib"]
104
+ markers = [
105
+ "requires_neo4j_and_gds: mark a test as a requiring a Neo4j instance with GDS running",
106
+ "requires_snowflake: mark a test as a requiring a Snowflake connection"
107
+ ]
108
+ filterwarnings = [
109
+ "error",
110
+ "ignore:Jupyter is migrating its paths to use standard platformdirs:DeprecationWarning"
111
+ ]
100
112
 
101
113
  [tool.ruff]
102
114
  line-length = 120
@@ -69,6 +69,9 @@ def _parse_nodes(node_dfs: DFS_TYPE, dropna: bool = False) -> list[Node]:
69
69
  mandatory_fields = {}
70
70
  properties = {}
71
71
  for key, value in row.to_dict().items():
72
+ if not isinstance(key, str):
73
+ key = str(key)
74
+
72
75
  if key in basic_node_fields_aliases:
73
76
  mandatory_fields[key] = value
74
77
  else:
@@ -98,6 +101,9 @@ def _parse_relationships(rel_dfs: DFS_TYPE, dropna: bool = False) -> list[Relati
98
101
  mandatory_fields = {}
99
102
  properties = {}
100
103
  for key, value in row.to_dict().items():
104
+ if not isinstance(key, str):
105
+ key = str(key)
106
+
101
107
  if key in basic_rel_field_aliases:
102
108
  mandatory_fields[key] = value
103
109
  else:
@@ -64,6 +64,8 @@ class Relationship(
64
64
  caption_size: Optional[Union[int, float]] = Field(None, gt=0.0, description="The size of the caption text")
65
65
  #: The color of the relationship. Allowed input is for example "#FF0000", "red" or (255, 0, 0)
66
66
  color: Optional[ColorType] = Field(None, description="The color of the relationship")
67
+ # The width of the relationship
68
+ width: Optional[int | float] = Field(None, gt=0.0, description="The width of the relationship")
67
69
  #: Additional properties of the relationship that do not directly impact the visualization
68
70
  properties: dict[str, Any] = Field(
69
71
  default_factory=dict,