Skip to content

Commit

Permalink
langchain[patch]: Migrate output parsers to support optional communit…
Browse files Browse the repository at this point in the history
…y imports (#21103)

Migrate output parsers
  • Loading branch information
eyurtsev committed Apr 30, 2024
1 parent 3853fe9 commit 9e788f0
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 11 deletions.
21 changes: 21 additions & 0 deletions libs/langchain/langchain/output_parsers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
Serializable, Generation, PromptValue
""" # noqa: E501
from typing import TYPE_CHECKING, Any

from langchain_core.output_parsers import (
CommaSeparatedListOutputParser,
ListOutputParser,
Expand All @@ -26,6 +28,7 @@
PydanticToolsParser,
)

from langchain._api import create_importer
from langchain.output_parsers.boolean import BooleanOutputParser
from langchain.output_parsers.combining import CombiningOutputParser
from langchain.output_parsers.datetime import DatetimeOutputParser
Expand All @@ -39,6 +42,24 @@
from langchain.output_parsers.structured import ResponseSchema, StructuredOutputParser
from langchain.output_parsers.yaml import YamlOutputParser

if TYPE_CHECKING:
from langchain_community.output_parsers.rail_parser import GuardrailsOutputParser

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"GuardrailsOutputParser": "langchain_community.output_parsers.rail_parser"
}

_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"BooleanOutputParser",
"CombiningOutputParser",
Expand Down
44 changes: 37 additions & 7 deletions libs/langchain/langchain/output_parsers/ernie_functions.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,40 @@
from langchain_community.output_parsers.ernie_functions import (
JsonKeyOutputFunctionsParser,
JsonOutputFunctionsParser,
OutputFunctionsParser,
PydanticAttrOutputFunctionsParser,
PydanticOutputFunctionsParser,
)
from typing import TYPE_CHECKING, Any

from langchain._api import create_importer

if TYPE_CHECKING:
from langchain_community.output_parsers.ernie_functions import (
JsonKeyOutputFunctionsParser,
JsonOutputFunctionsParser,
OutputFunctionsParser,
PydanticAttrOutputFunctionsParser,
PydanticOutputFunctionsParser,
)

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"JsonKeyOutputFunctionsParser": (
"langchain_community.output_parsers.ernie_functions"
),
"JsonOutputFunctionsParser": "langchain_community.output_parsers.ernie_functions",
"OutputFunctionsParser": "langchain_community.output_parsers.ernie_functions",
"PydanticAttrOutputFunctionsParser": (
"langchain_community.output_parsers.ernie_functions"
),
"PydanticOutputFunctionsParser": (
"langchain_community.output_parsers.ernie_functions"
),
}

_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"JsonKeyOutputFunctionsParser",
Expand Down
28 changes: 24 additions & 4 deletions libs/langchain/langchain/output_parsers/rail_parser.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
from langchain_community.output_parsers.rail_parser import (
GuardrailsOutputParser,
)
from typing import TYPE_CHECKING, Any

__all__ = ["GuardrailsOutputParser"]
from langchain._api import create_importer

if TYPE_CHECKING:
from langchain_community.output_parsers.rail_parser import GuardrailsOutputParser

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"GuardrailsOutputParser": "langchain_community.output_parsers.rail_parser"
}

_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"GuardrailsOutputParser",
]

0 comments on commit 9e788f0

Please sign in to comment.