You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
langchain/libs/core/langchain_core/output_parsers
ale-delfino 0df76bee37
core[patch]:: XML parser to cover the case when the xml only contains the root level tag (#17456)
Description: Fix xml parser to handle strings that only contain the root
tag
Issue: N/A
Dependencies: None
Twitter handle: N/A

A valid xml text can contain only the root level tag. Example: <body>
  Some text here
</body>
The example above is a valid xml string. If parsed with the current
implementation the result is {"body": []}. This fix checks if the root
level text contains any non-whitespace character and if that's the case
it returns {root.tag: root.text}. The result is that the above text is
correctly parsed as {"body": "Some text here"}

@ale-delfino

Thank you for contributing to LangChain!

Checklist:

- [x] PR title: Please title your PR "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 template message** and replace it
with the following bulleted list
    - **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] Pass lint and test: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified to check that you're
passing lint and testing. See contribution guidelines for more
information on how to write/run tests, lint, etc:
https://python.langchain.com/docs/contributing/
- [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.

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: Eugene Yurtsev <eyurtsev@gmail.com>
3 months ago
..
__init__.py core[minor], openai[minor], langchain[patch]: BaseLanguageModel.with_structured_output #17302) 4 months ago
base.py Docs: Add custom parsing documentation and extending langchain (#18331) 3 months ago
format_instructions.py [core, langchain] modelio code improvements (#15277) 6 months ago
json.py core[patch]: Fix jsonOutputParser fails if a json value contains ``` inside it. (#19717) 3 months ago
list.py Improve markdown list parser (#15295) 6 months ago
openai_functions.py core[patch], langchain[patch], templates: move openai functions parsers to core (#18060) 4 months ago
openai_tools.py core[minor]: add streaming support to OAI tool parsers (#18940) 3 months ago
pydantic.py core[minor]: support pydantic v2 models in PydanticOutputParser (#18811) 3 months ago
string.py manual mapping (#14422) 6 months ago
transform.py In Runnable.stream_log build up final_output from adding output chunks (#12781) 7 months ago
xml.py core[patch]:: XML parser to cover the case when the xml only contains the root level tag (#17456) 3 months ago