graphdatascience 1.17a1__tar.gz → 1.18__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.
- graphdatascience-1.18/MANIFEST.in +3 -0
- {graphdatascience-1.17a1/graphdatascience.egg-info → graphdatascience-1.18}/PKG-INFO +13 -28
- graphdatascience-1.18/pyproject.toml +175 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/algo/algo_proc_runner.py +5 -3
- graphdatascience-1.18/src/graphdatascience/arrow_client/arrow_base_model.py +12 -0
- graphdatascience-1.18/src/graphdatascience/arrow_client/authenticated_flight_client.py +254 -0
- graphdatascience-1.18/src/graphdatascience/arrow_client/middleware/auth_middleware.py +63 -0
- graphdatascience-1.18/src/graphdatascience/arrow_client/middleware/user_agent_middleware.py +26 -0
- graphdatascience-1.18/src/graphdatascience/arrow_client/v1/data_mapper_utils.py +19 -0
- graphdatascience-1.18/src/graphdatascience/arrow_client/v1/gds_arrow_client.py +652 -0
- graphdatascience-1.18/src/graphdatascience/arrow_client/v2/api_types.py +49 -0
- graphdatascience-1.18/src/graphdatascience/arrow_client/v2/data_mapper_utils.py +19 -0
- graphdatascience-1.18/src/graphdatascience/arrow_client/v2/gds_arrow_client.py +529 -0
- graphdatascience-1.18/src/graphdatascience/arrow_client/v2/job_client.py +105 -0
- graphdatascience-1.18/src/graphdatascience/arrow_client/v2/mutation_client.py +52 -0
- graphdatascience-1.18/src/graphdatascience/arrow_client/v2/remote_write_back_client.py +83 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/call_parameters.py +2 -2
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/endpoints.py +1 -1
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/error/cypher_warning_handler.py +11 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/base_graph_proc_runner.py +18 -17
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_alpha_proc_runner.py +3 -4
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_beta_proc_runner.py +2 -2
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_create_result.py +5 -5
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_cypher_runner.py +4 -4
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_entity_ops_runner.py +16 -14
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_export_runner.py +7 -5
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_object.py +6 -6
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_project_runner.py +1 -1
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_remote_project_runner.py +4 -6
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_sample_runner.py +3 -1
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/nx_loader.py +3 -3
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/ogb_loader.py +8 -8
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph_data_science.py +67 -38
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/graphsage_model.py +4 -2
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/model_beta_proc_runner.py +6 -4
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/model_proc_runner.py +3 -3
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/node_classification_model.py +4 -2
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/simple_rel_embedding_model.py +6 -4
- graphdatascience-1.18/src/graphdatascience/model/v2/model.py +58 -0
- graphdatascience-1.18/src/graphdatascience/model/v2/model_api.py +45 -0
- graphdatascience-1.18/src/graphdatascience/model/v2/model_details.py +20 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/classification_training_pipeline.py +5 -3
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/lp_pipeline_create_runner.py +3 -1
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/lp_training_pipeline.py +3 -1
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/nc_training_pipeline.py +6 -4
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/nr_pipeline_create_runner.py +4 -2
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/nr_training_pipeline.py +8 -6
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/pipeline_beta_proc_runner.py +6 -4
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/pipeline_proc_runner.py +6 -4
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/training_pipeline.py +12 -10
- graphdatascience-1.18/src/graphdatascience/plugin_v2_endpoints.py +454 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/__init__.py +3 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/__init__.py +3 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/base_result.py +9 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/catalog/__init__.py +77 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/catalog/catalog_endpoints.py +273 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/catalog/graph_api.py +174 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/catalog/graph_backend.py +19 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/catalog/graph_info.py +40 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/catalog/graph_sampling_endpoints.py +172 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/catalog/node_label_endpoints.py +112 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/catalog/node_properties_endpoints.py +172 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/catalog/relationships_endpoints.py +313 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/catalog/scale_properties_endpoints.py +289 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/catalog/scaler_config.py +11 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/centrality/__init__.py +93 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/centrality/articlerank_endpoints.py +385 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/centrality/articulationpoints_endpoints.py +245 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/centrality/betweenness_endpoints.py +302 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/centrality/celf_endpoints.py +311 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/centrality/closeness_endpoints.py +275 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/centrality/closeness_harmonic_endpoints.py +260 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/centrality/degree_endpoints.py +295 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/centrality/eigenvector_endpoints.py +374 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/centrality/pagerank_endpoints.py +378 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/__init__.py +148 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/clique_counting_endpoints.py +239 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/conductance_endpoints.py +58 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/hdbscan_endpoints.py +330 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/k1coloring_endpoints.py +289 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/kcore_endpoints.py +250 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/kmeans_endpoints.py +390 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/labelpropagation_endpoints.py +336 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/leiden_endpoints.py +400 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/local_clustering_coefficient_endpoints.py +280 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/louvain_endpoints.py +370 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/maxkcut_endpoints.py +199 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/modularity_optimization_endpoints.py +355 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/scc_endpoints.py +267 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/sllpa_endpoints.py +283 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/triangle_count_endpoints.py +302 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/community/wcc_endpoints.py +313 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/config_endpoints.py +104 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/default_values.py +2 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/estimation_result.py +21 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/model/graphsage_model.py +261 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/node_embedding/__init__.py +45 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/node_embedding/fastrp_endpoints.py +358 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/node_embedding/graphsage_endpoints.py +210 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/node_embedding/graphsage_predict_endpoints.py +226 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/node_embedding/graphsage_train_endpoints.py +153 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/node_embedding/hashgnn_endpoints.py +271 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/node_embedding/node2vec_endpoints.py +381 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/__init__.py +101 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/all_shortest_path_endpoints.py +121 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/dag_endpoints.py +17 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/dijkstra_endpoints.py +256 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/k_spanning_tree_endpoints.py +76 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/longest_path_endpoints.py +54 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/max_flow_endpoints.py +297 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/prize_steiner_tree_endpoints.py +286 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/shortest_path_endpoints.py +38 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/single_source_bellman_ford_endpoints.py +289 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/single_source_delta_endpoints.py +295 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/single_source_dijkstra_endpoints.py +226 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/source_target_astar_endpoints.py +258 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/source_target_dijkstra_endpoints.py +234 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/source_target_yens_endpoints.py +254 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/spanning_tree_endpoints.py +298 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/pathfinding/steiner_tree_endpoints.py +331 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/similarity/__init__.py +29 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/similarity/knn_endpoints.py +385 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/similarity/knn_filtered_endpoints.py +436 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/similarity/knn_results.py +44 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/similarity/node_similarity_endpoints.py +380 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/similarity/node_similarity_filtered_endpoints.py +404 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/similarity/node_similarity_results.py +35 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/api/system_endpoints.py +26 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/catalog/__init__.py +3 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/catalog/catalog_arrow_endpoints.py +356 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/catalog/graph_backend_arrow.py +31 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/catalog/graph_ops_arrow.py +26 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/catalog/graph_sampling_arrow_endpoints.py +107 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/catalog/node_label_arrow_endpoints.py +91 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/catalog/node_properties_arrow_endpoints.py +145 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/catalog/relationship_arrow_endpoints.py +232 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/catalog/scale_properties_arrow_endpoints.py +184 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/centrality/articlerank_arrow_endpoints.py +222 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/centrality/articulationpoints_arrow_endpoints.py +153 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/centrality/betweenness_arrow_endpoints.py +186 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/centrality/celf_arrow_endpoints.py +191 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/centrality/closeness_arrow_endpoints.py +167 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/centrality/closeness_harmonic_arrow_endpoints.py +155 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/centrality/degree_arrow_endpoints.py +170 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/centrality/eigenvector_arrow_endpoints.py +212 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/centrality/pagerank_arrow_endpoints.py +226 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/clique_counting_arrow_endpoints.py +159 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/conductance_arrow_endpoints.py +48 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/hdbscan_arrow_endpoints.py +210 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/k1coloring_arrow_endpoints.py +183 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/kcore_arrow_endpoints.py +154 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/kmeans_arrow_endpoints.py +249 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/labelpropagation_arrow_endpoints.py +217 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/leiden_arrow_endpoints.py +254 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/local_clustering_coefficient_arrow_endpoints.py +195 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/louvain_arrow_endpoints.py +225 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/maxkcut_arrow_endpoints.py +128 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/modularity_optimization_arrow_endpoints.py +231 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/scc_arrow_endpoints.py +165 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/sllpa_arrow_endpoints.py +190 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/triangle_count_arrow_endpoints.py +182 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community/wcc_arrow_endpoints.py +194 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/config_arrow_endpoints.py +87 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/endpoints_helper_base.py +156 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/model_api_arrow.py +57 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/node_embedding/fastrp_arrow_endpoints.py +230 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/node_embedding/graphsage_predict_arrow_endpoints.py +164 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/node_embedding/graphsage_train_arrow_endpoints.py +166 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/node_embedding/hashgnn_arrow_endpoints.py +216 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/node_embedding/node2vec_arrow_endpoints.py +259 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/node_property_endpoints.py +33 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/all_shortest_path_arrow_endpoints.py +98 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/dag_arrow_endpoints.py +21 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/dijkstra_arrow_endpoints.py +172 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/k_spanning_tree_arrow_endpoints.py +67 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/longest_path_arrow_endpoints.py +51 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/max_flow_arrow_endpoints.py +203 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/prize_steiner_tree_arrow_endpoints.py +192 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/shortest_path_arrow_endpoints.py +49 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/single_source_bellman_ford_arrow_endpoints.py +202 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/single_source_delta_arrow_endpoints.py +210 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/single_source_dijkstra_arrow_endpoints.py +169 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/source_target_astar_arrow_endpoints.py +189 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/source_target_dijkstra_arrow_endpoints.py +172 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/source_target_yens_arrow_endpoints.py +181 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/spanning_tree_arrow_endpoints.py +202 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding/steiner_tree_arrow_endpoints.py +222 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/relationship_endpoints_helper.py +43 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/similarity/knn_arrow_endpoints.py +283 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/similarity/knn_filtered_arrow_endpoints.py +299 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/similarity/node_similarity_arrow_endpoints.py +290 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/similarity/node_similarity_filtered_arrow_endpoints.py +298 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/stream_result_mapper.py +55 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/system_arrow_endpoints.py +24 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/table_endpoints_helper.py +13 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/__init__.py +7 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/catalog/graph_backend_cypher.py +55 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/catalog/graph_sampling_cypher_endpoints.py +113 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/catalog/node_label_cypher_endpoints.py +78 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/catalog/node_properties_cypher_endpoints.py +125 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/catalog/relationship_cypher_endpoints.py +259 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/catalog/scale_properties_cypher_endpoints.py +200 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/catalog/utils.py +12 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/catalog_cypher_endpoints.py +251 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/centrality/articlerank_cypher_endpoints.py +242 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/centrality/articulationpoints_cypher_endpoints.py +172 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/centrality/betweenness_cypher_endpoints.py +198 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/centrality/celf_cypher_endpoints.py +210 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/centrality/closeness_cypher_endpoints.py +181 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/centrality/closeness_harmonic_cypher_endpoints.py +177 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/centrality/degree_cypher_endpoints.py +191 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/centrality/eigenvector_cypher_endpoints.py +235 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/centrality/pagerank_cypher_endpoints.py +247 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/clique_counting_cypher_endpoints.py +172 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/conductance_cypher_endpoints.py +45 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/hdbscan_cypher_endpoints.py +226 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/k1coloring_cypher_endpoints.py +194 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/kcore_cypher_endpoints.py +171 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/kmeans_cypher_endpoints.py +263 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/labelpropagation_cypher_endpoints.py +230 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/leiden_cypher_endpoints.py +268 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/local_clustering_coefficient_cypher_endpoints.py +191 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/louvain_cypher_endpoints.py +239 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/maxkcut_cypher_endpoints.py +128 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/modularity_optimization_cypher_endpoints.py +244 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/scc_cypher_endpoints.py +181 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/sllpa_cypher_endpoints.py +208 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/triangle_count_cypher_endpoints.py +180 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community/wcc_cypher_endpoints.py +210 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/config_cypher_endpoints.py +109 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/estimation_utils.py +60 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/model_api_cypher.py +49 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/node_embedding/fastrp_cypher_endpoints.py +251 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/node_embedding/graphsage_predict_cypher_endpoints.py +161 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/node_embedding/graphsage_train_cypher_endpoints.py +156 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/node_embedding/hashgnn_cypher_endpoints.py +223 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/node_embedding/node2vec_cypher_endpoints.py +260 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/all_shortest_path_cypher_endpoints.py +90 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/dag_cypher_endpoints.py +18 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/dijkstra_cypher_endpoints.py +164 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/k_spanning_tree_cypher_endpoints.py +57 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/longest_path_cypher_endpoints.py +48 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/max_flow_cypher_endpoints.py +204 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/prize_steiner_tree_cypher_endpoints.py +189 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/shortest_path_cypher_endpoints.py +44 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/single_source_bellman_ford_cypher_endpoints.py +198 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/single_source_delta_cypher_endpoints.py +204 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/single_source_dijkstra_cypher_endpoints.py +160 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/source_target_astar_cypher_endpoints.py +180 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/source_target_dijkstra_cypher_endpoints.py +164 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/source_target_yens_cypher_endpoints.py +172 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/spanning_tree_cypher_endpoints.py +199 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding/steiner_tree_cypher_endpoints.py +219 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/similarity/knn_cypher_endpoints.py +275 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/similarity/knn_filtered_cypher_endpoints.py +291 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/similarity/node_similarity_cypher_endpoints.py +273 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/similarity/node_similarity_filtered_cypher_endpoints.py +287 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/system_cypher_endpoints.py +23 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/utils/__init__.py +0 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/utils/config_converter.py +38 -0
- graphdatascience-1.18/src/graphdatascience/procedure_surface/utils/result_utils.py +41 -0
- graphdatascience-1.18/src/graphdatascience/py.typed +0 -0
- graphdatascience-1.18/src/graphdatascience/query_runner/__init__.py +0 -0
- graphdatascience-1.18/src/graphdatascience/query_runner/arrow_authentication/__init__.py +3 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/arrow_graph_constructor.py +5 -4
- graphdatascience-1.18/src/graphdatascience/query_runner/arrow_info/__init__.py +5 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/arrow_query_runner.py +27 -24
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/cypher_graph_constructor.py +9 -10
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/gds_arrow_client.py +99 -94
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/neo4j_query_runner.py +70 -47
- graphdatascience-1.18/src/graphdatascience/query_runner/progress/__init__.py +0 -0
- graphdatascience-1.18/src/graphdatascience/query_runner/progress/progress_bar.py +123 -0
- graphdatascience-1.18/src/graphdatascience/query_runner/progress/progress_provider.py +23 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/progress/query_progress_logger.py +23 -54
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/progress/query_progress_provider.py +3 -3
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/progress/static_progress_provider.py +1 -3
- graphdatascience-1.18/src/graphdatascience/query_runner/protocol/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/protocol/project_protocols.py +26 -21
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/protocol/write_protocols.py +41 -14
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/query_runner.py +16 -16
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/session_query_runner.py +29 -33
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/standalone_session_query_runner.py +18 -17
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/termination_flag.py +2 -3
- graphdatascience-1.18/src/graphdatascience/resources/__init__.py +0 -0
- graphdatascience-1.18/src/graphdatascience/resources/cora/__init__.py +0 -0
- graphdatascience-1.18/src/graphdatascience/resources/imdb/__init__.py +0 -0
- graphdatascience-1.18/src/graphdatascience/resources/karate/__init__.py +0 -0
- graphdatascience-1.18/src/graphdatascience/resources/lastfm/__init__.py +0 -0
- graphdatascience-1.18/src/graphdatascience/retry_utils/__init__.py +0 -0
- graphdatascience-1.18/src/graphdatascience/retry_utils/neo4j_retry_helper.py +12 -0
- graphdatascience-1.18/src/graphdatascience/retry_utils/retry_config.py +145 -0
- graphdatascience-1.18/src/graphdatascience/semantic_version/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/semantic_version/semantic_version.py +14 -3
- graphdatascience-1.18/src/graphdatascience/server_version/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/server_version/compatible_with.py +2 -2
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/server_version/server_version.py +3 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/__init__.py +2 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/aura_api.py +16 -14
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/aura_api_responses.py +7 -7
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/aura_graph_data_science.py +36 -17
- graphdatascience-1.18/src/graphdatascience/session/aurads_sessions.py +0 -0
- graphdatascience-1.18/src/graphdatascience/session/dbms/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/dbms/protocol_resolver.py +2 -4
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/dbms_connection_info.py +5 -6
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/dedicated_sessions.py +18 -18
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/gds_sessions.py +18 -18
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/region_suggester.py +2 -2
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/session_info.py +10 -11
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/session_sizes.py +1 -2
- graphdatascience-1.18/src/graphdatascience/session/session_v2_endpoints.py +493 -0
- graphdatascience-1.18/src/graphdatascience/system/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/system/config_endpoints.py +3 -3
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/system/system_endpoints.py +12 -10
- graphdatascience-1.18/src/graphdatascience/topological_lp/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/topological_lp/topological_lp_alpha_runner.py +2 -2
- graphdatascience-1.18/src/graphdatascience/topological_lp/topological_lp_runner.py +62 -0
- graphdatascience-1.18/src/graphdatascience/utils/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/utils/util_proc_runner.py +24 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/version.py +1 -1
- {graphdatascience-1.17a1 → graphdatascience-1.18/src/graphdatascience.egg-info}/PKG-INFO +13 -28
- graphdatascience-1.18/src/graphdatascience.egg-info/SOURCES.txt +408 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience.egg-info/requires.txt +5 -5
- graphdatascience-1.17a1/MANIFEST.in +0 -9
- graphdatascience-1.17a1/graphdatascience/procedure_surface/arrow/wcc_arrow_endpoints.py +0 -191
- graphdatascience-1.17a1/graphdatascience/query_runner/progress/progress_provider.py +0 -18
- graphdatascience-1.17a1/graphdatascience/retry_utils/retry_config.py +0 -12
- graphdatascience-1.17a1/graphdatascience.egg-info/SOURCES.txt +0 -165
- graphdatascience-1.17a1/pyproject.toml +0 -55
- graphdatascience-1.17a1/requirements/base/base.txt +0 -11
- graphdatascience-1.17a1/requirements/base/networkx.txt +0 -1
- graphdatascience-1.17a1/requirements/base/ogb.txt +0 -1
- graphdatascience-1.17a1/requirements/base/rust-ext.txt +0 -2
- graphdatascience-1.17a1/setup.py +0 -64
- {graphdatascience-1.17a1 → graphdatascience-1.18}/LICENSE +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18}/README.md +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18}/setup.cfg +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/algo/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/algo/algo_endpoints.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/algo/single_mode_algo_endpoints.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/error → graphdatascience-1.18/src/graphdatascience/arrow_client}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/query_runner → graphdatascience-1.18/src/graphdatascience/arrow_client}/arrow_authentication.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/query_runner → graphdatascience-1.18/src/graphdatascience/arrow_client}/arrow_endpoint_version.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/query_runner → graphdatascience-1.18/src/graphdatascience/arrow_client}/arrow_info.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/graph → graphdatascience-1.18/src/graphdatascience/arrow_client/middleware}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/model → graphdatascience-1.18/src/graphdatascience/arrow_client/v1}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/pipeline → graphdatascience-1.18/src/graphdatascience/arrow_client/v2}/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/call_builder.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/caller_base.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/procedure_surface → graphdatascience-1.18/src/graphdatascience/error}/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/error/client_only_endpoint.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/error/endpoint_suggester.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/error/gds_not_installed.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/error/illegal_attr_checker.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/error/unable_to_connect.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/error/uncallable_namespace.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/procedure_surface/arrow → graphdatascience-1.18/src/graphdatascience/graph}/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_endpoints.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_proc_runner.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_remote_proc_runner.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/graph/graph_type_check.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/ignored_server_endpoints.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/query_runner → graphdatascience-1.18/src/graphdatascience/model}/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/link_prediction_model.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/model.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/model_alpha_proc_runner.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/model_endpoints.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/model_resolver.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/node_regression_model.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/model/pipeline_model.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/query_runner/progress → graphdatascience-1.18/src/graphdatascience/model/v2}/__init__.py +0 -0
- /graphdatascience-1.17a1/graphdatascience/py.typed → /graphdatascience-1.18/src/graphdatascience/model/v2/graphsage_model.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/query_runner/protocol → graphdatascience-1.18/src/graphdatascience/pipeline}/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/nc_pipeline_create_runner.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/pipeline_alpha_proc_runner.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/pipeline/pipeline_endpoints.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/resources → graphdatascience-1.18/src/graphdatascience/procedure_surface/api/model}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/resources/cora → graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/resources/imdb → graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/centrality}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/resources/karate → graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/community}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/resources/lastfm → graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/node_embedding}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/retry_utils → graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/pathfinding}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/semantic_version → graphdatascience-1.18/src/graphdatascience/procedure_surface/arrow/similarity}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/server_version → graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/catalog}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/session/dbms → graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/centrality}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/system → graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/community}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/topological_lp → graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/node_embedding}/__init__.py +0 -0
- {graphdatascience-1.17a1/graphdatascience/utils → graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/pathfinding}/__init__.py +0 -0
- /graphdatascience-1.17a1/graphdatascience/session/aurads_sessions.py → /graphdatascience-1.18/src/graphdatascience/procedure_surface/cypher/similarity/__init__.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/graph_constructor.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/protocol/status.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/query_runner/query_mode.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/cora/cora_nodes.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/cora/cora_rels.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/cora/serialize_cora.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/imdb/imdb_acted_in.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/imdb/imdb_actors.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/imdb/imdb_directed_in.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/imdb/imdb_directors.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/imdb/imdb_movies_with_genre.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/imdb/imdb_movies_without_genre.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/imdb/serialize_imdb.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/karate/karate_club.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/lastfm/artist_nodes.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/lastfm/serialize_lastfm.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/lastfm/user_friend_df_directed.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/lastfm/user_listen_artist_rels.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/lastfm/user_nodes.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/resources/lastfm/user_tag_artist_rels.parquet.gzip +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/retry_utils/retry_utils.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/algorithm_category.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/aura_api_token_authentication.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/cloud_location.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/session/dbms/protocol_version.py +0 -0
- /graphdatascience-1.17a1/graphdatascience/topological_lp/topological_lp_endpoints.py → /graphdatascience-1.18/src/graphdatascience/topological_lp/topological_lp_alpha_endpoints.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/utils/direct_util_endpoints.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/utils/util_node_property_func_runner.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/utils/util_remote_proc_runner.py +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience.egg-info/dependency_links.txt +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience.egg-info/not-zip-safe +0 -0
- {graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience.egg-info/top_level.txt +0 -0
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphdatascience
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.18
|
|
4
4
|
Summary: A Python client for the Neo4j Graph Data Science (GDS) library
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
License: Apache License 2.0
|
|
5
|
+
Author-email: Neo4j <team-gds@neo4j.org>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://neo4j.com/product/graph-data-science/
|
|
9
8
|
Project-URL: Documentation, https://neo4j.com/docs/graph-data-science-client/current/
|
|
10
|
-
Project-URL:
|
|
11
|
-
Project-URL:
|
|
9
|
+
Project-URL: Repository, https://github.com/neo4j/graph-data-science-client
|
|
10
|
+
Project-URL: BugTracker, https://github.com/neo4j/graph-data-science-client/issues
|
|
12
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
13
12
|
Classifier: Intended Audience :: Developers
|
|
14
13
|
Classifier: Intended Audience :: Science/Research
|
|
15
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
16
14
|
Classifier: Operating System :: OS Independent
|
|
17
15
|
Classifier: Programming Language :: Python :: 3
|
|
18
16
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
20
17
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
22
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -25,39 +22,27 @@ Classifier: Topic :: Database
|
|
|
25
22
|
Classifier: Topic :: Scientific/Engineering
|
|
26
23
|
Classifier: Topic :: Software Development
|
|
27
24
|
Classifier: Typing :: Typed
|
|
28
|
-
Requires-Python: >=3.
|
|
25
|
+
Requires-Python: >=3.10
|
|
29
26
|
Description-Content-Type: text/markdown
|
|
30
27
|
License-File: LICENSE
|
|
31
28
|
Requires-Dist: multimethod<3.0,>=1.0
|
|
32
|
-
Requires-Dist: neo4j<
|
|
33
|
-
Requires-Dist: numpy<2.
|
|
29
|
+
Requires-Dist: neo4j<7.0,>=4.4.12
|
|
30
|
+
Requires-Dist: numpy<2.4
|
|
34
31
|
Requires-Dist: pandas<3.0,>=1.0
|
|
35
|
-
Requires-Dist: pyarrow<
|
|
32
|
+
Requires-Dist: pyarrow<23.0,>=17.0
|
|
36
33
|
Requires-Dist: textdistance<5.0,>=4.0
|
|
37
34
|
Requires-Dist: tqdm<5.0,>=4.0
|
|
38
35
|
Requires-Dist: typing-extensions<5.0,>=4.0
|
|
39
36
|
Requires-Dist: requests
|
|
40
37
|
Requires-Dist: tenacity>=9.0
|
|
41
38
|
Requires-Dist: pydantic>=2.11
|
|
42
|
-
Provides-Extra: ogb
|
|
43
|
-
Requires-Dist: ogb<2.0,>=1.0; extra == "ogb"
|
|
44
39
|
Provides-Extra: networkx
|
|
45
40
|
Requires-Dist: networkx<4.0,>=2.0; extra == "networkx"
|
|
41
|
+
Provides-Extra: ogb
|
|
42
|
+
Requires-Dist: ogb<2.0,>=1.0; extra == "ogb"
|
|
46
43
|
Provides-Extra: rust-ext
|
|
47
|
-
Requires-Dist: neo4j-rust-ext<
|
|
48
|
-
Dynamic: author
|
|
49
|
-
Dynamic: author-email
|
|
50
|
-
Dynamic: classifier
|
|
51
|
-
Dynamic: description
|
|
52
|
-
Dynamic: description-content-type
|
|
53
|
-
Dynamic: home-page
|
|
54
|
-
Dynamic: license
|
|
44
|
+
Requires-Dist: neo4j-rust-ext<7.0,>=4.4.12; extra == "rust-ext"
|
|
55
45
|
Dynamic: license-file
|
|
56
|
-
Dynamic: project-url
|
|
57
|
-
Dynamic: provides-extra
|
|
58
|
-
Dynamic: requires-dist
|
|
59
|
-
Dynamic: requires-python
|
|
60
|
-
Dynamic: summary
|
|
61
46
|
|
|
62
47
|
# Neo4j Graph Data Science Client
|
|
63
48
|
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=42", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "graphdatascience"
|
|
7
|
+
description = "A Python client for the Neo4j Graph Data Science (GDS) library"
|
|
8
|
+
dynamic = ["version"]
|
|
9
|
+
authors = [{ name = "Neo4j", email = "team-gds@neo4j.org" }]
|
|
10
|
+
readme = "README.md"
|
|
11
|
+
license = "Apache-2.0"
|
|
12
|
+
classifiers = [
|
|
13
|
+
"Development Status :: 5 - Production/Stable",
|
|
14
|
+
"Intended Audience :: Developers",
|
|
15
|
+
"Intended Audience :: Science/Research",
|
|
16
|
+
"Operating System :: OS Independent",
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
19
|
+
"Programming Language :: Python :: 3.10",
|
|
20
|
+
"Programming Language :: Python :: 3.11",
|
|
21
|
+
"Programming Language :: Python :: 3.12",
|
|
22
|
+
"Programming Language :: Python :: 3.13",
|
|
23
|
+
"Topic :: Database",
|
|
24
|
+
"Topic :: Scientific/Engineering",
|
|
25
|
+
"Topic :: Software Development",
|
|
26
|
+
"Typing :: Typed",
|
|
27
|
+
]
|
|
28
|
+
requires-python = ">=3.10"
|
|
29
|
+
dependencies = [
|
|
30
|
+
"multimethod >= 1.0, < 3.0",
|
|
31
|
+
"neo4j >= 4.4.12, < 7.0",
|
|
32
|
+
"numpy < 2.4",
|
|
33
|
+
"pandas >= 1.0, < 3.0",
|
|
34
|
+
"pyarrow >= 17.0, < 23.0",
|
|
35
|
+
"textdistance >= 4.0, < 5.0",
|
|
36
|
+
"tqdm >= 4.0, < 5.0",
|
|
37
|
+
"typing-extensions >= 4.0, < 5.0",
|
|
38
|
+
"requests",
|
|
39
|
+
"tenacity >= 9.0",
|
|
40
|
+
"pydantic >= 2.11",
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
[project.urls]
|
|
44
|
+
Homepage = "https://neo4j.com/product/graph-data-science/"
|
|
45
|
+
Documentation = "https://neo4j.com/docs/graph-data-science-client/current/"
|
|
46
|
+
Repository = "https://github.com/neo4j/graph-data-science-client"
|
|
47
|
+
BugTracker = "https://github.com/neo4j/graph-data-science-client/issues"
|
|
48
|
+
|
|
49
|
+
[project.optional-dependencies]
|
|
50
|
+
networkx = ["networkx >= 2.0, < 4.0"]
|
|
51
|
+
ogb = ["ogb >= 1.0, < 2.0"]
|
|
52
|
+
rust-ext = ["neo4j-rust-ext >= 4.4.12, < 7.0"]
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
[dependency-groups]
|
|
56
|
+
# To install all development dependencies,
|
|
57
|
+
# run `pip install --group dev -e .` inside repository root folder.#
|
|
58
|
+
dev = [
|
|
59
|
+
"tox>4.24",
|
|
60
|
+
{ include-group = "dev-base" },
|
|
61
|
+
{ include-group = "test" },
|
|
62
|
+
{ include-group = "docs-ci" },
|
|
63
|
+
]
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
dev-base = [
|
|
67
|
+
"ruff == 0.11.7",
|
|
68
|
+
"mypy == 1.13.0",
|
|
69
|
+
"nbconvert == 7.16.4",
|
|
70
|
+
"pandas-stubs == 2.2.3.241009",
|
|
71
|
+
"tox == 4.30.2",
|
|
72
|
+
"types-setuptools == 75.8.0.20250110",
|
|
73
|
+
"enum-tools[sphinx] == 0.12.0",
|
|
74
|
+
"autodoc_pydantic",
|
|
75
|
+
"types-requests",
|
|
76
|
+
"types-tqdm",
|
|
77
|
+
"types-python-dateutil",
|
|
78
|
+
"python-dotenv==1.1.0",
|
|
79
|
+
"types-colorama",
|
|
80
|
+
]
|
|
81
|
+
test = [
|
|
82
|
+
"pytest == 8.3.3",
|
|
83
|
+
"requests_mock == 1.11.0",
|
|
84
|
+
"pytest_mock == 3.15.1",
|
|
85
|
+
"testcontainers >= 4.0, < 4.13.0",
|
|
86
|
+
"python-dateutil >= 2.9",
|
|
87
|
+
]
|
|
88
|
+
docs-ci = [
|
|
89
|
+
"sphinx == 7.3.7",
|
|
90
|
+
"enum-tools[sphinx] == 0.12.0",
|
|
91
|
+
"autodoc_pydantic",
|
|
92
|
+
]
|
|
93
|
+
notebook-base = [
|
|
94
|
+
"nbconvert==7.16.4",
|
|
95
|
+
"nbformat==5.10.4",
|
|
96
|
+
"nbclient==0.10.2",
|
|
97
|
+
"ipykernel==6.29.5",
|
|
98
|
+
]
|
|
99
|
+
notebook-aura-ci = [{ include-group = "notebook-base" }, "python-dotenv==1.1.0"]
|
|
100
|
+
notebook-ci = [
|
|
101
|
+
{ include-group = "notebook-base" },
|
|
102
|
+
"scipy == 1.14.0",
|
|
103
|
+
"torch==2.3.0",
|
|
104
|
+
"torch-scatter==2.1.1",
|
|
105
|
+
"torch-sparse==0.6.17",
|
|
106
|
+
"torch-geometric>=2.5.0",
|
|
107
|
+
]
|
|
108
|
+
|
|
109
|
+
publish = ["build", "twine"]
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
[tool.setuptools]
|
|
113
|
+
include-package-data = true
|
|
114
|
+
zip-safe = false
|
|
115
|
+
|
|
116
|
+
[tool.setuptools.packages.find]
|
|
117
|
+
where = ["src"]
|
|
118
|
+
include = ["graphdatascience*"]
|
|
119
|
+
|
|
120
|
+
[tool.setuptools.dynamic]
|
|
121
|
+
version = { attr = "graphdatascience.version.__version__" }
|
|
122
|
+
|
|
123
|
+
[tool.setuptools.package-data]
|
|
124
|
+
graphdatascience = ["py.typed", "resources/**/*.gzip"]
|
|
125
|
+
|
|
126
|
+
[tool.ruff]
|
|
127
|
+
line-length = 120
|
|
128
|
+
|
|
129
|
+
include = ["*.py", "*.ipynb"]
|
|
130
|
+
|
|
131
|
+
exclude = [
|
|
132
|
+
# default
|
|
133
|
+
|
|
134
|
+
".bzr",
|
|
135
|
+
".direnv",
|
|
136
|
+
".eggs",
|
|
137
|
+
".git",
|
|
138
|
+
".git-rewrite",
|
|
139
|
+
".hg",
|
|
140
|
+
".ipynb_checkpoints",
|
|
141
|
+
".mypy_cache",
|
|
142
|
+
".nox",
|
|
143
|
+
".pants.d",
|
|
144
|
+
".pyenv",
|
|
145
|
+
".pytest_cache",
|
|
146
|
+
".pytype",
|
|
147
|
+
".ruff_cache",
|
|
148
|
+
".svn",
|
|
149
|
+
".tox",
|
|
150
|
+
".venv",
|
|
151
|
+
".vscode",
|
|
152
|
+
"__pypackages__",
|
|
153
|
+
"_build",
|
|
154
|
+
"buck-out",
|
|
155
|
+
"build",
|
|
156
|
+
"dist",
|
|
157
|
+
"node_modules",
|
|
158
|
+
"site-packages",
|
|
159
|
+
"venv",
|
|
160
|
+
|
|
161
|
+
# custom
|
|
162
|
+
"venv*",
|
|
163
|
+
".venv*",
|
|
164
|
+
".tox",
|
|
165
|
+
"build",
|
|
166
|
+
]
|
|
167
|
+
|
|
168
|
+
[tool.ruff.lint]
|
|
169
|
+
select = [
|
|
170
|
+
"E4",
|
|
171
|
+
"E7",
|
|
172
|
+
"E9", # default pycodestyle rules
|
|
173
|
+
"F", # flake8
|
|
174
|
+
"I", # isort
|
|
175
|
+
]
|
{graphdatascience-1.17a1 → graphdatascience-1.18/src}/graphdatascience/algo/algo_proc_runner.py
RENAMED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
from abc import ABC
|
|
2
4
|
from typing import Any
|
|
3
5
|
|
|
@@ -19,7 +21,7 @@ class AlgoProcRunner(IllegalAttrChecker, ABC):
|
|
|
19
21
|
return self._query_runner.call_procedure(endpoint=self._namespace, params=params, logging=with_logging)
|
|
20
22
|
|
|
21
23
|
@graph_type_check
|
|
22
|
-
def estimate(self, G: Graph, **config: Any) ->
|
|
24
|
+
def estimate(self, G: Graph, **config: Any) -> Series[Any]:
|
|
23
25
|
self._namespace += "." + "estimate"
|
|
24
26
|
return self._run_procedure(G, config, with_logging=False).squeeze() # type: ignore
|
|
25
27
|
|
|
@@ -30,13 +32,13 @@ class StreamModeRunner(AlgoProcRunner):
|
|
|
30
32
|
|
|
31
33
|
|
|
32
34
|
class StandardModeRunner(AlgoProcRunner):
|
|
33
|
-
def __call__(self, G: Graph, **config: Any) ->
|
|
35
|
+
def __call__(self, G: Graph, **config: Any) -> Series[Any]:
|
|
34
36
|
return self._run_procedure(G, config).squeeze() # type: ignore
|
|
35
37
|
|
|
36
38
|
|
|
37
39
|
class GraphSageRunner(AlgoProcRunner):
|
|
38
40
|
@graph_type_check
|
|
39
|
-
def __call__(self, G: Graph, **config: Any) -> tuple[GraphSageModel,
|
|
41
|
+
def __call__(self, G: Graph, **config: Any) -> tuple[GraphSageModel, Series[Any]]:
|
|
40
42
|
result = self._run_procedure(G, config).squeeze()
|
|
41
43
|
model_name = result["modelInfo"]["modelName"]
|
|
42
44
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel
|
|
4
|
+
from pydantic.alias_generators import to_camel
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ArrowBaseModel(BaseModel, alias_generator=to_camel):
|
|
8
|
+
def dump_camel(self) -> dict[str, Any]:
|
|
9
|
+
return self.model_dump(by_alias=True)
|
|
10
|
+
|
|
11
|
+
def dump_json(self) -> str:
|
|
12
|
+
return self.model_dump_json(by_alias=True)
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import logging
|
|
5
|
+
import platform
|
|
6
|
+
from dataclasses import dataclass
|
|
7
|
+
from types import TracebackType
|
|
8
|
+
from typing import Any, Iterator, Type
|
|
9
|
+
|
|
10
|
+
import certifi
|
|
11
|
+
from pyarrow import Schema, flight
|
|
12
|
+
from pyarrow import __version__ as arrow_version
|
|
13
|
+
from pyarrow._flight import (
|
|
14
|
+
Action,
|
|
15
|
+
ActionType,
|
|
16
|
+
FlightInternalError,
|
|
17
|
+
FlightStreamReader,
|
|
18
|
+
FlightTimedOutError,
|
|
19
|
+
FlightUnavailableError,
|
|
20
|
+
Result,
|
|
21
|
+
Ticket,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
from graphdatascience.arrow_client.arrow_authentication import ArrowAuthentication
|
|
25
|
+
from graphdatascience.arrow_client.arrow_info import ArrowInfo
|
|
26
|
+
from graphdatascience.retry_utils.retry_config import ExponentialWaitConfig, RetryConfigV2, StopConfig
|
|
27
|
+
|
|
28
|
+
from ..version import __version__
|
|
29
|
+
from .middleware.auth_middleware import AuthFactory, AuthMiddleware
|
|
30
|
+
from .middleware.user_agent_middleware import UserAgentFactory
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class AuthenticatedArrowClient:
|
|
34
|
+
@staticmethod
|
|
35
|
+
def create(
|
|
36
|
+
arrow_info: ArrowInfo,
|
|
37
|
+
auth: ArrowAuthentication | None = None,
|
|
38
|
+
encrypted: bool = False,
|
|
39
|
+
arrow_client_options: dict[str, Any] | None = None,
|
|
40
|
+
connection_string_override: str | None = None,
|
|
41
|
+
retry_config: RetryConfigV2 | None = None,
|
|
42
|
+
advertised_listen_address: tuple[str, int] | None = None,
|
|
43
|
+
) -> AuthenticatedArrowClient:
|
|
44
|
+
connection_string: str
|
|
45
|
+
if connection_string_override is not None:
|
|
46
|
+
connection_string = connection_string_override
|
|
47
|
+
else:
|
|
48
|
+
connection_string = arrow_info.listenAddress
|
|
49
|
+
|
|
50
|
+
host, port = connection_string.split(":")
|
|
51
|
+
|
|
52
|
+
if retry_config is None:
|
|
53
|
+
retry_config = RetryConfigV2(
|
|
54
|
+
retryable_exceptions=[
|
|
55
|
+
FlightTimedOutError,
|
|
56
|
+
FlightUnavailableError,
|
|
57
|
+
FlightInternalError,
|
|
58
|
+
],
|
|
59
|
+
stop_config=StopConfig(after_delay=10, after_attempt=5),
|
|
60
|
+
wait_config=ExponentialWaitConfig(multiplier=1, min=1, max=10),
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
return AuthenticatedArrowClient(
|
|
64
|
+
host=host,
|
|
65
|
+
retry_config=retry_config,
|
|
66
|
+
port=int(port),
|
|
67
|
+
auth=auth,
|
|
68
|
+
encrypted=encrypted,
|
|
69
|
+
arrow_client_options=arrow_client_options,
|
|
70
|
+
advertised_listen_address=advertised_listen_address,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
def __init__(
|
|
74
|
+
self,
|
|
75
|
+
host: str,
|
|
76
|
+
retry_config: RetryConfigV2,
|
|
77
|
+
port: int = 8491,
|
|
78
|
+
auth: ArrowAuthentication | None = None,
|
|
79
|
+
encrypted: bool = False,
|
|
80
|
+
arrow_client_options: dict[str, Any] | None = None,
|
|
81
|
+
user_agent: str | None = None,
|
|
82
|
+
advertised_listen_address: tuple[str, int] | None = None,
|
|
83
|
+
):
|
|
84
|
+
"""Creates a new AuthenticatedArrowClient instance.
|
|
85
|
+
|
|
86
|
+
Parameters
|
|
87
|
+
----------
|
|
88
|
+
host: str
|
|
89
|
+
The host address of the GDS Arrow server
|
|
90
|
+
port: int
|
|
91
|
+
The host port of the GDS Arrow server (default is 8491)
|
|
92
|
+
auth: ArrowAuthentication | None
|
|
93
|
+
An implementation of ArrowAuthentication providing a pair to be used for basic authentication
|
|
94
|
+
encrypted: bool
|
|
95
|
+
A flag that indicates whether the connection should be encrypted (default is False)
|
|
96
|
+
arrow_client_options: dict[str, Any] | None
|
|
97
|
+
Additional options to be passed to the Arrow Flight client.
|
|
98
|
+
user_agent: str | None
|
|
99
|
+
The user agent string to use for the connection. (default is `neo4j-graphdatascience-v[VERSION] pyarrow-v[PYARROW_VERSION])
|
|
100
|
+
retry_config: RetryConfig | None
|
|
101
|
+
The retry configuration to use for the Arrow requests send by the client.
|
|
102
|
+
advertised_listen_address: tuple[str, int] | None
|
|
103
|
+
The advertised listen address of the GDS Arrow server. This will be used by remote projection and writeback operations.
|
|
104
|
+
"""
|
|
105
|
+
self._host = host
|
|
106
|
+
self._port = port
|
|
107
|
+
self._auth = None
|
|
108
|
+
self._encrypted = encrypted
|
|
109
|
+
self._arrow_client_options = arrow_client_options
|
|
110
|
+
self._user_agent = user_agent
|
|
111
|
+
self._logger = logging.getLogger("gds_arrow_client")
|
|
112
|
+
self._retry_config = retry_config
|
|
113
|
+
if auth:
|
|
114
|
+
self._auth = auth
|
|
115
|
+
self._auth_middleware = AuthMiddleware(auth)
|
|
116
|
+
self.advertised_listen_address = advertised_listen_address
|
|
117
|
+
|
|
118
|
+
self._flight_client: flight.FlightClient = self._instantiate_flight_client()
|
|
119
|
+
|
|
120
|
+
def connection_info(self) -> ConnectionInfo:
|
|
121
|
+
"""
|
|
122
|
+
Returns the host and port of the GDS Arrow server.
|
|
123
|
+
|
|
124
|
+
Returns
|
|
125
|
+
-------
|
|
126
|
+
ConnectionInfo
|
|
127
|
+
the host and port of the GDS Arrow server
|
|
128
|
+
"""
|
|
129
|
+
return ConnectionInfo(self._host, self._port, self._encrypted)
|
|
130
|
+
|
|
131
|
+
def advertised_connection_info(self) -> ConnectionInfo:
|
|
132
|
+
"""
|
|
133
|
+
Returns the advertised host and port of the GDS Arrow server.
|
|
134
|
+
|
|
135
|
+
Returns
|
|
136
|
+
-------
|
|
137
|
+
ConnectionInfo
|
|
138
|
+
the host and port of the GDS Arrow server
|
|
139
|
+
"""
|
|
140
|
+
if self.advertised_listen_address is None:
|
|
141
|
+
return self.connection_info()
|
|
142
|
+
|
|
143
|
+
h, p = self.advertised_listen_address
|
|
144
|
+
return ConnectionInfo(h, p, self._encrypted)
|
|
145
|
+
|
|
146
|
+
def request_token(self) -> str | None:
|
|
147
|
+
"""
|
|
148
|
+
Requests a token from the server and returns it.
|
|
149
|
+
|
|
150
|
+
Returns
|
|
151
|
+
-------
|
|
152
|
+
str | None
|
|
153
|
+
a token from the server and returns it.
|
|
154
|
+
"""
|
|
155
|
+
|
|
156
|
+
@self._retry_config.decorator(operation_name="Request token", logger=self._logger)
|
|
157
|
+
def auth_with_retry() -> None:
|
|
158
|
+
client = self._flight_client
|
|
159
|
+
if self._auth:
|
|
160
|
+
auth_pair = self._auth.auth_pair()
|
|
161
|
+
client.authenticate_basic_token(auth_pair[0], auth_pair[1])
|
|
162
|
+
|
|
163
|
+
if self._auth:
|
|
164
|
+
auth_with_retry()
|
|
165
|
+
return self._auth_middleware.token()
|
|
166
|
+
else:
|
|
167
|
+
return "IGNORED"
|
|
168
|
+
|
|
169
|
+
def get_stream(self, ticket: Ticket) -> FlightStreamReader:
|
|
170
|
+
return self._flight_client.do_get(ticket)
|
|
171
|
+
|
|
172
|
+
def do_action(self, endpoint: str, payload: bytes | dict[str, Any]) -> Iterator[Result]:
|
|
173
|
+
payload_bytes = payload if isinstance(payload, bytes) else json.dumps(payload).encode("utf-8")
|
|
174
|
+
|
|
175
|
+
return self._flight_client.do_action(Action(endpoint, payload_bytes)) # type: ignore
|
|
176
|
+
|
|
177
|
+
def do_action_with_retry(self, endpoint: str, payload: bytes | dict[str, Any]) -> list[Result]:
|
|
178
|
+
@self._retry_config.decorator(operation_name="Send action", logger=self._logger)
|
|
179
|
+
def run_with_retry() -> list[Result]:
|
|
180
|
+
# the Flight response error code is only checked on iterator consumption
|
|
181
|
+
# we eagerly collect iterator here to trigger retry in case of an error
|
|
182
|
+
return list(self.do_action(endpoint, payload))
|
|
183
|
+
|
|
184
|
+
return run_with_retry()
|
|
185
|
+
|
|
186
|
+
def list_actions(self) -> set[ActionType]:
|
|
187
|
+
return self._flight_client.list_actions() # type: ignore
|
|
188
|
+
|
|
189
|
+
def do_put_with_retry(
|
|
190
|
+
self, descriptor: flight.FlightDescriptor, schema: Schema
|
|
191
|
+
) -> tuple[flight.FlightStreamWriter, flight.FlightMetadataReader]:
|
|
192
|
+
@self._retry_config.decorator(operation_name="Do put", logger=self._logger)
|
|
193
|
+
def run_with_retry() -> tuple[flight.FlightStreamWriter, flight.FlightMetadataReader]:
|
|
194
|
+
return self._flight_client.do_put(descriptor, schema) # type: ignore
|
|
195
|
+
|
|
196
|
+
return run_with_retry()
|
|
197
|
+
|
|
198
|
+
def __enter__(self) -> AuthenticatedArrowClient:
|
|
199
|
+
return self
|
|
200
|
+
|
|
201
|
+
def __exit__(
|
|
202
|
+
self,
|
|
203
|
+
exception_type: Type[BaseException] | None,
|
|
204
|
+
exception_value: BaseException | None,
|
|
205
|
+
traceback: TracebackType | None,
|
|
206
|
+
) -> None:
|
|
207
|
+
self.close()
|
|
208
|
+
|
|
209
|
+
def close(self) -> None:
|
|
210
|
+
if self._flight_client:
|
|
211
|
+
self._flight_client.close()
|
|
212
|
+
|
|
213
|
+
def _instantiate_flight_client(self) -> flight.FlightClient:
|
|
214
|
+
location = (
|
|
215
|
+
flight.Location.for_grpc_tls(self._host, self._port)
|
|
216
|
+
if self._encrypted
|
|
217
|
+
else flight.Location.for_grpc_tcp(self._host, self._port)
|
|
218
|
+
)
|
|
219
|
+
client_options: dict[str, Any] = (self._arrow_client_options or {}).copy()
|
|
220
|
+
|
|
221
|
+
# We need to specify the system root certificates on Windows
|
|
222
|
+
if platform.system() == "Windows":
|
|
223
|
+
if not client_options["tls_root_certs"]:
|
|
224
|
+
client_options["tls_root_certs"] = certifi.contents()
|
|
225
|
+
|
|
226
|
+
if self._auth:
|
|
227
|
+
user_agent = f"neo4j-graphdatascience-v{__version__} pyarrow-v{arrow_version}"
|
|
228
|
+
if self._user_agent:
|
|
229
|
+
user_agent = self._user_agent
|
|
230
|
+
|
|
231
|
+
client_options["middleware"] = [
|
|
232
|
+
AuthFactory(self._auth_middleware),
|
|
233
|
+
UserAgentFactory(useragent=user_agent),
|
|
234
|
+
]
|
|
235
|
+
|
|
236
|
+
return flight.FlightClient(location, **client_options)
|
|
237
|
+
|
|
238
|
+
def __getstate__(self) -> dict[str, Any]:
|
|
239
|
+
state = self.__dict__.copy()
|
|
240
|
+
# Remove the FlightClient as it isn't serializable
|
|
241
|
+
if "_flight_client" in state:
|
|
242
|
+
del state["_flight_client"]
|
|
243
|
+
return state
|
|
244
|
+
|
|
245
|
+
def __setstate__(self, state: dict[str, Any]) -> None:
|
|
246
|
+
self.__dict__.update(state)
|
|
247
|
+
self._flight_client = self._instantiate_flight_client()
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
@dataclass
|
|
251
|
+
class ConnectionInfo:
|
|
252
|
+
host: str
|
|
253
|
+
port: int
|
|
254
|
+
encrypted: bool
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import base64
|
|
4
|
+
import time
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from pyarrow._flight import ClientMiddleware, ClientMiddlewareFactory
|
|
8
|
+
|
|
9
|
+
from graphdatascience.arrow_client.arrow_authentication import ArrowAuthentication
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AuthFactory(ClientMiddlewareFactory): # type: ignore
|
|
13
|
+
def __init__(self, middleware: AuthMiddleware, *args: Any, **kwargs: Any) -> None:
|
|
14
|
+
super().__init__(*args, **kwargs)
|
|
15
|
+
self._middleware = middleware
|
|
16
|
+
|
|
17
|
+
def start_call(self, info: Any) -> AuthMiddleware:
|
|
18
|
+
return self._middleware
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class AuthMiddleware(ClientMiddleware): # type: ignore
|
|
22
|
+
def __init__(self, auth: ArrowAuthentication, *args: Any, **kwargs: Any) -> None:
|
|
23
|
+
super().__init__(*args, **kwargs)
|
|
24
|
+
self._auth = auth
|
|
25
|
+
self._token: str | None = None
|
|
26
|
+
self._token_timestamp = 0
|
|
27
|
+
|
|
28
|
+
def token(self) -> str | None:
|
|
29
|
+
# check whether the token is older than 10 minutes. If so, reset it.
|
|
30
|
+
if self._token and int(time.time()) - self._token_timestamp > 600:
|
|
31
|
+
self._token = None
|
|
32
|
+
|
|
33
|
+
return self._token
|
|
34
|
+
|
|
35
|
+
def _set_token(self, token: str) -> None:
|
|
36
|
+
self._token = token
|
|
37
|
+
self._token_timestamp = int(time.time())
|
|
38
|
+
|
|
39
|
+
def received_headers(self, headers: dict[str, Any]) -> None:
|
|
40
|
+
auth_header = headers.get("authorization", None)
|
|
41
|
+
if not auth_header:
|
|
42
|
+
return
|
|
43
|
+
|
|
44
|
+
# the result is always a list
|
|
45
|
+
header_value = auth_header[0]
|
|
46
|
+
|
|
47
|
+
if not isinstance(header_value, str):
|
|
48
|
+
raise ValueError(f"Incompatible header value received from server: `{header_value}`")
|
|
49
|
+
|
|
50
|
+
auth_type, token = header_value.split(" ", 1)
|
|
51
|
+
if auth_type == "Bearer":
|
|
52
|
+
self._set_token(token)
|
|
53
|
+
|
|
54
|
+
def sending_headers(self) -> dict[str, str]:
|
|
55
|
+
token = self.token()
|
|
56
|
+
if token is not None:
|
|
57
|
+
return {"authorization": "Bearer " + token}
|
|
58
|
+
|
|
59
|
+
auth_pair = self._auth.auth_pair()
|
|
60
|
+
auth_token = f"{auth_pair[0]}:{auth_pair[1]}"
|
|
61
|
+
auth_token = "Basic " + base64.b64encode(auth_token.encode("utf-8")).decode("ASCII")
|
|
62
|
+
# There seems to be a bug, `authorization` must be lower key
|
|
63
|
+
return {"authorization": auth_token}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from pyarrow._flight import ClientMiddleware, ClientMiddlewareFactory
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class UserAgentFactory(ClientMiddlewareFactory): # type: ignore
|
|
9
|
+
def __init__(self, useragent: str, *args: Any, **kwargs: Any) -> None:
|
|
10
|
+
super().__init__(*args, **kwargs)
|
|
11
|
+
self._middleware = UserAgentMiddleware(useragent)
|
|
12
|
+
|
|
13
|
+
def start_call(self, info: Any) -> ClientMiddleware:
|
|
14
|
+
return self._middleware
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class UserAgentMiddleware(ClientMiddleware): # type: ignore
|
|
18
|
+
def __init__(self, useragent: str, *args: Any, **kwargs: Any) -> None:
|
|
19
|
+
super().__init__(*args, **kwargs)
|
|
20
|
+
self._useragent = useragent
|
|
21
|
+
|
|
22
|
+
def sending_headers(self) -> dict[str, str]:
|
|
23
|
+
return {"x-gds-user-agent": self._useragent}
|
|
24
|
+
|
|
25
|
+
def received_headers(self, headers: dict[str, Any]) -> None:
|
|
26
|
+
pass
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from pyarrow._flight import Result
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def deserialize_single(input_stream: list[Result]) -> dict[str, Any]:
|
|
8
|
+
rows = deserialize(input_stream)
|
|
9
|
+
if len(rows) != 1:
|
|
10
|
+
raise ValueError(f"Expected exactly one result, got {len(rows)}")
|
|
11
|
+
|
|
12
|
+
return rows[0]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def deserialize(input_stream: list[Result]) -> list[dict[str, Any]]:
|
|
16
|
+
def deserialize_row(row: Result): # type:ignore
|
|
17
|
+
return json.loads(row.body.to_pybytes().decode())
|
|
18
|
+
|
|
19
|
+
return [deserialize_row(row) for row in input_stream]
|