mirror of
https://github.com/hwchase17/langchain.git
synced 2025-07-04 12:18:24 +00:00
cli[minor]: Fix bug to account for name changes (#20948)
* Fix bug to account for name changes / aliases * Generate migration list from langchain to langchain_core
This commit is contained in:
parent
989e4a92c2
commit
8ed150b2fe
@ -961,7 +961,7 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.callbacks.streamlit._InternalStreamlitCallbackHandler",
|
"langchain.callbacks.streamlit._InternalStreamlitCallbackHandler",
|
||||||
"langchain_community.callbacks.streamlit.streamlit_callback_handler._InternalStreamlitCallbackHandler"
|
"langchain_community.callbacks.streamlit.streamlit_callback_handler.StreamlitCallbackHandler"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.callbacks.streamlit.mutable_expander.ChildType",
|
"langchain.callbacks.streamlit.mutable_expander.ChildType",
|
||||||
@ -1953,7 +1953,7 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.document_loaders.PagedPDFSplitter",
|
"langchain.document_loaders.PagedPDFSplitter",
|
||||||
"langchain_community.document_loaders.pdf.PagedPDFSplitter"
|
"langchain_community.document_loaders.PyPDFLoader"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.document_loaders.PlaywrightURLLoader",
|
"langchain.document_loaders.PlaywrightURLLoader",
|
||||||
@ -2069,7 +2069,7 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.document_loaders.TelegramChatLoader",
|
"langchain.document_loaders.TelegramChatLoader",
|
||||||
"langchain_community.document_loaders.telegram.TelegramChatLoader"
|
"langchain_community.document_loaders.TelegramChatLoader"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.document_loaders.TensorflowDatasetLoader",
|
"langchain.document_loaders.TensorflowDatasetLoader",
|
||||||
@ -3377,7 +3377,7 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.embeddings.SentenceTransformerEmbeddings",
|
"langchain.embeddings.SentenceTransformerEmbeddings",
|
||||||
"langchain_community.embeddings.huggingface.SentenceTransformerEmbeddings"
|
"langchain_community.embeddings.SentenceTransformerEmbeddings"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.embeddings.GooglePalmEmbeddings",
|
"langchain.embeddings.GooglePalmEmbeddings",
|
||||||
@ -3673,7 +3673,7 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.embeddings.sentence_transformer.SentenceTransformerEmbeddings",
|
"langchain.embeddings.sentence_transformer.SentenceTransformerEmbeddings",
|
||||||
"langchain_community.embeddings.huggingface.SentenceTransformerEmbeddings"
|
"langchain_community.embeddings.SentenceTransformerEmbeddings"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.embeddings.spacy_embeddings.SpacyEmbeddings",
|
"langchain.embeddings.spacy_embeddings.SpacyEmbeddings",
|
||||||
@ -4905,7 +4905,7 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.requests.RequestsWrapper",
|
"langchain.requests.RequestsWrapper",
|
||||||
"langchain_community.utilities.requests.RequestsWrapper"
|
"langchain_community.utilities.TextRequestsWrapper"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.requests.TextRequestsWrapper",
|
"langchain.requests.TextRequestsWrapper",
|
||||||
@ -7113,7 +7113,7 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.utilities.RequestsWrapper",
|
"langchain.utilities.RequestsWrapper",
|
||||||
"langchain_community.utilities.requests.RequestsWrapper"
|
"langchain_community.utilities.TextRequestsWrapper"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.utilities.SteamWebAPIWrapper",
|
"langchain.utilities.SteamWebAPIWrapper",
|
||||||
@ -7409,7 +7409,7 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.utilities.requests.RequestsWrapper",
|
"langchain.utilities.requests.RequestsWrapper",
|
||||||
"langchain_community.utilities.requests.RequestsWrapper"
|
"langchain_community.utilities.TextRequestsWrapper"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"langchain.utilities.scenexplain.SceneXplainAPIWrapper",
|
"langchain.utilities.scenexplain.SceneXplainAPIWrapper",
|
File diff suppressed because it is too large
Load Diff
@ -54,7 +54,7 @@ PARTNERS = [
|
|||||||
|
|
||||||
def _load_migrations_from_fixtures() -> List[Tuple[str, str]]:
|
def _load_migrations_from_fixtures() -> List[Tuple[str, str]]:
|
||||||
"""Load migrations from fixtures."""
|
"""Load migrations from fixtures."""
|
||||||
paths: List[str] = PARTNERS + ["langchain.json"]
|
paths: List[str] = PARTNERS + ["langchain_to_langchain_community.json"]
|
||||||
data = []
|
data = []
|
||||||
for path in paths:
|
for path in paths:
|
||||||
data.extend(_load_migrations_by_file(path))
|
data.extend(_load_migrations_by_file(path))
|
||||||
|
@ -5,11 +5,11 @@ import pkgutil
|
|||||||
from typing import List, Tuple
|
from typing import List, Tuple
|
||||||
|
|
||||||
|
|
||||||
def generate_raw_migrations_to_community() -> List[Tuple[str, str]]:
|
def generate_raw_migrations(
|
||||||
|
from_package: str, to_package: str
|
||||||
|
) -> List[Tuple[str, str]]:
|
||||||
"""Scan the `langchain` package and generate migrations for all modules."""
|
"""Scan the `langchain` package and generate migrations for all modules."""
|
||||||
import langchain as package
|
package = importlib.import_module(from_package)
|
||||||
|
|
||||||
to_package = "langchain_community"
|
|
||||||
|
|
||||||
items = []
|
items = []
|
||||||
for importer, modname, ispkg in pkgutil.walk_packages(
|
for importer, modname, ispkg in pkgutil.walk_packages(
|
||||||
@ -36,7 +36,9 @@ def generate_raw_migrations_to_community() -> List[Tuple[str, str]]:
|
|||||||
continue
|
continue
|
||||||
if obj and (inspect.isclass(obj) or inspect.isfunction(obj)):
|
if obj and (inspect.isclass(obj) or inspect.isfunction(obj)):
|
||||||
if obj.__module__.startswith(to_package):
|
if obj.__module__.startswith(to_package):
|
||||||
items.append((f"{modname}.{name}", f"{obj.__module__}.{name}"))
|
items.append(
|
||||||
|
(f"{modname}.{name}", f"{obj.__module__}.{obj.__name__}")
|
||||||
|
)
|
||||||
|
|
||||||
# Iterate over all members of the module
|
# Iterate over all members of the module
|
||||||
for name, obj in inspect.getmembers(module):
|
for name, obj in inspect.getmembers(module):
|
||||||
@ -44,12 +46,14 @@ def generate_raw_migrations_to_community() -> List[Tuple[str, str]]:
|
|||||||
if inspect.isclass(obj) or inspect.isfunction(obj):
|
if inspect.isclass(obj) or inspect.isfunction(obj):
|
||||||
# Check if the module name of the obj starts with 'langchain_community'
|
# Check if the module name of the obj starts with 'langchain_community'
|
||||||
if obj.__module__.startswith(to_package):
|
if obj.__module__.startswith(to_package):
|
||||||
items.append((f"{modname}.{name}", f"{obj.__module__}.{name}"))
|
items.append(
|
||||||
|
(f"{modname}.{name}", f"{obj.__module__}.{obj.__name__}")
|
||||||
|
)
|
||||||
|
|
||||||
return items
|
return items
|
||||||
|
|
||||||
|
|
||||||
def generate_top_level_imports_community() -> List[Tuple[str, str]]:
|
def generate_top_level_imports(pkg: str) -> List[Tuple[str, str]]:
|
||||||
"""This code will look at all the top level modules in langchain_community.
|
"""This code will look at all the top level modules in langchain_community.
|
||||||
|
|
||||||
It'll attempt to import everything from each __init__ file
|
It'll attempt to import everything from each __init__ file
|
||||||
@ -73,7 +77,9 @@ def generate_top_level_imports_community() -> List[Tuple[str, str]]:
|
|||||||
to importing it from the top level namespaces
|
to importing it from the top level namespaces
|
||||||
(e.g., langchain_community.chat_models.XYZ)
|
(e.g., langchain_community.chat_models.XYZ)
|
||||||
"""
|
"""
|
||||||
import langchain_community as package
|
import importlib
|
||||||
|
|
||||||
|
package = importlib.import_module(pkg)
|
||||||
|
|
||||||
items = []
|
items = []
|
||||||
# Only iterate through top-level modules/packages
|
# Only iterate through top-level modules/packages
|
||||||
@ -105,10 +111,12 @@ def generate_top_level_imports_community() -> List[Tuple[str, str]]:
|
|||||||
return items
|
return items
|
||||||
|
|
||||||
|
|
||||||
def generate_simplified_migrations() -> List[Tuple[str, str]]:
|
def generate_simplified_migrations(
|
||||||
|
from_package: str, to_package: str
|
||||||
|
) -> List[Tuple[str, str]]:
|
||||||
"""Get all the raw migrations, then simplify them if possible."""
|
"""Get all the raw migrations, then simplify them if possible."""
|
||||||
raw_migrations = generate_raw_migrations_to_community()
|
raw_migrations = generate_raw_migrations(from_package, to_package)
|
||||||
top_level_simplifications = generate_top_level_imports_community()
|
top_level_simplifications = generate_top_level_imports(to_package)
|
||||||
top_level_dict = {full: top_level for full, top_level in top_level_simplifications}
|
top_level_dict = {full: top_level for full, top_level in top_level_simplifications}
|
||||||
simple_migrations = []
|
simple_migrations = []
|
||||||
for migration in raw_migrations:
|
for migration in raw_migrations:
|
@ -4,7 +4,7 @@ import pkgutil
|
|||||||
|
|
||||||
import click
|
import click
|
||||||
|
|
||||||
from langchain_cli.namespaces.migrate.generate.langchain import (
|
from langchain_cli.namespaces.migrate.generate.generic import (
|
||||||
generate_simplified_migrations,
|
generate_simplified_migrations,
|
||||||
)
|
)
|
||||||
from langchain_cli.namespaces.migrate.generate.partner import (
|
from langchain_cli.namespaces.migrate.generate.partner import (
|
||||||
@ -19,15 +19,27 @@ def cli():
|
|||||||
|
|
||||||
|
|
||||||
@cli.command()
|
@cli.command()
|
||||||
|
@click.option(
|
||||||
|
"--pkg1",
|
||||||
|
default="langchain",
|
||||||
|
)
|
||||||
|
@click.option(
|
||||||
|
"--pkg2",
|
||||||
|
default="langchain_community",
|
||||||
|
)
|
||||||
@click.option(
|
@click.option(
|
||||||
"--output",
|
"--output",
|
||||||
default="langchain_migrations.json",
|
default=None,
|
||||||
help="Output file for the migration script.",
|
help="Output file for the migration script.",
|
||||||
)
|
)
|
||||||
def langchain(output: str) -> None:
|
def generic(pkg1: str, pkg2: str, output: str) -> None:
|
||||||
"""Generate a migration script."""
|
"""Generate a migration script."""
|
||||||
click.echo("Migration script generated.")
|
click.echo("Migration script generated.")
|
||||||
migrations = generate_simplified_migrations()
|
migrations = generate_simplified_migrations(pkg1, pkg2)
|
||||||
|
|
||||||
|
if output is None:
|
||||||
|
output = f"{pkg1}_to_{pkg2}.json"
|
||||||
|
|
||||||
with open(output, "w") as f:
|
with open(output, "w") as f:
|
||||||
f.write(json.dumps(migrations, indent=2, sort_keys=True))
|
f.write(json.dumps(migrations, indent=2, sort_keys=True))
|
||||||
|
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
from langchain_cli.namespaces.migrate.generate.langchain import (
|
from langchain_cli.namespaces.migrate.generate.generic import (
|
||||||
generate_simplified_migrations,
|
generate_simplified_migrations,
|
||||||
|
generate_raw_migrations,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_create_json_agent_migration() -> None:
|
def test_create_json_agent_migration() -> None:
|
||||||
"""Test the migration of create_json_agent from langchain to langchain_community."""
|
"""Test the migration of create_json_agent from langchain to langchain_community."""
|
||||||
raw_migrations = generate_simplified_migrations()
|
raw_migrations = generate_simplified_migrations(
|
||||||
|
from_package="langchain", to_package="langchain_community"
|
||||||
|
)
|
||||||
json_agent_migrations = [
|
json_agent_migrations = [
|
||||||
migration for migration in raw_migrations if "create_json_agent" in migration[0]
|
migration for migration in raw_migrations if "create_json_agent" in migration[0]
|
||||||
]
|
]
|
||||||
@ -23,3 +26,20 @@ def test_create_json_agent_migration() -> None:
|
|||||||
"langchain_community.agent_toolkits.create_json_agent",
|
"langchain_community.agent_toolkits.create_json_agent",
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def test_create_single_store_retriever_db() -> None:
|
||||||
|
"""Test migration from langchain to langchain_core"""
|
||||||
|
raw_migrations = generate_simplified_migrations(
|
||||||
|
from_package="langchain", to_package="langchain_core"
|
||||||
|
)
|
||||||
|
# SingleStore was an old name for VectorStoreRetriever
|
||||||
|
single_store_migration = [
|
||||||
|
migration for migration in raw_migrations if "SingleStore" in migration[0]
|
||||||
|
]
|
||||||
|
assert single_store_migration == [
|
||||||
|
(
|
||||||
|
"langchain.vectorstores.singlestoredb.SingleStoreDBRetriever",
|
||||||
|
"langchain_core.vectorstores.VectorStoreRetriever",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user