Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

⚡️ Speed up function extract_bucket_and_prefix_from_gcs_path by 9%#37

Open
codeflash-ai[bot] wants to merge 1 commit into
maincodeflash-ai/python-aiplatform:mainfrom
codeflash/optimize-extract_bucket_and_prefix_from_gcs_path-mgkkw24dcodeflash-ai/python-aiplatform:codeflash/optimize-extract_bucket_and_prefix_from_gcs_path-mgkkw24dCopy head branch name to clipboard
Open

⚡️ Speed up function extract_bucket_and_prefix_from_gcs_path by 9%#37
codeflash-ai[bot] wants to merge 1 commit into
maincodeflash-ai/python-aiplatform:mainfrom
codeflash/optimize-extract_bucket_and_prefix_from_gcs_path-mgkkw24dcodeflash-ai/python-aiplatform:codeflash/optimize-extract_bucket_and_prefix_from_gcs_path-mgkkw24dCopy head branch name to clipboard

Conversation

@codeflash-ai

@codeflash-ai codeflash-ai Bot commented Oct 10, 2025

Copy link
Copy Markdown

📄 9% (0.09x) speedup for extract_bucket_and_prefix_from_gcs_path in google/cloud/aiplatform/utils/__init__.py

⏱️ Runtime : 102 microseconds 93.4 microseconds (best of 274 runs)

📝 Explanation and details

The optimization replaces the split("/", 1) approach with a more efficient find("/") method for parsing the bucket and prefix from GCS paths.

Key changes:

  • Instead of gcs_path.split("/", 1) which creates a list and requires indexing operations, the code now uses gcs_path.find("/") to locate the first slash position
  • Uses direct string slicing (gcs_path[:slash_idx] and gcs_path[slash_idx+1:]) instead of list operations
  • Eliminates the len(gcs_parts) == 1 check by using the slash index directly

Why it's faster:

  • str.find() is more efficient than str.split() for finding a single delimiter - it stops at the first occurrence and returns an index rather than creating a new list object
  • Direct string slicing avoids the overhead of list creation, indexing, and the conditional length check
  • Reduces memory allocations by eliminating the intermediate list object

Performance characteristics:
The optimization shows the best improvements for "bucket-only" cases (15-42% faster) where no slash is found, since it avoids unnecessary list creation entirely. For paths with prefixes, gains are more modest (2-10% faster) but still consistent. The approach is particularly effective for simple bucket names and paths without complex prefix structures, which are common in GCS usage patterns.

Correctness verification report:

Test Status
⚙️ Existing Unit Tests 🔘 None Found
🌀 Generated Regression Tests 79 Passed
⏪ Replay Tests 🔘 None Found
🔎 Concolic Coverage Tests 🔘 None Found
📊 Tests Coverage 100.0%
🌀 Generated Regression Tests and Runtime
from typing import Optional, Tuple

# imports
import pytest  # used for our unit tests
from aiplatform.utils.__init__ import extract_bucket_and_prefix_from_gcs_path

# unit tests

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

def test_basic_bucket_and_prefix_with_gs_prefix():
    # Basic test: gs:// prefix, bucket and simple prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my-bucket/my-folder") # 1.31μs -> 1.35μs (3.47% slower)

def test_basic_bucket_and_prefix_without_gs_prefix():
    # Basic test: no gs:// prefix, bucket and simple prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("my-bucket/my-folder") # 1.07μs -> 1.03μs (3.89% faster)

def test_basic_bucket_only_with_gs_prefix():
    # Basic test: gs:// prefix, bucket only, no prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my-bucket") # 1.14μs -> 991ns (15.4% faster)

def test_basic_bucket_only_without_gs_prefix():
    # Basic test: no gs:// prefix, bucket only, no prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("my-bucket") # 930ns -> 785ns (18.5% faster)

def test_basic_bucket_and_multi_level_prefix():
    # Basic test: multi-level prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket/path/to/resource") # 1.24μs -> 1.22μs (2.22% faster)

