1515from __future__ import annotations
1616
1717import json
18- from typing import Any , AsyncIterator , Callable , Dict , Iterable , List , Optional
18+ from typing import Any , AsyncIterator , Callable , Iterable , Optional
1919
2020from langchain_core .document_loaders .base import BaseLoader
2121from langchain_core .documents import Document
2828DEFAULT_METADATA_COL = "langchain_metadata"
2929
3030
31- def text_formatter (row : dict , content_columns : List [str ]) -> str :
31+ def text_formatter (row : dict , content_columns : list [str ]) -> str :
3232 """txt document formatter."""
3333 return " " .join (str (row [column ]) for column in content_columns if column in row )
3434
3535
36- def csv_formatter (row : dict , content_columns : List [str ]) -> str :
36+ def csv_formatter (row : dict , content_columns : list [str ]) -> str :
3737 """CSV document formatter."""
3838 return ", " .join (str (row [column ]) for column in content_columns if column in row )
3939
4040
41- def yaml_formatter (row : dict , content_columns : List [str ]) -> str :
41+ def yaml_formatter (row : dict , content_columns : list [str ]) -> str :
4242 """YAML document formatter."""
4343 return "\n " .join (
4444 f"{ column } : { str (row [column ])} " for column in content_columns if column in row
4545 )
4646
4747
48- def json_formatter (row : dict , content_columns : List [str ]) -> str :
48+ def json_formatter (row : dict , content_columns : list [str ]) -> str :
4949 """JSON document formatter."""
5050 dictionary = {}
5151 for column in content_columns :
@@ -63,7 +63,7 @@ def _parse_doc_from_row(
6363) -> Document :
6464 """Parse row into document."""
6565 page_content = formatter (row , content_columns )
66- metadata : Dict [str , Any ] = {}
66+ metadata : dict [str , Any ] = {}
6767 # unnest metadata from langchain_metadata column
6868 if metadata_json_column and row .get (metadata_json_column ):
6969 for k , v in row [metadata_json_column ].items ():
@@ -81,10 +81,10 @@ def _parse_row_from_doc(
8181 column_names : Iterable [str ],
8282 content_column : str = DEFAULT_CONTENT_COL ,
8383 metadata_json_column : Optional [str ] = DEFAULT_METADATA_COL ,
84- ) -> Dict :
84+ ) -> dict :
8585 """Parse document into a dictionary of rows."""
8686 doc_metadata = doc .metadata .copy ()
87- row : Dict [str , Any ] = {content_column : doc .page_content }
87+ row : dict [str , Any ] = {content_column : doc .page_content }
8888 for entry in doc .metadata :
8989 if entry in column_names :
9090 row [entry ] = doc_metadata [entry ]
@@ -111,8 +111,8 @@ def __init__(
111111 key : object ,
112112 pool : AsyncEngine ,
113113 query : str ,
114- content_columns : List [str ],
115- metadata_columns : List [str ],
114+ content_columns : list [str ],
115+ metadata_columns : list [str ],
116116 formatter : Callable ,
117117 metadata_json_column : Optional [str ] = None ,
118118 ) -> None :
@@ -122,8 +122,8 @@ def __init__(
122122 key (object): Prevent direct constructor usage.
123123 engine (PostgresEngine): AsyncEngine with pool connection to the postgres database
124124 query (Optional[str], optional): SQL query. Defaults to None.
125- content_columns (Optional[List [str]], optional): Column that represent a Document's page_content. Defaults to the first column.
126- metadata_columns (Optional[List [str]], optional): Column(s) that represent a Document's metadata. Defaults to None.
125+ content_columns (Optional[list [str]], optional): Column that represent a Document's page_content. Defaults to the first column.
126+ metadata_columns (Optional[list [str]], optional): Column(s) that represent a Document's metadata. Defaults to None.
127127 formatter (Optional[Callable], optional): A function to format page content (OneOf: format, formatter). Defaults to None.
128128 metadata_json_column (Optional[str], optional): Column to store metadata as JSON. Defaults to "langchain_metadata".
129129
@@ -150,8 +150,8 @@ async def create(
150150 query : Optional [str ] = None ,
151151 table_name : Optional [str ] = None ,
152152 schema_name : str = "public" ,
153- content_columns : Optional [List [str ]] = None ,
154- metadata_columns : Optional [List [str ]] = None ,
153+ content_columns : Optional [list [str ]] = None ,
154+ metadata_columns : Optional [list [str ]] = None ,
155155 metadata_json_column : Optional [str ] = None ,
156156 format : Optional [str ] = None ,
157157 formatter : Optional [Callable ] = None ,
@@ -163,8 +163,8 @@ async def create(
163163 query (Optional[str], optional): SQL query. Defaults to None.
164164 table_name (Optional[str], optional): Name of table to query. Defaults to None.
165165 schema_name (str, optional): Database schema name of the table. Defaults to "public".
166- content_columns (Optional[List [str]], optional): Column that represent a Document's page_content. Defaults to the first column.
167- metadata_columns (Optional[List [str]], optional): Column(s) that represent a Document's metadata. Defaults to None.
166+ content_columns (Optional[list [str]], optional): Column that represent a Document's page_content. Defaults to the first column.
167+ metadata_columns (Optional[list [str]], optional): Column(s) that represent a Document's metadata. Defaults to None.
168168 metadata_json_column (Optional[str], optional): Column to store metadata as JSON. Defaults to "langchain_metadata".
169169 format (Optional[str], optional): Format of page content (OneOf: text, csv, YAML, JSON). Defaults to 'text'.
170170 formatter (Optional[Callable], optional): A function to format page content (OneOf: format, formatter). Defaults to None.
@@ -236,7 +236,7 @@ async def create(
236236 metadata_json_column ,
237237 )
238238
239- async def aload (self ) -> List [Document ]:
239+ async def aload (self ) -> list [Document ]:
240240 """Load PostgreSQL data into Document objects."""
241241 return [doc async for doc in self .alazy_load ()]
242242
@@ -280,7 +280,7 @@ def __init__(
280280 table_name : str ,
281281 content_column : str ,
282282 schema_name : str = "public" ,
283- metadata_columns : List [str ] = [],
283+ metadata_columns : list [str ] = [],
284284 metadata_json_column : Optional [str ] = None ,
285285 ):
286286 """AsyncPostgresDocumentSaver constructor.
@@ -289,9 +289,9 @@ def __init__(
289289 key (object): Prevent direct constructor usage.
290290 engine (PostgresEngine): AsyncEngine with pool connection to the postgres database
291291 table_name (Optional[str], optional): Name of table to query. Defaults to None.
292- content_columns (Optional[List [str]], optional): Column that represent a Document's page_content. Defaults to the first column.
292+ content_columns (Optional[list [str]], optional): Column that represent a Document's page_content. Defaults to the first column.
293293 schema_name (str, optional): Database schema name of the table. Defaults to "public".
294- metadata_columns (Optional[List [str]], optional): Column(s) that represent a Document's metadata. Defaults to None.
294+ metadata_columns (Optional[list [str]], optional): Column(s) that represent a Document's metadata. Defaults to None.
295295 metadata_json_column (Optional[str], optional): Column to store metadata as JSON. Defaults to "langchain_metadata".
296296
297297 Raises:
@@ -315,16 +315,16 @@ async def create(
315315 table_name : str ,
316316 schema_name : str = "public" ,
317317 content_column : str = DEFAULT_CONTENT_COL ,
318- metadata_columns : List [str ] = [],
318+ metadata_columns : list [str ] = [],
319319 metadata_json_column : Optional [str ] = DEFAULT_METADATA_COL ,
320320 ) -> AsyncPostgresDocumentSaver :
321321 """Create an AsyncPostgresDocumentSaver instance.
322322
323323 Args:
324324 engine (PostgresEngine):AsyncEngine with pool connection to the postgres database
325325 table_name (Optional[str], optional): Name of table to query. Defaults to None.
326- content_columns (Optional[List [str]], optional): Column that represent a Document's page_content. Defaults to the first column.
327- metadata_columns (Optional[List [str]], optional): Column(s) that represent a Document's metadata. Defaults to None.
326+ content_columns (Optional[list [str]], optional): Column that represent a Document's page_content. Defaults to the first column.
327+ metadata_columns (Optional[list [str]], optional): Column(s) that represent a Document's metadata. Defaults to None.
328328 metadata_json_column (Optional[str], optional): Column to store metadata as JSON. Defaults to "langchain_metadata".
329329
330330 Returns:
@@ -367,13 +367,13 @@ async def create(
367367 metadata_json_column ,
368368 )
369369
370- async def aadd_documents (self , docs : List [Document ]) -> None :
370+ async def aadd_documents (self , docs : list [Document ]) -> None :
371371 """
372372 Save documents in the DocumentSaver table. Document’s metadata is added to columns if found or
373373 stored in langchain_metadata JSON column.
374374
375375 Args:
376- docs (List [langchain_core.documents.Document]): a list of documents to be saved.
376+ docs (list [langchain_core.documents.Document]): a list of documents to be saved.
377377 """
378378
379379 for doc in docs :
@@ -411,13 +411,13 @@ async def aadd_documents(self, docs: List[Document]) -> None:
411411 await conn .execute (text (query ), row )
412412 await conn .commit ()
413413
414- async def adelete (self , docs : List [Document ]) -> None :
414+ async def adelete (self , docs : list [Document ]) -> None :
415415 """
416416 Delete all instances of a document from the DocumentSaver table by matching the entire Document
417417 object.
418418
419419 Args:
420- docs (List [langchain_core.documents.Document]): a list of documents to be deleted.
420+ docs (list [langchain_core.documents.Document]): a list of documents to be deleted.
421421 """
422422 for doc in docs :
423423 row = _parse_row_from_doc (
0 commit comments