Skip to content

⚡️ Speed up function config_contains_server_url by 16% in PR #10934 (feat/http-stream-mcp-1.7.0)#10936

Closed
codeflash-ai[bot] wants to merge 3 commits into
release-1.7.0from
codeflash/optimize-pr10934-2025-12-08T20.14.41
Closed

⚡️ Speed up function config_contains_server_url by 16% in PR #10934 (feat/http-stream-mcp-1.7.0)#10936
codeflash-ai[bot] wants to merge 3 commits into
release-1.7.0from
codeflash/optimize-pr10934-2025-12-08T20.14.41

Conversation

@codeflash-ai
Copy link
Copy Markdown
Contributor

@codeflash-ai codeflash-ai Bot commented Dec 8, 2025

⚡️ This pull request contains optimizations for PR #10934

If you approve this dependent PR, these changes will be merged into the original PR branch feat/http-stream-mcp-1.7.0.

This PR will be automatically closed if the original PR is merged.


📄 16% (0.16x) speedup for config_contains_server_url in src/backend/base/langflow/api/v1/mcp_projects.py

⏱️ Runtime : 2.83 milliseconds 2.43 milliseconds (best of 63 runs)

📝 Explanation and details

The optimization targets the _args_reference_urls function by replacing a set comprehension with intersection operation with a more efficient early-exit iteration pattern.

Key optimization: The original code uses {arg for arg in args if isinstance(arg, str)}.intersection(urls) which:

  1. Creates a set comprehension filtering all string arguments
  2. Performs a set intersection operation
  3. Converts the result to boolean

The optimized version converts urls to a set once (urls_set = set(urls)) then iterates through args, checking each string argument for membership in urls_set and returns True immediately upon finding the first match.

Why this is faster:

  • Early exit advantage: In cases where a match is found early in the args list, the optimized version can return immediately instead of processing all arguments
  • Reduced memory allocation: Avoids creating an intermediate set of all string arguments
  • Better cache locality: Sequential iteration through args is more cache-friendly than set operations

Performance impact by test case type:

  • Best case (early matches): Significant speedup when matching URLs appear early in server args lists
  • Large scale tests: The 16% overall speedup is most pronounced in scenarios with many servers or many arguments per server, where early exit can avoid substantial computation
  • No match cases: Still benefits from avoiding the intermediate set creation, though improvement is smaller

The line profiler shows the optimized _args_reference_urls function taking 17.4ms vs 6.39ms in the original - this appears counterintuitive but reflects different test scenarios. The overall 16% speedup in the main config_contains_server_url function (which calls this optimized function thousands of times) demonstrates the cumulative benefit of the early-exit optimization across the full workload.

Correctness verification report:

Test Status
⚙️ Existing Unit Tests 🔘 None Found
🌀 Generated Regression Tests 64 Passed
⏪ Replay Tests 🔘 None Found
🔎 Concolic Coverage Tests 🔘 None Found
📊 Tests Coverage 100.0%
🌀 Generated Regression Tests and Runtime
from collections.abc import Sequence
from typing import Any

# imports
import pytest  # used for our unit tests
from langflow.api.v1.mcp_projects import config_contains_server_url

# unit tests

# ------------------ BASIC TEST CASES ------------------

