graphdatascience 1.11a3__tar.gz → 1.12__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 (161) hide show
  1. {graphdatascience-1.11a3 → graphdatascience-1.12}/MANIFEST.in +1 -0
  2. {graphdatascience-1.11a3/graphdatascience.egg-info → graphdatascience-1.12}/PKG-INFO +4 -4
  3. {graphdatascience-1.11a3 → graphdatascience-1.12}/README.md +0 -2
  4. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/algo/algo_proc_runner.py +1 -1
  5. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/call_builder.py +1 -1
  6. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/endpoints.py +17 -2
  7. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/base_graph_proc_runner.py +6 -6
  8. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_alpha_proc_runner.py +1 -1
  9. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_beta_proc_runner.py +4 -4
  10. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_cypher_runner.py +10 -3
  11. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_entity_ops_runner.py +4 -4
  12. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_object.py +2 -4
  13. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_proc_runner.py +2 -2
  14. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_project_runner.py +4 -4
  15. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_remote_project_runner.py +6 -6
  16. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_sample_runner.py +4 -4
  17. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/nx_loader.py +1 -1
  18. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/ogb_loader.py +1 -1
  19. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph_data_science.py +51 -9
  20. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/graphsage_model.py +1 -1
  21. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/link_prediction_model.py +1 -1
  22. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/model.py +63 -61
  23. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/model_alpha_proc_runner.py +1 -1
  24. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/model_beta_proc_runner.py +1 -1
  25. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/model_proc_runner.py +24 -16
  26. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/node_classification_model.py +3 -3
  27. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/node_regression_model.py +1 -1
  28. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/pipeline_model.py +3 -3
  29. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/classification_training_pipeline.py +1 -1
  30. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/lp_pipeline_create_runner.py +1 -1
  31. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/lp_training_pipeline.py +1 -1
  32. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/nc_training_pipeline.py +1 -1
  33. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/nr_training_pipeline.py +1 -1
  34. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/pipeline_proc_runner.py +2 -2
  35. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/training_pipeline.py +2 -4
  36. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/query_runner/arrow_graph_constructor.py +10 -7
  37. graphdatascience-1.12/graphdatascience/query_runner/arrow_info.py +32 -0
  38. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/query_runner/arrow_query_runner.py +15 -6
  39. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/query_runner/cypher_graph_constructor.py +1 -1
  40. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/query_runner/gds_arrow_client.py +76 -33
  41. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/query_runner/neo4j_query_runner.py +59 -88
  42. graphdatascience-1.12/graphdatascience/query_runner/progress/progress_provider.py +16 -0
  43. graphdatascience-1.12/graphdatascience/query_runner/progress/query_progress_logger.py +105 -0
  44. graphdatascience-1.12/graphdatascience/query_runner/progress/query_progress_provider.py +36 -0
  45. graphdatascience-1.12/graphdatascience/query_runner/progress/static_progress_provider.py +27 -0
  46. graphdatascience-1.12/graphdatascience/query_runner/protocol/project_protocols.py +88 -0
  47. graphdatascience-1.12/graphdatascience/query_runner/protocol/write_protocols.py +96 -0
  48. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/query_runner/query_runner.py +8 -0
  49. graphdatascience-1.11a3/graphdatascience/query_runner/aura_db_query_runner.py → graphdatascience-1.12/graphdatascience/query_runner/session_query_runner.py +76 -22
  50. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/session/__init__.py +2 -0
  51. graphdatascience-1.12/graphdatascience/session/aura_api.py +384 -0
  52. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/session/aura_api_responses.py +15 -6
  53. graphdatascience-1.12/graphdatascience/session/aura_graph_data_science.py +226 -0
  54. graphdatascience-1.12/graphdatascience/session/cloud_location.py +15 -0
  55. graphdatascience-1.12/graphdatascience/session/dbms/__init__.py +0 -0
  56. graphdatascience-1.12/graphdatascience/session/dbms/protocol_resolver.py +62 -0
  57. graphdatascience-1.12/graphdatascience/session/dbms/protocol_version.py +18 -0
  58. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/session/dbms_connection_info.py +2 -1
  59. graphdatascience-1.12/graphdatascience/session/dedicated_sessions.py +161 -0
  60. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/session/gds_sessions.py +23 -12
  61. graphdatascience-1.12/graphdatascience/session/session_info.py +54 -0
  62. graphdatascience-1.12/graphdatascience/system/__init__.py +0 -0
  63. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/system/config_endpoints.py +6 -6
  64. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/system/system_endpoints.py +2 -2
  65. graphdatascience-1.12/graphdatascience/topological_lp/__init__.py +0 -0
  66. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/topological_lp/topological_lp_alpha_runner.py +3 -3
  67. graphdatascience-1.12/graphdatascience/utils/__init__.py +0 -0
  68. graphdatascience-1.11a3/graphdatascience/utils/util_endpoints.py → graphdatascience-1.12/graphdatascience/utils/direct_util_endpoints.py +3 -8
  69. graphdatascience-1.12/graphdatascience/utils/util_node_property_func_runner.py +31 -0
  70. graphdatascience-1.12/graphdatascience/utils/util_proc_runner.py +43 -0
  71. graphdatascience-1.12/graphdatascience/utils/util_remote_proc_runner.py +48 -0
  72. graphdatascience-1.12/graphdatascience/version.py +2 -0
  73. {graphdatascience-1.11a3 → graphdatascience-1.12/graphdatascience.egg-info}/PKG-INFO +4 -4
  74. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience.egg-info/SOURCES.txt +19 -3
  75. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience.egg-info/requires.txt +4 -1
  76. graphdatascience-1.12/pyproject.toml +55 -0
  77. {graphdatascience-1.11a3 → graphdatascience-1.12}/requirements/base/base.txt +1 -1
  78. graphdatascience-1.12/requirements/base/rust-ext.txt +2 -0
  79. {graphdatascience-1.11a3 → graphdatascience-1.12}/setup.py +4 -1
  80. graphdatascience-1.11a3/graphdatascience/session/aura_api.py +0 -305
  81. graphdatascience-1.11a3/graphdatascience/session/aura_graph_data_science.py +0 -187
  82. graphdatascience-1.11a3/graphdatascience/session/aurads_sessions.py +0 -212
  83. graphdatascience-1.11a3/graphdatascience/session/dedicated_sessions.py +0 -165
  84. graphdatascience-1.11a3/graphdatascience/session/session_info.py +0 -41
  85. graphdatascience-1.11a3/graphdatascience/utils/util_proc_runner.py +0 -68
  86. graphdatascience-1.11a3/graphdatascience/version.py +0 -1
  87. graphdatascience-1.11a3/pyproject.toml +0 -9
  88. {graphdatascience-1.11a3 → graphdatascience-1.12}/LICENSE +0 -0
  89. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/__init__.py +0 -0
  90. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/algo/__init__.py +0 -0
  91. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/algo/algo_endpoints.py +0 -0
  92. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/algo/single_mode_algo_endpoints.py +0 -0
  93. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/call_parameters.py +0 -0
  94. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/caller_base.py +0 -0
  95. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/error/__init__.py +0 -0
  96. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/error/client_only_endpoint.py +0 -0
  97. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/error/cypher_warning_handler.py +0 -0
  98. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/error/endpoint_suggester.py +0 -0
  99. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/error/gds_not_installed.py +0 -0
  100. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/error/illegal_attr_checker.py +0 -0
  101. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/error/unable_to_connect.py +0 -0
  102. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/error/uncallable_namespace.py +0 -0
  103. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/__init__.py +0 -0
  104. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_create_result.py +0 -0
  105. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_endpoints.py +0 -0
  106. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_export_runner.py +0 -0
  107. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_remote_proc_runner.py +0 -0
  108. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/graph/graph_type_check.py +0 -0
  109. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/ignored_server_endpoints.py +0 -0
  110. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/__init__.py +0 -0
  111. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/model_endpoints.py +0 -0
  112. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/model_resolver.py +0 -0
  113. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/model/simple_rel_embedding_model.py +0 -0
  114. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/__init__.py +0 -0
  115. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/nc_pipeline_create_runner.py +0 -0
  116. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/nr_pipeline_create_runner.py +0 -0
  117. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/pipeline_alpha_proc_runner.py +0 -0
  118. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/pipeline_beta_proc_runner.py +0 -0
  119. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/pipeline/pipeline_endpoints.py +0 -0
  120. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/py.typed +0 -0
  121. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/query_runner/__init__.py +0 -0
  122. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/query_runner/arrow_endpoint_version.py +0 -0
  123. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/query_runner/graph_constructor.py +0 -0
  124. {graphdatascience-1.11a3/graphdatascience/resources → graphdatascience-1.12/graphdatascience/query_runner/progress}/__init__.py +0 -0
  125. {graphdatascience-1.11a3/graphdatascience/resources/cora → graphdatascience-1.12/graphdatascience/query_runner/protocol}/__init__.py +0 -0
  126. {graphdatascience-1.11a3/graphdatascience/resources/imdb → graphdatascience-1.12/graphdatascience/resources}/__init__.py +0 -0
  127. {graphdatascience-1.11a3/graphdatascience/resources/karate → graphdatascience-1.12/graphdatascience/resources/cora}/__init__.py +0 -0
  128. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/cora/cora_nodes.parquet.gzip +0 -0
  129. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/cora/cora_rels.parquet.gzip +0 -0
  130. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/cora/serialize_cora.py +0 -0
  131. {graphdatascience-1.11a3/graphdatascience/resources/lastfm → graphdatascience-1.12/graphdatascience/resources/imdb}/__init__.py +0 -0
  132. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/imdb/imdb_acted_in.parquet.gzip +0 -0
  133. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/imdb/imdb_actors.parquet.gzip +0 -0
  134. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/imdb/imdb_directed_in.parquet.gzip +0 -0
  135. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/imdb/imdb_directors.parquet.gzip +0 -0
  136. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/imdb/imdb_movies_with_genre.parquet.gzip +0 -0
  137. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/imdb/imdb_movies_without_genre.parquet.gzip +0 -0
  138. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/imdb/serialize_imdb.py +0 -0
  139. {graphdatascience-1.11a3/graphdatascience/server_version → graphdatascience-1.12/graphdatascience/resources/karate}/__init__.py +0 -0
  140. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/karate/karate_club.parquet.gzip +0 -0
  141. {graphdatascience-1.11a3/graphdatascience/system → graphdatascience-1.12/graphdatascience/resources/lastfm}/__init__.py +0 -0
  142. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/lastfm/artist_nodes.parquet.gzip +0 -0
  143. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/lastfm/serialize_lastfm.py +0 -0
  144. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/lastfm/user_friend_df_directed.parquet.gzip +0 -0
  145. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/lastfm/user_listen_artist_rels.parquet.gzip +0 -0
  146. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/lastfm/user_nodes.parquet.gzip +0 -0
  147. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/resources/lastfm/user_tag_artist_rels.parquet.gzip +0 -0
  148. {graphdatascience-1.11a3/graphdatascience/topological_lp → graphdatascience-1.12/graphdatascience/server_version}/__init__.py +0 -0
  149. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/server_version/compatible_with.py +0 -0
  150. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/server_version/server_version.py +0 -0
  151. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/session/algorithm_category.py +0 -0
  152. /graphdatascience-1.11a3/graphdatascience/utils/__init__.py → /graphdatascience-1.12/graphdatascience/session/aurads_sessions.py +0 -0
  153. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/session/region_suggester.py +0 -0
  154. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/session/session_sizes.py +0 -0
  155. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience/topological_lp/topological_lp_endpoints.py +0 -0
  156. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience.egg-info/dependency_links.txt +0 -0
  157. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience.egg-info/not-zip-safe +0 -0
  158. {graphdatascience-1.11a3 → graphdatascience-1.12}/graphdatascience.egg-info/top_level.txt +0 -0
  159. {graphdatascience-1.11a3 → graphdatascience-1.12}/requirements/base/networkx.txt +0 -0
  160. {graphdatascience-1.11a3 → graphdatascience-1.12}/requirements/base/ogb.txt +0 -0
  161. {graphdatascience-1.11a3 → graphdatascience-1.12}/setup.cfg +0 -0
