graphdatascience 1.20a2__tar.gz → 1.21a2__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.20a2/src/graphdatascience.egg-info → graphdatascience-1.21a2}/PKG-INFO +1 -1
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/pyproject.toml +7 -2
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/arrow_info.py +4 -3
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/endpoints.py +11 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_cypher_runner.py +7 -7
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_entity_ops_runner.py +2 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/v2/graph_api.py +1 -1
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph_data_science.py +28 -17
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/catalog/catalog_endpoints.py +8 -2
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/catalog/graph_info.py +1 -1
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/model/model_catalog_endpoints.py +4 -2
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/model/model_catalog_arrow_endpoints.py +10 -5
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/model/model_catalog_cypher_endpoints.py +17 -5
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/utils/result_utils.py +2 -0
- graphdatascience-1.21a2/src/graphdatascience/query_runner/__init__.py +5 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/arrow_query_runner.py +20 -5
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/cypher_graph_constructor.py +4 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/db_environment_resolver.py +6 -2
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/neo4j_query_runner.py +41 -10
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/progress/query_progress_logger.py +0 -1
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/protocol/project_protocols.py +19 -2
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/protocol/write_protocols.py +6 -6
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/query_runner.py +10 -5
- graphdatascience-1.21a2/src/graphdatascience/query_runner/query_type.py +9 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/session_query_runner.py +37 -15
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/standalone_session_query_runner.py +16 -5
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/aura_api.py +21 -4
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/aura_graph_data_science.py +14 -4
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/dbms/protocol_resolver.py +2 -2
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/dedicated_sessions.py +15 -3
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/gds_sessions.py +23 -3
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/system/system_endpoints.py +4 -1
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/topological_lp/topological_lp_alpha_runner.py +3 -4
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/topological_lp/topological_lp_runner.py +14 -4
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/utils/direct_util_endpoints.py +5 -2
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/utils/util_proc_runner.py +3 -12
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/utils/util_remote_proc_runner.py +7 -2
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/version.py +1 -1
- {graphdatascience-1.20a2 → graphdatascience-1.21a2/src/graphdatascience.egg-info}/PKG-INFO +1 -1
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience.egg-info/SOURCES.txt +1 -1
- graphdatascience-1.20a2/src/graphdatascience/session/aurads_sessions.py +0 -0
- graphdatascience-1.20a2/src/graphdatascience/utils/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/LICENSE +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/MANIFEST.in +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/README.md +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/setup.cfg +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/algo/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/algo/algo_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/algo/algo_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/algo/single_mode_algo_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/arrow_authentication.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/arrow_base_model.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/arrow_client_options_util.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/arrow_endpoint_version.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/authenticated_flight_client.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/middleware/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/middleware/auth_middleware.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/middleware/user_agent_middleware.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/progress_callback.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/v1/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/v1/data_mapper_utils.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/v1/gds_arrow_client.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/v2/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/v2/api_types.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/v2/data_mapper_utils.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/v2/gds_arrow_client.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/v2/job_client.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/v2/mutation_client.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/v2/remote_write_back_client.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/call_builder.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/call_parameters.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/caller_base.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/datasets/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/datasets/graph_constructor_func.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/datasets/nx_loader.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/datasets/ogb_loader.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/datasets/simple_file_loader.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/error/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/error/client_only_endpoint.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/error/cypher_warning_handler.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/error/endpoint_suggester.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/error/gds_not_installed.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/error/illegal_attr_checker.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/error/unable_to_connect.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/error/uncallable_namespace.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/base_graph_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_alpha_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_beta_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_create_result.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_export_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_object.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_project_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_remote_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_remote_project_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_sample_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/graph_type_check.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/nx_loader.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/ogb_loader.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/v2/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/v2/graph_backend.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph/v2/graph_backend_cypher.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/ignored_server_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/graphsage_model.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/link_prediction_model.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/model.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/model_alpha_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/model_beta_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/model_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/model_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/model_resolver.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/node_classification_model.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/node_regression_model.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/pipeline_model.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/simple_rel_embedding_model.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/v2/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/v2/graphsage_model.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/v2/model.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/v2/model_api.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/model/v2/model_details.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/classification_training_pipeline.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/lp_pipeline_create_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/lp_training_pipeline.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/nc_pipeline_create_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/nc_training_pipeline.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/nr_pipeline_create_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/nr_training_pipeline.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/pipeline_alpha_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/pipeline_beta_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/pipeline_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/pipeline_proc_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/pipeline/training_pipeline.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/plugin_v2_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/base_result.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/catalog/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/catalog/dataset_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/catalog/graph_sampling_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/catalog/node_label_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/catalog/node_properties_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/catalog/relationships_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/catalog/scale_properties_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/catalog/scaler_config.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/centrality/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/centrality/articlerank_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/centrality/articulationpoints_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/centrality/betweenness_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/centrality/bridges_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/centrality/celf_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/centrality/closeness_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/centrality/closeness_harmonic_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/centrality/degree_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/centrality/eigenvector_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/centrality/pagerank_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/clique_counting_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/conductance_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/hdbscan_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/k1coloring_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/kcore_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/kmeans_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/labelpropagation_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/leiden_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/local_clustering_coefficient_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/louvain_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/maxkcut_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/modularity_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/modularity_optimization_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/scc_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/sllpa_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/triangle_count_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/community/wcc_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/config_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/default_values.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/estimation_result.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/model/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/model/graphsage_model.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/node_embedding/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/node_embedding/fastrp_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/node_embedding/graphsage_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/node_embedding/graphsage_predict_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/node_embedding/graphsage_train_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/node_embedding/hashgnn_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/node_embedding/node2vec_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/all_shortest_path_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/bfs_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/dag_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/dfs_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/dijkstra_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/k_spanning_tree_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/longest_path_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/max_flow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/max_flow_min_cost_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/prize_steiner_tree_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/shortest_path_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/single_source_bellman_ford_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/single_source_delta_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/single_source_dijkstra_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/source_target_astar_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/source_target_dijkstra_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/source_target_yens_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/spanning_tree_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/pathfinding/steiner_tree_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/similarity/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/similarity/knn_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/similarity/knn_filtered_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/similarity/knn_results.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/similarity/node_similarity_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/similarity/node_similarity_filtered_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/similarity/node_similarity_results.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/api/system_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/catalog/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/catalog/catalog_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/catalog/graph_backend_arrow.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/catalog/graph_ops_arrow.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/catalog/graph_sampling_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/catalog/node_label_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/catalog/node_properties_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/catalog/relationship_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/catalog/scale_properties_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/centrality/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/centrality/articlerank_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/centrality/articulationpoints_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/centrality/betweenness_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/centrality/bridges_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/centrality/celf_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/centrality/closeness_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/centrality/closeness_harmonic_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/centrality/degree_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/centrality/eigenvector_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/centrality/pagerank_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/clique_counting_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/conductance_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/hdbscan_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/k1coloring_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/kcore_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/kmeans_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/labelpropagation_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/leiden_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/local_clustering_coefficient_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/louvain_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/maxkcut_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/modularity_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/modularity_optimization_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/scc_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/sllpa_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/triangle_count_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/community/wcc_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/config_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/endpoints_helper_base.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/error_handler.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/model/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/model_api_arrow.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/node_embedding/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/node_embedding/fastrp_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/node_embedding/graphsage_predict_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/node_embedding/graphsage_train_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/node_embedding/hashgnn_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/node_embedding/node2vec_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/node_property_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/all_shortest_path_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/bfs_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/dag_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/dfs_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/dijkstra_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/k_spanning_tree_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/longest_path_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/max_flow_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/max_flow_min_cost_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/prize_steiner_tree_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/shortest_path_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/single_source_bellman_ford_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/single_source_delta_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/single_source_dijkstra_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/source_target_astar_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/source_target_dijkstra_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/source_target_yens_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/spanning_tree_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/pathfinding/steiner_tree_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/relationship_endpoints_helper.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/similarity/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/similarity/knn_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/similarity/knn_filtered_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/similarity/node_similarity_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/similarity/node_similarity_filtered_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/stream_result_mapper.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/system_arrow_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/arrow/table_endpoints_helper.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/catalog/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/catalog/catalog_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/catalog/graph_sampling_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/catalog/node_label_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/catalog/node_properties_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/catalog/relationship_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/catalog/scale_properties_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/catalog/utils.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/centrality/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/centrality/articlerank_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/centrality/articulationpoints_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/centrality/betweenness_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/centrality/bridges_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/centrality/celf_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/centrality/closeness_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/centrality/closeness_harmonic_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/centrality/degree_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/centrality/eigenvector_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/centrality/pagerank_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/clique_counting_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/conductance_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/hdbscan_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/k1coloring_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/kcore_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/kmeans_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/labelpropagation_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/leiden_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/local_clustering_coefficient_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/louvain_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/maxkcut_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/modularity_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/modularity_optimization_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/scc_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/sllpa_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/triangle_count_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/community/wcc_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/config_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/estimation_utils.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/model/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/model_api_cypher.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/node_embedding/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/node_embedding/fastrp_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/node_embedding/graphsage_predict_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/node_embedding/graphsage_train_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/node_embedding/hashgnn_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/node_embedding/node2vec_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/all_shortest_path_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/bfs_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/dag_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/dfs_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/dijkstra_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/k_spanning_tree_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/longest_path_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/max_flow_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/max_flow_min_cost_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/prize_steiner_tree_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/shortest_path_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/single_source_bellman_ford_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/single_source_delta_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/single_source_dijkstra_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/source_target_astar_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/source_target_dijkstra_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/source_target_yens_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/spanning_tree_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/pathfinding/steiner_tree_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/similarity/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/similarity/knn_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/similarity/knn_filtered_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/similarity/node_similarity_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/similarity/node_similarity_filtered_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/cypher/system_cypher_endpoints.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/utils/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/procedure_surface/utils/config_converter.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/py.typed +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/arrow_authentication/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/arrow_graph_constructor.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/arrow_info/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/gds_arrow_client.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/graph_constructor.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/query_runner → graphdatascience-1.21a2/src/graphdatascience/query_runner/progress}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/progress/progress_bar.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/progress/progress_provider.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/progress/query_progress_provider.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/progress/static_progress_provider.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/query_runner/progress → graphdatascience-1.21a2/src/graphdatascience/query_runner/protocol}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/protocol/status.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/query_mode.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/query_runner/termination_flag.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/query_runner/protocol → graphdatascience-1.21a2/src/graphdatascience/resources}/__init__.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/resources → graphdatascience-1.21a2/src/graphdatascience/resources/cora}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/cora/cora_nodes.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/cora/cora_rels.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/cora/serialize_cora.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/resources/cora → graphdatascience-1.21a2/src/graphdatascience/resources/imdb}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/imdb/imdb_acted_in.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/imdb/imdb_actors.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/imdb/imdb_directed_in.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/imdb/imdb_directors.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/imdb/imdb_movies_with_genre.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/imdb/imdb_movies_without_genre.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/imdb/serialize_imdb.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/resources/imdb → graphdatascience-1.21a2/src/graphdatascience/resources/karate}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/karate/karate_club.parquet.gzip +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/resources/karate → graphdatascience-1.21a2/src/graphdatascience/resources/lastfm}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/lastfm/artist_nodes.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/lastfm/serialize_lastfm.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/lastfm/user_friend_df_directed.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/lastfm/user_listen_artist_rels.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/lastfm/user_nodes.parquet.gzip +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/resources/lastfm/user_tag_artist_rels.parquet.gzip +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/resources/lastfm → graphdatascience-1.21a2/src/graphdatascience/retry_utils}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/retry_utils/neo4j_retry_helper.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/retry_utils/retry_config.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/retry_utils/retry_utils.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/retry_utils → graphdatascience-1.21a2/src/graphdatascience/semantic_version}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/semantic_version/semantic_version.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/semantic_version → graphdatascience-1.21a2/src/graphdatascience/server_version}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/server_version/compatible_with.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/server_version/server_version.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/algorithm_category.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/aura_api_responses.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/aura_api_token_authentication.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/cloud_location.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/server_version → graphdatascience-1.21a2/src/graphdatascience/session/dbms}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/dbms/protocol_version.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/dbms_connection_info.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/region_suggester.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/session_info.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/session_lifecycle_manager.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/session_sizes.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/session/session_v2_endpoints.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/session/dbms → graphdatascience-1.21a2/src/graphdatascience/system}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/system/config_endpoints.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/system → graphdatascience-1.21a2/src/graphdatascience/topological_lp}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/topological_lp/topological_lp_alpha_endpoints.py +0 -0
- {graphdatascience-1.20a2/src/graphdatascience/topological_lp → graphdatascience-1.21a2/src/graphdatascience/utils}/__init__.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/utils/util_node_property_func_runner.py +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience.egg-info/dependency_links.txt +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience.egg-info/not-zip-safe +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience.egg-info/requires.txt +0 -0
- {graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience.egg-info/top_level.txt +0 -0
|
@@ -54,13 +54,12 @@ rust-ext = ["neo4j-rust-ext >= 4.4.12, < 7.0"]
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
[dependency-groups]
|
|
57
|
-
# To install all development dependencies,
|
|
58
|
-
# run `pip install --group dev -e .` inside repository root folder.#
|
|
59
57
|
dev = [
|
|
60
58
|
"tox>4.24",
|
|
61
59
|
{ include-group = "dev-base" },
|
|
62
60
|
{ include-group = "test" },
|
|
63
61
|
{ include-group = "docs-ci" },
|
|
62
|
+
{ include-group = "notebook-base"}
|
|
64
63
|
]
|
|
65
64
|
|
|
66
65
|
dev-base = [
|
|
@@ -79,6 +78,7 @@ dev-base = [
|
|
|
79
78
|
]
|
|
80
79
|
test = [
|
|
81
80
|
"pytest == 9.0.2",
|
|
81
|
+
"pytest-timeout",
|
|
82
82
|
"requests_mock == 1.12.1",
|
|
83
83
|
"pytest_mock == 3.15.1",
|
|
84
84
|
"testcontainers == 4.14.0",
|
|
@@ -89,6 +89,7 @@ docs-ci = [
|
|
|
89
89
|
"sphinx == 7.3.7",
|
|
90
90
|
"enum-tools[sphinx]==0.13.0",
|
|
91
91
|
"autodoc_pydantic",
|
|
92
|
+
"networkx >= 2.0, < 4.0"
|
|
92
93
|
]
|
|
93
94
|
notebook-base = [
|
|
94
95
|
"nbconvert==7.16.6",
|
|
@@ -111,6 +112,10 @@ notebook-ci = [
|
|
|
111
112
|
|
|
112
113
|
publish = ["build", "twine"]
|
|
113
114
|
|
|
115
|
+
[tool.uv.extra-build-dependencies]
|
|
116
|
+
torch-sparse = ["torch"]
|
|
117
|
+
torch-scatter = ["torch"]
|
|
118
|
+
|
|
114
119
|
[tool.setuptools]
|
|
115
120
|
include-package-data = true
|
|
116
121
|
zip-safe = false
|
{graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/arrow_client/arrow_info.py
RENAMED
|
@@ -2,8 +2,9 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
|
|
5
|
-
from
|
|
6
|
-
from
|
|
5
|
+
from graphdatascience.query_runner.query_runner import QueryRunner
|
|
6
|
+
from graphdatascience.query_runner.query_type import QueryType
|
|
7
|
+
from graphdatascience.server_version.server_version import ServerVersion
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
@dataclass(frozen=True)
|
|
@@ -20,7 +21,7 @@ class ArrowInfo:
|
|
|
20
21
|
debugYields.append("versions")
|
|
21
22
|
|
|
22
23
|
procResult = query_runner.call_procedure(
|
|
23
|
-
endpoint="gds.debug.arrow", custom_error=False, yields=debugYields
|
|
24
|
+
endpoint="gds.debug.arrow", query_type=QueryType.SYSTEM, custom_error=False, yields=debugYields
|
|
24
25
|
).iloc[0]
|
|
25
26
|
|
|
26
27
|
return ArrowInfo(
|
|
@@ -43,6 +43,17 @@ class DirectEndpoints(
|
|
|
43
43
|
super().__init__(query_runner, namespace, server_version)
|
|
44
44
|
|
|
45
45
|
|
|
46
|
+
class DirectSessionEndpoints(
|
|
47
|
+
SingleModeAlgoEndpoints,
|
|
48
|
+
DirectSystemEndpoints,
|
|
49
|
+
DirectUtilEndpoints,
|
|
50
|
+
PipelineEndpoints,
|
|
51
|
+
ConfigEndpoints,
|
|
52
|
+
):
|
|
53
|
+
def __init__(self, query_runner: QueryRunner, namespace: str, server_version: ServerVersion):
|
|
54
|
+
super().__init__(query_runner, namespace, server_version)
|
|
55
|
+
|
|
56
|
+
|
|
46
57
|
"""
|
|
47
58
|
This class should inherit endpoint classes that only expose calls of the `gds.alpha` namespace.
|
|
48
59
|
Example of such endpoints: "gds.alpha.listProgress".
|
|
@@ -6,13 +6,13 @@ from typing import Any
|
|
|
6
6
|
|
|
7
7
|
from pandas import Series
|
|
8
8
|
|
|
9
|
+
from graphdatascience.caller_base import CallerBase
|
|
10
|
+
from graphdatascience.graph.graph_create_result import GraphCreateResult
|
|
11
|
+
from graphdatascience.graph.graph_object import Graph
|
|
9
12
|
from graphdatascience.query_runner.query_mode import QueryMode
|
|
10
|
-
|
|
11
|
-
from
|
|
12
|
-
from
|
|
13
|
-
from ..server_version.server_version import ServerVersion
|
|
14
|
-
from .graph_create_result import GraphCreateResult
|
|
15
|
-
from .graph_object import Graph
|
|
13
|
+
from graphdatascience.query_runner.query_runner import QueryRunner
|
|
14
|
+
from graphdatascience.query_runner.query_type import QueryType
|
|
15
|
+
from graphdatascience.server_version.server_version import ServerVersion
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class GraphCypherRunner(CallerBase):
|
|
@@ -48,7 +48,7 @@ class GraphCypherRunner(CallerBase):
|
|
|
48
48
|
GraphCypherRunner._verify_query_ends_with_return_clause(self._namespace, query)
|
|
49
49
|
|
|
50
50
|
result: dict[str, Any] | None = self._query_runner.run_retryable_cypher(
|
|
51
|
-
query, params, database, custom_error=False, mode=QueryMode.READ
|
|
51
|
+
query, QueryType.USER_DIRECTED, params, database, custom_error=False, mode=QueryMode.READ
|
|
52
52
|
).squeeze()
|
|
53
53
|
|
|
54
54
|
if not result:
|
|
@@ -8,6 +8,7 @@ import pandas as pd
|
|
|
8
8
|
from pandas import DataFrame, Series
|
|
9
9
|
|
|
10
10
|
from graphdatascience.query_runner.query_mode import QueryMode
|
|
11
|
+
from graphdatascience.query_runner.query_type import QueryType
|
|
11
12
|
|
|
12
13
|
from ..call_parameters import CallParameters
|
|
13
14
|
from ..error.cypher_warning_handler import (
|
|
@@ -169,6 +170,7 @@ class GraphNodePropertiesRunner(GraphEntityOpsBaseRunner):
|
|
|
169
170
|
|
|
170
171
|
db_properties_df = query_runner.run_retryable_cypher(
|
|
171
172
|
GraphNodePropertiesRunner._build_query(db_node_properties),
|
|
173
|
+
QueryType.USER_TRANSPILED,
|
|
172
174
|
params={"ids": unique_node_ids},
|
|
173
175
|
mode=QueryMode.READ,
|
|
174
176
|
)
|
{graphdatascience-1.20a2 → graphdatascience-1.21a2}/src/graphdatascience/graph_data_science.py
RENAMED
|
@@ -22,6 +22,7 @@ from .query_runner.arrow_info import ArrowInfo
|
|
|
22
22
|
from .query_runner.arrow_query_runner import ArrowQueryRunner
|
|
23
23
|
from .query_runner.neo4j_query_runner import Neo4jQueryRunner
|
|
24
24
|
from .query_runner.query_runner import QueryRunner
|
|
25
|
+
from .query_runner.query_type import QueryType
|
|
25
26
|
from .server_version.server_version import ServerVersion
|
|
26
27
|
from .utils.util_proc_runner import UtilProcRunner
|
|
27
28
|
from .version import __min_server_version__
|
|
@@ -93,7 +94,7 @@ class GraphDataScience(DirectEndpoints, UncallableNamespace):
|
|
|
93
94
|
if isinstance(endpoint, QueryRunner):
|
|
94
95
|
self._query_runner = endpoint
|
|
95
96
|
else:
|
|
96
|
-
db_auth = None
|
|
97
|
+
db_auth: neo4j.Auth | None = None
|
|
97
98
|
if auth:
|
|
98
99
|
db_auth = neo4j.basic_auth(*auth)
|
|
99
100
|
neo4j_query_runner = Neo4jQueryRunner.create_for_db(
|
|
@@ -118,21 +119,29 @@ class GraphDataScience(DirectEndpoints, UncallableNamespace):
|
|
|
118
119
|
if auth is not None:
|
|
119
120
|
username, password = auth
|
|
120
121
|
arrow_auth = UsernamePasswordAuthentication(username, password)
|
|
122
|
+
if isinstance(endpoint, Neo4jQueryRunner):
|
|
123
|
+
if neo4j_auth := endpoint.get_auth():
|
|
124
|
+
arrow_auth = UsernamePasswordAuthentication(neo4j_auth[0], neo4j_auth[1])
|
|
121
125
|
|
|
122
|
-
if
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
126
|
+
if isinstance(endpoint, Driver) and not auth:
|
|
127
|
+
warnings.warn(
|
|
128
|
+
"Falling back to use Cypher for GDS. To use Arrow, you must explicitly provide the `auth` parameter."
|
|
129
|
+
)
|
|
130
|
+
else:
|
|
131
|
+
if arrow_client_options is None:
|
|
132
|
+
arrow_client_options = {}
|
|
133
|
+
if arrow_disable_server_verification:
|
|
134
|
+
disable_server_verification(arrow_client_options)
|
|
135
|
+
if arrow_tls_root_certs is not None:
|
|
136
|
+
set_tls_root_certs(arrow_client_options, arrow_tls_root_certs)
|
|
137
|
+
self._query_runner = ArrowQueryRunner.create(
|
|
138
|
+
self._query_runner,
|
|
139
|
+
arrow_info=arrow_info,
|
|
140
|
+
arrow_authentication=arrow_auth,
|
|
141
|
+
encrypted=self._query_runner.encrypted(),
|
|
142
|
+
arrow_client_options=arrow_client_options,
|
|
143
|
+
connection_string_override=None if arrow is True else arrow,
|
|
144
|
+
)
|
|
136
145
|
|
|
137
146
|
arrow_client = (
|
|
138
147
|
None if not isinstance(self._query_runner, ArrowQueryRunner) else self._query_runner._gds_arrow_client
|
|
@@ -258,15 +267,16 @@ class GraphDataScience(DirectEndpoints, UncallableNamespace):
|
|
|
258
267
|
The query result as a DataFrame
|
|
259
268
|
"""
|
|
260
269
|
qr = self._query_runner
|
|
270
|
+
query_type = QueryType.USER_DIRECTED
|
|
261
271
|
|
|
262
272
|
# The Arrow query runner should not be used to execute arbitrary Cypher
|
|
263
273
|
if isinstance(self._query_runner, ArrowQueryRunner):
|
|
264
274
|
qr = self._query_runner.fallback_query_runner()
|
|
265
275
|
|
|
266
276
|
if retryable:
|
|
267
|
-
return qr.run_retryable_cypher(query, params, database, custom_error=False, mode=mode)
|
|
277
|
+
return qr.run_retryable_cypher(query, query_type, params, database, custom_error=False, mode=mode)
|
|
268
278
|
else:
|
|
269
|
-
return qr.run_cypher(query, params, database, custom_error=False, mode=mode)
|
|
279
|
+
return qr.run_cypher(query, query_type, params, database, custom_error=False, mode=mode)
|
|
270
280
|
|
|
271
281
|
def driver_config(self) -> dict[str, Any]:
|
|
272
282
|
"""
|
|
@@ -310,6 +320,7 @@ class GraphDataScience(DirectEndpoints, UncallableNamespace):
|
|
|
310
320
|
The Neo4j Driver instance to use.
|
|
311
321
|
auth : tuple[str, str] | None, default None
|
|
312
322
|
A username, password pair for authentication.
|
|
323
|
+
Is required for enabling Arrow.
|
|
313
324
|
database: str | None, default None
|
|
314
325
|
The Neo4j database to query against.
|
|
315
326
|
arrow : str | bool, default True
|
|
@@ -2,9 +2,10 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, abstractmethod
|
|
4
4
|
from types import TracebackType
|
|
5
|
-
from typing import NamedTuple, Type
|
|
5
|
+
from typing import Any, NamedTuple, Type
|
|
6
6
|
|
|
7
7
|
from pandas import DataFrame
|
|
8
|
+
from pydantic import field_validator
|
|
8
9
|
|
|
9
10
|
from graphdatascience.graph.v2.graph_api import GraphV2
|
|
10
11
|
from graphdatascience.procedure_surface.api.base_result import BaseResult
|
|
@@ -245,7 +246,12 @@ class GraphGenerationStats(BaseResult):
|
|
|
245
246
|
relationship_seed: int | None
|
|
246
247
|
average_degree: float
|
|
247
248
|
relationship_distribution: str
|
|
248
|
-
relationship_property: RelationshipPropertySpec
|
|
249
|
+
relationship_property: RelationshipPropertySpec | None
|
|
250
|
+
|
|
251
|
+
@field_validator("relationship_property", mode="before")
|
|
252
|
+
@classmethod
|
|
253
|
+
def check_empty_property(cls, value: Any) -> Any:
|
|
254
|
+
return value or None
|
|
249
255
|
|
|
250
256
|
|
|
251
257
|
class RelationshipPropertySpec(BaseResult):
|
|
@@ -15,7 +15,7 @@ class GraphInfo(BaseResult):
|
|
|
15
15
|
database: str
|
|
16
16
|
database_location: str
|
|
17
17
|
configuration: dict[str, Any]
|
|
18
|
-
memory_usage: str
|
|
18
|
+
memory_usage: str | None # can be none if there was an error computing the usage
|
|
19
19
|
size_in_bytes: int
|
|
20
20
|
node_count: int
|
|
21
21
|
relationship_count: int
|
|
@@ -69,7 +69,7 @@ class ModelCatalogEndpoints(ABC):
|
|
|
69
69
|
"""
|
|
70
70
|
|
|
71
71
|
@abstractmethod
|
|
72
|
-
def drop(self, model_name: str, *, fail_if_missing: bool = False) -> ModelDetails:
|
|
72
|
+
def drop(self, model_name: str, *, fail_if_missing: bool = False) -> ModelDetails | None:
|
|
73
73
|
"""Drop a model from the in-memory catalog.
|
|
74
74
|
|
|
75
75
|
Parameters
|
|
@@ -86,13 +86,15 @@ class ModelCatalogEndpoints(ABC):
|
|
|
86
86
|
"""
|
|
87
87
|
|
|
88
88
|
@abstractmethod
|
|
89
|
-
def delete(self, model_name: str) -> ModelDeleteResult:
|
|
89
|
+
def delete(self, model_name: str, fail_if_missing: bool = False) -> ModelDeleteResult | None:
|
|
90
90
|
"""Delete a persisted model from storage.
|
|
91
91
|
|
|
92
92
|
Parameters
|
|
93
93
|
----------
|
|
94
94
|
model_name: str
|
|
95
95
|
The model to delete.
|
|
96
|
+
fail_if_missing: bool
|
|
97
|
+
If True, a missing model will cause an error. If False, returns None when missing.
|
|
96
98
|
|
|
97
99
|
Returns
|
|
98
100
|
-------
|
|
@@ -45,23 +45,28 @@ class ModelCatalogArrowEndpoints(ModelCatalogEndpoints):
|
|
|
45
45
|
raise ValueError(f"Model with name `{model_name}` does not exist")
|
|
46
46
|
return self._to_model_details(items[0])
|
|
47
47
|
|
|
48
|
-
def drop(self, model_name: str, *, fail_if_missing: bool = False) -> ModelDetails:
|
|
48
|
+
def drop(self, model_name: str, *, fail_if_missing: bool = False) -> ModelDetails | None:
|
|
49
49
|
raw = self._arrow_client.do_action_with_retry(
|
|
50
50
|
"v2/model.drop",
|
|
51
51
|
payload=json.dumps({"modelName": model_name, "failIfMissing": fail_if_missing}).encode("utf-8"),
|
|
52
52
|
)
|
|
53
53
|
items = deserialize(raw)
|
|
54
|
-
if not items:
|
|
54
|
+
if not items and fail_if_missing:
|
|
55
55
|
raise ValueError(f"Model with name `{model_name}` does not exist")
|
|
56
|
+
if not items:
|
|
57
|
+
return None
|
|
56
58
|
return self._to_model_details(items[0])
|
|
57
59
|
|
|
58
|
-
def delete(self, model_name: str) -> ModelDeleteResult:
|
|
60
|
+
def delete(self, model_name: str, fail_if_missing: bool = False) -> ModelDeleteResult | None:
|
|
59
61
|
raw = self._arrow_client.do_action_with_retry(
|
|
60
|
-
"v2/model.delete",
|
|
62
|
+
"v2/model.delete",
|
|
63
|
+
payload=json.dumps({"modelName": model_name, "failIfMissing": fail_if_missing}).encode("utf-8"),
|
|
61
64
|
)
|
|
62
65
|
items = deserialize(raw)
|
|
63
|
-
if not items:
|
|
66
|
+
if not items and fail_if_missing:
|
|
64
67
|
raise ValueError(f"Model with name `{model_name}` does not exist")
|
|
68
|
+
if not items:
|
|
69
|
+
return None
|
|
65
70
|
return ModelDeleteResult(**items[0])
|
|
66
71
|
|
|
67
72
|
def load(self, model_name: str) -> ModelLoadResult:
|
|
@@ -44,18 +44,30 @@ class ModelCatalogCypherEndpoints(ModelCatalogEndpoints):
|
|
|
44
44
|
raise ValueError(f"Model with name `{model_name}` does not exist")
|
|
45
45
|
return self._to_model_details(df.iloc[0].to_dict())
|
|
46
46
|
|
|
47
|
-
def drop(self, model_name: str, *, fail_if_missing: bool = False) -> ModelDetails:
|
|
47
|
+
def drop(self, model_name: str, *, fail_if_missing: bool = False) -> ModelDetails | None:
|
|
48
48
|
params = CallParameters(model_name=model_name, fail_if_missing=fail_if_missing)
|
|
49
49
|
df = self._query_runner.call_procedure("gds.model.drop", params=params, custom_error=False)
|
|
50
|
-
if df.empty:
|
|
50
|
+
if df.empty and fail_if_missing:
|
|
51
51
|
raise ValueError(f"Model with name `{model_name}` does not exist")
|
|
52
|
+
if df.empty:
|
|
53
|
+
return None
|
|
52
54
|
return self._to_model_details(df.iloc[0].to_dict())
|
|
53
55
|
|
|
54
|
-
def delete(self, model_name: str) -> ModelDeleteResult:
|
|
56
|
+
def delete(self, model_name: str, fail_if_missing: bool = False) -> ModelDeleteResult | None:
|
|
55
57
|
params = CallParameters(model_name=model_name)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
|
|
59
|
+
try:
|
|
60
|
+
df = self._query_runner.call_procedure("gds.model.delete", params=params, custom_error=False)
|
|
61
|
+
except neo4j.exceptions.ClientError as e:
|
|
62
|
+
if "Model with name" not in str(e) or fail_if_missing:
|
|
63
|
+
raise e
|
|
64
|
+
else:
|
|
65
|
+
return None
|
|
66
|
+
|
|
67
|
+
if df.empty and fail_if_missing:
|
|
58
68
|
raise ValueError(f"Model with name `{model_name}` does not exist")
|
|
69
|
+
if df.empty:
|
|
70
|
+
return None
|
|
59
71
|
return ModelDeleteResult(**df.iloc[0].to_dict())
|
|
60
72
|
|
|
61
73
|
def load(self, model_name: str) -> ModelLoadResult:
|
|
@@ -4,6 +4,7 @@ from pandas import DataFrame
|
|
|
4
4
|
|
|
5
5
|
from graphdatascience.query_runner.query_mode import QueryMode
|
|
6
6
|
from graphdatascience.query_runner.query_runner import QueryRunner
|
|
7
|
+
from graphdatascience.query_runner.query_type import QueryType
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
def transpose_property_columns(result: DataFrame, list_node_labels: bool) -> DataFrame:
|
|
@@ -25,6 +26,7 @@ def join_db_node_properties(result: DataFrame, db_node_properties: list[str], qu
|
|
|
25
26
|
query = _build_query(db_node_properties)
|
|
26
27
|
db_properties_df = query_runner.run_retryable_cypher(
|
|
27
28
|
query,
|
|
29
|
+
QueryType.USER_TRANSPILED,
|
|
28
30
|
params={"ids": (result["nodeId"].tolist())},
|
|
29
31
|
mode=QueryMode.READ,
|
|
30
32
|
)
|
|
@@ -9,6 +9,7 @@ from graphdatascience.arrow_client.authenticated_flight_client import Authentica
|
|
|
9
9
|
from graphdatascience.arrow_client.v1.gds_arrow_client import GdsArrowClient
|
|
10
10
|
from graphdatascience.query_runner.arrow_authentication import ArrowAuthentication
|
|
11
11
|
from graphdatascience.query_runner.query_mode import QueryMode
|
|
12
|
+
from graphdatascience.query_runner.query_type import QueryType
|
|
12
13
|
from graphdatascience.retry_utils.retry_config import RetryConfigV2
|
|
13
14
|
|
|
14
15
|
from ..call_parameters import CallParameters
|
|
@@ -64,31 +65,38 @@ class ArrowQueryRunner(QueryRunner):
|
|
|
64
65
|
def run_cypher(
|
|
65
66
|
self,
|
|
66
67
|
query: str,
|
|
68
|
+
query_type: QueryType,
|
|
67
69
|
params: dict[str, Any] | None = None,
|
|
68
70
|
database: str | None = None,
|
|
69
71
|
mode: QueryMode | None = None,
|
|
70
72
|
custom_error: bool = True,
|
|
71
73
|
) -> DataFrame:
|
|
72
|
-
return self._fallback_query_runner.run_cypher(
|
|
74
|
+
return self._fallback_query_runner.run_cypher(
|
|
75
|
+
query, query_type, params, database, mode, custom_error=custom_error
|
|
76
|
+
)
|
|
73
77
|
|
|
74
78
|
def run_retryable_cypher(
|
|
75
79
|
self,
|
|
76
80
|
query: str,
|
|
81
|
+
query_type: QueryType,
|
|
77
82
|
params: dict[str, Any] | None = None,
|
|
78
83
|
database: str | None = None,
|
|
79
84
|
mode: QueryMode | None = None,
|
|
80
85
|
custom_error: bool = True,
|
|
81
86
|
) -> DataFrame:
|
|
82
87
|
return self._fallback_query_runner.run_retryable_cypher(
|
|
83
|
-
query, params, database, mode, custom_error=custom_error
|
|
88
|
+
query, query_type, params, database, mode, custom_error=custom_error
|
|
84
89
|
)
|
|
85
90
|
|
|
86
|
-
def call_function(
|
|
87
|
-
|
|
91
|
+
def call_function(
|
|
92
|
+
self, endpoint: str, query_type: QueryType = QueryType.USER_TRANSPILED, params: CallParameters | None = None
|
|
93
|
+
) -> Any:
|
|
94
|
+
return self._fallback_query_runner.call_function(endpoint, query_type, params)
|
|
88
95
|
|
|
89
96
|
def call_procedure(
|
|
90
97
|
self,
|
|
91
98
|
endpoint: str,
|
|
99
|
+
query_type: QueryType = QueryType.USER_TRANSPILED,
|
|
92
100
|
params: CallParameters | None = None,
|
|
93
101
|
yields: list[str] | None = None,
|
|
94
102
|
database: str | None = None,
|
|
@@ -189,7 +197,14 @@ class ArrowQueryRunner(QueryRunner):
|
|
|
189
197
|
)
|
|
190
198
|
|
|
191
199
|
return self._fallback_query_runner.call_procedure(
|
|
192
|
-
endpoint,
|
|
200
|
+
endpoint,
|
|
201
|
+
query_type,
|
|
202
|
+
params,
|
|
203
|
+
yields,
|
|
204
|
+
database,
|
|
205
|
+
logging=logging,
|
|
206
|
+
retryable=retryable,
|
|
207
|
+
custom_error=custom_error,
|
|
193
208
|
)
|
|
194
209
|
|
|
195
210
|
def server_version(self) -> ServerVersion:
|
|
@@ -12,6 +12,7 @@ from graphdatascience.query_runner.query_mode import QueryMode
|
|
|
12
12
|
from ..server_version.server_version import ServerVersion
|
|
13
13
|
from .graph_constructor import GraphConstructor
|
|
14
14
|
from .query_runner import QueryRunner
|
|
15
|
+
from .query_type import QueryType
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
class CypherProjectionApi:
|
|
@@ -107,6 +108,7 @@ class CypherGraphConstructor(GraphConstructor):
|
|
|
107
108
|
try:
|
|
108
109
|
license: str = self._query_runner.run_retryable_cypher(
|
|
109
110
|
"CALL gds.debug.sysInfo() YIELD key, value WHERE key = 'gdsEdition' RETURN value",
|
|
111
|
+
QueryType.SYSTEM,
|
|
110
112
|
custom_error=False,
|
|
111
113
|
mode=QueryMode.READ,
|
|
112
114
|
).squeeze()
|
|
@@ -215,6 +217,7 @@ class CypherGraphConstructor(GraphConstructor):
|
|
|
215
217
|
# not using retryable here as gds.graph.project adds a graph to the gds graph catalog
|
|
216
218
|
self._query_runner.run_cypher(
|
|
217
219
|
query,
|
|
220
|
+
QueryType.USER_TRANSPILED,
|
|
218
221
|
{
|
|
219
222
|
"data": combined_df.values.tolist(),
|
|
220
223
|
"graph_name": self._graph_name,
|
|
@@ -377,6 +380,7 @@ class CypherGraphConstructor(GraphConstructor):
|
|
|
377
380
|
|
|
378
381
|
self._query_runner.run_cypher(
|
|
379
382
|
query,
|
|
383
|
+
QueryType.USER_TRANSPILED,
|
|
380
384
|
{
|
|
381
385
|
"graph_name": self._graph_name,
|
|
382
386
|
"node_query": node_query,
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
from graphdatascience.query_runner.neo4j_query_runner import Neo4jQueryRunner
|
|
2
|
+
from graphdatascience.query_runner.query_type import QueryType
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
class DbEnvironmentResolver:
|
|
5
6
|
@staticmethod
|
|
6
7
|
def hosted_in_aura(db_runner: Neo4jQueryRunner) -> bool:
|
|
7
8
|
return (
|
|
8
|
-
db_runner.run_retryable_cypher(
|
|
9
|
+
db_runner.run_retryable_cypher(
|
|
10
|
+
"""
|
|
9
11
|
CALL dbms.components() YIELD name, versions
|
|
10
12
|
WHERE name = "Neo4j Kernel"
|
|
11
13
|
UNWIND versions as v
|
|
12
14
|
WITH name, v
|
|
13
15
|
WHERE v ENDS WITH "aura"
|
|
14
16
|
RETURN count(*) <> 0
|
|
15
|
-
"""
|
|
17
|
+
""",
|
|
18
|
+
QueryType.SYSTEM,
|
|
19
|
+
)
|
|
16
20
|
.iloc[0]
|
|
17
21
|
.item()
|
|
18
22
|
) is True
|
|
@@ -11,6 +11,8 @@ from pandas import DataFrame
|
|
|
11
11
|
from tenacity import retry, retry_if_exception, stop_after_delay, wait_fixed
|
|
12
12
|
|
|
13
13
|
from graphdatascience.query_runner.query_mode import QueryMode
|
|
14
|
+
from graphdatascience.query_runner.query_runner import QueryRunner
|
|
15
|
+
from graphdatascience.query_runner.query_type import QueryType
|
|
14
16
|
from graphdatascience.retry_utils.neo4j_retry_helper import is_retryable_neo4j_exception
|
|
15
17
|
|
|
16
18
|
from ..call_parameters import CallParameters
|
|
@@ -23,7 +25,6 @@ from ..version import __version__
|
|
|
23
25
|
from .cypher_graph_constructor import CypherGraphConstructor
|
|
24
26
|
from .graph_constructor import GraphConstructor
|
|
25
27
|
from .progress.query_progress_logger import QueryProgressLogger
|
|
26
|
-
from .query_runner import QueryRunner
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
class Neo4jQueryRunner(QueryRunner):
|
|
@@ -155,12 +156,24 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
155
156
|
# progress logging should not retry a lot as it perodically fetches the latest progress anyway
|
|
156
157
|
connectivity_retry_config = Neo4jQueryRunner.ConnectivityRetriesConfig(max_retries=2)
|
|
157
158
|
# not using retryable cypher as failing is okay
|
|
158
|
-
return self.run_cypher(
|
|
159
|
+
return self.run_cypher(
|
|
160
|
+
query=query,
|
|
161
|
+
query_type=QueryType.USER_TRANSPILED,
|
|
162
|
+
database=database,
|
|
163
|
+
connectivity_retry_config=connectivity_retry_config,
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
def get_auth(self) -> tuple[str, str] | None:
|
|
167
|
+
if isinstance(self._auth, neo4j.Auth):
|
|
168
|
+
return self._auth.principal, self._auth.credentials
|
|
169
|
+
else:
|
|
170
|
+
return self._auth
|
|
159
171
|
|
|
160
172
|
# only use for user defined queries
|
|
161
173
|
def run_cypher(
|
|
162
174
|
self,
|
|
163
175
|
query: str,
|
|
176
|
+
query_type: QueryType,
|
|
164
177
|
params: dict[str, Any] | None = None,
|
|
165
178
|
database: str | None = None,
|
|
166
179
|
mode: QueryMode | None = None,
|
|
@@ -186,7 +199,7 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
186
199
|
default_access_mode=mode.neo4j_access_mode(),
|
|
187
200
|
) as session:
|
|
188
201
|
try:
|
|
189
|
-
result = session.run(query, params)
|
|
202
|
+
result = session.run(self._wrap_query(query, query_type), params)
|
|
190
203
|
except Exception as e:
|
|
191
204
|
if custom_error:
|
|
192
205
|
self.handle_driver_exception(session, e)
|
|
@@ -211,6 +224,7 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
211
224
|
def run_retryable_cypher(
|
|
212
225
|
self,
|
|
213
226
|
query: str,
|
|
227
|
+
query_type: QueryType,
|
|
214
228
|
params: dict[str, Any] | None = None,
|
|
215
229
|
database: str | None = None,
|
|
216
230
|
mode: QueryMode | None = None,
|
|
@@ -221,7 +235,7 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
221
235
|
database = self._database
|
|
222
236
|
|
|
223
237
|
if self._NEO4J_DRIVER_VERSION < SemanticVersion(5, 5, 0):
|
|
224
|
-
return self.run_cypher(query, params, database, mode, custom_error, connectivity_retry_config)
|
|
238
|
+
return self.run_cypher(query, query_type, params, database, mode, custom_error, connectivity_retry_config)
|
|
225
239
|
|
|
226
240
|
if not mode:
|
|
227
241
|
routing = neo4j.RoutingControl.WRITE
|
|
@@ -232,7 +246,7 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
232
246
|
bookmark_manager = neo4j.GraphDatabase.bookmark_manager(self.bookmarks())
|
|
233
247
|
|
|
234
248
|
result = self._driver.execute_query(
|
|
235
|
-
query_=query,
|
|
249
|
+
query_=self._wrap_query(query, query_type),
|
|
236
250
|
parameters_=params,
|
|
237
251
|
database_=database,
|
|
238
252
|
result_transformer_=neo4j.Result.to_df,
|
|
@@ -250,17 +264,26 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
250
264
|
else:
|
|
251
265
|
raise e
|
|
252
266
|
|
|
253
|
-
def call_function(
|
|
267
|
+
def call_function(
|
|
268
|
+
self,
|
|
269
|
+
endpoint: str,
|
|
270
|
+
query_type: QueryType = QueryType.USER_TRANSPILED,
|
|
271
|
+
params: CallParameters | None = None,
|
|
272
|
+
custom_error: bool = True,
|
|
273
|
+
) -> Any:
|
|
254
274
|
if params is None:
|
|
255
275
|
params = CallParameters()
|
|
256
276
|
query = f"RETURN {endpoint}({params.placeholder_str()})"
|
|
257
277
|
|
|
258
278
|
# we can use retryable cypher as we expect all gds functions to be idempotent
|
|
259
|
-
return self.run_retryable_cypher(
|
|
279
|
+
return self.run_retryable_cypher(
|
|
280
|
+
query, query_type, params, custom_error=custom_error, mode=QueryMode.READ
|
|
281
|
+
).squeeze()
|
|
260
282
|
|
|
261
283
|
def call_procedure(
|
|
262
284
|
self,
|
|
263
285
|
endpoint: str,
|
|
286
|
+
query_type: QueryType = QueryType.USER_TRANSPILED,
|
|
264
287
|
params: CallParameters | None = None,
|
|
265
288
|
yields: list[str] | None = None,
|
|
266
289
|
database: str | None = None,
|
|
@@ -277,9 +300,11 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
277
300
|
|
|
278
301
|
def run_cypher_query() -> DataFrame:
|
|
279
302
|
if retryable:
|
|
280
|
-
return self.run_retryable_cypher(
|
|
303
|
+
return self.run_retryable_cypher(
|
|
304
|
+
query, query_type, params, database, custom_error=custom_error, mode=mode
|
|
305
|
+
)
|
|
281
306
|
else:
|
|
282
|
-
return self.run_cypher(query, params, database, custom_error=custom_error)
|
|
307
|
+
return self.run_cypher(query, query_type, params, database, custom_error=custom_error)
|
|
283
308
|
|
|
284
309
|
job_id = None if not params else params.get_job_id()
|
|
285
310
|
if self._resolve_show_progress(logging) and job_id:
|
|
@@ -295,7 +320,7 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
295
320
|
return self._server_version
|
|
296
321
|
|
|
297
322
|
try:
|
|
298
|
-
server_version_string = self.call_function("gds.version", custom_error=False)
|
|
323
|
+
server_version_string = self.call_function("gds.version", query_type=QueryType.SYSTEM, custom_error=False)
|
|
299
324
|
server_version = ServerVersion.from_string(server_version_string)
|
|
300
325
|
self._server_version = server_version
|
|
301
326
|
return server_version
|
|
@@ -501,6 +526,12 @@ class Neo4jQueryRunner(QueryRunner):
|
|
|
501
526
|
warnings.filterwarnings("ignore", message=r".*returned by the procedure.* is deprecated.*")
|
|
502
527
|
warnings.filterwarnings("ignore", message=r".*procedure field deprecated..*")
|
|
503
528
|
|
|
529
|
+
def _wrap_query(self, query: str, query_type: QueryType) -> neo4j.Query:
|
|
530
|
+
return neo4j.Query(
|
|
531
|
+
text=query, # type: ignore[assignment]
|
|
532
|
+
metadata={"app": f"gds-v{__version__}", "type": query_type.value},
|
|
533
|
+
)
|
|
534
|
+
|
|
504
535
|
class ConnectivityRetriesConfig(NamedTuple):
|
|
505
536
|
max_retries: int = 600
|
|
506
537
|
wait_time: int = 1
|