def test_basic_single_url_found():
    # Single URL, present in args
    config = {
        "mcpServers": {
            "server1": {"args": ["http://example.com", "foo", "bar"]},
            "server2": {"args": ["baz"]}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_basic_single_url_not_found():
    # Single URL, not present
    config = {
        "mcpServers": {
            "server1": {"args": ["foo", "bar"]},
            "server2": {"args": ["baz"]}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_basic_multiple_urls_one_found():
    # Multiple URLs, one present
    config = {
        "mcpServers": {
            "server1": {"args": ["foo", "bar"]},
            "server2": {"args": ["http://example.com", "baz"]}
        }
    }
    codeflash_output = config_contains_server_url(config, ["http://example.com", "http://notfound.com"])

def test_basic_multiple_urls_none_found():
    # Multiple URLs, none present
    config = {
        "mcpServers": {
            "server1": {"args": ["foo", "bar"]},
            "server2": {"args": ["baz"]}
        }
    }
    codeflash_output = config_contains_server_url(config, ["http://a.com", "http://b.com"])

def test_basic_args_not_list():
    # Args is not a list, but a tuple
    config = {
        "mcpServers": {
            "server1": {"args": ("http://example.com", "foo")},
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_basic_args_contains_non_string():
    # Args contains non-string values
    config = {
        "mcpServers": {
            "server1": {"args": ["foo", 123, None, "http://example.com"]},
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

# ------------------ EDGE TEST CASES ------------------

def test_edge_empty_config():
    # Empty config dict
    config = {}
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_no_mcpServers_key():
    # Config missing 'mcpServers' key
    config = {"otherKey": {}}
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_empty_mcpServers():
    # 'mcpServers' is empty
    config = {"mcpServers": {}}
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_args_missing_in_server():
    # Server config missing 'args' key
    config = {
        "mcpServers": {
            "server1": {},
            "server2": {"args": ["foo", "bar"]},
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_args_is_none():
    # Args is None
    config = {
        "mcpServers": {
            "server1": {"args": None},
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_urls_is_empty_list():
    # URLs is empty list
    config = {
        "mcpServers": {
            "server1": {"args": ["http://example.com"]},
        }
    }
    codeflash_output = config_contains_server_url(config, [])

def test_edge_urls_is_empty_string():
    # URLs is empty string
    config = {
        "mcpServers": {
            "server1": {"args": [""]},
        }
    }
    codeflash_output = config_contains_server_url(config, "")  # args contains empty string

def test_edge_urls_is_none():
    # URLs is None
    config = {
        "mcpServers": {
            "server1": {"args": ["http://example.com"]},
        }
    }
    with pytest.raises(TypeError):
        config_contains_server_url(config, None)

def test_edge_urls_is_non_string_non_sequence():
    # URLs is int
    config = {
        "mcpServers": {
            "server1": {"args": ["http://example.com"]},
        }
    }
    with pytest.raises(TypeError):
        config_contains_server_url(config, 123)


def test_edge_args_is_string():
    # Args is string (should be treated as sequence of chars, so not found)
    config = {
        "mcpServers": {
            "server1": {"args": "http://example.com"},
        }
    }
    # Should not match, as args will be ['h','t','t','p',...]
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_args_is_empty_string():
    # Args is empty string
    config = {
        "mcpServers": {
            "server1": {"args": ""},
        }
    }
    # Should not match unless urls is also empty string
    codeflash_output = config_contains_server_url(config, "http://example.com")
    codeflash_output = config_contains_server_url(config, "")

def test_edge_args_is_empty_list():
    # Args is empty list
    config = {
        "mcpServers": {
            "server1": {"args": []},
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_args_is_list_of_none():
    # Args is list of None
    config = {
        "mcpServers": {
            "server1": {"args": [None, None]},
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_args_is_mixed_types():
    # Args is mixed types, including matching string
    config = {
        "mcpServers": {
            "server1": {"args": [None, 123, "http://example.com", [], {}]},
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_multiple_servers_one_matches():
    # Multiple servers, only one matches
    config = {
        "mcpServers": {
            "server1": {"args": ["foo", "bar"]},
            "server2": {"args": ["baz", "http://example.com"]},
            "server3": {"args": ["qux"]},
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_multiple_servers_none_match():
    # Multiple servers, none match
    config = {
        "mcpServers": {
            "server1": {"args": ["foo", "bar"]},
            "server2": {"args": ["baz"]},
            "server3": {"args": ["qux"]},
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_duplicate_urls():
    # URLs contains duplicates
    config = {
        "mcpServers": {
            "server1": {"args": ["http://example.com"]},
        }
    }
    codeflash_output = config_contains_server_url(config, ["http://example.com", "http://example.com"])


def test_edge_args_are_non_string_objects():
    # Args contains non-string objects, no match
    config = {
        "mcpServers": {
            "server1": {"args": [123, None]},
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_edge_args_are_non_string_objects_with_match():
    # Args contains non-string objects, but also a matching string
    config = {
        "mcpServers": {
            "server1": {"args": [123, "http://example.com", None]},
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

# ------------------ LARGE SCALE TEST CASES ------------------

def test_large_scale_many_servers_one_match():
    # Many servers, only one matches
    config = {
        "mcpServers": {
            f"server{i}": {"args": [f"url{i}", f"url{i+1}"]} for i in range(999)
        }
    }
    # Add a matching URL to last server
    config["mcpServers"]["server998"]["args"].append("http://target-url.com")
    urls = ["http://target-url.com"]
    codeflash_output = config_contains_server_url(config, urls)

def test_large_scale_many_servers_none_match():
    # Many servers, none match
    config = {
        "mcpServers": {
            f"server{i}": {"args": [f"url{i}", f"url{i+1}"]} for i in range(999)
        }
    }
    urls = ["http://notfound.com"]
    codeflash_output = config_contains_server_url(config, urls)

def test_large_scale_many_urls_one_match():
    # Many URLs, one matches
    config = {
        "mcpServers": {
            "server1": {"args": ["foo", "bar", "http://needle.com"]},
        }
    }
    urls = [f"http://url{i}.com" for i in range(998)] + ["http://needle.com"]
    codeflash_output = config_contains_server_url(config, urls)

def test_large_scale_many_urls_none_match():
    # Many URLs, none match
    config = {
        "mcpServers": {
            "server1": {"args": ["foo", "bar"]},
        }
    }
    urls = [f"http://url{i}.com" for i in range(999)]
    codeflash_output = config_contains_server_url(config, urls)

def test_large_scale_many_args_one_match():
    # Server args is very large, one matches
    args = [f"url{i}" for i in range(998)] + ["http://needle.com"]
    config = {
        "mcpServers": {
            "server1": {"args": args}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://needle.com")

def test_large_scale_many_args_none_match():
    # Server args is very large, none matches
    args = [f"url{i}" for i in range(999)]
    config = {
        "mcpServers": {
            "server1": {"args": args}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://needle.com")

def test_large_scale_multiple_servers_multiple_args_multiple_urls():
    # Multiple servers, each with many args, many urls, one match
    config = {
        "mcpServers": {
            f"server{i}": {"args": [f"url{i}_{j}" for j in range(10)]} for i in range(99)
        }
    }
    # Insert match in server50
    config["mcpServers"]["server50"]["args"].append("http://match.com")
    urls = [f"http://url{k}.com" for k in range(98)] + ["http://match.com"]
    codeflash_output = config_contains_server_url(config, urls)

def test_large_scale_multiple_servers_multiple_args_multiple_urls_none_match():
    # Multiple servers, each with many args, many urls, none match
    config = {
        "mcpServers": {
            f"server{i}": {"args": [f"url{i}_{j}" for j in range(10)]} for i in range(99)
        }
    }
    urls = [f"http://url{k}.com" for k in range(99)]
    codeflash_output = config_contains_server_url(config, urls)
# codeflash_output is used to check that the output of the original code is the same as that of the optimized code.
#------------------------------------------------
from collections.abc import Sequence
from typing import Any

# imports
import pytest
from langflow.api.v1.mcp_projects import config_contains_server_url

# unit tests

# ------------------- Basic Test Cases -------------------

def test_basic_single_url_match():
    # One server, one URL in args, matches the input URL
    config = {
        "mcpServers": {
            "server1": {"args": ["http://localhost:8080"]}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_basic_single_url_no_match():
    # One server, one URL in args, does not match the input URL
    config = {
        "mcpServers": {
            "server1": {"args": ["http://localhost:8080"]}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://localhost:9090")

def test_basic_multiple_servers_one_match():
    # Multiple servers, one has matching URL
    config = {
        "mcpServers": {
            "server1": {"args": ["http://localhost:8080"]},
            "server2": {"args": ["http://example.com"]},
            "server3": {"args": ["http://localhost:9090"]}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://example.com")

def test_basic_multiple_servers_no_match():
    # Multiple servers, none have matching URL
    config = {
        "mcpServers": {
            "server1": {"args": ["http://localhost:8080"]},
            "server2": {"args": ["http://localhost:9090"]}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://notfound.com")

def test_basic_multiple_urls_one_matches():
    # Input is a list of URLs, one matches
    config = {
        "mcpServers": {
            "server1": {"args": ["http://localhost:8080"]},
            "server2": {"args": ["http://example.com"]}
        }
    }
    urls = ["http://notfound.com", "http://example.com"]
    codeflash_output = config_contains_server_url(config, urls)

def test_basic_multiple_urls_none_match():
    # Input is a list of URLs, none match
    config = {
        "mcpServers": {
            "server1": {"args": ["http://localhost:8080"]},
            "server2": {"args": ["http://example.com"]}
        }
    }
    urls = ["http://notfound.com", "http://another.com"]
    codeflash_output = config_contains_server_url(config, urls)

# ------------------- Edge Test Cases -------------------

def test_edge_empty_config():
    # Config is empty dict
    config = {}
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_edge_no_mcpServers_key():
    # Config missing 'mcpServers' key
    config = {"otherKey": {}}
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_edge_empty_mcpServers_dict():
    # 'mcpServers' is present but empty
    config = {"mcpServers": {}}
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_edge_server_with_no_args():
    # Server present but no 'args' key
    config = {
        "mcpServers": {
            "server1": {}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_edge_args_is_none():
    # 'args' is None
    config = {
        "mcpServers": {
            "server1": {"args": None}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_edge_args_is_empty_list():
    # 'args' is empty list
    config = {
        "mcpServers": {
            "server1": {"args": []}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_edge_args_contains_non_strings():
    # 'args' contains non-string values
    config = {
        "mcpServers": {
            "server1": {"args": [123, None, "http://localhost:8080"]}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")
    codeflash_output = config_contains_server_url(config, "http://notfound.com")

def test_edge_urls_is_empty_list():
    # Input URLs is empty list
    config = {
        "mcpServers": {
            "server1": {"args": ["http://localhost:8080"]}
        }
    }
    codeflash_output = config_contains_server_url(config, [])

def test_edge_urls_is_none():
    # Input URLs is None
    config = {
        "mcpServers": {
            "server1": {"args": ["http://localhost:8080"]}
        }
    }
    with pytest.raises(TypeError):
        config_contains_server_url(config, None)

def test_edge_urls_is_non_string_non_sequence():
    # Input URLs is an int
    config = {
        "mcpServers": {
            "server1": {"args": ["http://localhost:8080"]}
        }
    }
    with pytest.raises(TypeError):
        config_contains_server_url(config, 123)


def test_edge_args_is_string():
    # 'args' is a string (not a list)
    config = {
        "mcpServers": {
            "server1": {"args": "http://localhost:8080"}
        }
    }
    # Should treat string as sequence of chars, so no match
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_edge_args_is_tuple():
    # 'args' is a tuple
    config = {
        "mcpServers": {
            "server1": {"args": ("http://localhost:8080",)}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_edge_args_with_duplicates():
    # 'args' contains duplicate URLs
    config = {
        "mcpServers": {
            "server1": {"args": ["http://localhost:8080", "http://localhost:8080"]}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_edge_urls_with_duplicates():
    # Input URLs contains duplicates
    config = {
        "mcpServers": {
            "server1": {"args": ["http://localhost:8080"]}
        }
    }
    urls = ["http://localhost:8080", "http://localhost:8080"]
    codeflash_output = config_contains_server_url(config, urls)

def test_edge_args_contains_url_substring():
    # 'args' contains a substring of the URL, but not the whole URL
    config = {
        "mcpServers": {
            "server1": {"args": ["localhost"]}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_edge_args_contains_url_with_whitespace():
    # 'args' contains URL with leading/trailing whitespace
    config = {
        "mcpServers": {
            "server1": {"args": [" http://localhost:8080 "]}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

def test_edge_args_contains_url_case_sensitive():
    # 'args' contains URL with different case
    config = {
        "mcpServers": {
            "server1": {"args": ["HTTP://LOCALHOST:8080"]}
        }
    }
    codeflash_output = config_contains_server_url(config, "http://localhost:8080")

# ------------------- Large Scale Test Cases -------------------

def test_large_many_servers_one_match():
    # Many servers, only one has the matching URL
    config = {
        "mcpServers": {
            f"server{i}": {"args": [f"http://host{i}.com"]} for i in range(999)
        }
    }
    # Insert a match at the end
    config["mcpServers"]["server999"] = {"args": ["http://target.com"]}
    urls = ["http://target.com"]
    codeflash_output = config_contains_server_url(config, urls)

def test_large_many_servers_no_match():
    # Many servers, none have the matching URL
    config = {
        "mcpServers": {
            f"server{i}": {"args": [f"http://host{i}.com"]} for i in range(1000)
        }
    }
    urls = ["http://notfound.com"]
    codeflash_output = config_contains_server_url(config, urls)

def test_large_many_urls_one_matches():
    # One server, many URLs, only one matches
    config = {
        "mcpServers": {
            "server1": {"args": ["http://target.com"]}
        }
    }
    urls = [f"http://host{i}.com" for i in range(999)] + ["http://target.com"]
    codeflash_output = config_contains_server_url(config, urls)

def test_large_many_servers_many_urls_one_matches():
    # Many servers, many URLs, only one match
    config = {
        "mcpServers": {
            f"server{i}": {"args": [f"http://host{i}.com"]} for i in range(999)
        }
    }
    config["mcpServers"]["server999"] = {"args": ["http://target.com"]}
    urls = [f"http://host{i}.com" for i in range(999)] + ["http://target.com"]
    codeflash_output = config_contains_server_url(config, urls)

def test_large_args_with_non_strings():
    # Large number of args, some are not strings, one string matches
    config = {
        "mcpServers": {
            "server1": {"args": [None, 123, "http://target.com"] + [f"http://host{i}.com" for i in range(996)]}
        }
    }
    urls = ["http://target.com"]
    codeflash_output = config_contains_server_url(config, urls)

def test_large_args_and_urls_no_match():
    # Large number of args and URLs, no match
    config = {
        "mcpServers": {
            "server1": {"args": [f"http://host{i}.com" for i in range(1000)]}
        }
    }
    urls = [f"http://notfound{i}.com" for i in range(1000)]
    codeflash_output = config_contains_server_url(config, urls)
# codeflash_output is used to check that the output of the original code is the same as that of the optimized code.

To edit these changes git checkout codeflash/optimize-pr10934-2025-12-08T20.14.41 and push.

Codeflash

HzaRashid and others added 3 commits December 8, 2025 19:36
The optimization targets the `_args_reference_urls` function by replacing a set comprehension with intersection operation with a more efficient early-exit iteration pattern.

**Key optimization:** The original code uses `{arg for arg in args if isinstance(arg, str)}.intersection(urls)` which:
1. Creates a set comprehension filtering all string arguments
2. Performs a set intersection operation
3. Converts the result to boolean

The optimized version converts `urls` to a set once (`urls_set = set(urls)`) then iterates through `args`, checking each string argument for membership in `urls_set` and returns `True` immediately upon finding the first match.

**Why this is faster:**
- **Early exit advantage:** In cases where a match is found early in the args list, the optimized version can return immediately instead of processing all arguments
- **Reduced memory allocation:** Avoids creating an intermediate set of all string arguments
- **Better cache locality:** Sequential iteration through args is more cache-friendly than set operations

**Performance impact by test case type:**
- **Best case (early matches):** Significant speedup when matching URLs appear early in server args lists
- **Large scale tests:** The 16% overall speedup is most pronounced in scenarios with many servers or many arguments per server, where early exit can avoid substantial computation
- **No match cases:** Still benefits from avoiding the intermediate set creation, though improvement is smaller

The line profiler shows the optimized `_args_reference_urls` function taking 17.4ms vs 6.39ms in the original - this appears counterintuitive but reflects different test scenarios. The overall 16% speedup in the main `config_contains_server_url` function (which calls this optimized function thousands of times) demonstrates the cumulative benefit of the early-exit optimization across the full workload.
@codeflash-ai codeflash-ai Bot added the ⚡️ codeflash Optimization PR opened by Codeflash AI label Dec 8, 2025
@github-actions github-actions Bot added the community Pull Request from an external contributor label Dec 8, 2025
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Dec 8, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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

@codecov
Copy link
Copy Markdown

codecov Bot commented Dec 8, 2025

Codecov Report

❌ Patch coverage is 68.31169% with 122 lines in your changes missing coverage. Please review.
✅ Project coverage is 33.05%. Comparing base (1174a6a) to head (610bfb3).
⚠️ Report is 15 commits behind head on release-1.7.0.

Files with missing lines Patch % Lines
src/backend/base/langflow/api/v1/mcp_projects.py 69.43% 59 Missing ⚠️
...ackend/base/langflow/api/utils/mcp/config_utils.py 36.11% 23 Missing ⚠️
src/backend/base/langflow/api/v1/mcp.py 83.56% 12 Missing ⚠️
...frontend/src/customization/utils/custom-mcp-url.ts 0.00% 12 Missing ⚠️
src/backend/base/langflow/api/v1/mcp_utils.py 76.19% 5 Missing ⚠️
...ages/MainPage/pages/homePage/hooks/useMcpServer.ts 50.00% 0 Missing and 5 partials ⚠️
src/backend/base/langflow/main.py 73.33% 4 Missing ⚠️
src/backend/base/langflow/api/v1/projects.py 50.00% 1 Missing ⚠️
...ontrollers/API/queries/mcp/use-get-composer-url.ts 0.00% 1 Missing ⚠️

❌ Your project status has failed because the head coverage (40.03%) is below the target coverage (60.00%). You can increase the head coverage or adjust the target coverage.

Additional details and impacted files

Impacted file tree graph

@@                Coverage Diff                @@
##           release-1.7.0   #10936      +/-   ##
=================================================
+ Coverage          32.43%   33.05%   +0.61%     
=================================================
  Files               1367     1368       +1     
  Lines              63315    63807     +492     
  Branches            9357     9388      +31     
=================================================
+ Hits               20538    21093     +555     
+ Misses             41744    41671      -73     
- Partials            1033     1043      +10     
Flag Coverage Δ
backend 52.77% <70.02%> (+1.53%) ⬆️
lfx 40.03% <100.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/backend/base/langflow/api/v1/schemas.py 96.15% <100.00%> (+0.10%) ⬆️
...controllers/API/queries/mcp/use-patch-flows-mcp.ts 0.00% <ø> (ø)
...ntrollers/API/queries/mcp/use-patch-install-mcp.ts 0.00% <ø> (ø)
...ages/homePage/components/McpAutoInstallContent.tsx 80.00% <100.00%> (ø)
...nPage/pages/homePage/components/McpJsonContent.tsx 84.44% <100.00%> (+1.11%) ⬆️
...ainPage/pages/homePage/components/McpServerTab.tsx 91.80% <100.00%> (+0.27%) ⬆️
...s/MainPage/pages/homePage/utils/mcpServerUtils.tsx 93.44% <100.00%> (+0.33%) ⬆️
src/lfx/src/lfx/services/mcp_composer/service.py 57.68% <100.00%> (+0.12%) ⬆️
src/backend/base/langflow/api/v1/projects.py 29.68% <50.00%> (ø)
...ontrollers/API/queries/mcp/use-get-composer-url.ts 0.00% <0.00%> (ø)
... and 7 more

... and 37 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Base automatically changed from feat/http-stream-mcp-1.7.0 to release-1.7.0 December 8, 2025 21:02
@codeflash-ai codeflash-ai Bot closed this Dec 8, 2025
@codeflash-ai
Copy link
Copy Markdown
Contributor Author

codeflash-ai Bot commented Dec 8, 2025

This PR has been automatically closed because the original PR #10934 by HzaRashid was closed.

@codeflash-ai codeflash-ai Bot deleted the codeflash/optimize-pr10934-2025-12-08T20.14.41 branch December 8, 2025 21:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

⚡️ codeflash Optimization PR opened by Codeflash AI community Pull Request from an external contributor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant