- Update to 8.17.0: * Allow simsimd again on Python 3.13 (#2722) * Update APIs: - Mark all Inference APIs as stable. - Add allow_partial_search_results to the Open Point in Time API - Add keep_alive to the Get async search status API - Remove the keep_alive, pre_filter_shard_size and scroll parameters from the Submit async search API. They were never supported. - Add master_timeout and timeout to all autoscaling policy APIs - Add master_timeout to the Alias exists and Get alias APIs - Add list_executed_pipelines and require_data_stream to Bulk API - Add include_model_definition to Get trained models API - Add meta to Create data frame analytics API - Add aggs to Create datafeeds API - Add allow_no_indices, expand_wildcards, ignore_throttled and ignore_unavailable to Create anomaly detection jobs API - 8.16.0: * Support Python 3.13 (#2680) * Emit Python warnings for beta and tech preview APIs (#2675). * Vectorstore: use a retriever query for hybrid search (#2666) * Allow retries for statuses other than 429 in streaming bulk (#2071, contributed by @ayayron) * Make BulkIndexError and ScanError serializable (#2669, contributed by @seagrine) * Fix import when trace is missing from opentelemetry package (#2694, contributed by @nicoloboschi) * Update APIs: - Fix nodes parameter in Task management API (contributed by @margaretpearce) - Add Test query rule API - Add Create Cross-Cluster API key and Update Cross-Cluster API key APIs - Add experimental Verify snapshot repository API - Add data_stream_name and settings to Delete auto-follow pattern API - Add max_samples_per_key to Get async EQL status API - Add lifecycle and remove unused data_retention and downsampling parameters from Put data stream lifecycle API OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-elasticsearch?expand=0&rev=50
194 lines
6.9 KiB
Diff
194 lines
6.9 KiB
Diff
From 740005db4dcd732015606d86eff29eb15a0193b2 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Garcia Moreno <daniel.garcia@suse.com>
|
|
Date: Wed, 8 Jan 2025 08:50:23 +0100
|
|
Subject: [PATCH] Make pyarrow dependency optional for tests
|
|
|
|
---
|
|
.../test_client/test_deprecated_options.py | 40 ++++++++-------
|
|
.../test_client/test_serializers.py | 49 ++++++++-----------
|
|
test_elasticsearch/test_serializer.py | 9 +++-
|
|
3 files changed, 48 insertions(+), 50 deletions(-)
|
|
|
|
diff --git a/test_elasticsearch/test_client/test_deprecated_options.py b/test_elasticsearch/test_client/test_deprecated_options.py
|
|
index 810e75cf..ea797ce8 100644
|
|
--- a/test_elasticsearch/test_client/test_deprecated_options.py
|
|
+++ b/test_elasticsearch/test_client/test_deprecated_options.py
|
|
@@ -22,6 +22,24 @@ import pytest
|
|
from elasticsearch import Elasticsearch, JsonSerializer
|
|
|
|
|
|
+EXPECTED_SERIALIZERS = {
|
|
+ "application/vnd.mapbox-vector-tile",
|
|
+ "application/x-ndjson",
|
|
+ "application/json",
|
|
+ "text/*",
|
|
+ "application/vnd.elasticsearch+json",
|
|
+ "application/vnd.elasticsearch+x-ndjson",
|
|
+}
|
|
+
|
|
+
|
|
+try:
|
|
+ import pyarrow as pa
|
|
+ EXPECTED_SERIALIZERS.add("application/vnd.apache.arrow.stream")
|
|
+except ImportError:
|
|
+ pa = None
|
|
+
|
|
+
|
|
+
|
|
def test_sniff_on_connection_fail():
|
|
with warnings.catch_warnings(record=True) as w:
|
|
client = Elasticsearch("http://localhost:9200", sniff_on_connection_fail=True)
|
|
@@ -129,15 +147,7 @@ def test_serializer_and_serializers():
|
|
client.transport.serializers.get_serializer("application/json"),
|
|
CustomSerializer,
|
|
)
|
|
- assert set(client.transport.serializers.serializers.keys()) == {
|
|
- "application/vnd.mapbox-vector-tile",
|
|
- "application/x-ndjson",
|
|
- "application/json",
|
|
- "text/*",
|
|
- "application/vnd.apache.arrow.stream",
|
|
- "application/vnd.elasticsearch+json",
|
|
- "application/vnd.elasticsearch+x-ndjson",
|
|
- }
|
|
+ assert set(client.transport.serializers.serializers.keys()) == EXPECTED_SERIALIZERS
|
|
|
|
client = Elasticsearch(
|
|
"http://localhost:9200",
|
|
@@ -150,13 +160,5 @@ def test_serializer_and_serializers():
|
|
client.transport.serializers.get_serializer("application/json"),
|
|
CustomSerializer,
|
|
)
|
|
- assert set(client.transport.serializers.serializers.keys()) == {
|
|
- "application/vnd.mapbox-vector-tile",
|
|
- "application/x-ndjson",
|
|
- "application/json",
|
|
- "text/*",
|
|
- "application/vnd.apache.arrow.stream",
|
|
- "application/vnd.elasticsearch+json",
|
|
- "application/vnd.elasticsearch+x-ndjson",
|
|
- "application/cbor",
|
|
- }
|
|
+ expected = EXPECTED_SERIALIZERS | {"application/cbor"}
|
|
+ assert set(client.transport.serializers.serializers.keys()) == expected
|
|
diff --git a/test_elasticsearch/test_client/test_serializers.py b/test_elasticsearch/test_client/test_serializers.py
|
|
index 9d13386e..4b18212d 100644
|
|
--- a/test_elasticsearch/test_client/test_serializers.py
|
|
+++ b/test_elasticsearch/test_client/test_serializers.py
|
|
@@ -21,6 +21,23 @@ from elasticsearch import Elasticsearch
|
|
from test_elasticsearch.test_cases import DummyTransportTestCase
|
|
|
|
|
|
+EXPECTED_SERIALIZERS = {
|
|
+ "application/json",
|
|
+ "text/*",
|
|
+ "application/x-ndjson",
|
|
+ "application/vnd.mapbox-vector-tile",
|
|
+ "application/vnd.elasticsearch+json",
|
|
+ "application/vnd.elasticsearch+x-ndjson",
|
|
+}
|
|
+
|
|
+
|
|
+try:
|
|
+ import pyarrow as pa
|
|
+ EXPECTED_SERIALIZERS.add("application/vnd.apache.arrow.stream")
|
|
+except ImportError:
|
|
+ pa = None
|
|
+
|
|
+
|
|
class TestSerializers(DummyTransportTestCase):
|
|
def test_compat_mode_on_by_default(self):
|
|
calls = self.client.transport.calls
|
|
@@ -90,16 +107,8 @@ class TestSerializers(DummyTransportTestCase):
|
|
"https://localhost:9200", serializers={f"application/{mime_subtype}": ser}
|
|
)
|
|
serializers = client.transport.serializers.serializers
|
|
- assert set(serializers.keys()) == {
|
|
- "application/json",
|
|
- "text/*",
|
|
- "application/x-ndjson",
|
|
- "application/vnd.apache.arrow.stream",
|
|
- "application/vnd.mapbox-vector-tile",
|
|
- "application/vnd.elasticsearch+json",
|
|
- "application/vnd.elasticsearch+x-ndjson",
|
|
- }
|
|
|
|
+ assert set(serializers.keys()) == EXPECTED_SERIALIZERS
|
|
assert serializers[f"application/{mime_subtype}"] is ser
|
|
assert serializers[f"application/vnd.elasticsearch+{mime_subtype}"] is ser
|
|
|
|
@@ -118,16 +127,7 @@ class TestSerializers(DummyTransportTestCase):
|
|
},
|
|
)
|
|
serializers = client.transport.serializers.serializers
|
|
- assert set(serializers.keys()) == {
|
|
- "application/json",
|
|
- "text/*",
|
|
- "application/x-ndjson",
|
|
- "application/vnd.apache.arrow.stream",
|
|
- "application/vnd.mapbox-vector-tile",
|
|
- "application/vnd.elasticsearch+json",
|
|
- "application/vnd.elasticsearch+x-ndjson",
|
|
- }
|
|
-
|
|
+ assert set(serializers.keys()) == EXPECTED_SERIALIZERS
|
|
assert serializers[f"application/{mime_subtype}"] is ser1
|
|
assert serializers[f"application/vnd.elasticsearch+{mime_subtype}"] is ser2
|
|
|
|
@@ -138,15 +138,6 @@ class TestSerializers(DummyTransportTestCase):
|
|
ser = CustomSerializer()
|
|
client = Elasticsearch("https://localhost:9200", serializer=ser)
|
|
serializers = client.transport.serializers.serializers
|
|
- assert set(serializers.keys()) == {
|
|
- "application/json",
|
|
- "text/*",
|
|
- "application/x-ndjson",
|
|
- "application/vnd.apache.arrow.stream",
|
|
- "application/vnd.mapbox-vector-tile",
|
|
- "application/vnd.elasticsearch+json",
|
|
- "application/vnd.elasticsearch+x-ndjson",
|
|
- }
|
|
-
|
|
+ assert set(serializers.keys()) == EXPECTED_SERIALIZERS
|
|
assert serializers["application/json"] is ser
|
|
assert serializers["application/vnd.elasticsearch+json"] is ser
|
|
diff --git a/test_elasticsearch/test_serializer.py b/test_elasticsearch/test_serializer.py
|
|
index 02723e8f..313029ba 100644
|
|
--- a/test_elasticsearch/test_serializer.py
|
|
+++ b/test_elasticsearch/test_serializer.py
|
|
@@ -19,9 +19,14 @@ import uuid
|
|
from datetime import datetime
|
|
from decimal import Decimal
|
|
|
|
-import pyarrow as pa
|
|
import pytest
|
|
|
|
+try:
|
|
+ import pyarrow as pa
|
|
+ from elasticsearch.serializer import PyArrowSerializer
|
|
+except ImportError:
|
|
+ pa = None
|
|
+
|
|
try:
|
|
import numpy as np
|
|
import pandas as pd
|
|
@@ -35,7 +40,6 @@ from elasticsearch.exceptions import SerializationError
|
|
from elasticsearch.serializer import (
|
|
JSONSerializer,
|
|
OrjsonSerializer,
|
|
- PyArrowSerializer,
|
|
TextSerializer,
|
|
)
|
|
|
|
@@ -163,6 +167,7 @@ def test_serializes_pandas_category(json_serializer):
|
|
assert b'{"d":[1,2,3]}' == json_serializer.dumps({"d": cat})
|
|
|
|
|
|
+@pytest.mark.skipif(pa is None, reason="Test requires pyarrow to be available")
|
|
def test_pyarrow_loads():
|
|
data = [
|
|
pa.array([1, 2, 3, 4]),
|
|
--
|
|
2.47.0
|
|
|