Commit Graph

141 Commits

Author SHA1 Message Date
Christophe Bornet
1619f3d3d0 chore(standard-tests): fix some typings detected by ty (#38707) 2026-07-08 15:32:47 -04:00
Christophe Bornet
f912638334 style: fix some ruff preview rules in langchain_v1 and standard-tests (#38657) 2026-07-04 22:22:24 -04:00
ccurme
1e35d8f7a9 chore(standard-tests): add sandbox integration test for offloading large execute results (#38537) 2026-06-29 08:40:50 -04:00
Mason Daugherty
43880362d8 feat(standard-tests): validate tool call chunks during streaming (#34707)
As a LangChain user streaming a tool-calling model, I expect each
streamed chunk to expose structured `tool_call_chunk` content blocks so
I can render or process tool calls live, instead of waiting for the
final aggregated message.

This adds `tool_call_streaming` to `ModelProfile` and uses it in the
standard chat-model tool-calling tests. When a model profile opts in,
`test_tool_calling` and `test_tool_calling_async` now validate that at
least one streamed chunk includes a `tool_call_chunk` block via
`content_blocks`, while preserving the existing final-message
validation.

This keeps the contract profile-gated so providers can opt in once their
streaming chunk shape is verified. This PR opts in the providers
verified by smoke testing with straightforward profile coverage: OpenAI,
Anthropic, Fireworks, HuggingFace, OpenRouter, DeepSeek, and xAI. The
generated profile artifacts are refreshed so runtime profiles expose the
new capability flag.

Perplexity Responses also passed the smoke test, but its current profile
data is for the `sonar` family while the Responses smoke path used a
routed model string. That profile strategy is left as follow-up.
MistralAI currently streams `.tool_call_chunks`, but its content-block
translator exposes a complete `tool_call` block instead of
`tool_call_chunk`, so it also stays out of this flag until that
integration is fixed.
2026-06-10 22:29:02 -04:00
Mason Daugherty
f9f11527f6 fix(standard-tests): serialize BytesIO bodies in VCR cassettes (#37963)
The custom VCR serializer pipes the cassette dict through
`yaml.safe_dump`, which raises on stream objects — so any request with
an `io.BytesIO` body (multipart/file-upload endpoints) couldn't be
recorded. A new `_coerce_bytesio` helper walks the cassette and replaces
each `BytesIO` with its raw bytes before dumping.
2026-06-08 11:17:12 -04:00
Mason Daugherty
2638f75e13 feat(standard-tests): forward LangSmith CI env vars to traces (#37645)
Scheduled integration runs set `LANGSMITH_TAGS` and `LANGSMITH_METADATA`
in `$GITHUB_ENV` (per #37615), but the LangSmith SDK does not read those
env vars natively, so the tags/metadata were silently dropped. A new
pytest plugin in `langchain-tests` bridges that gap by entering
`langsmith.run_helpers.tracing_context` for the duration of each
session.
2026-05-23 00:17:47 -04:00
Mason Daugherty
269d628d9c fix(standard-tests): recognize parametrize-nested xfails in override check (#37613)
`test_no_overrides_DO_NOT_OVERRIDE` only treated an override as valid
when the method itself carried an `@pytest.mark.xfail(reason=...)`.
Overrides that re-parametrize a standard test and xfail only a subset of
cases via `pytest.param(..., marks=pytest.mark.xfail(...))` were
rejected.
2026-05-21 14:14:48 -05:00
Mason Daugherty
22575adba4 test(standard-tests): allow extra content blocks in streaming assertions (#37592)
Reasoning-emitting chat models return `[reasoning, text]` content blocks
where vanilla models return `[text]`. The shared streaming integration
tests asserted exactly one block, which fails when reasoning blocks are
returned when streaming is otherwise correct.

Relaxed to assert text presence without touching the lifecycle,
`chunk_position`, or `output_version` checks.
2026-05-21 13:18:54 -05:00
Mason Daugherty
730d066285 test(standard-tests): assert ls_model_name honors per-call model override (#37504)
Adds a standard unit test so every chat-model integration verifies that
`_get_ls_params` picks up a runtime `model` kwarg instead of always
reporting the constructor default.
2026-05-18 15:33:11 -05:00
Mason Daugherty
6c091564ac chore(core,langchain,openai): refresh stale OpenAI model references (#37487) 2026-05-18 01:06:42 -05:00
Nick Hollon
da380bccf8 chore(infra): merge v1.4 into master (#37350) 2026-05-11 11:39:25 -07:00
Nick Hollon
9ce72eba9f feat(core): add content-block-centric streaming (v2) (#36834) 2026-04-24 11:36:17 -04:00
ccurme
fe99cb2912 fix(standard-tests): update standard tests for sandbox backends (#36036)
Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com>
2026-04-08 11:08:54 -04:00
Mason Daugherty
2bad58a809 chore: bump locks, lint (#35985) 2026-03-16 23:59:08 -04:00
Tejas Attarde
d6dbcf6294 perf(.github): set a timeout on get min versions HTTP calls (#35851)
During an automated code review of .github/scripts/get_min_versions.py,
the following issue was identified. Set a timeout on get min versions
HTTP calls. Network calls without a timeout can hang a worker
indefinitely. I kept the patch small and re-ran syntax checks after
applying it.
2026-03-13 17:24:32 -04:00
Christophe Bornet
6a6ef8caad style: fix some ruff noqa (#35321) 2026-02-19 13:19:30 -05:00
Eugene Yurtsev
084d83ac7d chore(standard-tests): test suite for sandbox only (#35111)
Update standard-tests for sandbox only
2026-02-10 03:14:05 +00:00
Eugene Yurtsev
5d16ac9f63 feat(standard-tests): add standard tests for sandbox providers (#35018)
* Add standard test suite for sandbox providers
* Still need to add a test or two for working with execute in the
sandbox
2026-02-05 12:44:01 -05:00
Mason Daugherty
1ead03c79d feat(standard-tests): ensure final chunk has chunk_position='last' (#34704) 2026-01-13 10:55:21 -05:00
Mason Daugherty
3bd8c0c4a3 fix(standard-tests): add type ignore (#34696)
Regression introduced in 8e3c6b109f

The commit changed the return annotation of `with_structured_output`
from `typing.Dict | BaseModel` to `builtins.dict[str, Any] | BaseModel`.
Since `BaseModel` refers to `pydantic.BaseModel (v2)`, but the test
`test_structured_output_pydantic_2_v1` uses `pydantic.v1.BaseModel`,
mypy's `warn_unreachable` setting flags the `isinstance` checks as
unreachable (since a class can't be both a `dict` and a different
`BaseModel` type).

Switching to `builtins.dict[str, Any]` made the type more precise, which
exposed this type incompatibility that was always latent but hidden by
the looser `typing.Dict` annotation.
2026-01-09 23:07:05 -05:00
Sydney Runkle
fbe9babb34 fix: remove relative imports (#34680)
standardizing on absolute imports rather than relative across the
codebase
2026-01-09 13:00:51 -05:00
Mason Daugherty
e81f00fb29 docs(standard-tests): remove autodoc comment (#34532) 2025-12-29 17:25:52 -06:00
ccurme
5ec0fa69de fix(core): serialization patch (#34455)
- `allowed_objects` kwarg in `load`
- escape lc-ser formatted dicts on `dump`
- fix for jinja2

---------

Co-authored-by: Mason Daugherty <github@mdrxy.com>
2025-12-22 17:33:31 -06:00
Mason Daugherty
c85f7b6061 docs(standard-tests): throw more descriptive errors for some streaming cases (#34389) 2025-12-16 11:22:35 -05:00
Christophe Bornet
fc35544e0d chore(standard-tests): enable mypy disallow_any_generics rule (#34222)
Co-authored-by: Sydney Runkle <54324534+sydney-runkle@users.noreply.github.com>
Co-authored-by: Sydney Runkle <sydneymarierunkle@gmail.com>
2025-12-12 14:30:27 -05:00
Christophe Bornet
f5b6eecf72 refactor(standard-tests): improve VCR config (#33968)
Use of the fixture `_base_vcr_config` is deprecated with alternative
function `base_vcr_config()`
This way:
* we don't need to import `_base_vcr_config` seen as unused (which leads
to ruff violations PLC0414 and F811)
* we don't need to make a copy since a new dict is created at each
function invocation

Co-authored-by: Mason Daugherty <mason@langchain.dev>
2025-12-12 10:14:26 -05:00
Mason Daugherty
b009ca4d23 feat(standard-tests): invocation model override (#34170)
inspired by noticing `ChatGoogleGenerativeAI` failed to do so
2025-12-08 15:44:22 -05:00
Mason Daugherty
0254c12cb0 feat(standard-tests): ensure only one chunk sets model_name in usage_metadata (#34224) 2025-12-08 15:41:39 -05:00
Mason Daugherty
d886dcfba5 fix(standard-tests)!: remove deprecated has_tool_choice property (#34174)
Deprecated since `0.3.15`

This was marked as being removed in `0.3.20` but never was
2025-12-08 15:31:55 -05:00
Mason Daugherty
b95cb770e8 docs(standard-tests): ensure first admonition is expanded (#34194)
better UX
2025-12-03 15:03:11 -05:00
Mason Daugherty
3108b14164 docs(standard-tests): fix supports_json_mode docstring (#34181) 2025-12-03 00:12:57 -05:00
Mason Daugherty
1922adc092 docs(standard-tests): fix formatting bug, rearrange admonition (#34180) 2025-12-02 23:40:11 -05:00
Mason Daugherty
4a242a8a4f docs(standard-tests): enrich doc to indicate missing default values (#34179) 2025-12-02 23:32:21 -05:00
Mason Daugherty
064b37f90e docs(standard-tests): improve doc for structured_output_kwargs and supports_json_mode (#34178) 2025-12-02 23:18:53 -05:00
Mason Daugherty
062678fa18 fix(standard-tests): fix broken links (#34175) 2025-12-02 20:52:27 -05:00
Mason Daugherty
5d3e3d3f31 fix(standard-tests): remove broken code block docstring title (#34173) 2025-12-02 20:18:31 -05:00
Mason Daugherty
5a7cf87626 style(standard-tests): some fencing (#34171) 2025-12-02 14:42:26 -05:00
Mason Daugherty
47b79c30c0 chore(docs): fix a few refs syntax errors (#34044)
missing whitespace for some admonitions
2025-11-22 00:58:21 -05:00
ccurme
9b7792631d feat(anthropic): support native structured output feature and strict tool calling (#33980) 2025-11-17 16:14:20 -05:00
Christophe Bornet
ef79c26f18 chore(cli,standard-tests,text-splitters): fix some ruff TC rules (#33934)
Co-authored-by: Mason Daugherty <mason@langchain.dev>
2025-11-12 14:06:31 -05:00
Mason Daugherty
d40e340479 chore: attribute package change versions (#33854)
Needed to disambiguate for within inherited docs
2025-11-06 16:57:30 -05:00
Mason Daugherty
c6547f58b7 style(standard-tests): refs pass (#33814) 2025-11-04 00:01:16 -05:00
Mason Daugherty
dfb05a7fa0 style: refs pass (#33813) 2025-11-03 22:11:10 -05:00
ccurme
81c4f21b52 fix(standard-tests): update multimodal tests (#33781) 2025-11-01 16:38:20 -04:00
Mason Daugherty
123e29dc26 style: more refs fixes (#33730) 2025-10-29 16:34:46 -04:00
Mason Daugherty
e5e1d6c705 style: more refs work (#33707) 2025-10-28 14:43:28 -04:00
Mason Daugherty
f94108b4bc fix: links (#33691)
* X-ref to new docs
* Formatting updates
2025-10-27 19:04:29 -04:00
ccurme
60a0ff8217 fix(standard-tests): fix tool description in agent loop test (#33690) 2025-10-27 15:02:13 -04:00
Mason Daugherty
e731ba1e47 style: more refs work (#33616) 2025-10-20 18:40:19 -04:00
Mason Daugherty
1d2273597a docs: more fixes for refs (#33554) 2025-10-16 22:54:16 -04:00