|
1 | 1 | import logging |
| 2 | +from collections.abc import Iterable |
2 | 3 | from typing import Optional, Union |
3 | 4 |
|
4 | | -from rich.progress import track |
5 | | - |
6 | 5 | from twyn.base.constants import ( |
7 | 6 | SELECTOR_METHOD_MAPPING, |
8 | 7 | PackageEcosystems, |
@@ -88,21 +87,31 @@ def check_dependencies( |
88 | 87 | normalized_dependencies = top_package_reference.normalize_packages(dependencies_to_check) |
89 | 88 |
|
90 | 89 | typos_list = TyposquatCheckResultList() |
91 | | - dependencies_list = ( |
92 | | - track(normalized_dependencies, description="Processing...") if show_progress_bar else normalized_dependencies |
93 | | - ) |
94 | | - for dependency in dependencies_list: |
| 90 | + |
| 91 | + for dependency in _get_dependencies_list(normalized_dependencies, show_progress_bar): |
95 | 92 | if dependency in normalized_allowlist_packages: |
96 | 93 | logger.info("Dependency %s is in the allowlist", dependency) |
97 | 94 | continue |
98 | 95 |
|
99 | 96 | logger.info("Analyzing %s", dependency) |
100 | 97 | if dependency not in trusted_packages and (typosquat_results := trusted_packages.get_typosquat(dependency)): |
101 | 98 | typos_list.errors.append(typosquat_results) |
102 | | - |
103 | 99 | return typos_list |
104 | 100 |
|
105 | 101 |
|
| 102 | +def _get_dependencies_list(normalized_dependencies: set[str], show_progress_bar: bool) -> Iterable[str]: |
| 103 | + try: |
| 104 | + from rich.progress import track # noqa: PLC0415 |
| 105 | + |
| 106 | + return ( |
| 107 | + track(normalized_dependencies, description="Processing...") |
| 108 | + if show_progress_bar |
| 109 | + else normalized_dependencies |
| 110 | + ) |
| 111 | + except ImportError: |
| 112 | + return normalized_dependencies |
| 113 | + |
| 114 | + |
106 | 115 | def _get_selector_method(selector_method: str) -> SelectorMethod: |
107 | 116 | if selector_method not in SELECTOR_METHOD_MAPPING: |
108 | 117 | InvalidSelectorMethodError("Invalid selector method") |
|
0 commit comments