Skip to content

Commit 95ede7f

Browse files
authored
Merge pull request #1648 from weaviate/fix/config-add-property
Fix parsing of skip & vec_prop_name to moduleConfig
2 parents 4f611b6 + c0a61e2 commit 95ede7f

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
@@ -1404,3 +1404,39 @@ def test_config_multi_vector_disabled(
14041404
conf = config.vector_config["vec"].vector_index_config
14051405
assert isinstance(conf, _VectorIndexConfigHNSW)
14061406
assert conf.multi_vector is None
1407+
1408+
1409+
@pytest.mark.parametrize(
1410+
"generative_config",
1411+
[
1412+
None,
1413+
Configure.Generative.anyscale(),
1414+
],
1415+
)
1416+
@pytest.mark.parametrize(
1417+
"vectorizer_config",
1418+
[
1419+
None,
1420+
Configure.Vectorizer.none(),
1421+
Configure.Vectorizer.text2vec_contextionary(vectorize_collection_name=False),
1422+
[
1423+
Configure.NamedVectors.text2vec_contextionary(
1424+
name="vec",
1425+
vectorize_collection_name=False,
1426+
)
1427+
],
1428+
],
1429+
)
1430+
def test_config_add_property(
1431+
collection_factory: CollectionFactory, generative_config, vectorizer_config
1432+
) -> None:
1433+
collection = collection_factory(
1434+
properties=[
1435+
Property(name="title", data_type=DataType.TEXT),
1436+
],
1437+
generative_config=generative_config,
1438+
vectorizer_config=vectorizer_config,
1439+
)
1440+
collection.config.add_property(Property(name="description", data_type=DataType.TEXT))
1441+
config = collection.config.get()
1442+
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)