mirror of
https://github.com/hwchase17/langchain.git
synced 2025-08-09 13:00:34 +00:00
core[patch]: Fix NPE in function_calling._get_python_function_required_args (#21863)
Example error message: line 206, in _get_python_function_required_args if is_function_type and required[0] == "self": ~~~~~~~~^^^ IndexError: list index out of range Thank you for contributing to LangChain! - [x] **PR title**: "package: description" - Where "package" is whichever of langchain, community, core, experimental, etc. is being modified. Use "docs: ..." for purely docs changes, "templates: ..." for template changes, "infra: ..." for CI changes. - Example: "community: add foobar LLM" - [x] **PR message**: ***Delete this entire checklist*** and replace with - **Description:** a description of the change - **Issue:** the issue # it fixes, if applicable - **Dependencies:** any dependencies required for this change - **Twitter handle:** if your PR gets announced, and you'd like a mention, we'll gladly shout you out! - [x] **Add tests and docs**: If you're adding a new integration, please include 1. a test for the integration, preferably unit tests that do not rely on network access, 2. an example notebook showing its use. It lives in `docs/docs/integrations` directory. - [x] **Lint and test**: Run `make format`, `make lint` and `make test` from the root of the package(s) you've modified. See contribution guidelines for more: https://python.langchain.com/docs/contributing/ Additional guidelines: - Make sure optional dependencies are imported within a function. - Please do not add dependencies to pyproject.toml files (even optional ones) unless they are required for unit tests. - Most PRs should not touch more than one package. - Changes should be backwards compatible. - If you are adding something to community, do not re-import it in langchain. If no one reviews your PR within a few days, please @-mention one of baskaryan, efriis, eyurtsev, hwchase17. --------- Co-authored-by: Bagatur <baskaryan@gmail.com>
This commit is contained in:
parent
332ffed393
commit
7a5e1bcf99
@ -203,9 +203,9 @@ def _get_python_function_required_args(function: Callable) -> List[str]:
|
|||||||
|
|
||||||
is_function_type = isinstance(function, FunctionType)
|
is_function_type = isinstance(function, FunctionType)
|
||||||
is_method_type = isinstance(function, MethodType)
|
is_method_type = isinstance(function, MethodType)
|
||||||
if is_function_type and required[0] == "self":
|
if required and is_function_type and required[0] == "self":
|
||||||
required = required[1:]
|
required = required[1:]
|
||||||
elif is_method_type and required[0] == "cls":
|
elif required and is_method_type and required[0] == "cls":
|
||||||
required = required[1:]
|
required = required[1:]
|
||||||
return required
|
return required
|
||||||
|
|
||||||
|
@ -146,6 +146,16 @@ def test_function_optional_param() -> None:
|
|||||||
assert set(req) == {"b"}
|
assert set(req) == {"b"}
|
||||||
|
|
||||||
|
|
||||||
|
def test_function_no_params() -> None:
|
||||||
|
def nullary_function() -> None:
|
||||||
|
"""nullary function"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
func = convert_to_openai_function(nullary_function)
|
||||||
|
req = func["parameters"]["required"]
|
||||||
|
assert not req
|
||||||
|
|
||||||
|
|
||||||
class FakeCall(BaseModel):
|
class FakeCall(BaseModel):
|
||||||
data: str
|
data: str
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user