Skip to content

Commit c0a61e2

Browse files
committed
Fix parsing of skip & vec_prop_name to moduleConfig
1 parent b2bc66d commit c0a61e2

2 files changed

Lines changed: 55 additions & 13 deletions

File tree

integration/test_collection_config.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,3 +1412,39 @@ def test_config_multi_vector_disabled(
14121412
conf = config.vector_config["vec"].vector_index_config
14131413
assert isinstance(conf, _VectorIndexConfigHNSW)
14141414
assert conf.multi_vector is None
1415+
1416+
1417+
@pytest.mark.parametrize(
1418+
"generative_config",
1419+
[
1420+
None,
1421+
Configure.Generative.anyscale(),
1422+
],
1423+
)
1424+
@pytest.mark.parametrize(
1425+
"vectorizer_config",
1426+
[
1427+
None,
1428+
Configure.Vectorizer.none(),
1429+
Configure.Vectorizer.text2vec_contextionary(vectorize_collection_name=False),
1430+
[
1431+
Configure.NamedVectors.text2vec_contextionary(
1432+
name="vec",
1433+
vectorize_collection_name=False,
1434+
)
1435+
],
1436+
],
1437+
)
1438+
def test_config_add_property(
1439+
collection_factory: CollectionFactory, generative_config, vectorizer_config
1440+
) -> None:
1441+
collection = collection_factory(
1442+
properties=[
1443+
Property(name="title", data_type=DataType.TEXT),
1444+
],
1445+
generative_config=generative_config,
1446+
vectorizer_config=vectorizer_config,
1447+
)
1448+
collection.config.add_property(Property(name="description", data_type=DataType.TEXT))
1449+
config = collection.config.get()
1450+
assert "description" in [prop.name for prop in config.properties]

weaviate/collections/config/executor.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -186,19 +186,25 @@ def __add_property(self, additional_property: PropertyType) -> executor.Result[N
186186
obj = additional_property._to_dict()
187187

188188
def resp(schema: Dict[str, Any]) -> executor.Result[None]:
189-
if schema.get("moduleConfig"):
190-
configured_module = list(schema.get("moduleConfig", {}).keys())[0]
191-
modconf = {}
192-
if "skip_vectorization" in obj:
193-
modconf["skip"] = obj["skip_vectorization"]
194-
del obj["skip_vectorization"]
195-
196-
if "vectorize_property_name" in obj:
197-
modconf["vectorizePropertyName"] = obj["vectorize_property_name"]
198-
del obj["vectorize_property_name"]
199-
200-
if len(modconf) > 0:
201-
obj["moduleConfig"] = {configured_module: modconf}
189+
modconf = {}
190+
if "skip_vectorization" in obj:
191+
modconf["skip"] = obj["skip_vectorization"]
192+
del obj["skip_vectorization"]
193+
194+
if "vectorize_property_name" in obj:
195+
modconf["vectorizePropertyName"] = obj["vectorize_property_name"]
196+
del obj["vectorize_property_name"]
197+
198+
module_config: Dict[str, Any] = schema.get("moduleConfig", {})
199+
legacy_vectorizer = [
200+
str(k) for k in module_config if "generative" not in k and "reranker" not in k
201+
]
202+
if len(legacy_vectorizer) > 0 and len(modconf) > 0:
203+
obj["moduleConfig"] = {legacy_vectorizer[0]: modconf}
204+
205+
vector_config: Dict[str, Any] = schema.get("vectorConfig", {})
206+
if len(vector_config) > 0:
207+
obj["vectorConfig"] = {key: modconf for key in vector_config.keys()}
202208

203209
def inner_resp(res: Response) -> None:
204210
return None

0 commit comments

Comments
 (0)