Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

⚡️ Speed up method AstraDBVectorStoreComponent.reset_database_list by 59% in PR #6048 (bugfix-dev-astradb) #6066

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

codeflash-ai[bot]
Copy link
Contributor

@codeflash-ai codeflash-ai bot commented Feb 1, 2025

⚡️ This pull request contains optimizations for PR #6048

If you approve this dependent PR, these changes will be merged into the original PR branch bugfix-dev-astradb.

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


📄 59% (0.59x) speedup for AstraDBVectorStoreComponent.reset_database_list in src/backend/base/langflow/components/vectorstores/astradb.py

⏱️ Runtime : 1.54 millisecond 972 microseconds (best of 64 runs)

📝 Explanation and details

To optimize the given Python program for faster execution, we'll focus on a couple of key areas.

Here's the optimized version of the code.

Correctness verification report:

Test Status
⚙️ Existing Unit Tests 🔘 None Found
🌀 Generated Regression Tests 17 Passed
⏪ Replay Tests 🔘 None Found
🔎 Concolic Coverage Tests 🔘 None Found
📊 Tests Coverage undefined
🌀 Generated Regression Tests Details
from unittest.mock import MagicMock

# imports
import pytest  # used for our unit tests
# function to test
from langflow.base.vectorstores.model import LCVectorStoreComponent
from langflow.components.vectorstores.astradb import \
    AstraDBVectorStoreComponent


# unit tests
class TestAstraDBVectorStoreComponent:
    @pytest.fixture
    def component(self):
        component = AstraDBVectorStoreComponent()
        component.get_database_list = MagicMock()
        return component

    def test_basic_functionality_multiple_databases(self, component):
        # Mock the database list
        component.get_database_list.return_value = {
            "db1": {"collections": ["col1"], "api_endpoint": "endpoint1"},
            "db2": {"collections": ["col2"], "api_endpoint": "endpoint2"},
        }
        build_config = {"api_endpoint": {}}

        # Call the function
        codeflash_output = component.reset_database_list(build_config)

    def test_basic_functionality_no_databases(self, component):
        # Mock the database list
        component.get_database_list.return_value = {}
        build_config = {"api_endpoint": {}}

        # Call the function
        codeflash_output = component.reset_database_list(build_config)

    

import pytest  # used for our unit tests
# function to test
from langflow.base.vectorstores.model import LCVectorStoreComponent
from langflow.components.vectorstores.astradb import \
    AstraDBVectorStoreComponent


# unit tests
class TestAstraDBVectorStoreComponent:

    # Helper function to mock get_database_list
    def mock_get_database_list(self, data):
        def _mock_get_database_list():
            return data
        return _mock_get_database_list

    # Basic Functionality Tests
    def test_reset_database_list_valid(self):
        component = AstraDBVectorStoreComponent()
        component.get_database_list = self.mock_get_database_list({
            "db1": {"collections": ["col1", "col2"], "api_endpoint": "http://endpoint1"},
            "db2": {"collections": ["col3"], "api_endpoint": "http://endpoint2"}
        })
        build_config = {"api_endpoint": {"options": [], "options_metadata": [], "value": "old_value"}}
        codeflash_output = component.reset_database_list(build_config)

    def test_reset_database_list_empty(self):
        component = AstraDBVectorStoreComponent()
        component.get_database_list = self.mock_get_database_list({})
        build_config = {"api_endpoint": {"options": [], "options_metadata": [], "value": "old_value"}}
        codeflash_output = component.reset_database_list(build_config)

    # Edge Case Tests

Codeflash

erichare and others added 7 commits January 31, 2025 11:31
… improve code structure and readability

📝 (duck_duck_go_search_run.py): update DuckDuckGoSearchComponent with new display name, description, and documentation URL
📝 (duck_duck_go_search_run.py): update DuckDuckGoSearchComponent inputs with additional information and tool mode
📝 (duck_duck_go_search_run.py): update DuckDuckGoSearchComponent outputs with new output methods and display names
📝 (duck_duck_go_search_run.py): update DuckDuckGoSearchComponent methods to improve clarity and functionality
…by 59% in PR #6048 (`bugfix-dev-astradb`)

To optimize the given Python program for faster execution, we'll focus on a couple of key areas.

Here's the optimized version of the code.
@codeflash-ai codeflash-ai bot added the ⚡️ codeflash Optimization PR opened by Codeflash AI label Feb 1, 2025
@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Feb 1, 2025
@dosubot dosubot bot added the python Pull requests that update Python code label Feb 1, 2025
Base automatically changed from bugfix-dev-astradb to main February 3, 2025 15:53
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels Feb 3, 2025
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 python Pull requests that update Python code size:L This PR changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants