Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 21 additions & 3 deletions scripts/ci/azdev_linter_style.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,27 @@ def azdev_on_external_extension(index_json, azdev_type):
with open(index_json, 'r') as fd:
current_extensions = json.loads(fd.read()).get("extensions")

def entry_equals_ignore_url(entry1, entry2):
"""Compare two entries ignoring downloadUrl field"""
entry1_copy = entry1.copy()
entry2_copy = entry2.copy()
entry1_copy.pop('downloadUrl', None)
entry2_copy.pop('downloadUrl', None)
return entry1_copy == entry2_copy
Comment on lines +184 to +188
Copy link

Copilot AI Oct 30, 2025

Choose a reason for hiding this comment

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

The function creates two full dictionary copies on every invocation. For deeply nested dictionaries, this could be inefficient. Consider comparing dictionaries directly by iterating over keys and comparing values, skipping only 'downloadUrl'.

Suggested change
entry1_copy = entry1.copy()
entry2_copy = entry2.copy()
entry1_copy.pop('downloadUrl', None)
entry2_copy.pop('downloadUrl', None)
return entry1_copy == entry2_copy
for key in entry1:
if key == 'downloadUrl':
continue
if key not in entry2 or entry1[key] != entry2[key]:
return False
for key in entry2:
if key == 'downloadUrl':
continue
if key not in entry1:
return False
return True

Copilot uses AI. Check for mistakes.

for name in current_extensions:
modified_entries = [entry for entry in current_extensions[name] if entry not in public_extensions.get(name, [])]
public_entries = public_extensions.get(name, [])

# Find modified entries by comparing without downloadUrl
modified_entries = []
for entry in current_extensions[name]:
is_modified = True
for public_entry in public_entries:
if entry_equals_ignore_url(entry, public_entry):
is_modified = False
break
if is_modified:
modified_entries.append(entry)
Comment on lines +195 to +202
Copy link

Copilot AI Oct 30, 2025

Choose a reason for hiding this comment

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

The nested loop implementation has O(n*m) time complexity. This could be optimized by creating a set of hashable representations of public entries (excluding downloadUrl) for O(n) lookup instead of repeatedly comparing each current entry against all public entries.

Copilot uses AI. Check for mistakes.

if not modified_entries:
continue
Expand All @@ -205,8 +224,7 @@ def azdev_on_external_extension(index_json, azdev_type):
# azdev_extension.style()

logger.info('Checking service name for external extensions: %s', name)
if name != 'deploy-to-azure':
service_name.check()
service_name.check()

az_extension.remove()

Expand Down
Loading