Skip to content

Fix main minor issues#174

Merged
lfnothias merged 10 commits into
mainfrom
fix-main-minor-issues
May 5, 2026
Merged

Fix main minor issues#174
lfnothias merged 10 commits into
mainfrom
fix-main-minor-issues

Conversation

@madina1203
Copy link
Copy Markdown
Collaborator

@madina1203 madina1203 commented May 5, 2026

PR Type

enhancement, tests, documentation


Description

  • Add file staging logic for CLI input files

  • Update evaluation script to auto-load local CSV datasets

  • Enhance CLI with file attachment option

  • Improve documentation with new usage examples


Diagram Walkthrough

flowchart LR
  A["main.py"] -- "Add file staging logic" --> B["SessionFilePreparationError"]
  A -- "Enhance CLI" --> C["Add file argument"]
  D["evaluation.py"] -- "Auto-load local CSV" --> E["Create dataset if not exists"]
  F["README.md"] -- "Add usage examples" --> G["File attachment and evaluation"]
Loading

File Walkthrough

Relevant files
Enhancement
main.py
Add file staging and enhance CLI options                                 

app/core/main.py

  • Add file staging logic for CLI input files
  • Introduce SessionFilePreparationError for error handling
  • Enhance CLI with file attachment option
  • Update logger configuration for session context
+100/-3 
Tests
evaluation.py
Update evaluation script for dataset handling                       

app/core/tests/evaluation.py

  • Auto-load local CSV datasets
  • Create dataset if not exists in LangSmith
  • Improve error handling for missing API keys
  • Update evaluation configuration
+74/-59 
Bug fix
streamlit_utils.py
Correct agent name case sensitivity                                           

streamlit_webapp/streamlit_utils.py

  • Fix case sensitivity in agent names
+2/-2     
Documentation
README.md
Update README with new usage examples                                       

README.md

  • Add usage examples for file attachment
  • Document LangSmith automated evaluation
+12/-0   


