langchain-postgres 0.0.18__tar.gz → 0.0.19__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/PKG-INFO +12 -14
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/README.md +11 -13
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/v2/async_vectorstore.py +13 -15
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/pyproject.toml +1 -1
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_async_pg_vectorstore.py +12 -58
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/uv.lock +4 -14
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/.github/actions/uv_setup/action.yml +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/.github/workflows/_lint.yml +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/.github/workflows/_release.yml +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/.github/workflows/_test.yml +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/.github/workflows/ci.yml +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/.gitignore +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/CONTRIBUTING.md +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/DEVELOPMENT.md +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/LICENSE +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/Makefile +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/docker-compose.yml +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/docs/v2_design_overview.md +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/examples/migrate_pgvector_to_pgvectorstore.ipynb +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/examples/migrate_pgvector_to_pgvectorstore.md +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/examples/pg_vectorstore.ipynb +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/examples/pg_vectorstore_how_to.ipynb +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/examples/vectorstore.ipynb +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/__init__.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/_utils.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/chat_message_histories.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/py.typed +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/translator.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/utils/pgvector_migrator.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/v2/__init__.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/v2/engine.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/v2/hybrid_search_config.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/v2/indexes.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/v2/vectorstores.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/vectorstores.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/security.md +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/__init__.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/__init__.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/fake_embeddings.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/fixtures/__init__.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/fixtures/filtering_test_cases.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/fixtures/metadata_filtering_data.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/query_constructors/__init__.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/query_constructors/test_pgvector.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/test_imports.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v1/__init__.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v1/test_chat_histories.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v1/test_vectorstore.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v1/test_vectorstore_standard_tests.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/__init__.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_async_pg_vectorstore_from_methods.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_async_pg_vectorstore_index.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_async_pg_vectorstore_search.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_engine.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_hybrid_search_config.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_indexes.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_pg_vectorstore.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_pg_vectorstore_from_methods.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_pg_vectorstore_index.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_pg_vectorstore_search.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_pg_vectorstore_standard_suite.py +0 -0
- {langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: langchain-postgres
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.19
|
|
4
4
|
Summary: An integration package connecting Postgres and LangChain
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -85,7 +85,7 @@ store = PGVectorStore.create_sync(
|
|
|
85
85
|
docs = [
|
|
86
86
|
Document(page_content="Apples and oranges"),
|
|
87
87
|
Document(page_content="Cars and airplanes"),
|
|
88
|
-
Document(page_content="Train")
|
|
88
|
+
Document(page_content="Train"),
|
|
89
89
|
]
|
|
90
90
|
|
|
91
91
|
store.add_documents(docs)
|
|
@@ -107,9 +107,7 @@ vs = PGVectorStore.create_sync(
|
|
|
107
107
|
engine=engine,
|
|
108
108
|
table_name=TABLE_NAME,
|
|
109
109
|
embedding_service=embedding,
|
|
110
|
-
hybrid_search_config=HybridSearchConfig(
|
|
111
|
-
fusion_function=reciprocal_rank_fusion
|
|
112
|
-
),
|
|
110
|
+
hybrid_search_config=HybridSearchConfig(fusion_function=reciprocal_rank_fusion),
|
|
113
111
|
)
|
|
114
112
|
hybrid_docs = vector_store.similarity_search("products", k=5)
|
|
115
113
|
```
|
|
@@ -138,7 +136,7 @@ import psycopg
|
|
|
138
136
|
|
|
139
137
|
# Establish a synchronous connection to the database
|
|
140
138
|
# (or use psycopg.AsyncConnection for async)
|
|
141
|
-
conn_info = ...
|
|
139
|
+
conn_info = ... # Fill in with your connection info
|
|
142
140
|
sync_connection = psycopg.connect(conn_info)
|
|
143
141
|
|
|
144
142
|
# Create the table schema (only needs to be done once)
|
|
@@ -149,17 +147,17 @@ session_id = str(uuid.uuid4())
|
|
|
149
147
|
|
|
150
148
|
# Initialize the chat history manager
|
|
151
149
|
chat_history = PostgresChatMessageHistory(
|
|
152
|
-
table_name,
|
|
153
|
-
session_id,
|
|
154
|
-
sync_connection=sync_connection
|
|
150
|
+
table_name, session_id, sync_connection=sync_connection
|
|
155
151
|
)
|
|
156
152
|
|
|
157
153
|
# Add messages to the chat history
|
|
158
|
-
chat_history.add_messages(
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
154
|
+
chat_history.add_messages(
|
|
155
|
+
[
|
|
156
|
+
SystemMessage(content="Meow"),
|
|
157
|
+
AIMessage(content="woof"),
|
|
158
|
+
HumanMessage(content="bark"),
|
|
159
|
+
]
|
|
160
|
+
)
|
|
163
161
|
|
|
164
162
|
print(chat_history.messages)
|
|
165
163
|
```
|
|
@@ -69,7 +69,7 @@ store = PGVectorStore.create_sync(
|
|
|
69
69
|
docs = [
|
|
70
70
|
Document(page_content="Apples and oranges"),
|
|
71
71
|
Document(page_content="Cars and airplanes"),
|
|
72
|
-
Document(page_content="Train")
|
|
72
|
+
Document(page_content="Train"),
|
|
73
73
|
]
|
|
74
74
|
|
|
75
75
|
store.add_documents(docs)
|
|
@@ -91,9 +91,7 @@ vs = PGVectorStore.create_sync(
|
|
|
91
91
|
engine=engine,
|
|
92
92
|
table_name=TABLE_NAME,
|
|
93
93
|
embedding_service=embedding,
|
|
94
|
-
hybrid_search_config=HybridSearchConfig(
|
|
95
|
-
fusion_function=reciprocal_rank_fusion
|
|
96
|
-
),
|
|
94
|
+
hybrid_search_config=HybridSearchConfig(fusion_function=reciprocal_rank_fusion),
|
|
97
95
|
)
|
|
98
96
|
hybrid_docs = vector_store.similarity_search("products", k=5)
|
|
99
97
|
```
|
|
@@ -122,7 +120,7 @@ import psycopg
|
|
|
122
120
|
|
|
123
121
|
# Establish a synchronous connection to the database
|
|
124
122
|
# (or use psycopg.AsyncConnection for async)
|
|
125
|
-
conn_info = ...
|
|
123
|
+
conn_info = ... # Fill in with your connection info
|
|
126
124
|
sync_connection = psycopg.connect(conn_info)
|
|
127
125
|
|
|
128
126
|
# Create the table schema (only needs to be done once)
|
|
@@ -133,17 +131,17 @@ session_id = str(uuid.uuid4())
|
|
|
133
131
|
|
|
134
132
|
# Initialize the chat history manager
|
|
135
133
|
chat_history = PostgresChatMessageHistory(
|
|
136
|
-
table_name,
|
|
137
|
-
session_id,
|
|
138
|
-
sync_connection=sync_connection
|
|
134
|
+
table_name, session_id, sync_connection=sync_connection
|
|
139
135
|
)
|
|
140
136
|
|
|
141
137
|
# Add messages to the chat history
|
|
142
|
-
chat_history.add_messages(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
138
|
+
chat_history.add_messages(
|
|
139
|
+
[
|
|
140
|
+
SystemMessage(content="Meow"),
|
|
141
|
+
AIMessage(content="woof"),
|
|
142
|
+
HumanMessage(content="bark"),
|
|
143
|
+
]
|
|
144
|
+
)
|
|
147
145
|
|
|
148
146
|
print(chat_history.messages)
|
|
149
147
|
```
|
{langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/v2/async_vectorstore.py
RENAMED
|
@@ -119,6 +119,15 @@ class AsyncPGVectorStore(VectorStore):
|
|
|
119
119
|
"Only create class through 'create' or 'create_sync' methods!"
|
|
120
120
|
)
|
|
121
121
|
|
|
122
|
+
if hasattr(embedding_service, "embed_query_inline") and not hasattr(
|
|
123
|
+
embedding_service, "embed_query_inline_template"
|
|
124
|
+
):
|
|
125
|
+
raise ValueError(
|
|
126
|
+
"The provided embedding_service is using an outdated inline embedding implementation "
|
|
127
|
+
"that is susceptible to SQL injection. Please update your package "
|
|
128
|
+
"to a version that supports 'embed_query_inline_template'."
|
|
129
|
+
)
|
|
130
|
+
|
|
122
131
|
self.engine = engine
|
|
123
132
|
self.embedding_service = embedding_service
|
|
124
133
|
self.table_name = table_name
|
|
@@ -295,8 +304,7 @@ class AsyncPGVectorStore(VectorStore):
|
|
|
295
304
|
self.embedding_service, "embed_query_inline_template", None
|
|
296
305
|
)
|
|
297
306
|
can_inline_embed_template = callable(inline_template_func)
|
|
298
|
-
|
|
299
|
-
can_inline_embed = callable(inline_embed_func)
|
|
307
|
+
|
|
300
308
|
# Insert embeddings
|
|
301
309
|
for id, content, embedding, metadata in zip(ids, texts, embeddings, metadatas):
|
|
302
310
|
metadata_col_names = (
|
|
@@ -319,8 +327,6 @@ class AsyncPGVectorStore(VectorStore):
|
|
|
319
327
|
|
|
320
328
|
if not embedding and can_inline_embed_template:
|
|
321
329
|
values_stmt = f"VALUES (:langchain_id, :content, {inline_template_func(':content')}" # type: ignore
|
|
322
|
-
elif not embedding and can_inline_embed:
|
|
323
|
-
values_stmt = f"VALUES (:langchain_id, :content, {self.embedding_service.embed_query_inline(content)}" # type: ignore
|
|
324
330
|
|
|
325
331
|
if self.hybrid_search_config and self.hybrid_search_config.tsv_column:
|
|
326
332
|
lang = (
|
|
@@ -392,8 +398,7 @@ class AsyncPGVectorStore(VectorStore):
|
|
|
392
398
|
inline_template_func = getattr(
|
|
393
399
|
self.embedding_service, "embed_query_inline_template", None
|
|
394
400
|
)
|
|
395
|
-
|
|
396
|
-
if callable(inline_template_func) or callable(inline_embed_func):
|
|
401
|
+
if callable(inline_template_func):
|
|
397
402
|
embeddings: list[list[float]] = [[] for _ in list(texts)]
|
|
398
403
|
else:
|
|
399
404
|
embeddings = await self.embedding_service.aembed_documents(list(texts))
|
|
@@ -676,15 +681,10 @@ class AsyncPGVectorStore(VectorStore):
|
|
|
676
681
|
inline_template_func = getattr(
|
|
677
682
|
self.embedding_service, "embed_query_inline_template", None
|
|
678
683
|
)
|
|
679
|
-
inline_embed_func = getattr(self.embedding_service, "embed_query_inline", None)
|
|
680
684
|
param_dict: dict[str, Any] = {"dense_limit": dense_limit}
|
|
681
685
|
if not embedding and callable(inline_template_func) and "query" in kwargs:
|
|
682
686
|
embedding_data_string = inline_template_func(":query_text")
|
|
683
687
|
param_dict["query_text"] = kwargs["query"]
|
|
684
|
-
elif not embedding and callable(inline_embed_func) and "query" in kwargs:
|
|
685
|
-
query_embedding = self.embedding_service.embed_query_inline(kwargs["query"]) # type: ignore
|
|
686
|
-
embedding_data_string = f"{query_embedding}"
|
|
687
|
-
param_dict["query_embedding"] = query_embedding
|
|
688
688
|
else:
|
|
689
689
|
query_embedding = f"{[float(dimension) for dimension in embedding]}"
|
|
690
690
|
embedding_data_string = ":query_embedding"
|
|
@@ -789,10 +789,9 @@ class AsyncPGVectorStore(VectorStore):
|
|
|
789
789
|
inline_template_func = getattr(
|
|
790
790
|
self.embedding_service, "embed_query_inline_template", None
|
|
791
791
|
)
|
|
792
|
-
inline_embed_func = getattr(self.embedding_service, "embed_query_inline", None)
|
|
793
792
|
embedding = (
|
|
794
793
|
[]
|
|
795
|
-
if callable(inline_template_func)
|
|
794
|
+
if callable(inline_template_func)
|
|
796
795
|
else await self.embedding_service.aembed_query(text=query)
|
|
797
796
|
)
|
|
798
797
|
kwargs["query"] = query
|
|
@@ -831,10 +830,9 @@ class AsyncPGVectorStore(VectorStore):
|
|
|
831
830
|
inline_template_func = getattr(
|
|
832
831
|
self.embedding_service, "embed_query_inline_template", None
|
|
833
832
|
)
|
|
834
|
-
inline_embed_func = getattr(self.embedding_service, "embed_query_inline", None)
|
|
835
833
|
embedding = (
|
|
836
834
|
[]
|
|
837
|
-
if callable(inline_template_func)
|
|
835
|
+
if callable(inline_template_func)
|
|
838
836
|
else await self.embedding_service.aembed_query(text=query)
|
|
839
837
|
)
|
|
840
838
|
kwargs["query"] = query
|
|
@@ -572,36 +572,6 @@ class TestVectorStore:
|
|
|
572
572
|
assert ":content, embedding('model_id', :content)::vector" in sql_text
|
|
573
573
|
assert params["content"] == "hello world"
|
|
574
574
|
|
|
575
|
-
async def test_aadd_embeddings_with_legacy_inline(self) -> None:
|
|
576
|
-
class LegacyEmbeddings(Embeddings):
|
|
577
|
-
def embed_documents(self, texts: list[str]) -> list[list[float]]:
|
|
578
|
-
return []
|
|
579
|
-
|
|
580
|
-
def embed_query(self, text: str) -> list[float]:
|
|
581
|
-
return []
|
|
582
|
-
|
|
583
|
-
def embed_query_inline(self, query: str) -> str:
|
|
584
|
-
return f"embedding('model_id', '{query}')::vector"
|
|
585
|
-
|
|
586
|
-
mock_conn = AsyncMock()
|
|
587
|
-
mock_engine = MagicMock()
|
|
588
|
-
mock_engine.connect.return_value.__aenter__.return_value = mock_conn
|
|
589
|
-
mock_engine.connect.return_value.__aexit__.return_value = None
|
|
590
|
-
|
|
591
|
-
create_key = getattr(AsyncPGVectorStore, "_AsyncPGVectorStore__create_key")
|
|
592
|
-
vs = AsyncPGVectorStore(
|
|
593
|
-
create_key,
|
|
594
|
-
engine=mock_engine,
|
|
595
|
-
embedding_service=LegacyEmbeddings(),
|
|
596
|
-
table_name="test_table",
|
|
597
|
-
)
|
|
598
|
-
await vs.aadd_embeddings(texts=["hello world"], embeddings=[[]])
|
|
599
|
-
call_args = mock_conn.execute.call_args
|
|
600
|
-
sql_text = str(call_args[0][0])
|
|
601
|
-
params = call_args[0][1]
|
|
602
|
-
assert "embedding('model_id', 'hello world')::vector" in sql_text
|
|
603
|
-
assert params["content"] == "hello world"
|
|
604
|
-
|
|
605
575
|
async def test_asimilarity_search_with_inline_template(self) -> None:
|
|
606
576
|
class TemplateEmbeddings(Embeddings):
|
|
607
577
|
def embed_documents(self, texts: list[str]) -> list[list[float]]:
|
|
@@ -638,8 +608,8 @@ class TestVectorStore:
|
|
|
638
608
|
assert "embedding('model_id', :query_text)::vector" in sql_text
|
|
639
609
|
assert params["query_text"] == "search query"
|
|
640
610
|
|
|
641
|
-
async def
|
|
642
|
-
class
|
|
611
|
+
async def test_init_raises_for_outdated_inline_embedding(self) -> None:
|
|
612
|
+
class OutdatedAlloyDBEmbeddings(Embeddings):
|
|
643
613
|
def embed_documents(self, texts: list[str]) -> list[list[float]]:
|
|
644
614
|
return []
|
|
645
615
|
|
|
@@ -649,30 +619,14 @@ class TestVectorStore:
|
|
|
649
619
|
def embed_query_inline(self, query: str) -> str:
|
|
650
620
|
return f"embedding('model_id', '{query}')::vector"
|
|
651
621
|
|
|
652
|
-
mock_conn = AsyncMock()
|
|
653
|
-
mock_result = MagicMock()
|
|
654
|
-
mock_result.mappings.return_value.fetchall.return_value = []
|
|
655
|
-
mock_conn.execute.return_value = mock_result
|
|
656
|
-
|
|
657
|
-
mock_engine = MagicMock()
|
|
658
|
-
mock_engine.connect.return_value.__aenter__.return_value = mock_conn
|
|
659
|
-
mock_engine.connect.return_value.__aexit__.return_value = None
|
|
660
|
-
|
|
661
622
|
create_key = getattr(AsyncPGVectorStore, "_AsyncPGVectorStore__create_key")
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
sql_text = str(call_args[0][0])
|
|
673
|
-
params = call_args[0][1]
|
|
674
|
-
assert "embedding('model_id', 'legacy search')::vector" in sql_text
|
|
675
|
-
assert (
|
|
676
|
-
params["query_embedding"]
|
|
677
|
-
== "embedding('model_id', 'legacy search')::vector"
|
|
678
|
-
)
|
|
623
|
+
|
|
624
|
+
with pytest.raises(
|
|
625
|
+
ValueError, match="outdated inline embedding implementation"
|
|
626
|
+
):
|
|
627
|
+
AsyncPGVectorStore(
|
|
628
|
+
create_key,
|
|
629
|
+
engine=None, # type: ignore
|
|
630
|
+
embedding_service=OutdatedAlloyDBEmbeddings(),
|
|
631
|
+
table_name="test_table",
|
|
632
|
+
)
|
|
@@ -21,17 +21,16 @@ wheels = [
|
|
|
21
21
|
|
|
22
22
|
[[package]]
|
|
23
23
|
name = "anyio"
|
|
24
|
-
version = "4.
|
|
24
|
+
version = "4.14.2"
|
|
25
25
|
source = { registry = "https://pypi.org/simple" }
|
|
26
26
|
dependencies = [
|
|
27
27
|
{ name = "exceptiongroup", marker = "python_full_version < '3.11'" },
|
|
28
28
|
{ name = "idna" },
|
|
29
|
-
{ name = "sniffio" },
|
|
30
29
|
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
|
31
30
|
]
|
|
32
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
31
|
+
sdist = { url = "https://files.pythonhosted.org/packages/61/cc/a381afa6efea9f496eff839d4a6a1aed3bfafc7b3ab4b0d1b243a12573dd/anyio-4.14.2.tar.gz", hash = "sha256:cfa139f3ed1a23ee8f88a145ddb5ac7605b8bbfd8592baacd7ce3d8bb4313c7f", size = 260176, upload-time = "2026-07-12T20:29:07.082Z" }
|
|
33
32
|
wheels = [
|
|
34
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
33
|
+
{ url = "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl", hash = "sha256:9f505dda5ac9f0c8309b5e8bd445a8c2bf7246f3ce950121e45ea15bc41d1494", size = 125813, upload-time = "2026-07-12T20:29:05.763Z" },
|
|
35
34
|
]
|
|
36
35
|
|
|
37
36
|
[[package]]
|
|
@@ -568,7 +567,7 @@ wheels = [
|
|
|
568
567
|
|
|
569
568
|
[[package]]
|
|
570
569
|
name = "langchain-postgres"
|
|
571
|
-
version = "0.0.
|
|
570
|
+
version = "0.0.19"
|
|
572
571
|
source = { editable = "." }
|
|
573
572
|
dependencies = [
|
|
574
573
|
{ name = "asyncpg" },
|
|
@@ -1511,15 +1510,6 @@ wheels = [
|
|
|
1511
1510
|
{ url = "https://files.pythonhosted.org/packages/b8/81/4b6387be7014858d924b843530e1b2a8e531846807516e9bea2ee0936bf7/ruff-0.14.1-py3-none-win_arm64.whl", hash = "sha256:e3b443c4c9f16ae850906b8d0a707b2a4c16f8d2f0a7fe65c475c5886665ce44", size = 12436636, upload-time = "2025-10-16T18:05:38.995Z" },
|
|
1512
1511
|
]
|
|
1513
1512
|
|
|
1514
|
-
[[package]]
|
|
1515
|
-
name = "sniffio"
|
|
1516
|
-
version = "1.3.1"
|
|
1517
|
-
source = { registry = "https://pypi.org/simple" }
|
|
1518
|
-
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" }
|
|
1519
|
-
wheels = [
|
|
1520
|
-
{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" },
|
|
1521
|
-
]
|
|
1522
|
-
|
|
1523
1513
|
[[package]]
|
|
1524
1514
|
name = "sqlalchemy"
|
|
1525
1515
|
version = "2.0.44"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/examples/pg_vectorstore_how_to.ipynb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/chat_message_histories.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/langchain_postgres/v2/vectorstores.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/fixtures/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v1/test_chat_histories.py
RENAMED
|
File without changes
|
{langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v1/test_vectorstore.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_postgres-0.0.18 → langchain_postgres-0.0.19}/tests/unit_tests/v2/test_pg_vectorstore.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|