|
11 | 11 | from socketdev.fullscans import ( |
12 | 12 | FullScanParams, |
13 | 13 | SocketArtifact, |
| 14 | + DiffArtifact, |
14 | 15 | ) |
15 | 16 | from socketdev.org import Organization |
16 | 17 | from socketdev.repos import RepositoryInfo |
@@ -312,25 +313,64 @@ def get_added_and_removed_packages(self, head_full_scan: Optional[FullScan], new |
312 | 313 | """ |
313 | 314 | if head_full_scan is None: |
314 | 315 | # First scan - all packages are new, none removed |
| 316 | + log.info(f"No head scan found. New scan ID: {new_full_scan.id}") |
315 | 317 | return new_full_scan.packages, {} |
316 | 318 |
|
317 | 319 | # Normal case - compare scans |
| 320 | + log.info(f"Comparing scans - Head scan ID: {head_full_scan.id}, New scan ID: {new_full_scan.id}") |
318 | 321 | diff_report = self.sdk.fullscans.stream_diff(self.config.org_slug, head_full_scan.id, new_full_scan.id).data |
319 | | - added_artifacts = diff_report.artifacts.added |
320 | | - removed_artifacts = diff_report.artifacts.removed |
| 322 | + |
| 323 | + # Debug output for artifact counts |
| 324 | + log.info(f"Diff report artifact counts:") |
| 325 | + log.info(f"Added: {len(diff_report.artifacts.added)}") |
| 326 | + log.info(f"Removed: {len(diff_report.artifacts.removed)}") |
| 327 | + log.info(f"Unchanged: {len(diff_report.artifacts.unchanged)}") |
| 328 | + log.info(f"Replaced: {len(diff_report.artifacts.replaced)}") |
| 329 | + log.info(f"Updated: {len(diff_report.artifacts.updated)}") |
| 330 | + |
| 331 | + added_artifacts = diff_report.artifacts.added + diff_report.artifacts.updated |
| 332 | + removed_artifacts = diff_report.artifacts.removed + diff_report.artifacts.replaced |
321 | 333 |
|
322 | 334 | added_packages: Dict[str, Package] = {} |
323 | 335 | removed_packages: Dict[str, Package] = {} |
324 | 336 |
|
325 | 337 | for artifact in added_artifacts: |
326 | | - # Get the full package data from new_full_scan |
327 | | - pkg = new_full_scan.packages[artifact.id] |
328 | | - added_packages[artifact.id] = Package(**asdict(pkg)) |
| 338 | + try: |
| 339 | + # Get the full package data from new_full_scan |
| 340 | + pkg = new_full_scan.packages[artifact.id] |
| 341 | + added_packages[artifact.id] = Package(**asdict(pkg)) |
| 342 | + except KeyError: |
| 343 | + # Debug output to find matching packages |
| 344 | + log.error(f"KeyError: Could not find added artifact {artifact.id} in new_full_scan") |
| 345 | + log.error(f"Artifact details - name: {artifact.name}, version: {artifact.version}") |
| 346 | + # Look for packages with matching name/version |
| 347 | + matches = [p for p in new_full_scan.packages.values() |
| 348 | + if p.name == artifact.name and p.version == artifact.version] |
| 349 | + if matches: |
| 350 | + log.error(f"Found {len(matches)} packages with matching name/version:") |
| 351 | + for m in matches: |
| 352 | + log.error(f" ID: {m.id}, name: {m.name}, version: {m.version}") |
| 353 | + else: |
| 354 | + log.error("No matching packages found in new_full_scan") |
329 | 355 |
|
330 | 356 | for artifact in removed_artifacts: |
331 | | - # Get the full package data from head_full_scan |
332 | | - pkg = head_full_scan.packages[artifact.id] |
333 | | - removed_packages[artifact.id] = Package(**asdict(pkg)) |
| 357 | + try: |
| 358 | + # Get the full package data from head_full_scan |
| 359 | + pkg = head_full_scan.packages[artifact.id] |
| 360 | + removed_packages[artifact.id] = Package(**asdict(pkg)) |
| 361 | + except KeyError: |
| 362 | + # Debug output to find matching packages |
| 363 | + log.error(f"KeyError: Could not find removed artifact {artifact.id} in head_full_scan") |
| 364 | + log.error(f"Artifact details - name: {artifact.name}, version: {artifact.version}") |
| 365 | + # Look for packages with matching name/version |
| 366 | + matches = [p for p in head_full_scan.packages.values() |
| 367 | + if p.name == artifact.name and p.version == artifact.version] |
| 368 | + if matches: |
| 369 | + log.error(f"Found {len(matches)} packages with matching name/version:") |
| 370 | + for m in matches: |
| 371 | + log.error(f" ID: {m.id}, name: {m.name}, version: {m.version}") |
| 372 | + else: |
| 373 | + log.error("No matching packages found in head_full_scan") |
334 | 374 |
|
335 | 375 | return added_packages, removed_packages |
336 | 376 |
|
|
0 commit comments