def test_basic_trailing_slash():
    # Basic test: trailing slash should be removed from prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket/path/to/resource/") # 1.42μs -> 1.31μs (8.16% faster)

def test_basic_trailing_slash_bucket_only():
    # Basic test: trailing slash with bucket only
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket/") # 1.29μs -> 1.09μs (18.1% faster)

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

def test_edge_empty_string():
    # Edge: empty string input
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("") # 961ns -> 749ns (28.3% faster)

def test_edge_only_gs_prefix():
    # Edge: input is just "gs://"
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://") # 1.17μs -> 942ns (24.1% faster)

def test_edge_bucket_with_multiple_slashes():
    # Edge: bucket and prefix with consecutive slashes
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket////prefix") # 1.28μs -> 1.22μs (5.08% faster)

def test_edge_prefix_is_empty_after_slash():
    # Edge: "gs://bucket/" should return None for prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket/") # 1.25μs -> 1.07μs (17.1% faster)

def test_edge_prefix_is_single_slash():
    # Edge: "gs://bucket//" should treat prefix as empty string after removing trailing slash
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket//") # 1.42μs -> 1.33μs (6.37% faster)

def test_edge_bucket_with_dot_and_dash():
    # Edge: bucket contains dot and dash, prefix contains underscore
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my.bucket-name/folder_1") # 1.25μs -> 1.20μs (4.17% faster)

def test_edge_prefix_is_just_slash():
    # Edge: "gs://bucket/" should return None for prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket/") # 1.26μs -> 1.04μs (21.1% faster)

def test_edge_bucket_with_unicode():
    # Edge: bucket and prefix contain unicode characters
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bückét/ünîcødë/файл") # 1.98μs -> 1.94μs (2.32% faster)

def test_edge_bucket_with_spaces():
    # Edge: bucket and prefix contain spaces
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket with spaces/prefix with spaces") # 1.24μs -> 1.24μs (0.324% faster)

def test_edge_bucket_with_special_characters():
    # Edge: bucket and prefix contain special characters
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket!@#$/prefix%^&*()") # 1.25μs -> 1.14μs (9.57% faster)

def test_edge_bucket_with_leading_slash():
    # Edge: input starts with slash after gs://
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs:///bucket/prefix") # 1.21μs -> 1.14μs (5.61% faster)

def test_edge_prefix_is_none_when_no_slash():
    # Edge: no slash after bucket, should return None for prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket") # 1.15μs -> 936ns (22.3% faster)

def test_edge_bucket_is_empty_with_slash():
    # Edge: "gs:///prefix" (empty bucket)
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs:///prefix") # 1.18μs -> 1.18μs (0.169% slower)

def test_edge_bucket_and_prefix_with_numbers():
    # Edge: bucket and prefix contain numbers
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket123/prefix456") # 1.21μs -> 1.15μs (5.58% faster)

def test_edge_bucket_and_prefix_with_mixed_case():
    # Edge: bucket and prefix contain mixed case
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://BucketName/PrefixName") # 1.19μs -> 1.12μs (6.07% faster)

def test_edge_bucket_and_prefix_with_long_bucket_name():
    # Edge: long bucket name
    long_bucket = "a" * 63  # max GCS bucket name length
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path(f"gs://{long_bucket}/prefix") # 1.21μs -> 1.14μs (6.06% faster)

def test_edge_prefix_with_leading_and_trailing_slashes():
    # Edge: prefix with leading and trailing slashes
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket//prefix//") # 1.39μs -> 1.26μs (10.5% faster)

def test_edge_prefix_with_only_slashes():
    # Edge: prefix is only slashes
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket////") # 1.41μs -> 1.26μs (11.8% faster)

def test_edge_bucket_and_prefix_with_empty_prefix():
    # Edge: bucket with slash but empty prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket/") # 1.28μs -> 1.03μs (23.8% faster)

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

