mirror of
https://github.com/hwchase17/langchain.git
synced 2026-03-18 02:53:16 +00:00
54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
"""Migration as Grit file."""
|
|
|
|
|
|
def split_package(package: str) -> tuple[str, str]:
|
|
"""Split a package name into the containing package and the final name.
|
|
|
|
Args:
|
|
package: The full package name.
|
|
|
|
Returns:
|
|
A tuple of `(containing_package, final_name)`.
|
|
"""
|
|
parts = package.split(".")
|
|
return ".".join(parts[:-1]), parts[-1]
|
|
|
|
|
|
def dump_migrations_as_grit(name: str, migration_pairs: list[tuple[str, str]]) -> str:
|
|
"""Dump the migration pairs as a Grit file.
|
|
|
|
Args:
|
|
name: The name of the migration.
|
|
migration_pairs: A list of tuples `(from_module, to_module)`.
|
|
|
|
Returns:
|
|
The Grit file as a string.
|
|
"""
|
|
remapped = ",\n".join(
|
|
[
|
|
f"""
|
|
[
|
|
`{split_package(from_module)[0]}`,
|
|
`{split_package(from_module)[1]}`,
|
|
`{split_package(to_module)[0]}`,
|
|
`{split_package(to_module)[1]}`
|
|
]
|
|
"""
|
|
for from_module, to_module in migration_pairs
|
|
],
|
|
)
|
|
pattern_name = f"langchain_migrate_{name}"
|
|
return f"""
|
|
language python
|
|
|
|
// This migration is generated automatically - do not manually edit this file
|
|
pattern {pattern_name}() {{
|
|
find_replace_imports(list=[
|
|
{remapped}
|
|
])
|
|
}}
|
|
|
|
// Add this for invoking directly
|
|
{pattern_name}()
|
|
"""
|