Skip to content

Commit 8082344

Browse files
authored
Merge branch 'main' into feat/add-embedders-settings
2 parents 057377b + 4a9da25 commit 8082344

File tree

6 files changed

+105
-56
lines changed

6 files changed

+105
-56
lines changed

Diff for: Pipfile.lock

+51-52
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: meilisearch/_httprequests.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@
1717

1818

1919
class HttpRequests:
20-
def __init__(self, config: Config) -> None:
20+
def __init__(self, config: Config, custom_headers: Optional[Mapping[str, str]] = None) -> None:
2121
self.config = config
2222
self.headers = {
2323
"Authorization": f"Bearer {self.config.api_key}",
2424
"User-Agent": _build_user_agent(config.client_agents),
2525
}
2626

27+
if custom_headers is not None:
28+
self.headers.update(custom_headers)
29+
2730
def send_request(
2831
self,
2932
http_method: Callable,

Diff for: meilisearch/client.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def __init__(
3434
api_key: Optional[str] = None,
3535
timeout: Optional[int] = None,
3636
client_agents: Optional[Tuple[str, ...]] = None,
37+
custom_headers: Optional[Mapping[str, str]] = None,
3738
) -> None:
3839
"""
3940
Parameters
@@ -48,10 +49,13 @@ def __init__(
4849
client_agents (optional):
4950
Used to send additional client agent information for clients extending the functionality
5051
of this client.
52+
custom_headers (optional):
53+
Custom headers to add when sending data to Meilisearch.
5154
"""
55+
5256
self.config = Config(url, api_key, timeout=timeout, client_agents=client_agents)
5357

54-
self.http = HttpRequests(self.config)
58+
self.http = HttpRequests(self.config, custom_headers)
5559

5660
self.task_handler = TaskHandler(self.config)
5761

Diff for: meilisearch/index.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,18 @@
2828
Embedders,
2929
EmbedderType,
3030
HuggingFaceEmbedder,
31-
OllamaEmbedder,
32-
OpenAiEmbedder,
3331
RestEmbedder,
3432
UserProvidedEmbedder,
3533
)
3634
from meilisearch.models.index import (
3735
Faceting,
3836
IndexStats,
3937
LocalizedAttributes,
38+
OllamaEmbedder,
39+
OpenAiEmbedder,
4040
Pagination,
4141
ProximityPrecision,
42+
RestEmbedder,
4243
TypoTolerance,
4344
)
4445
from meilisearch.models.task import Task, TaskInfo, TaskResults
@@ -971,8 +972,12 @@ def get_settings(self) -> Dict[str, Any]:
971972
for k, v in settings["embedders"].items():
972973
if v.get("source") == "openAi":
973974
embedders[k] = OpenAiEmbedder(**v)
975+
elif v.get("source") == "ollama":
976+
embedders[k] = OllamaEmbedder(**v)
974977
elif v.get("source") == "huggingFace":
975978
embedders[k] = HuggingFaceEmbedder(**v)
979+
elif v.get("source") == "rest":
980+
embedders[k] = RestEmbedder(**v)
976981
else:
977982
embedders[k] = UserProvidedEmbedder(**v)
978983

@@ -1919,6 +1924,7 @@ def get_embedders(self) -> Embedders | None:
19191924
if not response:
19201925
return None
19211926

1927+
19221928
embedders: dict[str, EmbedderType] = {}
19231929
for k, v in response.items():
19241930
source = v.get("source")

Diff for: meilisearch/models/index.py

+5
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ class ProximityPrecision(str, Enum):
5454
BY_ATTRIBUTE = "byAttribute"
5555

5656

57+
class EmbedderDistribution(CamelBase):
58+
mean: float
59+
sigma: float
60+
61+
5762
class LocalizedAttributes(CamelBase):
5863
attribute_patterns: List[str]
5964
locales: List[str]

Diff for: tests/client/test_client.py

+32
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# pylint: disable=invalid-name
22

3+
import pytest
4+
35
import meilisearch
46
from tests import BASE_URL, MASTER_KEY
57

@@ -26,3 +28,33 @@ def test_client_timeout_not_set():
2628
response = client.health()
2729
assert client.config.timeout == default_timeout
2830
assert response["status"] == "available"
31+
32+
33+
@pytest.mark.parametrize(
34+
"api_key, custom_headers, expected",
35+
(
36+
("testKey", None, {"Authorization": "Bearer testKey"}),
37+
(
38+
"testKey",
39+
{"header_key_1": "header_value_1", "header_key_2": "header_value_2"},
40+
{
41+
"Authorization": "Bearer testKey",
42+
"header_key_1": "header_value_1",
43+
"header_key_2": "header_value_2",
44+
},
45+
),
46+
(
47+
None,
48+
{"header_key_1": "header_value_1", "header_key_2": "header_value_2"},
49+
{
50+
"header_key_1": "header_value_1",
51+
"header_key_2": "header_value_2",
52+
},
53+
),
54+
(None, None, {}),
55+
),
56+
)
57+
def test_headers(api_key, custom_headers, expected):
58+
client = meilisearch.Client("127.0.0.1:7700", api_key=api_key, custom_headers=custom_headers)
59+
60+
assert client.http.headers.items() >= expected.items()

0 commit comments

Comments
 (0)