cycode 3.8.2.dev1__py3-none-any.whl → 3.8.3.dev1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
cycode/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = '3.8.2.dev1' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
1
+ __version__ = '3.8.3.dev1' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
@@ -186,7 +186,7 @@ def _scan_commit_range_documents(
186
186
  def _scan_sca_commit_range(ctx: typer.Context, repo_path: str, commit_range: str, **_) -> None:
187
187
  scan_parameters = get_scan_parameters(ctx, (repo_path,))
188
188
 
189
- from_commit_rev, to_commit_rev = parse_commit_range(commit_range, repo_path)
189
+ from_commit_rev, to_commit_rev, _ = parse_commit_range(commit_range, repo_path)
190
190
  from_commit_documents, to_commit_documents, _ = get_commit_range_modified_documents(
191
191
  ctx.obj['progress_bar'], ScanProgressBarSection.PREPARE_LOCAL_FILES, repo_path, from_commit_rev, to_commit_rev
192
192
  )
@@ -227,7 +227,7 @@ def _scan_secret_commit_range(
227
227
  def _scan_sast_commit_range(ctx: typer.Context, repo_path: str, commit_range: str, **_) -> None:
228
228
  scan_parameters = get_scan_parameters(ctx, (repo_path,))
229
229
 
230
- from_commit_rev, to_commit_rev = parse_commit_range(commit_range, repo_path)
230
+ from_commit_rev, to_commit_rev, _ = parse_commit_range(commit_range, repo_path)
231
231
  _, commit_documents, diff_documents = get_commit_range_modified_documents(
232
232
  ctx.obj['progress_bar'],
233
233
  ScanProgressBarSection.PREPARE_LOCAL_FILES,
@@ -67,12 +67,17 @@ def collect_commit_range_diff_documents(
67
67
  commit_documents_to_scan = []
68
68
 
69
69
  repo = git_proxy.get_repo(path)
70
- total_commits_count = int(repo.git.rev_list('--count', commit_range))
71
- logger.debug('Calculating diffs for %s commits in the commit range %s', total_commits_count, commit_range)
70
+
71
+ normalized_commit_range = normalize_commit_range(commit_range, path)
72
+
73
+ total_commits_count = int(repo.git.rev_list('--count', normalized_commit_range))
74
+ logger.debug(
75
+ 'Calculating diffs for %s commits in the commit range %s', total_commits_count, normalized_commit_range
76
+ )
72
77
 
73
78
  progress_bar.set_section_length(ScanProgressBarSection.PREPARE_LOCAL_FILES, total_commits_count)
74
79
 
75
- for scanned_commits_count, commit in enumerate(repo.iter_commits(rev=commit_range)):
80
+ for scanned_commits_count, commit in enumerate(repo.iter_commits(rev=normalized_commit_range)):
76
81
  if _does_reach_to_max_commits_to_scan_limit(commit_ids_to_scan, max_commits_count):
77
82
  logger.debug('Reached to max commits to scan count. Going to scan only %s last commits', max_commits_count)
78
83
  progress_bar.update(ScanProgressBarSection.PREPARE_LOCAL_FILES, total_commits_count - scanned_commits_count)
@@ -96,7 +101,12 @@ def collect_commit_range_diff_documents(
96
101
 
97
102
  logger.debug(
98
103
  'Found all relevant files in commit %s',
99
- {'path': path, 'commit_range': commit_range, 'commit_id': commit_id},
104
+ {
105
+ 'path': path,
106
+ 'commit_range': commit_range,
107
+ 'normalized_commit_range': normalized_commit_range,
108
+ 'commit_id': commit_id,
109
+ },
100
110
  )
101
111
 
102
112
  logger.debug('List of commit ids to scan, %s', {'commit_ids': commit_ids_to_scan})
@@ -428,8 +438,9 @@ def get_pre_commit_modified_documents(
428
438
  return git_head_documents, pre_committed_documents, diff_documents
429
439
 
430
440
 
431
- def parse_commit_range(commit_range: str, path: str) -> tuple[Optional[str], Optional[str]]:
441
+ def parse_commit_range(commit_range: str, path: str) -> tuple[Optional[str], Optional[str], Optional[str]]:
432
442
  """Parses a git commit range string and returns the full SHAs for the 'from' and 'to' commits.
443
+ Also, it returns the separator in the commit range.
433
444
 
434
445
  Supports:
435
446
  - 'from..to'
@@ -440,8 +451,10 @@ def parse_commit_range(commit_range: str, path: str) -> tuple[Optional[str], Opt
440
451
  """
441
452
  repo = git_proxy.get_repo(path)
442
453
 
454
+ separator = '..'
443
455
  if '...' in commit_range:
444
456
  from_spec, to_spec = commit_range.split('...', 1)
457
+ separator = '...'
445
458
  elif '..' in commit_range:
446
459
  from_spec, to_spec = commit_range.split('..', 1)
447
460
  else:
@@ -459,7 +472,28 @@ def parse_commit_range(commit_range: str, path: str) -> tuple[Optional[str], Opt
459
472
  # Use rev_parse to resolve each specifier to its full commit SHA
460
473
  from_commit_rev = repo.rev_parse(from_spec).hexsha
461
474
  to_commit_rev = repo.rev_parse(to_spec).hexsha
462
- return from_commit_rev, to_commit_rev
475
+ return from_commit_rev, to_commit_rev, separator
463
476
  except git_proxy.get_git_command_error() as e:
464
477
  logger.warning("Failed to parse commit range '%s'", commit_range, exc_info=e)
465
- return None, None
478
+ return None, None, None
479
+
480
+
481
+ def normalize_commit_range(commit_range: str, path: str) -> str:
482
+ """Normalize a commit range string to handle various formats consistently with all scan types.
483
+
484
+ Returns:
485
+ A normalized commit range string suitable for Git operations (e.g., 'full_sha1..full_sha2')
486
+ """
487
+ from_commit_rev, to_commit_rev, separator = parse_commit_range(commit_range, path)
488
+ if from_commit_rev is None or to_commit_rev is None:
489
+ logger.warning('Failed to parse commit range "%s", falling back to raw string.', commit_range)
490
+ return commit_range
491
+
492
+ # Construct a normalized range string using the original separator for iter_commits
493
+ normalized_commit_range = f'{from_commit_rev}{separator}{to_commit_rev}'
494
+ logger.debug(
495
+ 'Normalized commit range "%s" to "%s"',
496
+ commit_range,
497
+ normalized_commit_range,
498
+ )
499
+ return normalized_commit_range
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cycode
3
- Version: 3.8.2.dev1
3
+ Version: 3.8.3.dev1
4
4
  Summary: Boost security in your dev lifecycle via SAST, SCA, Secrets & IaC scanning.
5
5
  License-Expression: MIT
6
6
  License-File: LICENCE
@@ -1,4 +1,4 @@
1
- cycode/__init__.py,sha256=nL4m3_ipja5dZ1zbPfJ8TM15p5F70OsRKDrQXAEDPdI,114
1
+ cycode/__init__.py,sha256=Ca_FeBT5-bgjhafFK5x2NkosL7VeKrBaZumTFFHl18s,114
2
2
  cycode/__main__.py,sha256=Z3bD5yrA7yPvAChcADQrqCaZd0ChGI1gdiwALwbWJ6U,104
3
3
  cycode/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  cycode/cli/app.py,sha256=Th7skHthoJN1EuDtgjl4flflFqejfxaTORKmMKSXE00,6412
@@ -40,7 +40,7 @@ cycode/cli/apps/scan/aggregation_report.py,sha256=8f9kPfO7biNf5OsDZG6UhMPqG6ymoF
40
40
  cycode/cli/apps/scan/code_scanner.py,sha256=lNVyIhvA1IwufPZA4vT_ZyCaVdgio1xEaKa7oH3apdU,11402
41
41
  cycode/cli/apps/scan/commit_history/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  cycode/cli/apps/scan/commit_history/commit_history_command.py,sha256=Yp_17vfjDqytjCqjXQ73HaDGH5_ertoLhoV7Cvt1Hhw,1104
43
- cycode/cli/apps/scan/commit_range_scanner.py,sha256=q48EM7X7yq5YbBSAW4kXGBoOohIvqcz5x96Rc51H0Gg,14734
43
+ cycode/cli/apps/scan/commit_range_scanner.py,sha256=g3joPg0P1suQ2KDxb7SopjecLOlMKFf_xopah6SPHQ0,14740
44
44
  cycode/cli/apps/scan/detection_excluder.py,sha256=0zaNa1PxVshATHv8axp4e-xWvmuNQdg_r5DYsdQ9EVo,6432
45
45
  cycode/cli/apps/scan/path/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  cycode/cli/apps/scan/path/path_command.py,sha256=7M8nnohjB4SaNA7jv3mFODyX1wwwSmROe45e7E5GLbY,670
@@ -76,7 +76,7 @@ cycode/cli/exceptions/handle_errors.py,sha256=9ZiDbHswXLe0TscUqZL9Or5Jq2AlYtzGb6
76
76
  cycode/cli/exceptions/handle_report_sbom_errors.py,sha256=bi0EizHtQLL-ovhHRH98CZ7qXdDPLTYnI59Jn1Y5c0E,926
77
77
  cycode/cli/exceptions/handle_scan_errors.py,sha256=-QIYvbBXmZVOvAdNwGYwAdmBma6Z_pPpS0a77aDICp8,1916
78
78
  cycode/cli/files_collector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
- cycode/cli/files_collector/commit_range_documents.py,sha256=enq-lC8VIU1Nqpb5WNZv9BxHMyC04jQLAxS3mU5eKms,18164
79
+ cycode/cli/files_collector/commit_range_documents.py,sha256=O55WXYmxFwolbyJLnJRq0tW6J7KsUUi8l22taP8hXJc,19443
80
80
  cycode/cli/files_collector/documents_walk_ignore.py,sha256=G4e-3vfP4WZ7wa9-VbZ66xCKCioTXnPBfbrs4_hh8xY,4705
81
81
  cycode/cli/files_collector/file_excluder.py,sha256=5Y7MM6_4x4FRKCV47D_hOXIg9BzYLHqwoWkmtV7Lt4I,7562
82
82
  cycode/cli/files_collector/iac/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -167,8 +167,8 @@ cycode/cyclient/report_client.py,sha256=h12pz3vWCwDF73BhqFX7iDSxBgQDFwkiGh3hmul2
167
167
  cycode/cyclient/scan_client.py,sha256=uTBEjgfaCVuJREo73p_zkIVA23NQfdJ1d1-bzc7nSKk,12682
168
168
  cycode/cyclient/scan_config_base.py,sha256=mXsPZGYCtp85rv5GIige40yQZXuRcEKUW-VQJ0vgFzk,1201
169
169
  cycode/logger.py,sha256=xAzpkWLZhixO4egRcYn4HXM9lIfx5wHdpkHxNc5jrX8,2225
170
- cycode-3.8.2.dev1.dist-info/METADATA,sha256=2sps0uoWGoNYEhelIinpGhw-ZnpoEGOiUx4bTiMOon4,79037
171
- cycode-3.8.2.dev1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
172
- cycode-3.8.2.dev1.dist-info/entry_points.txt,sha256=iDcVJM8ByLElVgvBgtYxDjw1kT7O8Mo0LcWZIT5L3Ig,45
173
- cycode-3.8.2.dev1.dist-info/licenses/LICENCE,sha256=2Wx4N6mD_4xB7-E3hPkZ3MPhpJy__k_I8MaCSO-PDRo,1068
174
- cycode-3.8.2.dev1.dist-info/RECORD,,
170
+ cycode-3.8.3.dev1.dist-info/METADATA,sha256=iwdQ1atJDSZ0FVL1iF9Ntol3M6Q7YH73B4nh5rzl0P0,79037
171
+ cycode-3.8.3.dev1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
172
+ cycode-3.8.3.dev1.dist-info/entry_points.txt,sha256=iDcVJM8ByLElVgvBgtYxDjw1kT7O8Mo0LcWZIT5L3Ig,45
173
+ cycode-3.8.3.dev1.dist-info/licenses/LICENCE,sha256=2Wx4N6mD_4xB7-E3hPkZ3MPhpJy__k_I8MaCSO-PDRo,1068
174
+ cycode-3.8.3.dev1.dist-info/RECORD,,