@@ -1,6 +1,7 @@
1
1
  include requirements/base/base.txt
2
2
  include requirements/base/ogb.txt
3
3
  include requirements/base/networkx.txt
4
+ include requirements/base/rust-ext.txt
4
5
  include LICENSE
5
6
  prune graphdatascience/tests
6
7
  prune graphdatascience/resources/cora/serialize_cora.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: graphdatascience
3
- Version: 1.11a3
3
+ Version: 1.12
4
4
  Summary: A Python client for the Neo4j Graph Data Science (GDS) library
5
5
  Home-page: https://neo4j.com/product/graph-data-science/
6
6
  Author: Neo4j
@@ -29,7 +29,7 @@ Requires-Python: >=3.8
29
29
  Description-Content-Type: text/markdown
30
30
  License-File: LICENSE
31
31
  Requires-Dist: multimethod<2.0,>=1.0
32
- Requires-Dist: neo4j<6.0,>=4.4.2
32
+ Requires-Dist: neo4j<6.0,>=4.4.12
33
33
  Requires-Dist: numpy<2.0
34
34
  Requires-Dist: pandas<3.0,>=1.0
35
35
  Requires-Dist: pyarrow<17.0,>=14.0.1
@@ -41,6 +41,8 @@ Provides-Extra: ogb
41
41
  Requires-Dist: ogb<2.0,>=1.0; extra == "ogb"
