Skip to content

Conversation

@AAgnihotry
Copy link
Contributor

Summary

  • Added support for input overrides in multimodal evaluations
  • Extended _ConfigurableFactory to handle file path overrides for multimodal inputs (images, audio, video, documents)
  • Enhanced _Runtime to resolve and validate file paths during eval execution
  • Added comprehensive unit and E2E tests to verify override functionality

Changes

  • src/uipath/_cli/_evals/_configurable_factory.py (+70 lines): Added _resolve_file_path_overrides method to handle multimodal input overrides
  • src/uipath/_cli/_evals/_runtime.py (+19 lines): Integrated file path resolution into the runtime execution flow
  • src/uipath/_cli/cli_eval.py (+10 lines): Extended CLI to support input overrides parameter
  • tests/cli/eval/test_configurable_factory.py (+157 lines): Unit tests for file path override logic
  • tests/cli/eval/test_input_overrides_e2e.py (+310 lines, new): E2E tests covering various override scenarios

Test plan

  • Unit tests pass for _ConfigurableFactory override resolution
  • E2E tests validate end-to-end override behavior with actual files
  • All linting, formatting, and type checks pass
  • Package builds successfully

🤖 Generated with Claude Code

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
@github-actions github-actions bot added test:uipath-langchain Triggers tests in the uipath-langchain-python repository test:uipath-llamaindex Triggers tests in the uipath-llamaindex-python repository labels Jan 13, 2026
@AAgnihotry AAgnihotry force-pushed the feat/multiModalEvals branch from cd8bf89 to 9533f66 Compare January 13, 2026 20:58
Updated the input override deep merge logic to be truly recursive,
handling nested dictionaries at any depth. Previously only merged one
level deep. Added 9 new tests covering edge cases including multiple
nesting levels, type replacements, empty dicts, lists, None values,
and immutability guarantees.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
@mjnovice
Copy link
Contributor

LGTM, can we add some E2E testcases as well, please ?

Here is an example 32cabaf

@AAgnihotry AAgnihotry force-pushed the feat/multiModalEvals branch from 4281ea4 to 452d38c Compare January 13, 2026 22:48
Fixed two mypy errors:

1. Added type parameters to deep_merge function signature
   - Changed from `def deep_merge(base: dict, override: dict) -> dict:`
   - To: `def deep_merge(base: dict[str, Any], override: dict[str, Any]) -> dict[str, Any]:`

2. Added type annotation and import to test file
   - Added `from typing import Any` import
   - Added explicit type annotation to original_inputs variable

All mypy checks now pass successfully.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
"""
self.model_settings_override = settings

def set_input_overrides(self, overrides: dict[str, Any]) -> None:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Chibionos let's get rid of this configurable factory, as we previously talked

logger.error(f"Failed to create temporary entrypoint file: {e}")
return None

def apply_input_overrides(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please don't add this here. it's got nothing to do with a factory. this should just override the inputs from the eval item

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:uipath-langchain Triggers tests in the uipath-langchain-python repository test:uipath-llamaindex Triggers tests in the uipath-llamaindex-python repository

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants