@@ -531,6 +531,27 @@ def create_snapshot(self) -> TaskInfo:
531531
532532 return TaskInfo (** task )
533533
534+ def swap_indexes (self , parameters : List [Mapping [str , List [str ]]]) -> TaskInfo :
535+ """Swap two indexes.
536+
537+ Parameters
538+ ----------
539+ indexes:
540+ List of indexes to swap (ex: [{"indexes": ["indexA", "indexB"]}).
541+
542+ Returns
543+ -------
544+ task_info:
545+ TaskInfo instance containing information about a task to track the progress of an asynchronous process.
546+ https://www.meilisearch.com/docs/reference/api/tasks#get-one-task
547+
548+ Raises
549+ ------
550+ MeilisearchApiError
551+ An error containing details about why Meilisearch can't process your request. Meilisearch error codes are described here: https://www.meilisearch.com/docs/reference/errors/error_codes#meilisearch-errors
552+ """
553+ return TaskInfo (** self .http .post (self .config .paths .swap , parameters ))
554+
534555 def get_tasks (self , parameters : Optional [MutableMapping [str , Any ]] = None ) -> TaskResults :
535556 """Get all tasks.
536557
@@ -977,48 +998,21 @@ def _valid_uuid(uuid: str) -> bool:
977998 return bool (match )
978999
9791000 def get_experimental_features (self ) -> dict :
980- """Get current experimental features settings."""
1001+ """
1002+ Retrieve the current settings for all experimental features.
1003+ Returns:
1004+ dict: A mapping of feature names to their enabled/disabled state.
1005+ """
9811006 return self .http .get (self .config .paths .experimental_features )
9821007
9831008 def update_experimental_features (self , features : dict ) -> dict :
984- """Update experimental features settings."""
985- return self .http .patch (self .config .paths .experimental_features , body = features )
986-
987- def enable_multimodal (self ) -> dict :
988- """Enable multimodal experimental feature."""
989- return self .update_experimental_features ({"multimodal" : True })
990-
991- def disable_multimodal (self ) -> dict :
992- """Disable multimodal experimental feature."""
993- return self .update_experimental_features ({"multimodal" : False })
994-
995- def swap_indexes (self , swaps : List [Dict [str , list ]]) -> TaskInfo :
9961009 """
997- Swap or rename indexes in Meilisearch.
998- This method accepts a list of swap instructions.
999- Each instruction must contain:
1000-
1001- - "indexes": a list of exactly two index UIDs
1002- - "rename" (optional): boolean flag
1003- * False (default): swap two existing indexes
1004- * True: rename index_a → index_b (index_b must NOT exist)
1010+ Update one or more experimental features.
10051011
1006- A single request can perform multiple swap or rename operations.
1007- All operations in the request are atomic—either all succeed, or none do.
1008-
1009- Example:
1010- [
1011- {"indexes": ["A", "B"]},
1012- {"indexes": ["C_tmp", "C"], "rename": True}
1013- ]
1014-
1015- Returns
1016- -------
1017- TaskInfo
1018- Task information for the asynchronous swap/rename task.
1012+ Args:
1013+ features (dict): A dictionary mapping feature names to booleans.
1014+ For example, {"multimodal": True} to enable multimodal.
1015+ Returns:
1016+ dict: The updated experimental features settings.
10191017 """
1020- if not swaps or not all ("indexes" in s and len (s ["indexes" ]) == 2 for s in swaps ):
1021- raise ValueError ("Each swap must contain exactly two index UIDs under 'indexes' key." )
1022-
1023- task = self .http .post ("/swap-indexes" ,swaps )
1024- return TaskInfo (** task )
1018+ return self .http .patch (self .config .paths .experimental_features , body = features )
0 commit comments