Skip to content

Commit e801889

Browse files
authored
Fix missing arguments to WorkflowLinter (#2809)
## Changes Fix missing arguments to `WorkflowLinter` ### Linked issues Resolves #2808
1 parent 62d2e27 commit e801889

File tree

3 files changed

+27
-16
lines changed

3 files changed

+27
-16
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from databricks.labs.ucx.recon.schema_comparator import StandardSchemaComparator
1818
from databricks.labs.ucx.source_code.directfs_access import DirectFsAccessCrawler
1919
from databricks.labs.ucx.source_code.python_libraries import PythonLibraryResolver
20+
from databricks.labs.ucx.source_code.used_table import UsedTablesCrawler
2021
from databricks.sdk import AccountClient, WorkspaceClient, core
2122
from databricks.sdk.service import sql
2223

@@ -55,7 +56,6 @@
5556
from databricks.labs.ucx.source_code.known import KnownList
5657
from databricks.labs.ucx.source_code.queries import QueryLinter
5758
from databricks.labs.ucx.source_code.redash import Redash
58-
from databricks.labs.ucx.source_code.used_table import UsedTablesCrawler
5959
from databricks.labs.ucx.workspace_access import generic, redash
6060
from databricks.labs.ucx.workspace_access.groups import GroupManager
6161
from databricks.labs.ucx.workspace_access.manager import PermissionManager
@@ -423,7 +423,7 @@ def dependency_resolver(self):
423423
)
424424

425425
@cached_property
426-
def workflow_linter(self):
426+
def workflow_linter(self) -> WorkflowLinter:
427427
return WorkflowLinter(
428428
self.workspace_client,
429429
self.dependency_resolver,

src/databricks/labs/ucx/source_code/used_table.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,7 @@
1515

1616
class UsedTablesCrawler(CrawlerBase[UsedTable]):
1717

18-
@classmethod
19-
def for_paths(cls, backend: SqlBackend, schema) -> UsedTablesCrawler:
20-
return UsedTablesCrawler(backend, schema, "used_tables_in_paths")
21-
22-
@classmethod
23-
def for_queries(cls, backend: SqlBackend, schema) -> UsedTablesCrawler:
24-
return UsedTablesCrawler(backend, schema, "used_tables_in_queries")
25-
26-
def __init__(self, backend: SqlBackend, schema: str, table: str):
18+
def __init__(self, backend: SqlBackend, schema: str, table: str) -> None:
2719
"""
2820
Initializes a DFSACrawler instance.
2921
@@ -33,7 +25,15 @@ def __init__(self, backend: SqlBackend, schema: str, table: str):
3325
"""
3426
super().__init__(backend=backend, catalog="hive_metastore", schema=schema, table=table, klass=UsedTable)
3527

36-
def dump_all(self, tables: Sequence[UsedTable]):
28+
@classmethod
29+
def for_paths(cls, backend: SqlBackend, schema: str) -> UsedTablesCrawler:
30+
return UsedTablesCrawler(backend, schema, "used_tables_in_paths")
31+
32+
@classmethod
33+
def for_queries(cls, backend: SqlBackend, schema: str) -> UsedTablesCrawler:
34+
return UsedTablesCrawler(backend, schema, "used_tables_in_queries")
35+
36+
def dump_all(self, tables: Sequence[UsedTable]) -> None:
3737
"""This crawler doesn't follow the pull model because the fetcher fetches data for 3 crawlers, not just one
3838
It's not **bad** because all records are pushed at once.
3939
Providing a multi-entity crawler is out-of-scope of this PR

tests/unit/contexts/test_application.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from unittest.mock import create_autospec
22

33
import pytest
4+
from databricks.labs.lsql.backends import MockBackend
45

56
from databricks.labs.ucx.contexts.application import GlobalContext
67
from databricks.labs.ucx.contexts.workspace_cli import LocalCheckoutContext
@@ -11,18 +12,28 @@
1112

1213

1314
@pytest.mark.parametrize(
14-
"attribute", ["dependency_resolver", "pip_resolver", "site_packages_path", "notebook_loader", "folder_loader"]
15+
"attribute",
16+
[
17+
"dependency_resolver",
18+
"pip_resolver",
19+
"site_packages_path",
20+
"notebook_loader",
21+
"folder_loader",
22+
"workflow_linter",
23+
"used_tables_crawler_for_paths",
24+
"used_tables_crawler_for_queries",
25+
],
1526
)
16-
def test_global_context_attributes_not_none(attribute: str):
27+
def test_global_context_attributes_not_none(attribute: str) -> None:
1728
"""Attributes should be not None"""
1829
# Goal is to improve test coverage
19-
ctx = GlobalContext()
30+
ctx = GlobalContext().replace(workspace_client=mock_workspace_client(), sql_backend=MockBackend())
2031
assert hasattr(ctx, attribute)
2132
assert getattr(ctx, attribute) is not None
2233

2334

2435
@pytest.mark.parametrize("attribute", ["local_file_migrator", "local_code_linter"])
25-
def test_local_context_attributes_not_none(attribute: str):
36+
def test_local_context_attributes_not_none(attribute: str) -> None:
2637
"""Attributes should be not None"""
2738
# Goal is to improve test coverage
2839
client = mock_workspace_client()

0 commit comments

Comments
 (0)