Need help?
  • Type /help how to ... in the comments thread for any questions about PR-Agent usage.
  • Check out the documentation for more information.
  • @dosubot dosubot Bot added the size:L This PR changes 100-499 lines, ignoring generated files. label May 5, 2026
    @qodo-code-review
    Copy link
    Copy Markdown

    Review Summary by Qodo

    Add file staging, fix node names, and improve evaluation workflow

    ✨ Enhancement 🐞 Bug fix

    Grey Divider

    Walkthroughs

    Description
    • Add file staging logic to CLI for FILE_ANALYZER tool integration
    • Fix node name mismatches in workflow output processing
    • Improve evaluation script with auto-loading local CSV datasets
    • Add session management and logging to CLI workflow
    • Update documentation with file attachment and evaluation instructions
    
    Diagram
    flowchart LR
      CLI["CLI Input<br/>-f flag"]
      STAGE["_prepare_session_files<br/>Validates & copies files"]
      SESSION["Session Input Dir<br/>Staged files"]
      TOOL["FILE_ANALYZER Tool<br/>Discovers files"]
      EVAL["Evaluation Script<br/>Auto-load CSV"]
      LANGSMITH["LangSmith Dataset<br/>Create if missing"]
      
      CLI -->|file paths| STAGE
      STAGE -->|validates| SESSION
      SESSION -->|reads| TOOL
      EVAL -->|check exists| LANGSMITH
      EVAL -->|load local| LANGSMITH
    
    Loading

    Grey Divider

    File Changes

    1. app/core/main.py ✨ Enhancement +100/-3

    Add file staging and session management to CLI

    • Add _prepare_session_files() function to safely copy user-supplied files into session input
     directory with comprehensive validation
    • Add SessionFilePreparationError custom exception for file staging errors
    • Add -f/--file CLI argument to accept one or more local file paths
    • Integrate session creation and context initialization in main workflow
    • Pass session_id to create_workflow() and handle file staging errors gracefully
    

    app/core/main.py


    2. app/core/tests/evaluation.py ✨ Enhancement +74/-59

    Auto-load local CSV dataset for evaluation

    • Reorganize imports and add pandas/json for CSV handling
    • Add auto-detection and creation of LangSmith dataset from local CSV file if not found
    • Improve error messages for missing API keys with setup instructions
    • Simplify environment variable handling with defaults
    • Refactor evaluate_result() function to handle flexible input keys
    • Add logging message for evaluation completion
    

    app/core/tests/evaluation.py


    3. streamlit_webapp/streamlit_utils.py 🐞 Bug fix +2/-2

    Fix workflow node name mismatches

    • Fix node name from Entry_agent to Entry_Agent for consistency
    • Fix node name from Validator_agent to Validator to match workflow definition
    

    streamlit_webapp/streamlit_utils.py


    View more (1)
    4. README.md 📝 Documentation +12/-0

    Document file attachment and evaluation features

    • Add explanation of -q flag indexing into standard_questions list
    • Add documentation for -f/--file flag to attach local input files
    • Add new section documenting LangSmith automated evaluation script with setup requirements
    • Reference evaluation documentation at docs/examples/langsmith-evaluation.md
    

    README.md


    Grey Divider

    Qodo Logo


    Need help?
  • Type /help how to ... in the comments thread for any questions about Qodo Merge usage.
  • Check out the documentation for more information.
  • @qodo-code-review
    Copy link
    Copy Markdown

    qodo-code-review Bot commented May 5, 2026

    Code Review by Qodo

    🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

    Grey Divider


    Action required

    1. API key reused cross-provider ✓ Resolved 🐞 Bug ≡ Correctness
    Description
    llm_creation() mutates a single api_key value and reuses it for every model section, so
    deepseek/ovh sections can be initialized with an OpenAI key (or vice versa), breaking authentication
    when those models are selected. This PR now passes the CLI --api-key into llm_creation(), making
    the incorrect cross-provider reuse much easier to trigger.
    
    Code

    app/core/main.py[323]

    +    models = llm_creation(api_key=args.api_key)
    Evidence
    The CLI now forwards args.api_key into llm_creation(). Inside llm_creation(), the api_key
    variable is only populated once when it is None and then reused across later sections even when
    provider changes to deepseek/ovh. The config explicitly includes deepseek and ovh sections
    (with different base_urls), and the codebase has provider-specific env var mapping for those keys,
    so reusing a single key across providers is incorrect.
    

    app/core/main.py[299-343]
    app/core/main.py[25-34]
    app/core/main.py[119-166]
    app/config/params.ini[32-49]

    Agent prompt
    The issue below was found during a code review. Follow the provided context and guidance below and implement a solution
    
    ## Issue description
    `app/core/main.py:llm_creation()` reuses a single `api_key` variable across all config sections. When the loop reaches non-OpenAI providers (e.g., `deepseek_*`, `ovh_*`), it can incorrectly keep using the OpenAI key (or any earlier key) instead of fetching the provider-specific key.
    This PR also started passing `--api-key` into `llm_creation()`, which makes this bug easier to hit and can override provider-specific env keys unintentionally.
    ### Issue Context
    - `params.ini` defines multiple providers (`openai`, `deepseek`, `ovh`).
    - `API_KEY_MAPPING` exists specifically to fetch different keys per provider.
    - The CLI flag is documented as an OpenAI key, but it currently influences all providers.
    ### Fix Focus Areas
    - app/core/main.py[119-166]
    - app/core/main.py[299-343]
    - app/config/params.ini[32-49]
    ### Suggested fix
    1. Don’t mutate/reuse the function argument `api_key` inside the loop. Use a per-section local variable, e.g. `section_api_key`.
    2. Apply the CLI `api_key` override only to the intended provider(s) (likely OpenAI). For other providers, always call `get_api_key(provider)`.
    Pseudo-shape:
    

    ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



    Remediation recommended

    2. Evaluation output keys inconsistent ✓ Resolved 🐞 Bug ⚙ Maintainability
    Description
    app/core/tests/evaluation.py creates LangSmith dataset examples with outputs under the __end__
    key, but evaluate_result() returns results under the output key. This makes the output schema
    inconsistent within the same script and prevents a 1:1 key match between stored reference outputs
    and produced outputs.
    
    Code

    app/core/tests/evaluation.py[128]

     return {"output": response}
    Evidence
    The dataset creation path appends reference outputs using the __end__ key, while the evaluated
    chain factory returns a dict keyed by output. That is a direct schema mismatch in this script.
    

    app/core/tests/evaluation.py[56-77]
    app/core/tests/evaluation.py[118-129]

    Agent prompt
    The issue below was found during a code review. Follow the provided context and guidance below and implement a solution
    
    ## Issue description
    The evaluation script writes dataset example outputs as `{"__end__": ...}` but returns evaluation outputs as `{"output": ...}`. This creates an inconsistent output schema in the same workflow.
    ### Issue Context
    - Dataset examples are created from `big_benchmark.csv` with an `__end__` JSON payload.
    - `evaluate_result()` currently returns the invoked workflow response under `output`.
    ### Fix Focus Areas
    - app/core/tests/evaluation.py[56-77]
    - app/core/tests/evaluation.py[118-129]
    ### Suggested fix
    Pick a single output key and use it consistently:
    - Option A (minimal): change `evaluate_result()` to `return {"__end__": response}`.
    - Option B: change dataset creation to store outputs under `output` (e.g., `outputs.append({"output": parsed_end_state})`).
    After aligning, ensure any evaluators reference the same key consistently.
    

    ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


    Grey Divider

    Qodo Logo

    @coderabbitai
    Copy link
    Copy Markdown

    coderabbitai Bot commented May 5, 2026

    No actionable comments were generated in the recent review. 🎉

    ℹ️ Recent review info
    ⚙️ Run configuration

    Configuration used: Repository UI

    Review profile: CHILL

    Plan: Pro

    Run ID: 51bd39d1-2c22-44f7-a8d0-6527358d8095

    📥 Commits

    Reviewing files that changed from the base of the PR and between 50e4686 and 728409b.

    📒 Files selected for processing (3)
    • app/core/main.py
    • app/core/tests/evaluation.py
    • app/tests/installation_test.py
    🚧 Files skipped from review as they are similar to previous changes (1)
    • app/core/tests/evaluation.py

    Summary by CodeRabbit

    • New Features

      • Added -f/--file CLI option to attach local input files to your analysis sessions for processing.
    • Documentation

      • Enhanced CLI documentation with clarified option behavior and comprehensive instructions for attaching local files.
      • Published new LangSmith automated evaluation guide with detailed setup procedures and environment configuration instructions.
    • Bug Fixes

      • Fixed agent interaction mappings in the web interface for improved workflow execution.
      • Improved test execution reliability when running tests from different working directories.

    Walkthrough

    Adds CLI support to stage local files into a per-session input directory and session-scoped logging; refactors the LangSmith evaluation script to provision datasets and run evaluations from a main() entry; updates README docs for CLI/file usage and LangSmith instructions; and renames a couple Streamlit LangGraph dispatch keys.

    Changes

    Session File Attachment & CLI

    Layer / File(s) Summary
    New Exception & Helper
    app/core/main.py
    Adds SessionFilePreparationError and _prepare_session_files(session_id, file_paths) to validate, prevent duplicates/overwrites, copy files into a session input dir, and log actions.
    CLI Argument & Wiring
    app/core/main.py
    Adds -f/--file (one-or-more). main() now creates a session_id, calls initialize_session_context(session_id), reinitializes logger, stages files via _prepare_session_files, and aborts on staging errors.
    LLM / Workflow Invocation
    app/core/main.py
    llm_creation invoked with api_key=args.api_key (scoped to OpenAI-backed sections); create_workflow now receives session_id=session_id; LangSmith setup invoked without storing return.
    Documentation
    README.md
    Documents -f usage and clarifies -q indexing into app.core.questions.standard_questions.

    LangSmith Evaluation (automated evaluator)

    Layer / File(s) Summary
    Entrypoint & Env Setup
    app/core/tests/evaluation.py, docs/examples/langsmith-evaluation.md
    Introduces main() that loads .env, validates LANGCHAIN/OPENAI keys, sets LangSmith tracing/project/endpoint env vars, and documents how to run the script.
    Dataset Provisioning
    app/core/tests/evaluation.py
    Changes dataset name to benchmark_metabot; checks for dataset existence and, if missing, reads app/data/big_benchmark.csv, parses messages/__end__, and creates dataset/examples via LangSmith client.
    Workflow & Eval Logic
    app/core/tests/evaluation.py
    Builds workflow with api_key=openai_key; nests evaluate_result() inside main() to extract input (question or first message content), call the workflow, and return {"__end__": response}.
    Evaluator Config & Run
    app/core/tests/evaluation.py
    Keeps labeled-criteria evaluator, adds a custom SPARQL structural-similarity criterion, runs run_on_dataset, and logs completion with project name.
    Documentation
    docs/examples/langsmith-evaluation.md
    New guide: required env vars, command to run python -m app.core.tests.evaluation, and where to view LangSmith results.

    Streamlit LangGraph Dispatch Key Rename

    Layer / File(s) Summary
    Dispatch Key Updates
    streamlit_webapp/streamlit_utils.py
    In new_process_langgraph_output, renamed Entry_agentEntry_Agent and Validator_agentValidator; message extraction and appended text unchanged.

    Tests / Test Harness

    Layer / File(s) Summary
    Import Robustness
    app/tests/installation_test.py
    Computes REPO_ROOT via Path(...).resolve().parents[2] and ensures it's in sys.path before importing main; preserves auto-append of -q 1 when no question flag provided.

    Sequence Diagram(s)

    sequenceDiagram
    participant CLI as CLI (user)
    participant Main as app.core.main
    participant FS as Session Input Dir (filesystem)
    participant Workflow as Workflow Runner
    participant LangSmith as LangSmith Client
    participant OpenAI as OpenAI API
    
    CLI->>Main: start with -f files and -q, api_key
    Main->>Main: create_user_session(), initialize_session_context(session_id)
    Main->>FS: _prepare_session_files(session_id, file_paths) (validate & copy)
    FS-->>Main: staging success / error
    Main->>Workflow: create_workflow(session_id, api_key=openai_key)
    CLI->>Workflow: invoke workflow with session inputs
    Workflow->>OpenAI: LLM call (uses provided OpenAI key)
    Workflow->>LangSmith: (optional) report/run evaluation
    LangSmith-->>Main: dataset/run status
    Main-->>CLI: output results / error
    
    Loading

    Estimated code review effort

    🎯 3 (Moderate) | ⏱️ ~25 minutes

    Possibly related PRs

    Poem

    A rabbit drags files to your session lair, 🐇
    Copies safe, with logging to spare,
    LangSmith wakes, datasets take flight,
    Evaluations hum through the night,
    New keys renamed — workflows delight.

    🚥 Pre-merge checks | ✅ 3 | ❌ 2

    ❌ Failed checks (1 warning, 1 inconclusive)

    Check name Status Explanation Resolution
    Docstring Coverage ⚠️ Warning Docstring coverage is 75.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
    Title check ❓ Inconclusive The title 'Fix main minor issues' is vague and does not clearly convey what the changeset addresses; it uses non-descriptive language that fails to summarize the main changes. Use a more specific title that reflects the primary changes, such as 'Add CLI file staging and enhance evaluation script with dataset auto-loading' or similar.
    ✅ Passed checks (3 passed)
    Check name Status Explanation
    Description check ✅ Passed The description is clearly related to the changeset, providing details about file staging logic, evaluation script updates, agent name fixes, and documentation enhancements.
    Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
    Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

    ✏️ Tip: You can configure your own custom pre-merge checks in the settings.

    ✨ Finishing Touches
    📝 Generate docstrings
    • Create stacked PR
    • Commit on current branch
    🧪 Generate unit tests (beta)
    • Create PR with unit tests
    • Commit unit tests in branch fix-main-minor-issues

    Tip

    💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

    Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

    • Generate code and open pull requests
    • Plan features and break down work
    • Investigate incidents and troubleshoot customer tickets together
    • Automate recurring tasks and respond to alerts with triggers
    • Summarize progress and report instantly

    Built for teams:

    • Shared memory across your entire org—no repeating context
    • Per-thread sandboxes to safely plan and execute work
    • Governance built-in—scoped access, auditability, and budget controls

    One agent for your entire SDLC. Right inside Slack.

    👉 Get started


    Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

    ❤️ Share

    Comment @coderabbitai help to get the list of available commands and usage tips.

    @dosubot dosubot Bot added bug_fix documentation Improvements or additions to documentation Tests labels May 5, 2026
    @github-actions
    Copy link
    Copy Markdown
    Contributor

    github-actions Bot commented May 5, 2026

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 3 🔵🔵🔵⚪⚪
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Docstring Format

    The newly added class for file staging errors only provides a brief summary in its docstring. For consistency with Google Docstring standards, consider expanding it with sections such as Args and Attributes.

    class SessionFilePreparationError(ValueError):
        """Raised when CLI input files cannot be staged into the session directory."""
    
        def __init__(self, source_path: Path, message: str):
            super().__init__(message)
            self.source_path = source_path
    Docstring Inconsistency

    The new evaluate_result function includes only a minimal one-line docstring. To fully adhere to Google Docstring formatting, add detailed descriptions for parameters, return values, and examples if applicable.

    """Evaluate the result based on input."""
    # Note: Adjust the 'question' key below if your dataset uses a different input key
    input_text = _input.get("question") or _input["messages"][0]["content"]
    
    message = {
        "messages": [HumanMessage(content=input_text)]
    }

    @github-actions
    Copy link
    Copy Markdown
    Contributor

    github-actions Bot commented May 5, 2026

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Impact
    Possible issue
    Use robust file identity check

    Replace the simple equality check with a robust identity check using
    os.path.samefile to reliably determine if the source and destination refer to the
    same file. This change avoids potential false negatives due to different path
    representations.

    app/core/main.py [252-256]

    -if src == dest.resolve(strict=False):
    -    raise SessionFilePreparationError(
    -        src,
    -        f"Input file is already staged in the session directory: {src}",
    -    )
    +try:
    +    if os.path.samefile(src, dest):
    +        raise SessionFilePreparationError(
    +            src,
    +            f"Input file is already staged in the session directory: {src}",
    +        )
    +except FileNotFoundError:
    +    pass
    Suggestion importance[1-10]: 6

    __

    Why: The suggestion proposes replacing the equality check with os.path.samefile for a more reliable file identity comparison, which can improve robustness. However, wrapping it in a try/except that silently passes on FileNotFoundError may obscure some issues, keeping its impact moderate.

    Low

    Comment thread app/core/main.py
    Copy link
    Copy Markdown

    @coderabbitai coderabbitai Bot left a comment

    Choose a reason for hiding this comment

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

    Actionable comments posted: 2

    🧹 Nitpick comments (1)
    app/core/main.py (1)

    314-332: 💤 Low value

    Stage files before initializing models.

    File staging (_prepare_session_files) currently runs after langsmith_setup() and llm_creation(...). If a user supplies an invalid -f path, we still pay the cost of LLM client construction and LangSmith setup before failing. Validating user-supplied inputs first is cheaper and gives faster feedback on bad CLI arguments.

    ♻️ Proposed reordering
         # Create a user session (mirrors the Streamlit session lifecycle) and
         # reconfigure the logger so subsequent CLI logs land in the session file.
         session_id = create_user_session()
         initialize_session_context(session_id)
         global logger
         logger = setup_logger(__name__)
    +
    +    # Stage user-provided files into the session's input directory early so
    +    # we fail fast before incurring model/LangSmith initialization costs.
    +    if args.file:
    +        try:
    +            _prepare_session_files(session_id, args.file)
    +        except SessionFilePreparationError as exc:
    +            logger.error(str(exc))
    +            print(f"Error: {exc}")
    +            return
    +
         # Initialize LangSmith if available
         langsmith_setup()
    
    
         # Get endpoint URL from arguments or environment
         endpoint_url = (
             args.endpoint
             or os.environ.get("KG_ENDPOINT_URL")
             or "https://enpkg.commons-lab.org/graphdb/repositories/ENPKG"
         )
         models = llm_creation(api_key=args.api_key)
    -
    -    # Stage user-provided files into the session's input directory
    -    if args.file:
    -        try:
    -            _prepare_session_files(session_id, args.file)
    -        except SessionFilePreparationError as exc:
    -            logger.error(str(exc))
    -            print(f"Error: {exc}")
    -            return
    🤖 Prompt for AI Agents
    Verify each finding against current code. Fix only still-valid issues, skip the
    rest with a brief reason, keep changes minimal, and validate.
    
    In `@app/core/main.py` around lines 314 - 332, Move the user file staging to run
    before expensive setup: validate and call _prepare_session_files(session_id,
    args.file) (handling SessionFilePreparationError) before calling
    langsmith_setup() and llm_creation(api_key=args.api_key); specifically, check
    args.file early, run the try/except around _prepare_session_files to log and
    exit on error, and only if staging succeeds proceed to call langsmith_setup()
    and llm_creation() so we avoid constructing LLM clients or initializing
    LangSmith when CLI file inputs are invalid.
    
    🤖 Prompt for all review comments with AI agents
    Verify each finding against current code. Fix only still-valid issues, skip the
    rest with a brief reason, keep changes minimal, and validate.
    
    Inline comments:
    In `@app/core/tests/evaluation.py`:
    - Around line 18-76: The module runs all evaluation logic at import time
    (load_dotenv(), Client(...), dataset bootstrap, etc.); move that top-level logic
    into a new main() function and wrap invocation with if __name__ == "__main__":
    main() so imports no longer execute side effects. Specifically, relocate the
    calls that perform key checks, env var mutation, Client construction, dataset
    existence check (client.read_dataset / client.create_dataset), CSV parsing loop,
    and client.create_examples into main(), keep helper imports and constants (e.g.,
    dataset_name, local_data_path) at module scope if needed, and call main() only
    under the __name__ guard.
    - Around line 45-54: Replace the broad exception handler around
    client.read_dataset with a handler for the specific LangSmithNotFoundError so
    only a 404 (dataset-not-found) triggers the create-from-local flow (use the
    LangSmithNotFoundError class where exceptions are raised by
    client.read_dataset); and when raising the FileNotFoundError for missing
    local_data_path, use exception chaining suppression by raising
    FileNotFoundError(...) from None. Ensure you reference the read_dataset call and
    the local_data_path/FileNotFoundError site when making the change.
    
    ---
    
    Nitpick comments:
    In `@app/core/main.py`:
    - Around line 314-332: Move the user file staging to run before expensive setup:
    validate and call _prepare_session_files(session_id, args.file) (handling
    SessionFilePreparationError) before calling langsmith_setup() and
    llm_creation(api_key=args.api_key); specifically, check args.file early, run the
    try/except around _prepare_session_files to log and exit on error, and only if
    staging succeeds proceed to call langsmith_setup() and llm_creation() so we
    avoid constructing LLM clients or initializing LangSmith when CLI file inputs
    are invalid.
    
    🪄 Autofix (Beta)

    Fix all unresolved CodeRabbit comments on this PR:

    • Push a commit to this branch (recommended)
    • Create a new PR with the fixes

    ℹ️ Review info
    ⚙️ Run configuration

    Configuration used: Repository UI

    Review profile: CHILL

    Plan: Pro

    Run ID: b4e3bdce-8093-408b-b749-3dd6b539fb3c

    📥 Commits

    Reviewing files that changed from the base of the PR and between de6d438 and 50e4686.

    ⛔ Files ignored due to path filters (2)
    • app/data/big_benchmark.csv is excluded by !**/*.csv, !**/*.csv
    • app/data/evaluation_dataset.csv is excluded by !**/*.csv, !**/*.csv
    📒 Files selected for processing (5)
    • README.md
    • app/core/main.py
    • app/core/tests/evaluation.py
    • docs/examples/langsmith-evaluation.md
    • streamlit_webapp/streamlit_utils.py

    Comment thread app/core/tests/evaluation.py Outdated
    Comment thread app/core/tests/evaluation.py Outdated
    madina1203 added 4 commits May 5, 2026 12:44
         by __name__ == __main__ so importing the module no longer triggers
         network calls or env mutations
       - Replace broad except Exception with LangSmithNotFoundError for the
         read_dataset call; add  to the FileNotFoundError raise
    @lfnothias lfnothias merged commit ef00bc1 into main May 5, 2026
    1 check passed
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    bug_fix documentation Improvements or additions to documentation Review effort 3/5 size:L This PR changes 100-499 lines, ignoring generated files. Tests

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    2 participants