def test_large_scale_long_prefix():
    # Large scale: very long prefix (999 chars)
    long_prefix = "a" * 999
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path(f"gs://bucket/{long_prefix}") # 1.52μs -> 1.52μs (0.131% slower)

def test_large_scale_long_bucket_and_prefix():
    # Large scale: long bucket and long prefix
    long_bucket = "b" * 63  # max GCS bucket name length
    long_prefix = "p" * 999
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path(f"gs://{long_bucket}/{long_prefix}") # 1.55μs -> 1.50μs (3.61% faster)

def test_large_scale_many_slashes_in_prefix():
    # Large scale: prefix with many slashes
    prefix = "/".join([f"folder{i}" for i in range(1000)])
    bucket, out_prefix = extract_bucket_and_prefix_from_gcs_path(f"gs://bucket/{prefix}") # 2.02μs -> 2.01μs (0.547% faster)

def test_large_scale_bucket_and_prefix_with_special_chars():
    # Large scale: bucket and prefix with many special characters
    special_chars = "!@#$%^&*()_+-=~`[]{}|;:',<.>/?"
    bucket = special_chars * 2
    prefix = special_chars * 20
    bucket_out, prefix_out = extract_bucket_and_prefix_from_gcs_path(f"gs://{bucket}/{prefix}") # 1.38μs -> 1.28μs (7.96% faster)

def test_large_scale_prefix_with_trailing_slash():
    # Large scale: prefix with trailing slash
    prefix = "folder/" * 200  # 1200 chars
    bucket, out_prefix = extract_bucket_and_prefix_from_gcs_path(f"gs://bucket/{prefix}") # 1.75μs -> 1.67μs (4.72% faster)
    # The trailing slash should be removed
    expected_prefix = prefix[:-1]

def test_large_scale_bucket_only():
    # Large scale: bucket only, long bucket name
    long_bucket = "bucket" * 100  # 600 chars
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path(f"gs://{long_bucket}") # 1.31μs -> 1.06μs (23.5% faster)

def test_large_scale_prefix_is_empty_string():
    # Large scale: bucket with slash but empty prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket/") # 1.27μs -> 1.06μs (19.4% faster)

def test_large_scale_prefix_is_single_slash():
    # Large scale: bucket with single slash as prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket//") # 1.33μs -> 1.27μs (5.12% faster)
# codeflash_output is used to check that the output of the original code is the same as that of the optimized code.
#------------------------------------------------
from typing import Optional, Tuple

# imports
import pytest  # used for our unit tests
from aiplatform.utils.__init__ import extract_bucket_and_prefix_from_gcs_path

# unit tests

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

def test_basic_bucket_and_prefix():
    # Test with standard bucket and prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my-bucket/my/prefix") # 1.31μs -> 1.35μs (2.60% slower)

def test_basic_bucket_only_with_gs():
    # Test with only bucket and gs://
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my-bucket") # 1.21μs -> 970ns (24.9% faster)

def test_basic_bucket_only_without_gs():
    # Test with only bucket and no gs://
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("my-bucket") # 963ns -> 766ns (25.7% faster)

def test_basic_bucket_and_prefix_without_gs():
    # Test with bucket and prefix, no gs://
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("my-bucket/path/to/object") # 1.02μs -> 1.04μs (1.63% slower)

def test_basic_bucket_and_prefix_with_trailing_slash():
    # Test with trailing slash in prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my-bucket/path/to/object/") # 1.40μs -> 1.34μs (4.47% faster)

def test_basic_bucket_only_with_trailing_slash():
    # Test with only bucket and trailing slash
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my-bucket/") # 1.27μs -> 1.02μs (24.4% faster)

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

def test_empty_string():
    # Test with empty string input
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("") # 990ns -> 714ns (38.7% faster)

def test_only_gs_prefix():
    # Test with only 'gs://' as input
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://") # 1.13μs -> 927ns (21.7% faster)

def test_only_gs_prefix_with_trailing_slash():
    # Test with 'gs:///' as input
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs:///") # 1.23μs -> 1.02μs (20.5% faster)

