22#
33# SPDX-License-Identifier: Apache-2.0
44
5- from typing import Any , Literal , Optional , Union , overload
5+ from typing import Any , Literal , overload
66
77from haystack import default_from_dict , default_to_dict , logging
88from haystack .dataclasses .document import Document
@@ -92,9 +92,9 @@ def __init__(
9292 recreate_table : bool = False ,
9393 search_strategy : Literal ["exact_nearest_neighbor" , "hnsw" ] = "exact_nearest_neighbor" ,
9494 hnsw_recreate_index_if_exists : bool = False ,
95- hnsw_index_creation_kwargs : Optional [ dict [str , int ]] = None ,
95+ hnsw_index_creation_kwargs : dict [str , int ] | None = None ,
9696 hnsw_index_name : str = "haystack_hnsw_index" ,
97- hnsw_ef_search : Optional [ int ] = None ,
97+ hnsw_ef_search : int | None = None ,
9898 keyword_index_name : str = "haystack_keyword_index" ,
9999 ):
100100 """
@@ -175,12 +175,12 @@ def __init__(
175175 self .keyword_index_name = keyword_index_name
176176 self .language = language
177177
178- self ._connection : Optional [ Connection ] = None
179- self ._async_connection : Optional [ AsyncConnection ] = None
180- self ._cursor : Optional [ Cursor ] = None
181- self ._async_cursor : Optional [ AsyncCursor ] = None
182- self ._dict_cursor : Optional [ Cursor [DictRow ]] = None
183- self ._async_dict_cursor : Optional [ AsyncCursor [DictRow ]] = None
178+ self ._connection : Connection | None = None
179+ self ._async_connection : AsyncConnection | None = None
180+ self ._cursor : Cursor | None = None
181+ self ._async_cursor : AsyncCursor | None = None
182+ self ._dict_cursor : Cursor [DictRow ] | None = None
183+ self ._async_dict_cursor : AsyncCursor [DictRow ] | None = None
184184 self ._table_initialized = False
185185
186186 def to_dict (self ) -> dict [str , Any ]:
@@ -250,21 +250,21 @@ async def _connection_is_valid_async(connection):
250250
251251 @overload
252252 def _execute_sql (
253- self , cursor : Cursor , sql_query : Composed , params : Optional [ tuple ] = None , error_msg : str = ""
253+ self , cursor : Cursor , sql_query : Composed , params : tuple | None = None , error_msg : str = ""
254254 ) -> Cursor : ...
255255
256256 @overload
257257 def _execute_sql (
258- self , cursor : Cursor [DictRow ], sql_query : Composed , params : Optional [ tuple ] = None , error_msg : str = ""
258+ self , cursor : Cursor [DictRow ], sql_query : Composed , params : tuple | None = None , error_msg : str = ""
259259 ) -> Cursor [DictRow ]: ...
260260
261261 def _execute_sql (
262262 self ,
263- cursor : Union [ Cursor , Cursor [DictRow ] ],
263+ cursor : Cursor | Cursor [DictRow ],
264264 sql_query : Composed ,
265- params : Optional [ tuple ] = None ,
265+ params : tuple | None = None ,
266266 error_msg : str = "" ,
267- ) -> Union [ Cursor , Cursor [DictRow ] ]:
267+ ) -> Cursor | Cursor [DictRow ]:
268268 """
269269 Internal method to execute SQL statements and handle exceptions.
270270
@@ -299,21 +299,21 @@ def _execute_sql(
299299
300300 @overload
301301 async def _execute_sql_async (
302- self , cursor : AsyncCursor , sql_query : Composed , params : Optional [ tuple ] = None , error_msg : str = ""
302+ self , cursor : AsyncCursor , sql_query : Composed , params : tuple | None = None , error_msg : str = ""
303303 ) -> AsyncCursor : ...
304304
305305 @overload
306306 async def _execute_sql_async (
307- self , cursor : AsyncCursor [DictRow ], sql_query : Composed , params : Optional [ tuple ] = None , error_msg : str = ""
307+ self , cursor : AsyncCursor [DictRow ], sql_query : Composed , params : tuple | None = None , error_msg : str = ""
308308 ) -> AsyncCursor [DictRow ]: ...
309309
310310 async def _execute_sql_async (
311311 self ,
312- cursor : Union [ AsyncCursor , AsyncCursor [DictRow ] ],
312+ cursor : AsyncCursor | AsyncCursor [DictRow ],
313313 sql_query : Composed ,
314- params : Optional [ tuple ] = None ,
314+ params : tuple | None = None ,
315315 error_msg : str = "" ,
316- ) -> Union [ AsyncCursor , AsyncCursor [DictRow ] ]:
316+ ) -> AsyncCursor | AsyncCursor [DictRow ]:
317317 """
318318 Internal method to asynchronously execute SQL statements and handle exceptions.
319319
@@ -759,7 +759,7 @@ async def count_documents_async(self) -> int:
759759 return result [0 ]
760760 return 0
761761
762- def filter_documents (self , filters : Optional [ dict [str , Any ]] = None ) -> list [Document ]:
762+ def filter_documents (self , filters : dict [str , Any ] | None = None ) -> list [Document ]:
763763 """
764764 Returns the documents that match the filters provided.
765765
@@ -796,7 +796,7 @@ def filter_documents(self, filters: Optional[dict[str, Any]] = None) -> list[Doc
796796 docs = _from_pg_to_haystack_documents (records )
797797 return docs
798798
799- async def filter_documents_async (self , filters : Optional [ dict [str , Any ]] = None ) -> list [Document ]:
799+ async def filter_documents_async (self , filters : dict [str , Any ] | None = None ) -> list [Document ]:
800800 """
801801 Asynchronously returns the documents that match the filters provided.
802802
@@ -1223,7 +1223,7 @@ async def update_by_filter_async(self, filters: dict[str, Any], meta: dict[str,
12231223 raise DocumentStoreError (msg ) from e
12241224
12251225 def _build_keyword_retrieval_query (
1226- self , query : str , top_k : int , filters : Optional [ dict [str , Any ]] = None
1226+ self , query : str , top_k : int , filters : dict [str , Any ] | None = None
12271227 ) -> tuple [Composed , tuple ]:
12281228 """
12291229 Builds the SQL query and the where parameters for keyword retrieval.
@@ -1236,7 +1236,7 @@ def _build_keyword_retrieval_query(
12361236 )
12371237
12381238 where_params = ()
1239- sql_where_clause : Union [ Composed , SQL ] = SQL ("" )
1239+ sql_where_clause : Composed | SQL = SQL ("" )
12401240 if filters :
12411241 sql_where_clause , where_params = _convert_filters_to_where_clause_and_params (
12421242 filters = filters , operator = "AND"
@@ -1252,7 +1252,7 @@ def _keyword_retrieval(
12521252 self ,
12531253 query : str ,
12541254 * ,
1255- filters : Optional [ dict [str , Any ]] = None ,
1255+ filters : dict [str , Any ] | None = None ,
12561256 top_k : int = 10 ,
12571257 ) -> list [Document ]:
12581258 """
@@ -1287,7 +1287,7 @@ async def _keyword_retrieval_async(
12871287 self ,
12881288 query : str ,
12891289 * ,
1290- filters : Optional [ dict [str , Any ]] = None ,
1290+ filters : dict [str , Any ] | None = None ,
12911291 top_k : int = 10 ,
12921292 ) -> list [Document ]:
12931293 """
@@ -1315,9 +1315,9 @@ async def _keyword_retrieval_async(
13151315 def _check_and_build_embedding_retrieval_query (
13161316 self ,
13171317 query_embedding : list [float ],
1318- vector_function : Optional [ Literal ["cosine_similarity" , "inner_product" , "l2_distance" ]] ,
1318+ vector_function : Literal ["cosine_similarity" , "inner_product" , "l2_distance" ] | None ,
13191319 top_k : int ,
1320- filters : Optional [ dict [str , Any ]] = None ,
1320+ filters : dict [str , Any ] | None = None ,
13211321 ) -> tuple [Composed , tuple ]:
13221322 """
13231323 Performs checks and builds the SQL query and the where parameters for embedding retrieval.
@@ -1357,7 +1357,7 @@ def _check_and_build_embedding_retrieval_query(
13571357 score = SQL (score_definition ),
13581358 )
13591359
1360- sql_where_clause : Union [ Composed , SQL ] = SQL ("" )
1360+ sql_where_clause : Composed | SQL = SQL ("" )
13611361 params = ()
13621362 if filters :
13631363 sql_where_clause , params = _convert_filters_to_where_clause_and_params (filters )
@@ -1379,9 +1379,9 @@ def _embedding_retrieval(
13791379 self ,
13801380 query_embedding : list [float ],
13811381 * ,
1382- filters : Optional [ dict [str , Any ]] = None ,
1382+ filters : dict [str , Any ] | None = None ,
13831383 top_k : int = 10 ,
1384- vector_function : Optional [ Literal ["cosine_similarity" , "inner_product" , "l2_distance" ]] = None ,
1384+ vector_function : Literal ["cosine_similarity" , "inner_product" , "l2_distance" ] | None = None ,
13851385 ) -> list [Document ]:
13861386 """
13871387 Retrieves documents that are most similar to the query embedding using a vector similarity metric.
@@ -1413,9 +1413,9 @@ async def _embedding_retrieval_async(
14131413 self ,
14141414 query_embedding : list [float ],
14151415 * ,
1416- filters : Optional [ dict [str , Any ]] = None ,
1416+ filters : dict [str , Any ] | None = None ,
14171417 top_k : int = 10 ,
1418- vector_function : Optional [ Literal ["cosine_similarity" , "inner_product" , "l2_distance" ]] = None ,
1418+ vector_function : Literal ["cosine_similarity" , "inner_product" , "l2_distance" ] | None = None ,
14191419 ) -> list [Document ]:
14201420 """
14211421 Asynchronously retrieves documents that are most similar to the query embedding using a
0 commit comments