graphdatascience 1.15a2__tar.gz → 1.15.1__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.15a2/graphdatascience.egg-info → graphdatascience-1.15.1}/PKG-INFO +1 -1
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/arrow_graph_constructor.py +7 -2
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/arrow_query_runner.py +7 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/gds_arrow_client.py +4 -1
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/neo4j_query_runner.py +38 -1
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/protocol/project_protocols.py +16 -4
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/query_runner.py +4 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/session_query_runner.py +15 -6
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/standalone_session_query_runner.py +5 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/aura_api.py +1 -1
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/session_sizes.py +1 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/version.py +1 -1
- {graphdatascience-1.15a2 → graphdatascience-1.15.1/graphdatascience.egg-info}/PKG-INFO +1 -1
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/LICENSE +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/MANIFEST.in +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/README.md +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/algo/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/algo/algo_endpoints.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/algo/algo_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/algo/single_mode_algo_endpoints.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/call_builder.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/call_parameters.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/caller_base.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/endpoints.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/client_only_endpoint.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/cypher_warning_handler.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/endpoint_suggester.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/gds_not_installed.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/illegal_attr_checker.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/unable_to_connect.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/uncallable_namespace.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/base_graph_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_alpha_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_beta_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_create_result.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_cypher_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_endpoints.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_entity_ops_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_export_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_object.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_project_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_remote_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_remote_project_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_sample_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_type_check.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/nx_loader.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/ogb_loader.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph_data_science.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/ignored_server_endpoints.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/graphsage_model.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/link_prediction_model.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/model.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/model_alpha_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/model_beta_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/model_endpoints.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/model_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/model_resolver.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/node_classification_model.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/node_regression_model.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/pipeline_model.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/simple_rel_embedding_model.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/classification_training_pipeline.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/lp_pipeline_create_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/lp_training_pipeline.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/nc_pipeline_create_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/nc_training_pipeline.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/nr_pipeline_create_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/nr_training_pipeline.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/pipeline_alpha_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/pipeline_beta_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/pipeline_endpoints.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/pipeline_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/training_pipeline.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/py.typed +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/arrow_authentication.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/arrow_endpoint_version.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/arrow_info.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/cypher_graph_constructor.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/graph_constructor.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/progress/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/progress/progress_provider.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/progress/query_progress_logger.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/progress/query_progress_provider.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/progress/static_progress_provider.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/protocol/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/protocol/status.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/protocol/write_protocols.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/termination_flag.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/cora/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/cora/cora_nodes.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/cora/cora_rels.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/cora/serialize_cora.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/imdb/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/imdb/imdb_acted_in.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/imdb/imdb_actors.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/imdb/imdb_directed_in.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/imdb/imdb_directors.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/imdb/imdb_movies_with_genre.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/imdb/imdb_movies_without_genre.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/imdb/serialize_imdb.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/karate/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/karate/karate_club.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/lastfm/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/lastfm/artist_nodes.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/lastfm/serialize_lastfm.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/lastfm/user_friend_df_directed.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/lastfm/user_listen_artist_rels.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/lastfm/user_nodes.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/lastfm/user_tag_artist_rels.parquet.gzip +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/retry_utils/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/retry_utils/retry_config.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/retry_utils/retry_utils.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/semantic_version/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/semantic_version/semantic_version.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/server_version/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/server_version/compatible_with.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/server_version/server_version.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/algorithm_category.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/aura_api_responses.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/aura_api_token_authentication.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/aura_graph_data_science.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/aurads_sessions.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/cloud_location.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/dbms/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/dbms/protocol_resolver.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/dbms/protocol_version.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/dbms_connection_info.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/dedicated_sessions.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/gds_sessions.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/region_suggester.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/session_info.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/system/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/system/config_endpoints.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/system/system_endpoints.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/topological_lp/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/topological_lp/topological_lp_alpha_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/topological_lp/topological_lp_endpoints.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/utils/__init__.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/utils/direct_util_endpoints.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/utils/util_node_property_func_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/utils/util_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/utils/util_remote_proc_runner.py +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience.egg-info/SOURCES.txt +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience.egg-info/dependency_links.txt +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience.egg-info/not-zip-safe +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience.egg-info/requires.txt +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience.egg-info/top_level.txt +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/pyproject.toml +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/requirements/base/base.txt +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/requirements/base/networkx.txt +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/requirements/base/ogb.txt +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/requirements/base/rust-ext.txt +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/setup.cfg +0 -0
- {graphdatascience-1.15a2 → graphdatascience-1.15.1}/setup.py +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import concurrent
|
|
4
|
+
import logging
|
|
4
5
|
import math
|
|
5
6
|
import warnings
|
|
6
7
|
from concurrent.futures import ThreadPoolExecutor
|
|
@@ -33,6 +34,7 @@ class ArrowGraphConstructor(GraphConstructor):
|
|
|
33
34
|
)
|
|
34
35
|
self._chunk_size = chunk_size
|
|
35
36
|
self._min_batch_size = chunk_size * 10
|
|
37
|
+
self._logger = logging.getLogger()
|
|
36
38
|
|
|
37
39
|
def run(self, node_dfs: list[DataFrame], relationship_dfs: list[DataFrame]) -> None:
|
|
38
40
|
try:
|
|
@@ -60,8 +62,11 @@ class ArrowGraphConstructor(GraphConstructor):
|
|
|
60
62
|
|
|
61
63
|
self._client.relationship_load_done(self._graph_name)
|
|
62
64
|
except (Exception, KeyboardInterrupt) as e:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
try:
|
|
66
|
+
self._client.abort(self._graph_name)
|
|
67
|
+
except Exception as abort_exception:
|
|
68
|
+
if "No arrow process" not in str(abort_exception):
|
|
69
|
+
self._logger.warning(f"error aborting graph creation: {abort_exception}")
|
|
65
70
|
raise e
|
|
66
71
|
|
|
67
72
|
def _partition_dfs(self, dfs: list[DataFrame]) -> list[DataFrame]:
|
|
@@ -211,6 +211,13 @@ class ArrowQueryRunner(QueryRunner):
|
|
|
211
211
|
self._fallback_query_runner.close()
|
|
212
212
|
self._gds_arrow_client.close()
|
|
213
213
|
|
|
214
|
+
def clone(self, host: str, port: int) -> "QueryRunner":
|
|
215
|
+
return ArrowQueryRunner(
|
|
216
|
+
self._gds_arrow_client,
|
|
217
|
+
self._fallback_query_runner.clone(host, port),
|
|
218
|
+
self._server_version,
|
|
219
|
+
)
|
|
220
|
+
|
|
214
221
|
def fallback_query_runner(self) -> QueryRunner:
|
|
215
222
|
return self._fallback_query_runner
|
|
216
223
|
|
|
@@ -640,7 +640,10 @@ class GdsArrowClient:
|
|
|
640
640
|
)
|
|
641
641
|
def send_with_retry() -> dict[str, Any]:
|
|
642
642
|
try:
|
|
643
|
-
result = client.do_action(
|
|
643
|
+
result = client.do_action(
|
|
644
|
+
action=flight.Action(action_type, json.dumps(meta_data).encode("utf-8")),
|
|
645
|
+
options=flight.FlightCallOptions(timeout=20.0),
|
|
646
|
+
)
|
|
644
647
|
|
|
645
648
|
# Consume result fully to sanity check and avoid cancelled streams
|
|
646
649
|
collected_result = list(result)
|
|
@@ -46,6 +46,8 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
46
46
|
|
|
47
47
|
query_runner = Neo4jQueryRunner(
|
|
48
48
|
driver,
|
|
49
|
+
Neo4jQueryRunner.parse_protocol(endpoint),
|
|
50
|
+
auth,
|
|
49
51
|
auto_close=True,
|
|
50
52
|
bookmarks=bookmarks,
|
|
51
53
|
config=config,
|
|
@@ -54,8 +56,14 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
54
56
|
)
|
|
55
57
|
|
|
56
58
|
elif isinstance(endpoint, neo4j.Driver):
|
|
59
|
+
protocol = "neo4j+s" if endpoint.encrypted else "bolt"
|
|
57
60
|
query_runner = Neo4jQueryRunner(
|
|
58
|
-
endpoint,
|
|
61
|
+
endpoint,
|
|
62
|
+
protocol,
|
|
63
|
+
auto_close=False,
|
|
64
|
+
bookmarks=bookmarks,
|
|
65
|
+
database=database,
|
|
66
|
+
show_progress=show_progress,
|
|
59
67
|
)
|
|
60
68
|
else:
|
|
61
69
|
raise ValueError(f"Invalid endpoint type: {type(endpoint)}")
|
|
@@ -76,6 +84,8 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
76
84
|
|
|
77
85
|
query_runner = Neo4jQueryRunner(
|
|
78
86
|
driver,
|
|
87
|
+
Neo4jQueryRunner.parse_protocol(endpoint),
|
|
88
|
+
auth,
|
|
79
89
|
auto_close=True,
|
|
80
90
|
show_progress=show_progress,
|
|
81
91
|
bookmarks=None,
|
|
@@ -94,9 +104,18 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
94
104
|
config["keep_alive"] = True
|
|
95
105
|
config["max_connection_pool_size"] = 50
|
|
96
106
|
|
|
107
|
+
@staticmethod
|
|
108
|
+
def parse_protocol(endpoint: str) -> str:
|
|
109
|
+
protocol_match = re.match(r"^([^:]+)://", endpoint)
|
|
110
|
+
if not protocol_match:
|
|
111
|
+
raise ValueError(f"Invalid endpoint URI format: {endpoint}")
|
|
112
|
+
return protocol_match.group(1)
|
|
113
|
+
|
|
97
114
|
def __init__(
|
|
98
115
|
self,
|
|
99
116
|
driver: neo4j.Driver,
|
|
117
|
+
protocol: str,
|
|
118
|
+
auth: Optional[tuple[str, str]] = None,
|
|
100
119
|
config: dict[str, Any] = {},
|
|
101
120
|
database: Optional[str] = neo4j.DEFAULT_DATABASE,
|
|
102
121
|
auto_close: bool = False,
|
|
@@ -105,6 +124,8 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
105
124
|
instance_description: str = "Neo4j DBMS",
|
|
106
125
|
):
|
|
107
126
|
self._driver = driver
|
|
127
|
+
self._protocol = protocol
|
|
128
|
+
self._auth = auth
|
|
108
129
|
self._config = config
|
|
109
130
|
self._auto_close = auto_close
|
|
110
131
|
self._database = database
|
|
@@ -279,6 +300,22 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
279
300
|
def set_show_progress(self, show_progress: bool) -> None:
|
|
280
301
|
self._show_progress = show_progress
|
|
281
302
|
|
|
303
|
+
def clone(self, host: str, port: int) -> QueryRunner:
|
|
304
|
+
endpoint = "{}://{}:{}".format(self._protocol, host, port)
|
|
305
|
+
driver = neo4j.GraphDatabase.driver(endpoint, auth=self._auth, **self.driver_config())
|
|
306
|
+
|
|
307
|
+
return Neo4jQueryRunner(
|
|
308
|
+
driver,
|
|
309
|
+
self._protocol,
|
|
310
|
+
self._auth,
|
|
311
|
+
self._config,
|
|
312
|
+
self._database,
|
|
313
|
+
self._auto_close,
|
|
314
|
+
self._bookmarks,
|
|
315
|
+
self._show_progress,
|
|
316
|
+
self._instance_description,
|
|
317
|
+
)
|
|
318
|
+
|
|
282
319
|
@staticmethod
|
|
283
320
|
def handle_driver_exception(session: neo4j.Session, e: Exception) -> None:
|
|
284
321
|
reg_gds_hit = re.search(
|
|
@@ -121,7 +121,7 @@ class ProjectProtocolV3(ProjectProtocol):
|
|
|
121
121
|
query_runner: QueryRunner,
|
|
122
122
|
endpoint: str,
|
|
123
123
|
params: CallParameters,
|
|
124
|
-
|
|
124
|
+
termination_flag: TerminationFlag,
|
|
125
125
|
yields: Optional[list[str]] = None,
|
|
126
126
|
database: Optional[str] = None,
|
|
127
127
|
logging: bool = False,
|
|
@@ -132,6 +132,14 @@ class ProjectProtocolV3(ProjectProtocol):
|
|
|
132
132
|
|
|
133
133
|
logger = getLogger()
|
|
134
134
|
|
|
135
|
+
# We need to pin the driver to a specific cluster member
|
|
136
|
+
response = query_runner.call_procedure(
|
|
137
|
+
ProtocolVersion.V3.versioned_procedure_name(endpoint), params, yields, database, logging, False
|
|
138
|
+
).squeeze()
|
|
139
|
+
member_host = response["host"]
|
|
140
|
+
member_port = response["port"] if ("port" in response.index) else 7687
|
|
141
|
+
projection_query_runner = query_runner.clone(member_host, member_port)
|
|
142
|
+
|
|
135
143
|
@retry(
|
|
136
144
|
reraise=True,
|
|
137
145
|
before=before_log(f"Projection (graph: `{params['graph_name']}`)", logger, DEBUG),
|
|
@@ -139,9 +147,13 @@ class ProjectProtocolV3(ProjectProtocol):
|
|
|
139
147
|
wait=wait_incrementing(start=0.2, increment=0.2, max=2),
|
|
140
148
|
)
|
|
141
149
|
def project_fn() -> DataFrame:
|
|
142
|
-
|
|
143
|
-
return
|
|
150
|
+
termination_flag.assert_running()
|
|
151
|
+
return projection_query_runner.call_procedure(
|
|
144
152
|
ProtocolVersion.V3.versioned_procedure_name(endpoint), params, yields, database, logging, False
|
|
145
153
|
)
|
|
146
154
|
|
|
147
|
-
|
|
155
|
+
projection_result = project_fn()
|
|
156
|
+
|
|
157
|
+
projection_query_runner.close()
|
|
158
|
+
|
|
159
|
+
return projection_result
|
|
@@ -120,6 +120,14 @@ class SessionQueryRunner(QueryRunner):
|
|
|
120
120
|
self._show_progress = show_progress
|
|
121
121
|
self._gds_query_runner.set_show_progress(show_progress)
|
|
122
122
|
|
|
123
|
+
def clone(self, host: str, port: int) -> QueryRunner:
|
|
124
|
+
return SessionQueryRunner(
|
|
125
|
+
self._gds_query_runner,
|
|
126
|
+
self._db_query_runner.clone(host, port),
|
|
127
|
+
self._gds_arrow_client,
|
|
128
|
+
self._show_progress,
|
|
129
|
+
)
|
|
130
|
+
|
|
123
131
|
def close(self) -> None:
|
|
124
132
|
self._gds_arrow_client.close()
|
|
125
133
|
self._gds_query_runner.close()
|
|
@@ -202,12 +210,13 @@ class SessionQueryRunner(QueryRunner):
|
|
|
202
210
|
return write_protocol.run_write_back(self._db_query_runner, write_back_params, yields, terminationFlag)
|
|
203
211
|
|
|
204
212
|
try:
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
213
|
+
# Skipping progress for now as export has a different jobId
|
|
214
|
+
# if self._resolve_show_progress(logging):
|
|
215
|
+
# database_write_result = self._progress_logger.run_with_progress_logging(
|
|
216
|
+
# run_write_back, job_id, database
|
|
217
|
+
# )
|
|
218
|
+
# else:
|
|
219
|
+
database_write_result = run_write_back()
|
|
211
220
|
except Exception as e:
|
|
212
221
|
# catch the case nothing was needed to write-back (empty graph)
|
|
213
222
|
# once we have the Arrow Endpoints V2, we could catch by first checking the jobs summary
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
from typing import Any, Optional
|
|
2
4
|
|
|
3
5
|
from pandas import DataFrame
|
|
@@ -74,3 +76,6 @@ class StandaloneSessionQueryRunner(QueryRunner):
|
|
|
74
76
|
|
|
75
77
|
def set_server_version(self, _: ServerVersion) -> None:
|
|
76
78
|
super().set_server_version(_)
|
|
79
|
+
|
|
80
|
+
def clone(self, host: str, port: int) -> QueryRunner:
|
|
81
|
+
return self
|
|
@@ -352,7 +352,7 @@ class AuraApi:
|
|
|
352
352
|
def _check_status_code(self, resp: requests.Response) -> None:
|
|
353
353
|
if resp.status_code >= 400:
|
|
354
354
|
raise AuraApiError(
|
|
355
|
-
f"Request for {resp.url} failed with status code {resp.status_code} - {resp.reason}: {resp.
|
|
355
|
+
f"Request for {resp.url} failed with status code {resp.status_code} - {resp.reason}: {resp.json()}",
|
|
356
356
|
status_code=resp.status_code,
|
|
357
357
|
)
|
|
358
358
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = "1.
|
|
1
|
+
__version__ = "1.15.1"
|
|
2
2
|
__min_server_version__ = "2.6.0" # matches installation.adoc
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/algo/algo_proc_runner.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/client_only_endpoint.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/cypher_warning_handler.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/endpoint_suggester.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/gds_not_installed.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/illegal_attr_checker.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/unable_to_connect.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/error/uncallable_namespace.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/base_graph_proc_runner.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_beta_proc_runner.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_create_result.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_cypher_runner.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_endpoints.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_export_runner.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_proc_runner.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_project_runner.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_sample_runner.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/graph/graph_type_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/ignored_server_endpoints.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/graphsage_model.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/link_prediction_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/model_beta_proc_runner.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/model_endpoints.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/model_proc_runner.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/model_resolver.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/node_regression_model.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/model/pipeline_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/pipeline_endpoints.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/pipeline/training_pipeline.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/arrow_info.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/query_runner/protocol/status.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/cora/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/imdb/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/karate/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/resources/lastfm/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/retry_utils/__init__.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/retry_utils/retry_config.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/retry_utils/retry_utils.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/semantic_version/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/server_version/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/algorithm_category.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/aura_api_responses.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/aurads_sessions.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/cloud_location.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/dbms/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/dbms_connection_info.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/dedicated_sessions.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/gds_sessions.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/region_suggester.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/session/session_info.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/system/config_endpoints.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/system/system_endpoints.py
RENAMED
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/topological_lp/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/utils/direct_util_endpoints.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience/utils/util_proc_runner.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphdatascience-1.15a2 → graphdatascience-1.15.1}/graphdatascience.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|