def test_bucket_with_multiple_slashes():
    # Test with bucket and multiple slashes after bucket name
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my-bucket////") # 1.31μs -> 1.27μs (2.67% faster)

def test_bucket_with_empty_prefix():
    # Test with bucket and empty prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my-bucket/") # 1.22μs -> 1.01μs (20.7% faster)

def test_bucket_with_single_slash_prefix():
    # Test with bucket and single slash as prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my-bucket//") # 1.33μs -> 1.21μs (9.56% faster)

def test_bucket_with_dot_and_dash():
    # Test with bucket containing dots and dashes
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my.bucket-name/prefix") # 1.16μs -> 1.20μs (2.85% slower)

def test_bucket_with_underscore():
    # Test with bucket containing underscores (not valid in GCS, but function should not validate)
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://my_bucket/prefix") # 1.19μs -> 1.15μs (3.49% faster)

def test_prefix_with_special_characters():
    # Test with prefix containing special characters
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket-name/prefix!@#$%^&*()_+=-[]{};:,<.>") # 1.23μs -> 1.11μs (10.3% faster)

def test_prefix_with_spaces():
    # Test with prefix containing spaces
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket-name/path with spaces/file.txt") # 1.22μs -> 1.09μs (12.4% faster)

def test_bucket_with_leading_and_trailing_spaces():
    # Test with bucket having leading and trailing spaces
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://  my-bucket  /prefix") # 1.17μs -> 1.10μs (5.88% faster)

def test_prefix_with_leading_and_trailing_slashes():
    # Test with prefix having leading and trailing slashes
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket-name//prefix//") # 1.38μs -> 1.28μs (7.65% faster)

def test_bucket_and_prefix_with_unicode():
    # Test with unicode characters in bucket and prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://büçkêt/prefix/üñîçødë") # 1.67μs -> 1.51μs (10.0% faster)

def test_bucket_and_prefix_with_numbers():
    # Test with numbers in bucket and prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://123bucket/456prefix") # 1.17μs -> 1.06μs (9.90% faster)

def test_bucket_and_prefix_with_dot_slash():
    # Test with dot slash in prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket-name/./prefix") # 1.17μs -> 1.02μs (14.4% faster)

def test_bucket_and_prefix_with_double_dot_slash():
    # Test with double dot slash in prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket-name/../prefix") # 1.15μs -> 1.09μs (5.99% faster)

def test_bucket_and_prefix_with_long_prefix():
    # Test with long prefix
    long_prefix = "a/" * 50 + "file.txt"
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path(f"gs://bucket-name/{long_prefix}") # 1.24μs -> 1.14μs (8.50% faster)

def test_bucket_and_prefix_with_empty_prefix_after_slash():
    # Test with bucket and empty prefix after slash
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket-name/") # 1.24μs -> 1.04μs (18.4% faster)

def test_bucket_and_prefix_with_only_slash():
    # Test with bucket and prefix as only slash
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket-name/") # 1.24μs -> 1.03μs (20.1% faster)

def test_bucket_and_prefix_with_multiple_slashes_in_prefix():
    # Test with bucket and multiple slashes in prefix
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket-name/path//to///object") # 1.17μs -> 1.16μs (0.690% faster)

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

def test_large_scale_long_bucket_and_prefix():
    # Test with very long bucket name and prefix
    long_bucket = "b" * 255  # Max GCS bucket length is 63, but function doesn't validate
    long_prefix = "/".join(["p" * 50 for _ in range(10)])  # 10 parts, each 50 chars
    path = f"gs://{long_bucket}/{long_prefix}"
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path(path) # 1.54μs -> 1.47μs (5.11% faster)

def test_large_scale_many_slashes_in_prefix():
    # Test with prefix containing many slashes
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket/" + "/".join(["a"]*500)) # 1.49μs -> 1.44μs (3.12% faster)