42
42
  Provides-Extra: networkx
43
43
  Requires-Dist: networkx<4.0,>=2.0; extra == "networkx"
44
+ Provides-Extra: rust-ext
45
+ Requires-Dist: neo4j-rust-ext<6.0,>=4.4.2; extra == "rust-ext"
44
46
 
45
47
  # Neo4j Graph Data Science Client
46
48
 
@@ -142,8 +144,6 @@ The manual is versioned to cover all GDS Python Client versions, so make sure to
142
144
  Operations known to not yet work with `graphdatascience`:
143
145
 
144
146
  * [Numeric utility functions](https://neo4j.com/docs/graph-data-science/current/management-ops/utility-functions/#utility-functions-numeric) (will never be supported)
145
- * [Cypher on GDS](https://neo4j.com/docs/graph-data-science/current/management-ops/create-cypher-db/) (might be supported in the future)
146
- * [Projecting graphs using Cypher Aggregation](https://neo4j.com/docs/graph-data-science/current/management-ops/projections/graph-project-cypher-aggregation/) (might be supported in the future)
147
147
 
148
148
 
149
149
  ## License
@@ -98,8 +98,6 @@ The manual is versioned to cover all GDS Python Client versions, so make sure to
98
98
  Operations known to not yet work with `graphdatascience`:
99
99
 
100
100
  * [Numeric utility functions](https://neo4j.com/docs/graph-data-science/current/management-ops/utility-functions/#utility-functions-numeric) (will never be supported)
101
- * [Cypher on GDS](https://neo4j.com/docs/graph-data-science/current/management-ops/create-cypher-db/) (might be supported in the future)
102
- * [Projecting graphs using Cypher Aggregation](https://neo4j.com/docs/graph-data-science/current/management-ops/projections/graph-project-cypher-aggregation/) (might be supported in the future)
103
101
 
104
102
 
105
103
  ## License
@@ -3,11 +3,11 @@ from typing import Any, Dict, Tuple
3
3
 
4
4
  from pandas import DataFrame, Series
5
5
 
6
+ from ..call_parameters import CallParameters
6
7
  from ..error.illegal_attr_checker import IllegalAttrChecker
7
8
  from ..graph.graph_object import Graph
8
9
  from ..graph.graph_type_check import graph_type_check
9
10
  from ..model.graphsage_model import GraphSageModel
10
- from graphdatascience.call_parameters import CallParameters
11
11
 
12
12
 
13
13
  class AlgoProcRunner(IllegalAttrChecker, ABC):
@@ -1,6 +1,6 @@
1
1
  from .algo.algo_endpoints import AlgoEndpoints
2
2
  from .error.uncallable_namespace import UncallableNamespace
3
- from .utils.util_endpoints import IndirectUtilAlphaEndpoints
3
+ from .utils.direct_util_endpoints import IndirectUtilAlphaEndpoints
4
4
 
5
5
 
6
6
  class IndirectCallBuilder(AlgoEndpoints, UncallableNamespace):
@@ -23,7 +23,7 @@ from .system.system_endpoints import (
23
23
  SystemBetaEndpoints,
24
24
  )
25
25
  from .topological_lp.topological_lp_endpoints import TopologicalLPAlphaEndpoints
26
- from .utils.util_endpoints import DirectUtilEndpoints
26
+ from .utils.direct_util_endpoints import DirectUtilEndpoints
27
27
 
28
28
  """
29
29
  This class should inherit endpoint classes that only contain endpoints that can be called directly from
@@ -44,7 +44,7 @@ class DirectEndpoints(
44
44
 
45
45
 
46
46
  """
47
- This class should inherit endpoint classes that only expose calls of the `gds.beta` namespace.
47
+ This class should inherit endpoint classes that only expose calls of the `gds.alpha` namespace.
48
48
  Example of such endpoints: "gds.alpha.listProgress".
49
49
  """
50
50
 
@@ -65,6 +65,21 @@ class AlphaEndpoints(
65
65
  return IndirectAlphaCallBuilder(self._query_runner, f"{self._namespace}.{attr}", self._server_version)
66
66
 
67
67
 
68
+ class AlphaRemoteEndpoints(
69
+ GraphAlphaEndpoints,
70
+ PipelineAlphaEndpoints,
71
+ ModelAlphaEndpoints,
72
+ SingleModeAlphaAlgoEndpoints,
73
+ SystemAlphaEndpoints,
74
+ AlphaConfigEndpoints,
75
+ ):
76
+ def __init__(self, query_runner: QueryRunner, namespace: str, server_version: ServerVersion):
77
+ super().__init__(query_runner, namespace, server_version)
78
+
79
+ def __getattr__(self, attr: str) -> IndirectAlphaCallBuilder:
80
+ return IndirectAlphaCallBuilder(self._query_runner, f"{self._namespace}.{attr}", self._server_version)
81
+
82
+
68
83
  """
69
84
  This class should inherit endpoint classes that only expose calls of the `gds.beta` namespace.
70
85
  Example of such endpoints: "gds.beta.listProgress".
@@ -9,11 +9,13 @@ from multimethod import multimethod
9
9
  from neo4j import __version__ as neo4j_driver_version
10
10
  from pandas import DataFrame, Series, read_parquet
11
11
 
12
+ from ..call_parameters import CallParameters
12
13
  from ..error.client_only_endpoint import client_only_endpoint
13
14
  from ..error.illegal_attr_checker import IllegalAttrChecker
14
15
  from ..error.uncallable_namespace import UncallableNamespace
15
16
  from ..server_version.compatible_with import compatible_with
16
17
  from ..server_version.server_version import ServerVersion
18
+ from .graph_create_result import GraphCreateResult
17
19
  from .graph_entity_ops_runner import (
18
20
  GraphLabelRunner,
19
21
  GraphNodePropertiesRunner,
@@ -33,8 +35,6 @@ from .graph_type_check import (
33
35
  graph_type_check_optional,
34
36
  )
35
37
  from .ogb_loader import OGBLLoader, OGBNLoader
36
- from graphdatascience.call_parameters import CallParameters
37
- from graphdatascience.graph.graph_create_result import GraphCreateResult
38
38
 
39
39
  Strings = Union[str, List[str]]
40
40
 
@@ -120,7 +120,7 @@ class BaseGraphProcRunner(UncallableNamespace, IllegalAttrChecker):
120
120
  )
121
121
  constructor.run(nodes, relationships)
122
122
 
123
- return Graph(graph_name, self._query_runner, self._server_version)
123
+ return Graph(graph_name, self._query_runner)
124
124
 
125
125
  @client_only_endpoint("gds.graph")
126
126
  def load_cora(self, graph_name: str = "cora", undirected: bool = False) -> Graph:
@@ -250,7 +250,7 @@ class BaseGraphProcRunner(UncallableNamespace, IllegalAttrChecker):
250
250
  params=params,
251
251
  ).squeeze()
252
252
 
253
- return GraphCreateResult(Graph(graph_name, self._query_runner, self._server_version), result)
253
+ return GraphCreateResult(Graph(graph_name, self._query_runner), result)
254
254
 
255
255
  @from_graph_type_check
256
256
  @compatible_with("filter", min_inclusive=ServerVersion(2, 5, 0))
@@ -276,7 +276,7 @@ class BaseGraphProcRunner(UncallableNamespace, IllegalAttrChecker):
276
276
  params=params,
277
277
  ).squeeze()
278
278
 
279
- return GraphCreateResult(Graph(graph_name, self._query_runner, self._server_version), result)
279
+ return GraphCreateResult(Graph(graph_name, self._query_runner), result)
280
280
 
281
281
  @property
282
282
  def export(self) -> GraphExportRunner:
@@ -357,7 +357,7 @@ class BaseGraphProcRunner(UncallableNamespace, IllegalAttrChecker):
357
357
  f"No projected graph named '{graph_name}' exists in current database '{self._query_runner.database()}'"
358
358
  )
359
359
 
360
- return Graph(graph_name, self._query_runner, self._server_version)
360
+ return Graph(graph_name, self._query_runner)
361
361
 
362
362
  @graph_type_check
363
363
  def _handle_properties(
@@ -79,4 +79,4 @@ class GraphAlphaProcRunner(UncallableNamespace, IllegalAttrChecker):
79
79
  )
80
80
  constructor.run(nodes, relationships)
81
81
 
82
- return Graph(graph_name, self._query_runner, self._server_version)
82
+ return Graph(graph_name, self._query_runner)
@@ -1,13 +1,13 @@
1
1
  from typing import Any, List, Union
2
2
 
3
+ from ..call_parameters import CallParameters
3
4
  from ..error.illegal_attr_checker import IllegalAttrChecker
4
5
  from ..error.uncallable_namespace import UncallableNamespace
6
+ from .graph_create_result import GraphCreateResult
7
+ from .graph_entity_ops_runner import GraphRelationshipsBetaRunner
5
8
  from .graph_export_runner import GraphExportCsvEndpoints
6
9
  from .graph_object import Graph
7
10
  from .graph_project_runner import GraphProjectBetaRunner
8
- from graphdatascience.call_parameters import CallParameters
9
- from graphdatascience.graph.graph_create_result import GraphCreateResult
10
- from graphdatascience.graph.graph_entity_ops_runner import GraphRelationshipsBetaRunner
11
11
 
12
12
  Strings = Union[str, List[str]]
13
13
 
@@ -40,4 +40,4 @@ class GraphBetaProcRunner(UncallableNamespace, IllegalAttrChecker):
40
40
 
41
41
  result = self._query_runner.call_procedure(endpoint=self._namespace, params=params).squeeze()
42
42
 
43
- return GraphCreateResult(Graph(graph_name, self._query_runner, self._server_version), result)
43
+ return GraphCreateResult(Graph(graph_name, self._query_runner), result)
@@ -1,6 +1,10 @@
1
+ from __future__ import annotations
2
+
1
3
  import re
2
4
  from itertools import chain, zip_longest
3
- from typing import Any, Optional
5
+ from typing import Any, Dict, Optional
6
+
7
+ from pandas import Series
4
8
 
5
9
  from ..caller_base import CallerBase
6
10
  from ..query_runner.query_runner import QueryRunner
@@ -41,7 +45,10 @@ class GraphCypherRunner(CallerBase):
41
45
 
42
46
  GraphCypherRunner._verify_query_ends_with_return_clause(self._namespace, query)
43
47
 
44
- result = self._query_runner.run_cypher(query, params, database, False).squeeze()
48
+ result: Optional[Dict[str, Any]] = self._query_runner.run_cypher(query, params, database, False).squeeze()
49
+
50
+ if not result:
51
+ raise ValueError("Projected graph cannot be empty.")
45
52
 
46
53
  try:
47
54
  graph_name = str(result["graphName"])
@@ -50,7 +57,7 @@ class GraphCypherRunner(CallerBase):
50
57
  f"Invalid query, the query must end with the `RETURN {self._namespace}(...)` call: {query}"
51
58
  )
52
59
 
53
- return GraphCreateResult(Graph(graph_name, self._query_runner, self._server_version), result)
60
+ return GraphCreateResult(Graph(graph_name, self._query_runner), Series(data=result))
54
61
 
55
62
  __separators = re.compile(r"[,(.]")
56
63
 
@@ -5,6 +5,10 @@ from warnings import filterwarnings
5
5
  import pandas as pd
6
6
  from pandas import DataFrame, Series
7
7
 
8
+ from ..call_parameters import CallParameters
9
+ from ..error.cypher_warning_handler import (
10
+ filter_id_func_deprecation_warning,
11
+ )
8
12
  from ..error.illegal_attr_checker import IllegalAttrChecker
9
13
  from ..error.uncallable_namespace import UncallableNamespace
10
14
  from ..query_runner.query_runner import QueryRunner
@@ -13,10 +17,6 @@ from ..server_version.server_version import ServerVersion
13
17
  from ..utils.util_proc_runner import UtilProcRunner
14
18
  from .graph_object import Graph
15
19
  from .graph_type_check import graph_type_check
16
- from graphdatascience.call_parameters import CallParameters
17
- from graphdatascience.error.cypher_warning_handler import (
18
- filter_id_func_deprecation_warning,
19
- )
20
20
 
21
21
  Strings = Union[str, List[str]]
22
22
 
@@ -5,9 +5,8 @@ from typing import Any, List, Optional, Type, Union
5
5
 
6
6
  from pandas import Series
7
7
 
8
+ from ..call_parameters import CallParameters
8
9
  from ..query_runner.query_runner import QueryRunner
9
- from ..server_version.server_version import ServerVersion
10
- from graphdatascience.call_parameters import CallParameters
11
10
 
12
11
 
13
12
  class Graph:
@@ -17,11 +16,10 @@ class Graph:
17
16
  It contains summary information about the graph.
18
17
  """
19
18
 
20
- def __init__(self, name: str, query_runner: QueryRunner, server_version: ServerVersion):
19
+ def __init__(self, name: str, query_runner: QueryRunner):
21
20
  self._name = name
22
21
  self._query_runner = query_runner
23
22
  self._db = query_runner.database()
24
- self._server_version = server_version
25
23
 
26
24
  def __enter__(self: Graph) -> Graph:
27
25
  return self
@@ -1,6 +1,6 @@
1
+ from .base_graph_proc_runner import BaseGraphProcRunner
2
+ from .graph_cypher_runner import GraphCypherRunner
1
3
  from .graph_project_runner import GraphProjectRunner
2
- from graphdatascience.graph.base_graph_proc_runner import BaseGraphProcRunner
3
- from graphdatascience.graph.graph_cypher_runner import GraphCypherRunner
4
4
 
5
5
 
6
6
  class GraphProcRunner(BaseGraphProcRunner):
@@ -4,11 +4,11 @@ from typing import Any
4
4
 
5
5
  from pandas import Series
6
6
 
7
+ from ..call_parameters import CallParameters
7
8
  from ..error.illegal_attr_checker import IllegalAttrChecker
9
+ from .graph_create_result import GraphCreateResult
8
10
  from .graph_object import Graph
9
11
  from .graph_type_check import from_graph_type_check
10
- from graphdatascience.call_parameters import CallParameters
11
- from graphdatascience.graph.graph_create_result import GraphCreateResult
12
12
 
13
13
 
14
14
  class GraphProjectRunner(IllegalAttrChecker):
@@ -25,7 +25,7 @@ class GraphProjectRunner(IllegalAttrChecker):
25
25
  logging=True,
26
26
  ).squeeze()
27
27
 
28
- return GraphCreateResult(Graph(graph_name, self._query_runner, self._server_version), result)
28
+ return GraphCreateResult(Graph(graph_name, self._query_runner), result)
29
29
 
30
30
  def estimate(self, node_projection: Any, relationship_projection: Any, **config: Any) -> "Series[Any]":
31
31
  self._namespace += ".estimate"
@@ -69,4 +69,4 @@ class GraphProjectBetaRunner(IllegalAttrChecker):
69
69
  logging=True,
70
70
  ).squeeze()
71
71
 
72
- return GraphCreateResult(Graph(graph_name, self._query_runner, self._server_version), result)
72
+ return GraphCreateResult(Graph(graph_name, self._query_runner), result)
@@ -2,13 +2,13 @@ from __future__ import annotations
2
2
 
3
3
  from typing import List, Optional
4
4
 
5
+ from ..call_parameters import CallParameters
5
6
  from ..error.illegal_attr_checker import IllegalAttrChecker
6
- from ..query_runner.aura_db_query_runner import AuraDbQueryRunner
7
+ from ..query_runner.session_query_runner import SessionQueryRunner
7
8
  from ..server_version.compatible_with import compatible_with
9
+ from ..server_version.server_version import ServerVersion
10
+ from .graph_create_result import GraphCreateResult
8
11
  from .graph_object import Graph
9
- from graphdatascience.call_parameters import CallParameters
10
- from graphdatascience.graph.graph_create_result import GraphCreateResult
11
- from graphdatascience.server_version.server_version import ServerVersion
12
12
 
13
13
 
14
14
  class GraphProjectRemoteRunner(IllegalAttrChecker):
@@ -41,7 +41,7 @@ class GraphProjectRemoteRunner(IllegalAttrChecker):
41
41
  )
42
42
 
43
43
  result = self._query_runner.call_procedure(
44
- endpoint=AuraDbQueryRunner.GDS_REMOTE_PROJECTION_PROC_NAME,
44
+ endpoint=SessionQueryRunner.GDS_REMOTE_PROJECTION_PROC_NAME,
45
45
  params=params,
46
46
  ).squeeze()
47
- return GraphCreateResult(Graph(graph_name, self._query_runner, self._server_version), result)
47
+ return GraphCreateResult(Graph(graph_name, self._query_runner), result)
@@ -2,13 +2,13 @@ from typing import Any
2
2
 
3
3
  from pandas import Series
4
4
 
5
+ from ..call_parameters import CallParameters
5
6
  from ..error.illegal_attr_checker import IllegalAttrChecker
6
7
  from ..server_version.compatible_with import compatible_with
7
8
  from ..server_version.server_version import ServerVersion
9
+ from .graph_create_result import GraphCreateResult
8
10
  from .graph_object import Graph
9
11
  from .graph_type_check import from_graph_type_check
10
- from graphdatascience.call_parameters import CallParameters
11
- from graphdatascience.graph.graph_create_result import GraphCreateResult
12
12
 
13
13
 
14
14
  class GraphAlphaSampleRunner(IllegalAttrChecker):
@@ -41,7 +41,7 @@ class RWRRunner(IllegalAttrChecker):
41
41
 
42
42
  result = self._query_runner.call_procedure(endpoint=self._namespace, params=params, logging=True).squeeze()
43
43
 
44
- return GraphCreateResult(Graph(graph_name, self._query_runner, self._server_version), result)
44
+ return GraphCreateResult(Graph(graph_name, self._query_runner), result)
45
45
 
46
46
 
47
47
  class CNARWRunner(IllegalAttrChecker):
@@ -55,7 +55,7 @@ class CNARWRunner(IllegalAttrChecker):
55
55
  )
56
56
  result = self._query_runner.call_procedure(endpoint=self._namespace, params=params, logging=True).squeeze()
57
57
 
58
- return GraphCreateResult(Graph(graph_name, self._query_runner, self._server_version), result)
58
+ return GraphCreateResult(Graph(graph_name, self._query_runner), result)
59
59
 
60
60
  def estimate(self, from_G: Graph, **config: Any) -> "Series[Any]":
61
61
  self._namespace += ".estimate"
@@ -25,7 +25,7 @@ class NXLoader(UncallableNamespace, IllegalAttrChecker):
25
25
  constructor = self._query_runner.create_graph_constructor(graph_name, concurrency, undirected_rel_types)
26
26
  constructor.run(nodes, rels)
27
27
 
28
- return Graph(graph_name, self._query_runner, self._server_version)
28
+ return Graph(graph_name, self._query_runner)
29
29
 
30
30
  @staticmethod
31
31
  def _attr_to_labels_key(labels_attr: Any, node_id: Any, no_node_labels: Optional[bool]) -> Tuple[str, ...]:
@@ -96,7 +96,7 @@ class OGBLoader(UncallableNamespace, IllegalAttrChecker, ABC):
96
96
  constructor = self._query_runner.create_graph_constructor(graph_name, concurrency, [])
97
97
  constructor.run(nodes, rels)
98
98
 
99
- return Graph(graph_name, self._query_runner, self._server_version)
99
+ return Graph(graph_name, self._query_runner)
100
100
 
101
101
 
102
102
  class OGBNLoader(OGBLoader):
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import warnings
3
4
  from typing import Any, Dict, Optional, Tuple, Type, Union
4
5
 
5
6
  from neo4j import Driver
@@ -8,11 +9,14 @@ from pandas import DataFrame
8
9
  from .call_builder import IndirectCallBuilder
9
10
  from .endpoints import AlphaEndpoints, BetaEndpoints, DirectEndpoints
10
11
  from .error.uncallable_namespace import UncallableNamespace
12
+ from .graph.graph_proc_runner import GraphProcRunner
13
+ from .query_runner.arrow_info import ArrowInfo
11
14
  from .query_runner.arrow_query_runner import ArrowQueryRunner
12
15
  from .query_runner.neo4j_query_runner import Neo4jQueryRunner
13
16
  from .query_runner.query_runner import QueryRunner
14
17
  from .server_version.server_version import ServerVersion
15
- from graphdatascience.graph.graph_proc_runner import GraphProcRunner
18
+ from .utils.util_proc_runner import UtilProcRunner
19
+ from .version import __min_server_version__
16
20
 
17
21
 
18
22
  class GraphDataScience(DirectEndpoints, UncallableNamespace):
@@ -32,6 +36,7 @@ class GraphDataScience(DirectEndpoints, UncallableNamespace):
32
36
  arrow_disable_server_verification: bool = True,
33
37
  arrow_tls_root_certs: Optional[bytes] = None,
34
38
  bookmarks: Optional[Any] = None,
39
+ show_progress: bool = True,
35
40
  ):
36
41
  """
37
42
  Construct a new GraphDataScience object.
@@ -48,11 +53,12 @@ class GraphDataScience(DirectEndpoints, UncallableNamespace):
48
53
  database: Optional[str], default None
49
54
  The Neo4j database to query against.
50
55
  arrow : Union[str, bool], default True
51
- Arrow connection information. This is either a bool or a string.
52
- If it is a string, it will be interpreted as a connection URL to a GDS Arrow Server.
53
- If it is a bool,
54
- True will make the client discover the connection URI to the GDS Arrow server via the Neo4j endpoint,
55
- while False will make the client use Bolt for all operations.
56
+ Arrow connection information. This is either a string or a bool.
57
+
58
+ - If it is a string, it will be interpreted as a connection URL to a GDS Arrow Server.
59
+ - If it is a bool:
60
+ - True will make the client discover the connection URI to the GDS Arrow server via the Neo4j endpoint.
61
+ - False will make the client use Bolt for all operations.
56
62
  arrow_disable_server_verification : bool, default True
57
63
  A flag that overrides other TLS settings and disables server verification for TLS connections.
58
64
  arrow_tls_root_certs : Optional[bytes], default None
@@ -60,6 +66,8 @@ class GraphDataScience(DirectEndpoints, UncallableNamespace):
60
66
  GDS Arrow Flight server.
61
67
  bookmarks : Optional[Any], default None
62
68
  The Neo4j bookmarks to require a certain state before the next query gets executed.
69
+ show_progress : bool, default True
70
+ A flag to indicate whether to show progress bars for running procedures.
63
71
  """
64
72
  if aura_ds:
65
73
  GraphDataScience._validate_endpoint(endpoint)
@@ -67,13 +75,24 @@ class GraphDataScience(DirectEndpoints, UncallableNamespace):
67
75
  if isinstance(endpoint, QueryRunner):
68
76
  self._query_runner = endpoint
69
77
  else:
70
- self._query_runner = Neo4jQueryRunner.create(endpoint, auth, aura_ds, database, bookmarks)
78
+ self._query_runner = Neo4jQueryRunner.create(endpoint, auth, aura_ds, database, bookmarks, show_progress)
71
79
 
72
80
  self._server_version = self._query_runner.server_version()
73
81
 
74
- if arrow and self._server_version >= ServerVersion(2, 1, 0):
82
+ if self._server_version < ServerVersion.from_string(__min_server_version__):
83
+ warnings.warn(
84
+ DeprecationWarning(
85
+ f"Client does not support the given server version `{self._server_version}`."
86
+ + " We recommend to either update the GDS server version or use a compatible version of the `graphdatascience` package."
87
+ + " Please refer to the compatibility matrix at https://neo4j.com/docs/graph-data-science-client/current/installation/#python-client-system-requirements."
88
+ )
89
+ )
90
+
91
+ arrow_info = ArrowInfo.create(self._query_runner)
92
+ if arrow and arrow_info.enabled and self._server_version >= ServerVersion(2, 1, 0):
75
93
  self._query_runner = ArrowQueryRunner.create(
76
94
  self._query_runner,
95
+ arrow_info,
77
96
  auth,
78
97
  self._query_runner.encrypted(),
79
98
  arrow_disable_server_verification,
@@ -81,12 +100,17 @@ class GraphDataScience(DirectEndpoints, UncallableNamespace):
81
100
  None if arrow is True else arrow,
82
101
  )
83
102
 
84
- super().__init__(self._query_runner, "gds", self._server_version)
103
+ self._query_runner.set_show_progress(show_progress)
104
+ super().__init__(self._query_runner, namespace="gds", server_version=self._server_version)
85
105
 
86
106
  @property
87
107
  def graph(self) -> GraphProcRunner:
88
108
  return GraphProcRunner(self._query_runner, f"{self._namespace}.graph", self._server_version)
89
109
 
110
+ @property
111
+ def util(self) -> UtilProcRunner:
112
+ return UtilProcRunner(self._query_runner, f"{self._namespace}.util", self._server_version)
113
+
90
114
  @property
91
115
  def alpha(self) -> AlphaEndpoints:
92
116
  return AlphaEndpoints(self._query_runner, "gds.alpha", self._server_version)
@@ -120,6 +144,17 @@ class GraphDataScience(DirectEndpoints, UncallableNamespace):
120
144
  """
121
145
  self._query_runner.set_bookmarks(bookmarks)
122
146
 
147
+ def set_show_progress(self, show_progress: bool) -> None:
148
+ """
149
+ Set whether to show progress for running procedures.
150
+
151
+ Parameters
152
+ ----------
153
+ show_progress: bool
154
+ Whether to show progress for procedures.
155
+ """
156
+ self._query_runner.set_show_progress(show_progress)
157
+
123
158
  def database(self) -> Optional[str]:
124
159
  """
125
160
  Get the database which queries are run against.
@@ -222,3 +257,10 @@ class GraphDataScience(DirectEndpoints, UncallableNamespace):
222
257
  Close the GraphDataScience object and release any resources held by it.
223
258
  """
224
259
  self._query_runner.close()
260
+
261
+ def __enter__(self) -> GraphDataScience:
262
+ return self
263
+
264
+ def __exit__(self, exc_type, exc_val, exc_tb) -> bool:
265
+ self.close()
266
+ return False
@@ -2,10 +2,10 @@ from typing import Any
2
2
 
3
3
  from pandas import Series
4
4
 
5
+ from ..call_parameters import CallParameters
5
6
  from ..graph.graph_object import Graph
6
7
  from ..graph.graph_type_check import graph_type_check
7
8
  from .model import Model
8
- from graphdatascience.call_parameters import CallParameters
9
9
 
10
10
 
11
11
  class GraphSageModel(Model):
@@ -41,5 +41,5 @@ class LPModel(PipelineModel):
41
41
  A list of LinkFeatures of the pipeline.
42
42
 
43
43
  """
44
- steps: List[Dict[str, Any]] = self._list_info()["modelInfo"][0]["pipeline"]["featureSteps"]
44
+ steps: List[Dict[str, Any]] = self._list_info()["modelInfo"]["pipeline"]["featureSteps"]
45
45
  return [LinkFeature(s["name"], s["config"]) for s in steps]