Skip to content

Commit 0a1882e

Browse files
authored
Fix failing solution accelerator verification tests (#2648)
## Changes LocalCodeLinter is unable to normalize python code at notebook cell level This PR fixes the issue ### Linked issues None ### Functionality None ### Tests - [x] manually tested running `make solacc` on files that fail in CI --------- Co-authored-by: Eric Vergnaud <[email protected]>
1 parent 4465aec commit 0a1882e

File tree

4 files changed

+20
-2
lines changed

4 files changed

+20
-2
lines changed

src/databricks/labs/ucx/contexts/workspace_cli.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ def local_file_migrator(self):
202202
def local_code_linter(self):
203203
session_state = CurrentSessionState()
204204
return LocalCodeLinter(
205+
self.notebook_loader,
205206
self.file_loader,
206207
self.folder_loader,
207208
self.path_lookup,

src/databricks/labs/ucx/source_code/linters/files.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,15 @@ class LocalCodeLinter:
104104

105105
def __init__(
106106
self,
107+
notebook_loader: NotebookLoader,
107108
file_loader: FileLoader,
108109
folder_loader: FolderLoader,
109110
path_lookup: PathLookup,
110111
session_state: CurrentSessionState,
111112
dependency_resolver: DependencyResolver,
112113
context_factory: Callable[[], LinterContext],
113114
) -> None:
115+
self._notebook_loader = notebook_loader
114116
self._file_loader = file_loader
115117
self._folder_loader = folder_loader
116118
self._path_lookup = path_lookup
@@ -141,7 +143,13 @@ def lint(
141143

142144
def lint_path(self, path: Path, linted_paths: set[Path] | None = None) -> Iterable[LocatedAdvice]:
143145
is_dir = path.is_dir()
144-
loader = self._folder_loader if is_dir else self._file_loader
146+
loader: DependencyLoader
147+
if is_a_notebook(path):
148+
loader = self._notebook_loader
149+
elif path.is_dir():
150+
loader = self._folder_loader
151+
else:
152+
loader = self._file_loader
145153
path_lookup = self._path_lookup.change_directory(path if is_dir else path.parent)
146154
root_dependency = Dependency(loader, path, not is_dir) # don't inherit context when traversing folders
147155
graph = DependencyGraph(root_dependency, None, self._dependency_resolver, path_lookup, self._session_state)

tests/integration/source_code/test_jobs.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ def test_lint_local_code(simple_ctx):
207207
path_to_scan = Path(ucx_path, "src")
208208
# TODO: LocalCheckoutContext has to move into GlobalContext because of this hack
209209
linter = LocalCodeLinter(
210+
light_ctx.notebook_loader,
210211
light_ctx.file_loader,
211212
light_ctx.folder_loader,
212213
light_ctx.path_lookup,

tests/unit/source_code/linters/test_files.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,13 @@ def local_code_linter(mock_path_lookup, migration_index):
121121
mock_path_lookup,
122122
)
123123
return LocalCodeLinter(
124-
file_loader, folder_loader, mock_path_lookup, session_state, resolver, lambda: LinterContext(migration_index)
124+
notebook_loader,
125+
file_loader,
126+
folder_loader,
127+
mock_path_lookup,
128+
session_state,
129+
resolver,
130+
lambda: LinterContext(migration_index),
125131
)
126132

127133

@@ -194,6 +200,7 @@ def test_folder_has_repr():
194200
"path", [Path("/Users/eric.vergnaud/development/ucx/.venv/lib/python3.10/site-packages/spacy/pipe_analysis.py")]
195201
)
196202
def test_known_issues(path: Path, migration_index):
203+
notebook_loader = NotebookLoader()
197204
file_loader = FileLoader()
198205
notebook_loader = NotebookLoader()
199206
folder_loader = FolderLoader(notebook_loader, file_loader)
@@ -205,6 +212,7 @@ def test_known_issues(path: Path, migration_index):
205212
pip_resolver = PythonLibraryResolver(allow_list)
206213
resolver = DependencyResolver(pip_resolver, notebook_resolver, import_resolver, import_resolver, path_lookup)
207214
linter = LocalCodeLinter(
215+
notebook_loader,
208216
file_loader,
209217
folder_loader,
210218
path_lookup,

0 commit comments

Comments
 (0)