def test_large_scale_bucket_and_prefix_no_gs():
    # Test with large bucket and prefix, no gs://
    long_bucket = "bucket" * 50
    long_prefix = "prefix/" * 100
    path = f"{long_bucket}/{long_prefix}file.txt"
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path(path) # 1.19μs -> 1.24μs (4.19% slower)

def test_large_scale_bucket_and_prefix_with_trailing_slash():
    # Test with large bucket and prefix with trailing slash
    long_bucket = "bucket" * 50
    long_prefix = "prefix/" * 100
    path = f"gs://{long_bucket}/{long_prefix}/"
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path(path) # 1.81μs -> 1.77μs (2.26% faster)

def test_large_scale_bucket_only():
    # Test with very large bucket name only
    long_bucket = "bucket" * 200
    path = f"gs://{long_bucket}"
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path(path) # 1.60μs -> 1.13μs (41.8% faster)

def test_large_scale_prefix_only_slashes():
    # Test with bucket and prefix of just slashes (up to 999)
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path("gs://bucket/" + "/"*999) # 1.81μs -> 1.76μs (2.90% faster)

def test_large_scale_bucket_and_prefix_with_spaces():
    # Test with bucket and prefix containing many spaces
    long_bucket = "bucket " * 50
    long_prefix = "prefix " * 100
    path = f"gs://{long_bucket}/{long_prefix}file.txt"
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path(path) # 1.59μs -> 1.60μs (0.499% slower)

# ---------------------------
# Mutation Testing: Defensive
# ---------------------------

@pytest.mark.parametrize("input_path,expected_bucket,expected_prefix", [
    # Changing any logic below should break at least one test
    ("gs://bucket-name", "bucket-name", None),
    ("gs://bucket-name/", "bucket-name", None),
    ("gs://bucket-name//", "bucket-name", "/"),
    ("gs://bucket-name/path/to/object", "bucket-name", "path/to/object"),
    ("bucket-name/path/to/object", "bucket-name", "path/to/object"),
    ("gs://bucket-name/path/to/object/", "bucket-name", "path/to/object"),
    ("gs://bucket-name/path/to/object////", "bucket-name", "path/to/object///"),
    ("gs://bucket-name/", "bucket-name", None),
    ("bucket-name", "bucket-name", None),
    ("gs://", "", None),
    ("gs:///", "", None),
    ("", "", None),
])
def test_mutation_defensive(input_path, expected_bucket, expected_prefix):
    # Defensive test: any mutation to the function should break at least one case
    bucket, prefix = extract_bucket_and_prefix_from_gcs_path(input_path) # 14.5μs -> 13.1μs (10.7% faster)
# 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-extract_bucket_and_prefix_from_gcs_path-mgkkw24d and push.

Codeflash

The optimization replaces the `split("/", 1)` approach with a more efficient `find("/")` method for parsing the bucket and prefix from GCS paths. 

**Key changes:**
- Instead of `gcs_path.split("/", 1)` which creates a list and requires indexing operations, the code now uses `gcs_path.find("/")` to locate the first slash position
- Uses direct string slicing (`gcs_path[:slash_idx]` and `gcs_path[slash_idx+1:]`) instead of list operations
- Eliminates the `len(gcs_parts) == 1` check by using the slash index directly

**Why it's faster:**
- `str.find()` is more efficient than `str.split()` for finding a single delimiter - it stops at the first occurrence and returns an index rather than creating a new list object
- Direct string slicing avoids the overhead of list creation, indexing, and the conditional length check
- Reduces memory allocations by eliminating the intermediate list object

**Performance characteristics:**
The optimization shows the best improvements for "bucket-only" cases (15-42% faster) where no slash is found, since it avoids unnecessary list creation entirely. For paths with prefixes, gains are more modest (2-10% faster) but still consistent. The approach is particularly effective for simple bucket names and paths without complex prefix structures, which are common in GCS usage patterns.
@codeflash-ai codeflash-ai Bot requested a review from mashraf-222 October 10, 2025 08:22
@codeflash-ai codeflash-ai Bot added the ⚡️ codeflash Optimization PR opened by Codeflash AI label Oct 10, 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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.