pinecone 6.0.0.dev1__tar.gz → 6.0.0.dev3__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.
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/PKG-INFO +1 -1
- pinecone-6.0.0.dev3/pinecone/__version__ +1 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/shared/api_client.py +44 -19
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/data/index.py +88 -2
- {pinecone-6.0.0.dev1/pinecone/grpc → pinecone-6.0.0.dev3/pinecone/data}/query_results_aggregator.py +23 -18
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/exceptions/__init__.py +3 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/grpc_runner.py +48 -5
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/index_grpc_asyncio.py +4 -4
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pyproject.toml +1 -1
- pinecone-6.0.0.dev1/pinecone/__version__ +0 -1
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/LICENSE.txt +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/README.md +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/config/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/config/config.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/config/openapi.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/config/pinecone_config.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/control/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/control/index_host_store.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/control/langchain_import_warnings.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/control/pinecone.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/control/repr_overrides.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/grpc/protos/vector_service_pb2.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/grpc/protos/vector_service_pb2.pyi +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/grpc/protos/vector_service_pb2_grpc.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/api/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/api/inference_api.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/api/manage_indexes_api.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/apis/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/collection_list.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/collection_model.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/configure_index_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/configure_index_request_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/configure_index_request_spec_pod.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/create_collection_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/create_index_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/deletion_protection.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/embed_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/embed_request_inputs.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/embed_request_parameters.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/embedding.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/embeddings_list.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/embeddings_list_usage.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/error_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/error_response_error.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/index_list.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/index_model.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/index_model_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/index_model_status.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/index_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/pod_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/pod_spec_metadata_config.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/serverless_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/models/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/api/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/api/data_plane_api.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/apis/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/delete_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/describe_index_stats_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/describe_index_stats_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/fetch_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/list_item.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/list_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/namespace_summary.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/pagination.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/protobuf_any.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/protobuf_null_value.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/query_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/query_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/query_vector.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/rpc_status.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/scored_vector.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/single_query_results.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/sparse_values.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/update_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/upsert_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/upsert_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/usage.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/vector.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/models/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/shared/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/shared/configuration.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/shared/exceptions.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/shared/model_utils.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/shared/rest.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/api/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/api/manage_indexes_api.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/apis/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/collection_list.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/collection_model.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/configure_index_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/configure_index_request_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/configure_index_request_spec_pod.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/create_collection_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/create_index_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/deletion_protection.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/error_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/error_response_error.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/index_list.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/index_model.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/index_model_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/index_model_status.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/index_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/pod_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/pod_spec_metadata_config.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/model/serverless_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_control/models/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/api/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/api/bulk_operations_api.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/api/vector_operations_api.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/apis/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/delete_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/describe_index_stats_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/describe_index_stats_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/fetch_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/import_error_mode.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/import_list_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/import_model.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/list_item.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/list_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/namespace_summary.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/pagination.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/protobuf_any.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/protobuf_null_value.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/query_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/query_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/query_vector.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/rpc_status.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/scored_vector.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/single_query_results.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/sparse_values.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/start_import_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/start_import_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/update_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/upsert_request.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/upsert_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/usage.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/model/vector.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/db_data/models/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/shared/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/shared/api_client.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/shared/configuration.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/shared/exceptions.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/shared/model_utils.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core_ea/openapi/shared/rest.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/data/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/data/errors.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/data/features/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/data/features/bulk_import.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/data/sparse_vector_factory.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/data/vector_factory.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/deprecation_warnings.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/exceptions/exceptions.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/base.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/channel_factory.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/config.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/future.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/index_grpc.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/pinecone.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/query_results.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/retry.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/sparse_values_factory.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/sparse_vector.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/utils.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/grpc/vector_factory_grpc.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/models/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/models/collection_description.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/models/collection_list.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/models/index_description.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/models/index_list.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/models/index_model.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/models/list_response.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/models/pod_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/models/serverless_spec.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/__init__.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/check_kwargs.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/constants.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/convert_to_list.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/deprecation_notice.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/docslinks.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/error_handling.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/fix_tuple_length.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/normalize_host.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/parse_args.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/repr_overrides.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/setup_openapi_client.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/user_agent.py +0 -0
- {pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/utils/version.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6.0.0.dev3
|
|
@@ -8,6 +8,24 @@ import re
|
|
|
8
8
|
import typing
|
|
9
9
|
from urllib.parse import quote
|
|
10
10
|
from urllib3.fields import RequestField
|
|
11
|
+
import time
|
|
12
|
+
import random
|
|
13
|
+
|
|
14
|
+
def retry_api_call(
|
|
15
|
+
func, args=(), kwargs={}, retries=3, backoff=1, jitter=0.5
|
|
16
|
+
):
|
|
17
|
+
attempts = 0
|
|
18
|
+
while attempts < retries:
|
|
19
|
+
try:
|
|
20
|
+
return func(*args, **kwargs) # Attempt to call __call_api
|
|
21
|
+
except Exception as e:
|
|
22
|
+
attempts += 1
|
|
23
|
+
if attempts >= retries:
|
|
24
|
+
print(f"API call failed after {attempts} attempts: {e}")
|
|
25
|
+
raise # Re-raise exception if retries are exhausted
|
|
26
|
+
sleep_time = backoff * (2 ** (attempts - 1)) + random.uniform(0, jitter)
|
|
27
|
+
# print(f"Retrying ({attempts}/{retries}) in {sleep_time:.2f} seconds after error: {e}")
|
|
28
|
+
time.sleep(sleep_time)
|
|
11
29
|
|
|
12
30
|
|
|
13
31
|
from pinecone.core.openapi.shared import rest
|
|
@@ -397,25 +415,32 @@ class ApiClient(object):
|
|
|
397
415
|
)
|
|
398
416
|
|
|
399
417
|
return self.pool.apply_async(
|
|
400
|
-
|
|
401
|
-
(
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
418
|
+
retry_api_call,
|
|
419
|
+
args=(
|
|
420
|
+
self.__call_api, # Pass the API call function as the first argument
|
|
421
|
+
(
|
|
422
|
+
resource_path,
|
|
423
|
+
method,
|
|
424
|
+
path_params,
|
|
425
|
+
query_params,
|
|
426
|
+
header_params,
|
|
427
|
+
body,
|
|
428
|
+
post_params,
|
|
429
|
+
files,
|
|
430
|
+
response_type,
|
|
431
|
+
auth_settings,
|
|
432
|
+
_return_http_data_only,
|
|
433
|
+
collection_formats,
|
|
434
|
+
_preload_content,
|
|
435
|
+
_request_timeout,
|
|
436
|
+
_host,
|
|
437
|
+
_check_type,
|
|
438
|
+
),
|
|
439
|
+
{}, # empty kwargs dictionary
|
|
440
|
+
3, # retries
|
|
441
|
+
1, # backoff time
|
|
442
|
+
0.5 # jitter
|
|
443
|
+
)
|
|
419
444
|
)
|
|
420
445
|
|
|
421
446
|
def request(
|
|
@@ -27,6 +27,8 @@ from .features.bulk_import import ImportFeatureMixin
|
|
|
27
27
|
from pinecone.core.openapi.data.api.data_plane_api import DataPlaneApi
|
|
28
28
|
from ..utils import setup_openapi_client, parse_non_empty_args
|
|
29
29
|
from .vector_factory import VectorFactory
|
|
30
|
+
from .query_results_aggregator import QueryResultsAggregator, QueryNamespacesResults
|
|
31
|
+
from multiprocessing.pool import ApplyResult
|
|
30
32
|
|
|
31
33
|
__all__ = [
|
|
32
34
|
"Index",
|
|
@@ -361,7 +363,7 @@ class Index(ImportFeatureMixin):
|
|
|
361
363
|
Union[SparseValues, Dict[str, Union[List[float], List[int]]]]
|
|
362
364
|
] = None,
|
|
363
365
|
**kwargs,
|
|
364
|
-
) -> QueryResponse:
|
|
366
|
+
) -> Union[QueryResponse, ApplyResult]:
|
|
365
367
|
"""
|
|
366
368
|
The Query operation searches a namespace, using a query vector.
|
|
367
369
|
It retrieves the ids of the most similar items in a namespace, along with their similarity scores.
|
|
@@ -403,6 +405,39 @@ class Index(ImportFeatureMixin):
|
|
|
403
405
|
and namespace name.
|
|
404
406
|
"""
|
|
405
407
|
|
|
408
|
+
response = self._query(
|
|
409
|
+
*args,
|
|
410
|
+
top_k=top_k,
|
|
411
|
+
vector=vector,
|
|
412
|
+
id=id,
|
|
413
|
+
namespace=namespace,
|
|
414
|
+
filter=filter,
|
|
415
|
+
include_values=include_values,
|
|
416
|
+
include_metadata=include_metadata,
|
|
417
|
+
sparse_vector=sparse_vector,
|
|
418
|
+
**kwargs,
|
|
419
|
+
)
|
|
420
|
+
|
|
421
|
+
if kwargs.get("async_req", False):
|
|
422
|
+
return response
|
|
423
|
+
else:
|
|
424
|
+
return parse_query_response(response)
|
|
425
|
+
|
|
426
|
+
def _query(
|
|
427
|
+
self,
|
|
428
|
+
*args,
|
|
429
|
+
top_k: int,
|
|
430
|
+
vector: Optional[List[float]] = None,
|
|
431
|
+
id: Optional[str] = None,
|
|
432
|
+
namespace: Optional[str] = None,
|
|
433
|
+
filter: Optional[Dict[str, Union[str, float, int, bool, List, dict]]] = None,
|
|
434
|
+
include_values: Optional[bool] = None,
|
|
435
|
+
include_metadata: Optional[bool] = None,
|
|
436
|
+
sparse_vector: Optional[
|
|
437
|
+
Union[SparseValues, Dict[str, Union[List[float], List[int]]]]
|
|
438
|
+
] = None,
|
|
439
|
+
**kwargs,
|
|
440
|
+
) -> QueryResponse:
|
|
406
441
|
if len(args) > 0:
|
|
407
442
|
raise ValueError(
|
|
408
443
|
"The argument order for `query()` has changed; please use keyword arguments instead of positional arguments. Example: index.query(vector=[0.1, 0.2, 0.3], top_k=10, namespace='my_namespace')"
|
|
@@ -435,7 +470,58 @@ class Index(ImportFeatureMixin):
|
|
|
435
470
|
),
|
|
436
471
|
**{k: v for k, v in kwargs.items() if k in _OPENAPI_ENDPOINT_PARAMS},
|
|
437
472
|
)
|
|
438
|
-
return
|
|
473
|
+
return response
|
|
474
|
+
|
|
475
|
+
@validate_and_convert_errors
|
|
476
|
+
def query_namespaces(
|
|
477
|
+
self,
|
|
478
|
+
vector: List[float],
|
|
479
|
+
namespaces: List[str],
|
|
480
|
+
top_k: Optional[int] = None,
|
|
481
|
+
filter: Optional[Dict[str, Union[str, float, int, bool, List, dict]]] = None,
|
|
482
|
+
include_values: Optional[bool] = None,
|
|
483
|
+
include_metadata: Optional[bool] = None,
|
|
484
|
+
sparse_vector: Optional[
|
|
485
|
+
Union[SparseValues, Dict[str, Union[List[float], List[int]]]]
|
|
486
|
+
] = None,
|
|
487
|
+
**kwargs,
|
|
488
|
+
) -> QueryNamespacesResults:
|
|
489
|
+
if len(namespaces) == 0:
|
|
490
|
+
raise ValueError("At least one namespace must be specified")
|
|
491
|
+
if len(vector) == 0:
|
|
492
|
+
raise ValueError("Query vector must not be empty")
|
|
493
|
+
|
|
494
|
+
# The caller may only want the top_k=1 result across all queries,
|
|
495
|
+
# but we need to get at least 2 results from each query in order to
|
|
496
|
+
# aggregate them correctly. So we'll temporarily set topK to 2 for the
|
|
497
|
+
# subqueries, and then we'll take the topK=1 results from the aggregated
|
|
498
|
+
# results.
|
|
499
|
+
overall_topk = top_k if top_k is not None else 10
|
|
500
|
+
aggregator = QueryResultsAggregator(top_k=overall_topk)
|
|
501
|
+
subquery_topk = overall_topk if overall_topk > 2 else 2
|
|
502
|
+
|
|
503
|
+
target_namespaces = set(namespaces) # dedup namespaces
|
|
504
|
+
async_results = [
|
|
505
|
+
self.query(
|
|
506
|
+
vector=vector,
|
|
507
|
+
namespace=ns,
|
|
508
|
+
top_k=subquery_topk,
|
|
509
|
+
filter=filter,
|
|
510
|
+
include_values=include_values,
|
|
511
|
+
include_metadata=include_metadata,
|
|
512
|
+
sparse_vector=sparse_vector,
|
|
513
|
+
async_req=True,
|
|
514
|
+
**kwargs,
|
|
515
|
+
)
|
|
516
|
+
for ns in target_namespaces
|
|
517
|
+
]
|
|
518
|
+
|
|
519
|
+
for result in async_results:
|
|
520
|
+
response = result.get()
|
|
521
|
+
aggregator.add_results(response)
|
|
522
|
+
|
|
523
|
+
final_results = aggregator.get_results()
|
|
524
|
+
return final_results
|
|
439
525
|
|
|
440
526
|
@validate_and_convert_errors
|
|
441
527
|
def update(
|
{pinecone-6.0.0.dev1/pinecone/grpc → pinecone-6.0.0.dev3/pinecone/data}/query_results_aggregator.py
RENAMED
|
@@ -61,7 +61,7 @@ class ScoredVectorWithNamespace:
|
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
@dataclass
|
|
64
|
-
class
|
|
64
|
+
class QueryNamespacesResults:
|
|
65
65
|
usage: Usage
|
|
66
66
|
matches: List[ScoredVectorWithNamespace]
|
|
67
67
|
|
|
@@ -69,7 +69,7 @@ class CompositeQueryResults:
|
|
|
69
69
|
if hasattr(self, key):
|
|
70
70
|
return getattr(self, key)
|
|
71
71
|
else:
|
|
72
|
-
raise KeyError(f"'{key}' not found in
|
|
72
|
+
raise KeyError(f"'{key}' not found in QueryNamespacesResults")
|
|
73
73
|
|
|
74
74
|
def __repr__(self):
|
|
75
75
|
return json.dumps(
|
|
@@ -81,28 +81,23 @@ class CompositeQueryResults:
|
|
|
81
81
|
)
|
|
82
82
|
|
|
83
83
|
|
|
84
|
-
class QueryResultsAggregationEmptyResultsError(Exception):
|
|
85
|
-
def __init__(self, namespace: str):
|
|
86
|
-
super().__init__(
|
|
87
|
-
f"Query results for namespace '{namespace}' were empty. Check that you have upserted vectors into this namespace (see describe_index_stats) and that the namespace name is spelled correctly."
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
|
|
91
84
|
class QueryResultsAggregregatorNotEnoughResultsError(Exception):
|
|
92
|
-
def __init__(self
|
|
85
|
+
def __init__(self):
|
|
93
86
|
super().__init__(
|
|
94
|
-
|
|
87
|
+
"Cannot interpret results without at least two matches. In order to aggregate results from multiple queries, top_k must be greater than 1 in order to correctly infer the similarity metric from scores."
|
|
95
88
|
)
|
|
96
89
|
|
|
97
90
|
|
|
98
91
|
class QueryResultsAggregatorInvalidTopKError(Exception):
|
|
99
92
|
def __init__(self, top_k: int):
|
|
100
|
-
super().__init__(
|
|
93
|
+
super().__init__(
|
|
94
|
+
f"Invalid top_k value {top_k}. To aggregate results from multiple queries the top_k must be at least 2."
|
|
95
|
+
)
|
|
101
96
|
|
|
102
97
|
|
|
103
98
|
class QueryResultsAggregator:
|
|
104
99
|
def __init__(self, top_k: int):
|
|
105
|
-
if top_k <
|
|
100
|
+
if top_k < 2:
|
|
106
101
|
raise QueryResultsAggregatorInvalidTopKError(top_k)
|
|
107
102
|
self.top_k = top_k
|
|
108
103
|
self.usage_read_units = 0
|
|
@@ -110,7 +105,7 @@ class QueryResultsAggregator:
|
|
|
110
105
|
self.insertion_counter = 0
|
|
111
106
|
self.is_dotproduct = None
|
|
112
107
|
self.read = False
|
|
113
|
-
self.final_results: Optional[
|
|
108
|
+
self.final_results: Optional[QueryNamespacesResults] = None
|
|
114
109
|
|
|
115
110
|
def _is_dotproduct_index(self, matches):
|
|
116
111
|
# The interpretation of the score depends on the similar metric used.
|
|
@@ -134,6 +129,13 @@ class QueryResultsAggregator:
|
|
|
134
129
|
if len(self.heap) < self.top_k:
|
|
135
130
|
heapq.heappush(self.heap, heap_item_fn(match, ns))
|
|
136
131
|
else:
|
|
132
|
+
# Assume we have dotproduct scores sorted in descending order
|
|
133
|
+
if self.is_dotproduct and match["score"] < self.heap[0][0]:
|
|
134
|
+
# No further matches can improve the top-K heap
|
|
135
|
+
break
|
|
136
|
+
elif not self.is_dotproduct and match["score"] > -self.heap[0][0]:
|
|
137
|
+
# No further matches can improve the top-K heap
|
|
138
|
+
break
|
|
137
139
|
heapq.heappushpop(self.heap, heap_item_fn(match, ns))
|
|
138
140
|
|
|
139
141
|
def add_results(self, results: Dict[str, Any]):
|
|
@@ -148,11 +150,14 @@ class QueryResultsAggregator:
|
|
|
148
150
|
self.usage_read_units += results.get("usage", {}).get("readUnits", 0)
|
|
149
151
|
|
|
150
152
|
if len(matches) == 0:
|
|
151
|
-
|
|
153
|
+
return
|
|
152
154
|
|
|
153
155
|
if self.is_dotproduct is None:
|
|
154
156
|
if len(matches) == 1:
|
|
155
|
-
|
|
157
|
+
# This condition should match the second time we add results containing
|
|
158
|
+
# only one match. We need at least two matches in a single response in order
|
|
159
|
+
# to infer the similarity metric
|
|
160
|
+
raise QueryResultsAggregregatorNotEnoughResultsError()
|
|
156
161
|
self.is_dotproduct = self._is_dotproduct_index(matches)
|
|
157
162
|
|
|
158
163
|
if self.is_dotproduct:
|
|
@@ -160,7 +165,7 @@ class QueryResultsAggregator:
|
|
|
160
165
|
else:
|
|
161
166
|
self._process_matches(matches, ns, self._non_dotproduct_heap_item)
|
|
162
167
|
|
|
163
|
-
def get_results(self) ->
|
|
168
|
+
def get_results(self) -> QueryNamespacesResults:
|
|
164
169
|
if self.read:
|
|
165
170
|
if self.final_results is not None:
|
|
166
171
|
return self.final_results
|
|
@@ -169,7 +174,7 @@ class QueryResultsAggregator:
|
|
|
169
174
|
raise ValueError("Results have already been read. Cannot get results again.")
|
|
170
175
|
self.read = True
|
|
171
176
|
|
|
172
|
-
self.final_results =
|
|
177
|
+
self.final_results = QueryNamespacesResults(
|
|
173
178
|
usage=Usage(read_units=self.usage_read_units),
|
|
174
179
|
matches=[
|
|
175
180
|
ScoredVectorWithNamespace(heapq.heappop(self.heap)) for _ in range(len(self.heap))
|
|
@@ -12,6 +12,8 @@ from pinecone.core.openapi.shared.exceptions import (
|
|
|
12
12
|
)
|
|
13
13
|
from .exceptions import PineconeConfigurationError, PineconeProtocolError, ListConversionException
|
|
14
14
|
|
|
15
|
+
PineconeNotFoundException = NotFoundException
|
|
16
|
+
|
|
15
17
|
__all__ = [
|
|
16
18
|
"PineconeConfigurationError",
|
|
17
19
|
"PineconeProtocolError",
|
|
@@ -22,6 +24,7 @@ __all__ = [
|
|
|
22
24
|
"PineconeApiKeyError",
|
|
23
25
|
"PineconeApiException",
|
|
24
26
|
"NotFoundException",
|
|
27
|
+
"PineconeNotFoundException",
|
|
25
28
|
"UnauthorizedException",
|
|
26
29
|
"ForbiddenException",
|
|
27
30
|
"ServiceException",
|
|
@@ -8,10 +8,19 @@ from pinecone import Config
|
|
|
8
8
|
from .utils import _generate_request_id
|
|
9
9
|
from .config import GRPCClientConfig
|
|
10
10
|
from pinecone.utils.constants import REQUEST_ID, CLIENT_VERSION
|
|
11
|
-
from
|
|
12
|
-
from grpc import
|
|
11
|
+
from grpc import CallCredentials, Compression, StatusCode
|
|
12
|
+
from grpc.aio import AioRpcError
|
|
13
13
|
from google.protobuf.message import Message
|
|
14
14
|
|
|
15
|
+
from pinecone.exceptions import (
|
|
16
|
+
PineconeException,
|
|
17
|
+
PineconeApiValueError,
|
|
18
|
+
PineconeApiException,
|
|
19
|
+
UnauthorizedException,
|
|
20
|
+
PineconeNotFoundException,
|
|
21
|
+
ServiceException,
|
|
22
|
+
)
|
|
23
|
+
|
|
15
24
|
|
|
16
25
|
class GrpcRunner:
|
|
17
26
|
def __init__(self, index_name: str, config: Config, grpc_config: GRPCClientConfig):
|
|
@@ -50,7 +59,7 @@ class GrpcRunner:
|
|
|
50
59
|
compression=compression,
|
|
51
60
|
)
|
|
52
61
|
except _InactiveRpcError as e:
|
|
53
|
-
|
|
62
|
+
self._map_exception(e, e._state.code, e._state.details)
|
|
54
63
|
|
|
55
64
|
return wrapped()
|
|
56
65
|
|
|
@@ -89,8 +98,8 @@ class GrpcRunner:
|
|
|
89
98
|
wait_for_ready=wait_for_ready,
|
|
90
99
|
compression=compression,
|
|
91
100
|
)
|
|
92
|
-
except
|
|
93
|
-
|
|
101
|
+
except AioRpcError as e:
|
|
102
|
+
self._map_exception(e, e.code(), e.details())
|
|
94
103
|
|
|
95
104
|
return await wrapped()
|
|
96
105
|
|
|
@@ -108,3 +117,37 @@ class GrpcRunner:
|
|
|
108
117
|
|
|
109
118
|
def _request_metadata(self) -> Dict[str, str]:
|
|
110
119
|
return {REQUEST_ID: _generate_request_id()}
|
|
120
|
+
|
|
121
|
+
def _map_exception(self, e: Exception, code: Optional[StatusCode], details: Optional[str]):
|
|
122
|
+
# Client / connection issues
|
|
123
|
+
details = details or ""
|
|
124
|
+
|
|
125
|
+
if code in [StatusCode.DEADLINE_EXCEEDED]:
|
|
126
|
+
raise TimeoutError(details) from e
|
|
127
|
+
|
|
128
|
+
# Permissions stuff
|
|
129
|
+
if code in [StatusCode.PERMISSION_DENIED, StatusCode.UNAUTHENTICATED]:
|
|
130
|
+
raise UnauthorizedException(status=code, reason=details) from e
|
|
131
|
+
|
|
132
|
+
# 400ish stuff
|
|
133
|
+
if code in [StatusCode.NOT_FOUND]:
|
|
134
|
+
raise PineconeNotFoundException(status=code, reason=details) from e
|
|
135
|
+
if code in [StatusCode.INVALID_ARGUMENT, StatusCode.OUT_OF_RANGE]:
|
|
136
|
+
raise PineconeApiValueError(details) from e
|
|
137
|
+
if code in [
|
|
138
|
+
StatusCode.ALREADY_EXISTS,
|
|
139
|
+
StatusCode.FAILED_PRECONDITION,
|
|
140
|
+
StatusCode.UNIMPLEMENTED,
|
|
141
|
+
StatusCode.RESOURCE_EXHAUSTED,
|
|
142
|
+
]:
|
|
143
|
+
raise PineconeApiException(status=code, reason=details) from e
|
|
144
|
+
|
|
145
|
+
# 500ish stuff
|
|
146
|
+
if code in [StatusCode.INTERNAL, StatusCode.UNAVAILABLE]:
|
|
147
|
+
raise ServiceException(status=code, reason=details) from e
|
|
148
|
+
if code in [StatusCode.UNKNOWN, StatusCode.DATA_LOSS, StatusCode.ABORTED]:
|
|
149
|
+
# abandon hope, all ye who enter here
|
|
150
|
+
raise PineconeException(code, details) from e
|
|
151
|
+
|
|
152
|
+
# If you get here, you're in a bad place
|
|
153
|
+
raise PineconeException(code, details) from e
|
|
@@ -42,7 +42,7 @@ from .utils import (
|
|
|
42
42
|
parse_sparse_values_arg,
|
|
43
43
|
)
|
|
44
44
|
from .vector_factory_grpc import VectorFactoryGRPC
|
|
45
|
-
from .query_results_aggregator import QueryResultsAggregator,
|
|
45
|
+
from ..data.query_results_aggregator import QueryResultsAggregator, QueryNamespacesResults
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
class GRPCIndexAsyncio(GRPCIndexBase):
|
|
@@ -151,7 +151,7 @@ class GRPCIndexAsyncio(GRPCIndexBase):
|
|
|
151
151
|
sparse_vector: Optional[Union[GRPCSparseValues, SparseVectorTypedDict]] = None,
|
|
152
152
|
semaphore: Optional[asyncio.Semaphore] = None,
|
|
153
153
|
**kwargs,
|
|
154
|
-
) ->
|
|
154
|
+
) -> Dict[str, Any]:
|
|
155
155
|
if vector is not None and id is not None:
|
|
156
156
|
raise ValueError("Cannot specify both `id` and `vector`")
|
|
157
157
|
|
|
@@ -256,7 +256,7 @@ class GRPCIndexAsyncio(GRPCIndexBase):
|
|
|
256
256
|
)
|
|
257
257
|
return parse_query_response(json_response, _check_type=False)
|
|
258
258
|
|
|
259
|
-
async def
|
|
259
|
+
async def query_namespaces(
|
|
260
260
|
self,
|
|
261
261
|
vector: List[float],
|
|
262
262
|
namespaces: List[str],
|
|
@@ -269,7 +269,7 @@ class GRPCIndexAsyncio(GRPCIndexBase):
|
|
|
269
269
|
max_concurrent_requests: Optional[int] = None,
|
|
270
270
|
semaphore: Optional[asyncio.Semaphore] = None,
|
|
271
271
|
**kwargs,
|
|
272
|
-
) ->
|
|
272
|
+
) -> QueryNamespacesResults:
|
|
273
273
|
aggregator_lock = asyncio.Lock()
|
|
274
274
|
semaphore = self._get_semaphore(max_concurrent_requests, semaphore)
|
|
275
275
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
6.0.0.dev1
|
|
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
|
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/grpc/protos/vector_service_pb2.pyi
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/grpc/protos/vector_service_pb2_grpc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/api/inference_api.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/api/manage_indexes_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/collection_list.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/collection_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/embed_request.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/embedding.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/embeddings_list.py
RENAMED
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/error_response.py
RENAMED
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/index_list.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/index_model.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/index_model_spec.py
RENAMED
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/index_spec.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/model/serverless_spec.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/control/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/api/data_plane_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/delete_request.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/fetch_response.py
RENAMED
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/list_response.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/namespace_summary.py
RENAMED
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/protobuf_any.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/protobuf_null_value.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/query_request.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/query_response.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/query_vector.py
RENAMED
|
File without changes
|
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/scored_vector.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/single_query_results.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/sparse_values.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/update_request.py
RENAMED
|
File without changes
|
{pinecone-6.0.0.dev1 → pinecone-6.0.0.dev3}/pinecone/core/openapi/data/model/upsert_request.py
RENAMED
|
File without changes
|